Как добавить локальный пакет R с помощью Nix package manager

#r #nix

#r #nix

Вопрос:

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

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

Ответ №1:

Сначала нам нужно создать пакет 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 amp; наш локально указанный R-пакет!