两个相关问题:
1. 如何在configuration.nix中安装R和选定的软件包?
2. 如何不仅从 CRAN 添加包,还从 Gitub 或至少本地存储添加包?
在 wiki 中,您将找到类似安装 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运行所有内容,以便将机器配置集中在一处。
最佳答案
好的,在上面的Bulats指针的帮助下,我设法找到了解决方案。在这里找到了完整的示例:https://github.com/NixOS/nixpkgs/issues/44290
为了将来引用,这里是在configuration.nix中内联添加来自CRAN和Github的r包的一种方法:
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
];
关于r - 如何通过configuration.nix安装R和软件包以及如何从github添加软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55176609/