5 ms·
Ah thanks. Wish I'd seen this before I embarked on things! I muddled my way through doing things like: nix-env -iA nixpkgs.rPackages.tidyr This seemed to wo
by dm319 3y ago
Ah thanks. Wish I'd seen this before I embarked on things! I muddled my way through doing things like:
nix-env -iA nixpkgs.rPackages.tidyr
This seemed to work fine for things like R and Vim and some dependencies, but didn't work so well for R packages which I think all needed to be compiled and installed from R.
I'm very pleased to have a working set up now, with neovim/nvimR/R/git etc. remarkably similar to my regular set up, so many thanks for these tips!
- pxc 3y agoThere are a ton of R packages in Nixpkgs already! To use them with R, you ask Nix to 'build' an R that has them available. This is the general pattern for all languages available in Nixpkgs, but the details vary between languages somewhat. You can find the guide for any/all of them in the Nixpkgs manual. Here is R's: https://nixos.org/manual/nixpkgs/stable/#r https://nixos.org/manual/nixpkgs/stable/#r I think not literally everything (especially if it has native extensions) is necessarily working, but everything in CRAN and Bioconductor is on there. Give your faves a try! To explain this seemingly strange behavior a bit: because of Nix's commitment to isolating dependencies, when you install a language interpreter to some environment, it needs to behave the same way no matter what is installed in that environment— including packages from its own ecosystem. So instead, Nix has you be fully explicit ahead of time about what you want each language interpreter to pick up on, and those are the only in-ecosystem packages it'll ever be able to see. This is super nice for per-project dependencies and for scripts that can bring along all their own dependencies, but it can seem a little weird when what you're used to and what you expect is just managing a single environment.
- dm319 3y agoAh ok, looks like I've been doing it wrong but that's great to know. Reading around on Nix, I'm starting to wonder if I should use a functional package manager for a functional language... One issue I've had with analysis projects is that when my R system upgrades I find old project code for previous analyses don't run anymore. Would Nix allow me to specify/run different R and R package versions for projects in different locations/folders?
- pxc 3y ago> Would Nix allow me to specify/run different R and R package versions for projects in different locations/folders? Yep! You can even easily integrate Nix with direnv so that it magically grabs the right tools and puts them on your path whenever you cd into the project directory. Many editors and IDEs also have plugins that integrate with direnv, so you can oftentimes get them to integrate with those runtimes even without starting them from the project directory. Nix has pretty good support for this built in (shell.nix and flake.nix), but you'll probably find that some opinionated tooling is nicer for just jumping in. The Nix ecosystem is rich, divergent, and competitive, so there are often a lot of tools designed to leverage or enhance it all competing in a given single problem space. This can be overwhelming. Here's my recommendation for getting started with Nix for project environments today: https://devenv.sh/ https://devenv.sh/ It supports R, it's based on some of the nicest tools in the Nix ecosystem, it has great documentation overall (though incomplete), development is very active, and the author and maintainer is longtime contributor in the Nix community with a strong reputation (he served as NixOS release manager several times!). I've only taken it up recently myself, but I use it every day at work and I'm very happy with it. Definitely go to NixOS Discourse or Matrix if you have questions and people can help point you to the best docs as you get acclimated.