[26.05] vikunja: 2.5.0 -> 2.6.0 (#563798)

This commit is contained in:
Adam C. Stephens
2026-09-16 13:15:37 +00:00
committed by GitHub
4 changed files with 149 additions and 127 deletions

View File

@@ -0,0 +1,68 @@
{
src,
version,
lib,
stdenv,
nodejs_24,
pnpm_10,
fetchPnpmDeps,
pnpmConfigHook,
dart-sass,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vikunja-frontend";
inherit version src;
sourceRoot = "${finalAttrs.src.name}/frontend";
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs)
pname
version
src
sourceRoot
;
pnpm = pnpm_10;
fetcherVersion = 3;
hash = "sha256-aQWTzJZU6NJrZxuoCeQDJjujPq+niixmFvqtPdWS4wk=";
};
nativeBuildInputs = [
nodejs_24
dart-sass
pnpmConfigHook
pnpm_10
];
postPatch = ''
substituteInPlace src/version.json \
--replace-fail '"dev"' '"${finalAttrs.version}"'
'';
postBuild = ''
# Force sass-embedded to use our dart-sass instead of bundled binaries.
substituteInPlace node_modules/sass-embedded/dist/lib/src/compiler-path.js \
--replace-fail 'compilerCommand = (() => {' 'compilerCommand = (() => { return ["${lib.getExe dart-sass}"];'
pnpm run build
'';
doCheck = true;
checkPhase = ''
runHook preCheck
pnpm run test:unit --run
runHook postCheck
'';
installPhase = ''
runHook preInstall
cp -r dist/ $out
runHook postInstall
'';
})

View File

@@ -1,74 +1,17 @@
{
lib,
callPackage,
fetchFromGitHub,
stdenv,
nodejs_24,
pnpm_10,
fetchPnpmDeps,
pnpmConfigHook,
buildGoModule,
buildGo127Module,
mage,
dart-sass,
writableTmpDirAsHomeHook,
writeShellScriptBin,
nixosTests,
nix-update-script,
}:
let
version = "2.5.0";
src = fetchFromGitHub {
owner = "go-vikunja";
repo = "vikunja";
rev = "v${version}";
hash = "sha256-qI4mkgcN9yYRmh5V+KzIHupX7uWsszV4Xb31OYvukxQ=";
};
frontend = stdenv.mkDerivation (finalAttrs: {
pname = "vikunja-frontend";
inherit version src;
sourceRoot = "${finalAttrs.src.name}/frontend";
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs)
pname
version
src
sourceRoot
;
pnpm = pnpm_10;
fetcherVersion = 3;
hash = "sha256-xZBgE4GM59Ihl5a3qgcmkjR4Q3wYlcsiDapiNEzBQOg=";
};
nativeBuildInputs = [
nodejs_24
dart-sass
pnpmConfigHook
pnpm_10
];
postPatch = ''
substituteInPlace src/version.json \
--replace-fail '"dev"' '"${finalAttrs.version}"'
'';
doCheck = true;
postBuild = ''
# Force sass-embedded to use our dart-sass instead of bundled binaries.
substituteInPlace node_modules/sass-embedded/dist/lib/src/compiler-path.js \
--replace-fail 'compilerCommand = (() => {' 'compilerCommand = (() => { return ["${lib.getExe dart-sass}"];'
pnpm run build
'';
checkPhase = ''
pnpm run test:unit --run
'';
installPhase = ''
cp -r dist/ $out
'';
});
buildGoModule = buildGo127Module;
# Injects a `t.Skip()` into a given test since there's apparently no other way to skip tests here.
skipTest =
@@ -82,15 +25,22 @@ let
}' ${file}
'';
in
buildGoModule {
inherit src version;
buildGoModule (finalAttrs: {
pname = "vikunja";
version = "2.6.0";
src = fetchFromGitHub {
owner = "go-vikunja";
repo = "vikunja";
rev = "v${finalAttrs.version}";
hash = "sha256-Xh1ozUTOVqywk0i8xQWkG/bPRgPH9EABjRW8p4do1mE=";
};
nativeBuildInputs =
let
fakeGit = writeShellScriptBin "git" ''
if [[ $@ = "describe --tags --always --abbrev=10" ]]; then
echo "${version}"
echo "${finalAttrs.version}"
else
>&2 echo "Unknown command: $@"
exit 1
@@ -100,14 +50,23 @@ buildGoModule {
[
fakeGit
mage
# mage wants to write some files to HOME
writableTmpDirAsHomeHook
];
vendorHash = "sha256-bn+bcGzeB0/KkhPNkbjK/EgKQG3iqVlJxtt6betGUNE=";
vendorHash = "sha256-R6M5UyF10pIdoAvjWnS6Dqe/U6LTxmS6OwRTgmxfU4g=";
inherit frontend;
frontend = callPackage ./frontend.nix {
inherit (finalAttrs) src version;
};
veans = callPackage ./veans.nix {
inherit (finalAttrs) src version meta;
inherit buildGoModule;
};
prePatch = ''
cp -r ${frontend} frontend/dist
cp -r ${finalAttrs.frontend} frontend/dist
'';
postConfigure = ''
@@ -122,32 +81,46 @@ buildGoModule {
buildPhase = ''
runHook preBuild
# Fixes "mkdir /homeless-shelter: permission denied" - "Error: error compiling magefiles" during build
export HOME=$(mktemp -d)
mage build:build
runHook postBuild
'';
checkPhase = ''
runHook preCheck
mage test:feature
mage test:web
runHook postCheck
'';
installPhase = ''
runHook preInstall
install -Dt $out/bin vikunja
runHook postInstall
'';
passthru = {
# used by vikunja-desktop
inherit (finalAttrs) frontend;
tests.vikunja = nixosTests.vikunja;
frontend = frontend;
updateScript = ./update.sh;
updateScript = nix-update-script {
extraArgs = [
"--subpackage"
"frontend"
"--subpackage"
"veans"
];
};
};
meta = {
changelog = "https://github.com/go-vikunja/vikunja/blob/v${version}/CHANGELOG.md";
changelog = "https://github.com/go-vikunja/vikunja/blob/v${finalAttrs.version}/CHANGELOG.md";
description = "Todo-app to organize your life";
homepage = "https://vikunja.io/";
license = lib.licenses.agpl3Plus;
@@ -158,4 +131,4 @@ buildGoModule {
mainProgram = "vikunja";
platforms = lib.platforms.linux;
};
}
})

View File

@@ -1,53 +0,0 @@
#!/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"

View File

@@ -0,0 +1,34 @@
{
meta,
src,
version,
buildGoModule,
}:
buildGoModule (finalAttrs: {
pname = "veans";
inherit src version;
__structuredAttrs = true;
modRoot = "veans";
vendorHash = "sha256-ac2M7wNlOn6ku8sn/rZmPCSGPodw88ufR8tr1lh54II=";
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-X main.version=v${finalAttrs.version}"
];
# needs a running vikunja instance
doCheck = false;
meta = meta // {
description = "A beans-shaped CLI for Vikunja";
homepage = "https://vikunja.io/docs/veans/";
mainProgram = "veans";
};
})