biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / office / micropad / default.nix
blob8fd6b2dd5228c68977c41ef9b05d8c04b1f087ae
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , fetchYarnDeps
5 , yarnBuildHook
6 , fetchzip
7 , makeWrapper
8 , makeDesktopItem
9 , electron
10 , desktopToDarwinBundle
11 , copyDesktopItems
14 stdenv.mkDerivation (finalAttrs: {
15   pname = "micropad";
16   version = "4.5.1";
18   src = fetchFromGitHub {
19     owner = "MicroPad";
20     repo = "Micropad-Electron";
21     rev = "v${finalAttrs.version}";
22     hash = "sha256-z+g+FwmoX4Qqf+v4BVLCtfrXwGiAUFlPLQQhp2CMhLU=";
23   };
25   # This project can't be built from source currently, because Nixpkgs lacks
26   # ecosystem for https://bun.sh
27   micropad-core = fetchzip {
28     url = "https://github.com/MicroPad/MicroPad-Core/releases/download/v${finalAttrs.version}/micropad.tar.xz";
29     hash = "sha256-y13PVA/AKKsc5q7NDwZFasb7fOo+56IW8qbTbsm2WWc=";
30   };
32   offlineCache = fetchYarnDeps {
33     yarnLock = "${finalAttrs.src}/yarn.lock";
34     hash = "sha256-ESYSHuHLNsn3EYKIe2p0kg142jyC0USB+Ef//oGeF08=";
35   };
37   nativeBuildInputs = [ yarnBuildHook copyDesktopItems makeWrapper ]
38     ++ lib.optionals stdenv.hostPlatform.isDarwin [ desktopToDarwinBundle ];
40   installPhase = ''
41     runHook preInstall
43     # resources
44     mkdir -p "$out/share/"
45     cp -r './deps/micropad' "$out/share/micropad"
46     ln -s '${finalAttrs.micropad-core}' "$out/share/micropad/core"
47     rm "$out/share/micropad/node_modules"
48     cp -r './node_modules' "$out/share/micropad"
50     # icons
51     for icon in $out/share/micropad/build/icons/*.png; do
52       mkdir -p "$out/share/icons/hicolor/$(basename $icon .png | sed -e 's/^icon-//')/apps"
53       ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png | sed -e 's/^icon-//')/apps/micropad.png"
54     done
56     # executable wrapper
57     makeWrapper '${electron}/bin/electron' "$out/bin/micropad" \
58       --add-flags "$out/share/micropad" \
59       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
61     runHook postInstall
62   '';
64   # Do not attempt generating a tarball for micropad again.
65   doDist = false;
67   # The desktop item properties should be kept in sync with data from upstream:
68   # https://github.com/MicroPad/MicroPad-Electron/blob/master/package.json
69   desktopItems = [
70     (makeDesktopItem {
71       name = "micropad";
72       exec = "micropad %u";
73       icon = "micropad";
74       desktopName = "µPad";
75       startupWMClass = "µPad";
76       comment = finalAttrs.meta.description;
77       categories = ["Office"];
78     })
79   ];
81   meta = {
82     description = "A powerful note-taking app that helps you organise + take notes without restrictions";
83     homepage = "https://getmicropad.com/";
84     license = lib.licenses.mpl20;
85     maintainers = with lib.maintainers; [rhysmdnz];
86     inherit (electron.meta) platforms;
87     mainProgram = "micropad";
88   };