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

How do you add a local R package using Nix package manager

假设我有一个位于 /home/placey/messyverse.tar.gz

的本地 R 包

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

首先我们需要创建一个 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
      ];
  };
}

然后在同一文件夹中,我们将创建 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
      ];
    };
}

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

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