的陰謀沒有在下面的例子中發現的問題是,如何正確的例子,這樣的陰謀被發現。如何製作cabal在straigthforward nix-pill 8.1模仿中找到?
這個例子是the nix pill 8.1非常straigthforward修飾。在nix-repl
,打字:l <nixpkgs>
然後"${cabal-install}"
給予賣場裏小集團安裝是它包含的子迪爾斯有彬有含陰謀可執行的路徑。即
> /nix/store/pathtocabal-install/bin/cabal -v
cabal-install version 2.0.0.0
compiled using version 2.0.0.2 of the Cabal library
下面您應該找到與「make c」示例對應的文件。
有了它們,在
> nix-build hello.nix
不起作用。它首先告訴打造「這些推導」,然後說
hello_builder.sh: line 2: cabal: command not found
我懷疑$小集團安裝/ bin中是一個錯誤的方式來引用的陰謀,但是,nix-repl
發現其商店路徑。
hello_builder.sh比在c例子更短。請注意,安裝部件仍然缺失(首先應該找到建造者來找到cabal)。不需要也許binutils的 -
export PATH="$coreutils/bin:$ghc/bin:$cabal-install/bin:$binutils/bin"
cabal build hello
hello.nix。
with (import <nixpkgs> {});
derivation {
name = "hello";
builder = "${bash}/bin/bash";
args = [ ./hello_builder.sh ];
inherit binutils coreutils ghc cabal-install;
src = ./hello.cabal;
system = builtins.currentSystem;
}
hello.cabal - 在nix-shell
與陰謀安裝和GHC,這個工程。
name: hello
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.24
executable hello
main-is: hello.hs
default-language: Haskell2010
build-depends: base >=4.9 && <4.10
hello.hs
module Main where
main :: IO()
main = putStrLn "Hello there!"
後期補充:
通過添加echo $PATH
的建設者,我們可以看到,路徑是不正確的。它是/nix/store/...coreutils-8.28/bin:/nix/store...ghc-8.0.2/bin:-install/bin:/nix/store/...binutils-2.28.1/bin
。那裏$cabal
變成一個空字符串,它不是指$cabal-install
。因此,cabal可執行文件沒有正確的存儲路徑。
這個答案的原因部分以及如何糾正它保持的一部分。而開放的原因 - 部分是,爲什麼inherit cabal-install
不能在這裏使用。