summary refs log tree commit diff
path: root/pkgs/build-support/trivial-builders.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2015-07-08 06:24:38 -0400
committerShea Levy <shea@shealevy.com>2015-07-08 06:25:07 -0400
commite987d1c1e32d877d3d214165991a87bc81833c30 (patch)
tree9abe32c61d5a65b65a89002672912855af8cc0de /pkgs/build-support/trivial-builders.nix
parent957390ecba7661ac63267a061a8270982d5d7cac (diff)
downloadnixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar.gz
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar.bz2
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar.lz
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar.xz
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.tar.zst
nixpkgs-e987d1c1e32d877d3d214165991a87bc81833c30.zip
requireFile: Make more flexible
Diffstat (limited to 'pkgs/build-support/trivial-builders.nix')
-rw-r--r--pkgs/build-support/trivial-builders.nix24
1 files changed, 17 insertions, 7 deletions
diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix
index 7e73f98db78..d9eeaa31359 100644
--- a/pkgs/build-support/trivial-builders.nix
+++ b/pkgs/build-support/trivial-builders.nix
@@ -88,23 +88,33 @@ rec {
     (lib.concatMapStrings (x: "ln -s '${x.path}' '${x.name}';\n") entries));
 
   # Require file
-  requireFile = {name, sha256, url ? null, message ? null} :
+  requireFile = { name ? null
+                , sha256 ? null
+                , sha1 ? null
+                , url ? null
+                , message ? null
+                } :
     assert (message != null) || (url != null);
+    assert (sha256 != null) || (sha1 != null);
+    assert (name != null) || (url != null);
     let msg =
       if message != null then message
       else ''
-        Unfortunately, we may not download file ${name} automatically.
+        Unfortunately, we may not download file ${name_} automatically.
         Please, go to ${url}, download it yourself, and add it to the Nix store
         using either
-          nix-store --add-fixed sha256 ${name}
+          nix-store --add-fixed ${hashAlgo} ${name_}
         or
-          nix-prefetch-url file://path/to/${name}
+          nix-prefetch-url --type ${hashAlgo} file://path/to/${name_}
       '';
+      hashAlgo = if sha256 != null then "sha256" else "sha1";
+      hash = if sha256 != null then sha256 else sha1;
+      name_ = if name == null then baseNameOf (toString url) else name;
     in
     stdenv.mkDerivation {
-      inherit name;
-      outputHashAlgo = "sha256";
-      outputHash = sha256;
+      name = name_;
+      outputHashAlgo = hashAlgo;
+      outputHash = hash;
       builder = writeScript "restrict-message" ''
 source ${stdenv}/setup
 cat <<_EOF_