aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix b/infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix
new file mode 100644
index 000000000000..94cd33b9a26b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/common-updater/unstable-updater.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, writeShellScript
+, coreutils
+, git
+, nix
+, common-updater-scripts
+}:
+
+# This is an updater for unstable packages that should always use the latest
+# commit.
+{ url ? null # The git url, if empty it will be set to src.url
+}:
+
+let
+ updateScript = writeShellScript "unstable-update-script.sh" ''
+ set -ex
+
+ url="$1"
+
+ # By default we set url to src.url
+ if [[ -z "$url" ]]; then
+ url="$(${nix}/bin/nix-instantiate $systemArg --eval -E \
+ "with import ./. {}; $UPDATE_NIX_ATTR_PATH.src.url" \
+ | tr -d '"')"
+ fi
+
+ # Get info about HEAD from a shallow git clone
+ tmpdir="$(${coreutils}/bin/mktemp -d)"
+ ${git}/bin/git clone --bare --depth=1 "$url" "$tmpdir"
+ pushd "$tmpdir"
+ commit_date="$(${git}/bin/git show -s --pretty='format:%cs')"
+ commit_sha="$(${git}/bin/git show -s --pretty='format:%H')"
+ popd
+ ${coreutils}/bin/rm -rf "$tmpdir"
+
+ # update the nix expression
+ ${common-updater-scripts}/bin/update-source-version \
+ "$UPDATE_NIX_ATTR_PATH" \
+ "unstable-$commit_date" \
+ --rev="$commit_sha"
+ '';
+
+in [ updateScript url ]
+