With Nix-on-Droid, I encourage you to:
- enable flakes, because it makes some things easier and the evaluation caching speedup is critical on slow little ARM devices
- run `nix registry pin nixpkgs` right away, then `nix search nixpkgs` to get the slow stuff out of the way
- don't bother with Home Manager yet. It's good stuff, but your needs at this point are minimal and it's more to learn.
- to quickly try out R, run `nix shell nixpkgs#R`! When that's done running, R will be on your PATH
Have fun! Feel free to keep it simple, but if you do have questions, regulars on discourse.nixos.org are super nice and super smart. :)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!
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.
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?
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/
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.