Use runCommandLocal for dotCabal (#901)

This produces a pretty big store path (>1GB), and is very quick to
build. Prefer building it locally.
This commit is contained in:
Michael Peyton Jones 2020-11-06 11:18:53 +00:00 committed by GitHub
parent b06fdfa065
commit 8c0b7c27b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 2 deletions

View File

@ -17,7 +17,7 @@
pkgs:
{ name, index }:
pkgs.evalPackages.runCommand "hackage-repo-${name}" { nativeBuildInputs = [ pkgs.evalPackages.nix ]; } ''
pkgs.evalPackages.runCommandLocal "hackage-repo-${name}" { nativeBuildInputs = [ pkgs.evalPackages.nix ]; } ''
mkdir -p $out
export expires="4000-01-01T00:00:00Z"

View File

@ -17,6 +17,7 @@ let
emscripten = import ./emscripten.nix;
nix-prefetch-git-minimal = import ./nix-prefetch-git-minimal.nix;
gobject-introspection = import ./gobject-introspection.nix;
shims = import ./shims.nix;
eval-on-current = import ./eval-on-current.nix;
eval-on-build = import ./eval-on-build.nix;
};
@ -48,6 +49,7 @@ let
emscripten
nix-prefetch-git-minimal
gobject-introspection
shims
# Restore nixpkgs haskell and haskellPackages
(_: prev: { inherit (prev.haskell-nix-prev) haskell haskellPackages; })
];

View File

@ -218,7 +218,8 @@ final: prev: {
# dotCabalName anyway.
dotCabalName = "dot-cabal-" + allNames;
in
final.evalPackages.runCommand dotCabalName { nativeBuildInputs = [ cabal-install ]; } ''
# This is very big, and cheap to build: use runCommandLocal to prefer building it locally
final.evalPackages.runCommandLocal dotCabalName { nativeBuildInputs = [ cabal-install ]; } ''
mkdir -p $out/.cabal
cat <<EOF > $out/.cabal/config
${final.lib.concatStrings (

9
overlays/shims.nix Normal file
View File

@ -0,0 +1,9 @@
# Shims to make older versions of nixpkgs work
final: prev: {
# nixpkgs 19.09 and older does not have runCommandLocal
runCommandLocal = prev.runCommandLocal or (name: env:
final.runCommand name ({
preferLocalBuild = true;
allowSubstitutes = false;
} // env));
}