Как установить R и пакеты через configuration.nix и как добавить пакеты из github?

Два связанных вопроса:
1. Как установить R и выбранные пакеты в configuration.nix?
2. Как добавить пакеты не только из CRAN, но и из Gitub или на наименее хранится локально?

В вики вы найдете подобные инструкции по установке пакетов R. https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/r.section.md. Пусть он работает при использовании nix-shell, но я застрял при попытке выполнить установку из configuration.nix.

Что касается сборки пакетов R, я нашел этот пример, касающийся сборки пакетов:

let
  pkgs = import <nixpkgs> {};
  buildRPackage = import <nixpkgs/pkgs/development/r-modules/generic-builder.nix> pkgs.R;
 in
 with pkgs.rPackages;
 {
   foobar = buildRPackage {
     name = "your-package-name-1.0";
     src = ./.;
     propagatedBuildInputs = [/* required dependencies go here */];
   };
 }

The command "nix-build . -A foobar" would then compile it.

Но хотелось бы запустить все из configuration.nix для конфигурации машины в одном месте.


person sakalli    schedule 15.03.2019    source источник
comment
Вы это видели - nixos.wiki/wiki/R?   -  person Bulat    schedule 15.03.2019
comment
М-м-м. Думал, что просмотрел все эти вики-файлы, но это действительно ключ к ответу, спасибо!   -  person sakalli    schedule 15.03.2019


Ответы (1)


Хорошо, с помощью указателя Булата выше мне удалось найти решение. Полный пример был найден здесь: https://github.com/NixOS/nixpkgs/issues/44290

Для справки в будущем вот один из способов добавления пакетов r как из CRAN, так и из Github в файл configuration.nix:

environment.systemPackages = with pkgs;
   [(pkgs.rWrapper.override {
     packages = with pkgs.rPackages; let
       llr = buildRPackage {
       name = "llr";
       src = pkgs.fetchFromGitHub {
        owner = "dirkschumacher";
        repo = "llr";
        rev = "0a654d469af231e9017e1100f00df47bae212b2c";
        sha256 = "0ks96m35z73nf2sb1cb8d7dv8hq8dcmxxhc61dnllrwxqq9m36lr";};
     propagatedBuildInputs = [ rlang  knitr];
     nativeBuildInputs = [ rlang knitr ];};
    in [knitr
        rlang
        llr
        tidyverse
        ## the rest of your R packages here
        devtools];})
    pkgs.postgresql
    pkgs.isync
    pkgs.msmtp
    pkgs.notmuch
    gnupg
    ## the rest of your Nixos packages (derivations) here
    ];
person sakalli    schedule 15.03.2019