如何使用 Nix 包管理器添加本地 R 包

pla*_*aux 4 r nix

假设我有一个本地 R 包,位于/home/placey/messyverse.tar.gz

我想启动一个包含我的包和 ggplot 的 nix shell。我怎么做?

pla*_*aux 5

首先,我们需要创建一个 nix 包,其中包含本地包的必要信息。

我们称之为

messverse.nix

with import <nixpkgs> {};

{
  messverse = rPackages.buildRPackage rec {
      name = "messverse";
      version = "0.1";
      src = /home/placey/messverse.tar.gz;
      buildInputs = with rPackages; [
        R
        stringr
      ];
  };
}
Run Code Online (Sandbox Code Playgroud)

然后在同一文件夹中,我们将创建default.nix定义 nix shell 所需内容的文件。

default.nix

with import <nixpkgs> {};
with import ./messyverse.nix;
{
    myProject = stdenv.mkDerivation {
      name = "myProject";
      version = "1";
      src = if pkgs.lib.inNixShell then null else nix;

      buildInputs = with rPackages; with messyverse; [
        R
        ggplot2
        messyverse
      ];
    };
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以执行 nix-shell .

我们有一个 shell,其中包含 R 和我们本地指定的 R 包!