diff --git a/pkgs/by-name/vi/vikunja/frontend.nix b/pkgs/by-name/vi/vikunja/frontend.nix new file mode 100644 index 000000000000..96ee618d35ed --- /dev/null +++ b/pkgs/by-name/vi/vikunja/frontend.nix @@ -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 + ''; +}) diff --git a/pkgs/by-name/vi/vikunja/package.nix b/pkgs/by-name/vi/vikunja/package.nix index 676747e6b222..2d838dd52a0a 100644 --- a/pkgs/by-name/vi/vikunja/package.nix +++ b/pkgs/by-name/vi/vikunja/package.nix @@ -2,75 +2,16 @@ 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 = @@ -85,14 +26,21 @@ let ''; in buildGoModule (finalAttrs: { - inherit src version; 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 @@ -102,15 +50,23 @@ buildGoModule (finalAttrs: { [ fakeGit mage + # mage wants to write some files to HOME + writableTmpDirAsHomeHook ]; - vendorHash = "sha256-bn+bcGzeB0/KkhPNkbjK/EgKQG3iqVlJxtt6betGUNE="; + vendorHash = "sha256-R6M5UyF10pIdoAvjWnS6Dqe/U6LTxmS6OwRTgmxfU4g="; - inherit frontend; - veans = callPackage ./veans.nix { inherit (finalAttrs) src version meta; }; + 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 = '' @@ -125,27 +81,34 @@ buildGoModule (finalAttrs: { 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 = nix-update-script { extraArgs = [ "--subpackage" @@ -157,7 +120,7 @@ buildGoModule (finalAttrs: { }; 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; diff --git a/pkgs/by-name/vi/vikunja/veans.nix b/pkgs/by-name/vi/vikunja/veans.nix index a5092462871c..d5917a71d603 100644 --- a/pkgs/by-name/vi/vikunja/veans.nix +++ b/pkgs/by-name/vi/vikunja/veans.nix @@ -14,7 +14,7 @@ buildGoModule (finalAttrs: { modRoot = "veans"; - vendorHash = "sha256-4Ayug+r7sWL/JZI8fGCyDZ1SaTwCvSWrQpqv7uYCHhc="; + vendorHash = "sha256-ac2M7wNlOn6ku8sn/rZmPCSGPodw88ufR8tr1lh54II="; env.CGO_ENABLED = 0;