【问题标题】:What's the shortest `shell.nix` equivalent of the following cmdline arguments?以下 cmdline 参数的最短 `shell.nix` 等效项是什么?
【发布时间】: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 月,这还处于试验阶段。

标签: nix nixos nix-shell


【解决方案1】:

你可以像这样逐字复制你的命令行:

{ pkgs ? import <nixpkgs> {} }:
let
  ghc = pkgs.haskell.packages.ghc865.ghcWithPackages (p: [ p.ghci-pretty ]);
in
pkgs.mkShell {
  buildInputs = [ ghc ];
}

【讨论】:

  • 谢谢!有没有一种简洁的方法来选择默认的 ghc 版本?
  • 我没有用这个命令找到 ghcHEAD:nix-env -qaP -A nixpkgs.haskell.compiler
  • 还有nix-env -qaP -A nixpkgs.ghc
  • 虽然我不知道为什么到目前为止{ a ? import &lt;nixpkgs&gt; {} }: let inherit a; inherit (a) haskellPackages; c = a.haskellPackages.ghcWithPackages (b: with b; [ shh shh-extras # pipes Glob hoogle ghci-pretty ]); in a.mkShell { buildInputs = [ c ]; } 我使用了不是很具描述性的变量名a,b,c,但它仍然有效,所以对于初学者来说很清楚这些是变量名,而不是 nix 内置的东西。
  • 第一个inherit语句显然没有必要{ a ? import &lt;nixpkgs&gt; {} }: let inherit (a) haskellPackages; c = a.haskellPackages.ghcWithPackages (b: with b; [ shh shh-extras # pipes Glob hoogle ghci-pretty ]); in a.mkShell { buildInputs = [ c ]; }
猜你喜欢
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多