summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-04-26 16:21:05 +0200
committerGitHub <noreply@github.com>2021-04-26 16:21:05 +0200
commit6b19be4124d642e21a8520bd8ad5496059d8e620 (patch)
tree603d9d055fff6467b6917d7c0540d311b0d4a1f9 /pkgs/stdenv
parent32f7980afb5e33f1e078a51e715b9f102f396a69 (diff)
parent559c5792ef1d0ef413e0abd5ddd07409989ceb1c (diff)
downloadnixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar.gz
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar.bz2
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar.lz
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar.xz
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.tar.zst
nixpkgs-6b19be4124d642e21a8520bd8ad5496059d8e620.zip
Merge pull request #120316 from regnat/easy-ca
Make it easy to try out content-addressed derivations
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/generic/make-derivation.nix10
1 files changed, 10 insertions, 0 deletions
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
index 74609412782..de1b1abd615 100644
--- a/pkgs/stdenv/generic/make-derivation.nix
+++ b/pkgs/stdenv/generic/make-derivation.nix
@@ -89,6 +89,10 @@ in rec {
 
     , patches ? []
 
+    , __contentAddressed ?
+      (! attrs ? outputHash) # Fixed-output drvs can't be content addressed too
+      && (config.contentAddressedByDefault or false)
+
     , ... } @ attrs:
 
     let
@@ -253,6 +257,12 @@ in rec {
           inherit doCheck doInstallCheck;
 
           inherit outputs;
+        } // lib.optionalAttrs (__contentAddressed) {
+          inherit __contentAddressed;
+          # Provide default values for outputHashMode and outputHashAlgo because
+          # most people won't care about these anyways
+          outputHashAlgo = attrs.outputHashAlgo or "sha256";
+          outputHashMode = attrs.outputHashMode or "recursive";
         } // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
           cmakeFlags =
             (/**/ if lib.isString cmakeFlags then [cmakeFlags]