mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-03 21:40:12 +00:00
[26.05] vikunja: 2.5.0 -> 2.6.0 (#563798)
This commit is contained in:
68
pkgs/by-name/vi/vikunja/frontend.nix
Normal file
68
pkgs/by-name/vi/vikunja/frontend.nix
Normal 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
|
||||
'';
|
||||
})
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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"
|
||||
34
pkgs/by-name/vi/vikunja/veans.nix
Normal file
34
pkgs/by-name/vi/vikunja/veans.nix
Normal 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";
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user