diff options
author | Ryan Lahfa <masterancpp@gmail.com> | 2023-07-17 19:31:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-17 19:31:53 +0200 |
commit | 8fbe8379b304d3b4f2717ab324afcff0b62ac87c (patch) | |
tree | d3703fa3142f38f7d549d5b0e54b54b07456c9f2 /pkgs/build-support | |
parent | 84a907b9c68d68d2d87638a950fe95b348956e86 (diff) | |
parent | 080e97c7f970544d5dbb94164b1df3a5a62da864 (diff) |
Merge pull request #240808 from nrabulinski/fetchpijul
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/fetchpijul/default.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/build-support/fetchpijul/default.nix b/pkgs/build-support/fetchpijul/default.nix new file mode 100644 index 0000000000000..ca7e1a7926e80 --- /dev/null +++ b/pkgs/build-support/fetchpijul/default.nix @@ -0,0 +1,56 @@ +{ lib, stdenvNoCC, pijul }: + +lib.makeOverridable ( +{ url +, hash ? "" +, change ? null +, state ? null +, channel ? "main" +, name ? "fetchpijul" +, # TODO: Changes in pijul are unordered so there's many ways to end up with the same repository state. + # This makes leaveDotPijul unfeasible to implement until pijul CLI implements + # a way of reordering changes to sort them in a consistent and deterministic manner. + # leaveDotPijul ? false +}: +if change != null && state != null then + throw "Only one of 'change' or 'state' can be set" +else + stdenvNoCC.mkDerivation { + inherit name; + nativeBuildInputs = [ pijul ]; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + pijul clone \ + ''${change:+--change "$change"} \ + ''${state:+--state "$state"} \ + --channel "$channel" \ + "$url" \ + "$out" + + runHook postInstall + ''; + + fixupPhase = '' + runHook preFixup + + rm -rf "$out/.pijul" + + runHook postFixup + ''; + + outputHashAlgo = if hash != "" then null else "sha256"; + outputHashMode = "recursive"; + outputHash = if hash != "" then + hash + else + lib.fakeSha256; + + inherit url change state channel; + } +) |