nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 123 lines 3.2 kB view raw
1{ 2 lib, 3 stdenv, 4 makeWrapper, 5 makeDesktopItem, 6 pnpm, 7 pnpmConfigHook, 8 nodejs, 9 electron, 10 unstableGitUpdater, 11 fetchFromGitHub, 12 fetchPnpmDeps, 13 vikunja, 14}: 15 16let 17 executableName = "vikunja-desktop"; 18 version = "0.24.6"; 19 src = fetchFromGitHub { 20 owner = "go-vikunja"; 21 repo = "vikunja"; 22 rev = "v${version}"; 23 hash = "sha256-yUUZ6gPI2Bte36HzfUE6z8B/I1NlwWDSJA2pwkuzd34="; 24 }; 25in 26stdenv.mkDerivation (finalAttrs: { 27 name = "vikunja-desktop-${version}"; 28 pname = finalAttrs.name; 29 inherit version src; 30 31 sourceRoot = "${finalAttrs.src.name}/desktop"; 32 pnpmInstallFlags = [ "--shamefully-hoist" ]; 33 34 pnpmDeps = fetchPnpmDeps { 35 inherit (finalAttrs) 36 pname 37 version 38 src 39 sourceRoot 40 pnpmInstallFlags 41 ; 42 fetcherVersion = 1; 43 hash = "sha256-orFwjmS1KF82JiQa+BE92YOtKsnYiKVzLXrpjtbe1z8="; 44 }; 45 46 env = { 47 ELECTRON_SKIP_BINARY_DOWNLOAD = 1; 48 }; 49 50 nativeBuildInputs = [ 51 makeWrapper 52 nodejs 53 pnpm 54 pnpmConfigHook 55 vikunja.passthru.frontend 56 ]; 57 58 buildPhase = '' 59 runHook preBuild 60 61 sed -i "s/\$${version}/${version}/g" package.json 62 sed -i "s/\"version\": \".*\"/\"version\": \"${version}\"/" package.json 63 ln -s '${vikunja.passthru.frontend}' frontend 64 pnpm run pack -c.electronDist="${electron.dist}" -c.electronVersion="${electron.version}" 65 66 runHook postBuild 67 ''; 68 69 doCheck = false; 70 71 installPhase = '' 72 runHook preInstall 73 74 mkdir -p "$out/share/lib/vikunja-desktop" 75 cp -r ./dist/*-unpacked/{locales,resources{,.pak}} "$out/share/lib/vikunja-desktop" 76 cp -r ./node_modules "$out/share/lib/vikunja-desktop/resources" 77 78 install -Dm644 "build/icon.png" "$out/share/icons/hicolor/256x256/apps/vikunja-desktop.png" 79 80 # use makeShellWrapper (instead of the makeBinaryWrapper provided by wrapGAppsHook3) for proper shell variable expansion 81 # see https://github.com/NixOS/nixpkgs/issues/172583 82 makeShellWrapper "${lib.getExe electron}" "$out/bin/vikunja-desktop" \ 83 --add-flags "$out/share/lib/vikunja-desktop/resources/app.asar" \ 84 "''${gappsWrapperArgs[@]}" \ 85 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations,WebRTCPipeWireCapturer}}" \ 86 --set-default ELECTRON_IS_DEV 0 \ 87 --inherit-argv0 88 89 runHook postInstall 90 ''; 91 92 # Do not attempt generating a tarball for vikunja-frontend again. 93 distPhase = '' 94 true 95 ''; 96 97 passthru.updateScript = unstableGitUpdater { 98 url = "${src.meta.homepage}.git"; 99 }; 100 101 # The desktop item properties should be kept in sync with data from upstream: 102 desktopItem = makeDesktopItem { 103 name = "vikunja-desktop"; 104 exec = executableName; 105 icon = "vikunja"; 106 desktopName = "Vikunja Desktop"; 107 genericName = "To-Do list app"; 108 comment = finalAttrs.meta.description; 109 categories = [ 110 "ProjectManagement" 111 "Office" 112 ]; 113 }; 114 115 meta = with lib; { 116 description = "Desktop App of the Vikunja to-do list app"; 117 homepage = "https://vikunja.io/"; 118 license = licenses.gpl3Plus; 119 maintainers = with lib.maintainers; [ kolaente ]; 120 mainProgram = "vikunja-desktop"; 121 inherit (electron.meta) platforms; 122 }; 123})