!fXpAvneDgyJuYMZSwO:nixos.org

Nix Data Science

279 Members
61 Servers

Load older messages


SenderMessageTime
11 Jul 2023
@peddie:matrix.orgpeddieI've not written much down as it's just what I have managed to scrape together, and I don't have any blog or commit bits to nixpkgs. but there are examples in projects on github, like https://github.com/peddie/solar-api/blob/master/flake.nix05:55:52
@peddie:matrix.orgpeddie as to whether you should use flakes: not really sure, I just happened to go that route 05:56:25
@brodriguesco:matrix.orgBruno Rodriguesvery interesting thanks! I’m still in exploration phase, and am reading lots of docs currently. Already managed to drop into a nix interactive shell with R and some packages. But I’m looking more into it to see if I could build some R package that would make it easy to essentially set up, for each new project one starts, an dev environment using nix06:42:52
@brodriguesco:matrix.orgBruno Rodriguesyesterday I read about flakes, so I was wondering if and what was the consensus on them :)06:43:36
@brodriguesco:matrix.orgBruno Rodrigueswhat would you say is the biggest benefit of using flakes over not using them?06:44:02
@peddie:matrix.orgpeddieOK, it sounds a bit like templates (for setting up a dev env)?07:01:43
@peddie:matrix.orgpeddieI think there is emphatically no consensus on flakes07:01:50
@brodriguesco:matrix.orgBruno Rodriguesok07:03:15
@brodriguesco:matrix.orgBruno Rodrigues I’d like to have something like setup_env("4.2.1", c("dplyr", "tidyr", "janitor"), ide = "rstudio") that would create a default.nix and build the environment. Then, users would be advised to go to the environment and start rstudio from there, so that they could work in that new environment shipping that specific version of R and packages 07:06:04
@peddie:matrix.orgpeddieah, I see, you want to configure it from an R session different to the one you want to use for development?10:10:10
@brodriguesco:matrix.orgBruno Rodriguesyes, because I want to build something that R users could use with as little friction as possible10:12:48
@brodriguesco:matrix.orgBruno Rodriguesand R users are really used to do everything from the R session, not so much from a cli tool 10:13:04
@brodriguesco:matrix.orgBruno Rodriguessomething that would mimic renv in a sense, but with nix instead (and nix would even go further, as it would even provide a separate R installation and potentielly RStudio as well)10:13:48
@brodriguesco:matrix.orgBruno Rodriguesthen that default.nix file could be used for reproducibility purposes10:14:18
@peddie:matrix.orgpeddiegot it22:13:55
12 Jul 2023
@futaki:matrix.org@futaki:matrix.org left the room.08:46:24
@brodriguesco:matrix.orgBruno Rodrigues

So I've started playing with Nix. I am trying to build an environment with R and some packages installed (inside Docker, just to avoid interfering with my system). Here is the default.nix that I'm using:

with import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/e11142026e2cef35ea52c9205703823df225c947.tar.gz") {};
{
  myProject = stdenv.mkDerivation {
    name = "myProject";
    version = "1";
    src = if lib.inNixShell then null else nix;

    buildInputs = with rPackages; [
      R
      ggplot2
      knitr
    ];
  };
}

12:19:26
@brodriguesco:matrix.orgBruno Rodrigues I can drop into a nix shell using CMD nix-shell /home/renv/default.nix in the Dockerfile and then running a container 12:20:01
@brodriguesco:matrix.orgBruno Rodrigues

but when I try to build the environment first, and then drop into bash that doesn't work. So when I do

12:20:39
@brodriguesco:matrix.orgBruno Rodrigues *

but when I try to build the environment first, and then drop into bash that doesn't work. So when I do

12:20:48
@brodriguesco:matrix.orgBruno Rodrigues *

but when I try to build the environment first, and then drop into bash that doesn't work. So when I do

RUN nix-build /home/renv/default.nix
CMD ["bash"]

I get following error message

builder for '/nix/store/1csmqrnlgbyzm5kkjw2s9q348qpx3rqy-myProject.drv' failed to produce output path for output 'out' at '/nix/store/icf4fsmlcalyc2v5wiwn88x6f7xab46y-myProject'
12:21:37
@brodriguesco:matrix.orgBruno Rodriguessurely I'm missing something obvious, but can't find it 😅12:23:01
@brodriguesco:matrix.orgBruno Rodrigues *

but when I try to build the environment first, and then drop into bash that doesn't work. So when I do

RUN nix-build /home/renv/default.nix
CMD ["bash"]

I get following error message

112.8 unpacking sources
112.8 unpacking source archive /nix/store/2zdq28c97x3rqb7fqrrvwkdzh44pdq05-nix-2.13.3
113.0 source root is nix-2.13.3
113.0 patching sources
113.0 configuring
113.1 no configure script, doing nothing
113.1 building
113.1 no Makefile or custom buildPhase, doing nothing
113.1 installing
113.1 no Makefile or custom installPhase, doing nothing
113.1 post-installation fixup
113.4 error: builder for '/nix/store/1csmqrnlgbyzm5kkjw2s9q348qpx3rqy-myProject.drv' failed to produce output path for output 'out' at '/nix/store/icf4fsmlcalyc2v5wiwn88x6f7xab46y-myProject'
12:23:29
@brodriguesco:matrix.orgBruno Rodrigues

ok so some more googling led me to write this default.nix:

13:04:26
@brodriguesco:matrix.orgBruno Rodrigues *

ok so some more googling led me to write this default.nix:

{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/e11142026e2cef35ea52c9205703823df225c947.tar.gz") {} }:

with pkgs;

let
  my-pkgs = rWrapper.override {
    packages = with rPackages; [ dplyr ggplot2 R];
  };
in
mkShell {
  buildInputs = [my-pkgs];
}

13:04:47
@brodriguesco:matrix.orgBruno Rodriguesand now it builds successfully13:05:00
@brodriguesco:matrix.orgBruno RodriguesI guess the issue was that before I wasn't creating an environment, because I wasn't using mkShell explicitely?13:05:51
@jb:vk3.wtfjbedo
In reply to @brodriguesco:matrix.org
I guess the issue was that before I wasn't creating an environment, because I wasn't using mkShell explicitely?
These general nix questions are better in #nix:nixos.org, but to answer your questions derivations have to produce all outputs, of which out is mandatory. Your expression above did not create the output path expected so your got an error when you tried to build it. mkShell is a wrapper around mkDerivation that simply dumps some text into the output path (see pkgs/build-support/mkShell/default.nix).
23:23:44
13 Jul 2023
@brodriguesco:matrix.orgBruno RodriguesAh great many thanks. I figured it had to do something with the fact that mkShell likely provided the required outputs, which I would have had to provide by hand otherwise07:52:14
@brodriguesco:matrix.orgBruno RodriguesI've joined the NixOS channel, I'll ask these types of questions in there in the future, thanks!07:52:56

Show newer messages


Back to Room ListRoom Version: 6