如何使用 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 包!
假设我有一个位于 /home/placey/messyverse.tar.gz
我想启动一个包含我的包和 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 包!