Как добавить локальный пакет R с помощью диспетчера пакетов Nix? - PullRequest
2 голосов
/ 10 апреля 2019

Допустим, у меня есть локальный пакет R, который живет по /home/placey/messyverse.tar.gz

Я хотел бы запустить оболочку nix, которая содержит мой пакет, а также ggplot.Как мне это сделать?

1 Ответ

2 голосов
/ 10 апреля 2019

Сначала нам нужно создать пакет 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.

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 .

и у нас есть оболочка, которая содержит R & наш локально указанный пакет R!

...