Как установить R и пакеты через configuration.nix и как добавить пакеты из github? - PullRequest
0 голосов
/ 15 марта 2019

Два связанных вопроса:
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, чтобы конфигурация машины находилась в одном месте.

1 Ответ

0 голосов
/ 15 марта 2019

Хорошо, с помощью указателя Булата выше мне удалось найти решение. Полный пример был найден здесь: 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
    ];
...