From 8d507bc90591e1b15ce871d6d9c5eca9d9b810d6 Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 9 Feb 2026 12:48:21 +0100 Subject: [PATCH] vikunja: add updateScript --- pkgs/by-name/vi/vikunja/package.nix | 1 + pkgs/by-name/vi/vikunja/update.sh | 53 +++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100755 pkgs/by-name/vi/vikunja/update.sh diff --git a/pkgs/by-name/vi/vikunja/package.nix b/pkgs/by-name/vi/vikunja/package.nix index 86621be67d0c..7124693f8a7b 100644 --- a/pkgs/by-name/vi/vikunja/package.nix +++ b/pkgs/by-name/vi/vikunja/package.nix @@ -138,6 +138,7 @@ buildGoModule { passthru = { tests.vikunja = nixosTests.vikunja; frontend = frontend; + updateScript = ./update.sh; }; meta = { diff --git a/pkgs/by-name/vi/vikunja/update.sh b/pkgs/by-name/vi/vikunja/update.sh new file mode 100755 index 000000000000..1c09f61cb0f6 --- /dev/null +++ b/pkgs/by-name/vi/vikunja/update.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix wget jq nurl + +# shellcheck shell=bash + +set -euo pipefail + +if [[ $# -gt 1 || "${1:-}" == -* ]]; then + echo "Regenerates packaging data for the vikunja package." + echo "Usage: $0 [version]" + exit 1 +fi + +version="${1:-}" + +NIXPKGS_ROOT="$(git rev-parse --show-toplevel)" + +if [ -z "$version" ]; then + TOKEN_ARGS=() + if [ -n "${GITHUB_TOKEN:-}" ]; then + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") + fi + version="$(wget -q -O- ${TOKEN_ARGS[@]+"${TOKEN_ARGS[@]}"} "https://api.github.com/repos/go-vikunja/vikunja/releases?per_page=10" | jq -r '[.[] | select(.prerelease == false)][0].tag_name')" +fi + +# strip leading "v" +version="${version#v}" + +cd "$(dirname "$0")" + +# Update version, blank out all hashes so nurl can recompute them +sed -i -E 's#version = ".*"#version = "'"$version"'"#' package.nix +sed -i -E '/fetchFromGitHub \{/,/\};/ s#hash = ".*"#hash = ""#' package.nix +sed -i -E '/fetchPnpmDeps \{/,/\};/ s#hash = ".*"#hash = ""#' package.nix +sed -i -E 's#vendorHash = ".*"#vendorHash = ""#' package.nix + +# Source hash (must be computed first, pnpm and vendor depend on it) +src_hash=$(nurl -e "(import $NIXPKGS_ROOT/. { }).vikunja.src") +sed -i -E '/fetchFromGitHub \{/,/\};/ s#hash = ".*"#hash = "'"$src_hash"'"#' package.nix + +# pnpm dependencies hash for frontend +pnpm_hash=$(nurl -e "(import $NIXPKGS_ROOT/. { }).vikunja.frontend.pnpmDeps") +sed -i -E '/fetchPnpmDeps \{/,/\};/ s#hash = ".*"#hash = "'"$pnpm_hash"'"#' package.nix + +# Go modules vendor hash +vendor_hash=$(nurl -e "(import $NIXPKGS_ROOT/. { }).vikunja.goModules") +sed -i -E 's#vendorHash = ".*"#vendorHash = "'"$vendor_hash"'"#' package.nix + +echo "Update complete!" +echo "Version: $version" +echo "Source hash: $src_hash" +echo "Frontend pnpm hash: $pnpm_hash" +echo "Go vendor hash: $vendor_hash"