From 080e97c7f970544d5dbb94164b1df3a5a62da864 Mon Sep 17 00:00:00 2001 From: Nikodem RabuliƄski Date: Sat, 1 Jul 2023 00:05:30 +0200 Subject: build-support: Add fetchpijul function. --- pkgs/build-support/fetchpijul/default.nix | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pkgs/build-support/fetchpijul/default.nix (limited to 'pkgs/build-support') 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; + } +) -- cgit 1.4.1