4

かなり基本的なcabalファイルから

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

あなたがこのように働くことができると仮定するのは間違っていますか?

ありがとう

4

1 に答える 1