【发布时间】:2020-02-04 18:46:04
【问题描述】:
以下 cmdline 参数的最短 shell.nix 等效项是什么?
nix-shell -p "haskell.packages.ghc865.ghcWithPackages (p: [p.ghci-pretty])"
这可行,但它很冗长:
# contents of shell.nix file
# run with the following cmd:
# nix-shell shell.nix
{ nixpkgs ? import <nixpkgs> {} }:
let
inherit nixpkgs;
inherit (nixpkgs) haskellPackages;
haskellDeps = a: with a; [
ipprint
base
hscolour
ghci-pretty
];
ghc = nixpkgs.haskellPackages.ghcWithPackages haskellDeps;
nixPackages = [
haskellPackages.cabal-install
ghc
];
in
nixpkgs.stdenv.mkDerivation {
name = "profile_name";
buildInputs = nixPackages;
}
【问题讨论】:
-
不要用 cmets 扩展你的问题;编辑问题本身。也就是说,您的评论应该是一个答案,还是您正在寻找比您评论中的内容更短的内容?
-
这可能是用 cabal2nix 构建的项目的外壳吗?
-
你需要一个带有 ghc 的 shell 的目标是什么?
-
除非您想将此 shell.nix 与其他 Nix 文件更紧密地集成,否则它会尽可能短。 (除了内联等)如果你打算用 Nix 打包你的项目,你可以重用其中的一些代码,但是我们需要一个打包的例子。我希望独立项目的 Nix 打包方法可以在某个时候收敛...
-
通常每个依赖项增加的开销是微不足道的,因为它的大部分闭包在添加之前与闭包重叠。如果您想加快启动速度,可以尝试lorri,尽管截至 2019 年 10 月,这还处于试验阶段。