lock: 1.3.0 -> 1.3.4 (#364295)
[NixPkgs.git] / pkgs / by-name / vi / vikunja / package.nix
blob421a8d52d333a3e0746329b18aae74caaa760825
2   lib,
3   fetchFromGitHub,
4   stdenv,
5   nodejs,
6   pnpm,
7   buildGoModule,
8   mage,
9   writeShellScriptBin,
10   nixosTests,
13 let
14   version = "0.24.5";
15   src = fetchFromGitHub {
16     owner = "go-vikunja";
17     repo = "vikunja";
18     rev = "v${version}";
19     hash = "sha256-P5H+NfjE8wTmPD1VOI72hPi2DlDb4pCyq0nphK1VGK0=";
20   };
22   frontend = stdenv.mkDerivation (finalAttrs: {
23     pname = "vikunja-frontend";
24     inherit version src;
26     sourceRoot = "${finalAttrs.src.name}/frontend";
28     pnpmDeps = pnpm.fetchDeps {
29       inherit (finalAttrs)
30         pname
31         version
32         src
33         sourceRoot
34         ;
35       hash = "sha256-D2dOyYsdsNV1ZSQdjpy6rfoix7yBACEHj/2XyHb7HWE=";
36     };
38     nativeBuildInputs = [
39       nodejs
40       pnpm.configHook
41     ];
43     doCheck = true;
45     postBuild = ''
46       pnpm run build
47     '';
49     checkPhase = ''
50       pnpm run test:unit --run
51     '';
53     installPhase = ''
54       cp -r dist/ $out
55     '';
56   });
58   # Injects a `t.Skip()` into a given test since there's apparently no other way to skip tests here.
59   skipTest =
60     lineOffset: testCase: file:
61     let
62       jumpAndAppend = lib.concatStringsSep ";" (lib.replicate (lineOffset - 1) "n" ++ [ "a" ]);
63     in
64     ''
65       sed -i -e '/${testCase}/{
66       ${jumpAndAppend} t.Skip();
67       }' ${file}
68     '';
70 buildGoModule {
71   inherit src version;
72   pname = "vikunja";
74   nativeBuildInputs =
75     let
76       fakeGit = writeShellScriptBin "git" ''
77         if [[ $@ = "describe --tags --always --abbrev=10" ]]; then
78             echo "${version}"
79         else
80             >&2 echo "Unknown command: $@"
81             exit 1
82         fi
83       '';
84     in
85     [
86       fakeGit
87       mage
88     ];
90   vendorHash = "sha256-OsKejno8QGg7HzRsrftngiWGiWHFc1jDLi5mQ9/NjI4=";
92   inherit frontend;
94   prePatch = ''
95     cp -r ${frontend} frontend/dist
96   '';
98   postConfigure = ''
99     # These tests need internet, so we skip them.
100     ${skipTest 1 "TestConvertTrelloToVikunja" "pkg/modules/migration/trello/trello_test.go"}
101     ${skipTest 1 "TestConvertTodoistToVikunja" "pkg/modules/migration/todoist/todoist_test.go"}
102   '';
104   buildPhase = ''
105     runHook preBuild
107     # Fixes "mkdir /homeless-shelter: permission denied" - "Error: error compiling magefiles" during build
108     export HOME=$(mktemp -d)
109     mage build:build
111     runHook postBuild
112   '';
114   checkPhase = ''
115     mage test:unit
116     mage test:integration
117   '';
119   installPhase = ''
120     runHook preInstall
121     install -Dt $out/bin vikunja
122     runHook postInstall
123   '';
125   passthru.tests.vikunja = nixosTests.vikunja;
127   meta = {
128     changelog = "https://kolaente.dev/vikunja/api/src/tag/v${version}/CHANGELOG.md";
129     description = "Todo-app to organize your life";
130     homepage = "https://vikunja.io/";
131     license = lib.licenses.agpl3Plus;
132     maintainers = with lib.maintainers; [ leona ];
133     mainProgram = "vikunja";
134     platforms = lib.platforms.linux;
135   };