如何在Nix上使用Haskell软件包的特定版本?

时间:2020-01-27 19:50:06

标签: haskell nix

我只希望能够在我与Nix一起构建的项目中使用pandoc的最新版本(Haskell软件包)。

这是我的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 个答案:

答案 0 :(得分:2)

Pandoc 2.9.1.1在nixpkgs中以{ "id": 1, "categoria_id": 3, "descricao": "Distinctio minus praesentium quos.", "valor": 108, "categoria": { // ... }, "created_at": "2020-02-17 17:49:36", "updated_at": "2020-02-17 17:49:36" } 的形式提供。我建议您使用此方法,而不要尝试覆盖程序包,因为依赖性之间存在一些差异。不过,作为参考,下面是重写haskellPackages.pandoc_2_9_1_1的方法:

haskellPackages