Как я могу использовать указанную c версию пакета Haskell с Nix? - PullRequest
0 голосов
/ 27 января 2020

Я просто хочу иметь возможность использовать последнюю версию pandoc, пакет Haskell, в своем проекте, который я создаю с помощью Nix.

Вот мой файл shell.nix. В закомментированном разделе я пытаюсь переопределить версию пакета, но, похоже, она не работает.

with import <nixpkgs> {};

( let
    colormath = pkgs.python3Packages.buildPythonPackage rec {
      pname = "colormath";
      version = "3.0.0";

      src = pkgs.python3Packages.fetchPypi{
        inherit version;
        inherit pname;
        sha256 = "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix";
      };

      buildInputs = [ pkgs.python3Packages.numpy pkgs.python3Packages.networkx ];
    };
    spacy_conll = pkgs.python3Packages.buildPythonPackage rec {
      pname = "spacy_conll";
      version = "1.0.1";

      src = pkgs.python3Packages.fetchPypi{
        inherit version;
        inherit pname;
        sha256 = "1wffwp539i3yvqx6dl3ki5fmmbrpqpnf0ymg5806czk0rh7843j7";
      };

      buildInputs = [ pkgs.python3Packages.spacy pkgs.python3Packages.packaging ];
    };
    # pandoc = pkgs.haskellPackages.pandoc.override {
    #   version = "2.9.1.1";
    #   };

  in pkgs.mkShell {
    shellHook = "eval $(egrep ^export ${ghc}/bin/ghc)";
    buildInputs = with pkgs; [
        (python3.withPackages (ps: with ps; [
          matplotlib
          spacy
          pandas
          spacy_models.en_core_web_md
          jupyter
          scikitlearn
          nltk
          altair
          vega_datasets
          cherrypy
          dominate
          plotly
          colormath
          falcon # Spacy server from Haskell Cookbook
          spacy_conll
          ]))
        (haskellPackages.ghcWithPackages (ps: with ps; [ lens pandoc roman-numerals doclayout ] ))
        ];
      }
  )

1 Ответ

1 голос
/ 18 февраля 2020

Pando c 2.9.1.1 доступен в nixpkgs как haskellPackages.pandoc_2_9_1_1. Я бы посоветовал вам использовать это вместо попытки переопределить пакет, поскольку есть некоторые различия в зависимостях. Для справки, вот как вы бы go о переопределении haskellPackages:

let
  hsPkgs = pkgs.haskellPackages.override {
    overrides = self: super: {
      pandoc = pkgs.haskell.lib.overrideCabal super.pandoc {
        version = "2.9.1.1";
        sha256 = "0vc1ld57nv27gwq4mq0wdal8k2wxvsc0f3m2jwq9nkq7wbpwa8cx";
      };
    };
  };
in pkgs.mkShell {
  buildInputs = with pkgs; [
    (hsPkgs.ghcWithPackages (ps: with ps; [ pandoc ] ))
  ];
}
...