Из довольно простого файла Кабала
cabal2nix ./. > default.nix
а затем shell.nix из
let
pkgs = import <nixpkgs> {};
haskellPackages = pkgs.haskellPackages_ghc784.override {
extension = self: super: {
thispackage = self.callPackage ./default.nix {};
};
};
in pkgs.myEnvFun {
name = haskellPackages.thispackage.name;
buildInputs = [
(haskellPackages.ghcWithPackages (hs: ([
hs.cabalInstall
] ++ hs.thispackage.propagatedNativeBuildInputs)))
];
}
Когда в nix-shell и запущена команда cabal configure, она жалуется на отсутствие пакетов, таких как текст.
Если я помещу текстовый пакет явно в shell.nix, например
let
pkgs = import <nixpkgs> {};
haskellPackages = pkgs.haskellPackages_ghc784.override {
extension = self: super: {
thispackage = self.callPackage ./default.nix {};
};
};
in pkgs.myEnvFun {
name = haskellPackages.thispackage.name;
buildInputs = [
(haskellPackages.ghcWithPackages (hs: ([
hs.cabalInstall
hs.text
] ++ hs.thispackage.propagatedNativeBuildInputs)))
];
}
Конфигурация cabal прекрасна, но я ожидаю, что hs.thispackage.propagatedNativeBuildInputs будет поставлять эти пакеты.
Самый простой проект haskell можно увидеть на
https://github.com/fatlazycat/haskell-nix-helloworld
Я ошибаюсь, полагая, что вы можете работать таким образом?
Спасибо