Какой самый короткий `shell.nix` эквивалент следующих аргументов cmdline? - PullRequest
0 голосов
/ 07 октября 2019

Какой самый короткий shell.nix эквивалент следующих аргументов cmdline?

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;
}

1 Ответ

4 голосов
/ 12 октября 2019

Вы можете просто скопировать командную строку дословно следующим образом:

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