chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / vi / vikunja / package.nix
bloba62595242c3eaf45d4a1b8109975316c9bf0fbe7
1 { lib, fetchFromGitHub, stdenv, nodejs, pnpm, buildGoModule, mage, writeShellScriptBin, nixosTests }:
3 let
4   version = "0.24.4";
5   src = fetchFromGitHub {
6     owner = "go-vikunja";
7     repo = "vikunja";
8     rev = "v${version}";
9     hash = "sha256-h3Jz28HYQYZC+oWGXNeKv2iNsrU0gbBRfWgOvuKijtw=";
10   };
12   frontend = stdenv.mkDerivation (finalAttrs: {
13     pname = "vikunja-frontend";
14     inherit version src;
16     sourceRoot = "${finalAttrs.src.name}/frontend";
18     pnpmDeps = pnpm.fetchDeps {
19       inherit (finalAttrs) pname version src sourceRoot;
20       hash = "sha256-pp4AZnoI7gON/meZalfXmaliKR/wSjkj9GTX3My678s=";
21     };
23     nativeBuildInputs = [
24       nodejs
25       pnpm.configHook
26     ];
28     doCheck = true;
30     postBuild = ''
31       pnpm run build
32     '';
34     checkPhase = ''
35       pnpm run test:unit --run
36     '';
38     installPhase = ''
39       cp -r dist/ $out
40     '';
41   });
43   # Injects a `t.Skip()` into a given test since there's apparently no other way to skip tests here.
44   skipTest = lineOffset: testCase: file:
45     let
46       jumpAndAppend = lib.concatStringsSep ";" (lib.replicate (lineOffset - 1) "n" ++ [ "a" ]);
47     in ''
48       sed -i -e '/${testCase}/{
49       ${jumpAndAppend} t.Skip();
50       }' ${file}
51     '';
53 buildGoModule {
54   inherit src version;
55   pname = "vikunja";
57   nativeBuildInputs =
58     let
59       fakeGit = writeShellScriptBin "git" ''
60         if [[ $@ = "describe --tags --always --abbrev=10" ]]; then
61             echo "${version}"
62         else
63             >&2 echo "Unknown command: $@"
64             exit 1
65         fi
66       '';
67     in
68     [ fakeGit mage ];
70   vendorHash = "sha256-d2BNzsBeWlpZGbU7PkXWO5e9FLJA/Wda5ImXwqh/WV4=";
72   inherit frontend;
74   prePatch = ''
75     cp -r ${frontend} frontend/dist
76   '';
78   postConfigure = ''
79     # These tests need internet, so we skip them.
80     ${skipTest 1 "TestConvertTrelloToVikunja" "pkg/modules/migration/trello/trello_test.go"}
81     ${skipTest 1 "TestConvertTodoistToVikunja" "pkg/modules/migration/todoist/todoist_test.go"}
82   '';
84   buildPhase = ''
85     runHook preBuild
87     # Fixes "mkdir /homeless-shelter: permission denied" - "Error: error compiling magefiles" during build
88     export HOME=$(mktemp -d)
89     mage build:build
91     runHook postBuild
92   '';
94   checkPhase = ''
95     mage test:unit
96     mage test:integration
97   '';
99   installPhase = ''
100     runHook preInstall
101     install -Dt $out/bin vikunja
102     runHook postInstall
103   '';
105   passthru.tests.vikunja = nixosTests.vikunja;
107   meta = {
108     changelog = "https://kolaente.dev/vikunja/api/src/tag/v${version}/CHANGELOG.md";
109     description = "Todo-app to organize your life";
110     homepage = "https://vikunja.io/";
111     license = lib.licenses.agpl3Plus;
112     maintainers = with lib.maintainers; [ leona ];
113     mainProgram = "vikunja";
114     platforms = lib.platforms.linux;
115   };