depot/pkgs/build-support/fetchpijul/default.nix
Luke Granger-Brown 57725ef3ec Squashed 'third_party/nixpkgs/' content from commit 76612b17c0ce
git-subtree-dir: third_party/nixpkgs
git-subtree-split: 76612b17c0ce71689921ca12d9ffdc9c23ce40b2
2024-11-10 23:59:47 +00:00

59 lines
1.3 KiB
Nix

{ lib, stdenvNoCC, pijul, cacert }:
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 cacert ];
strictDeps = true;
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 = null;
outputHashMode = "recursive";
outputHash = if hash != "" then
hash
else
lib.fakeHash;
inherit url change state channel;
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
}
)