biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / office / micropad / default.nix
blobc50e14015f3bec96f2bca38374bbe1bf85513613
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , fetchYarnDeps
5 , fetchzip
6 , makeWrapper
7 , makeDesktopItem
8 , mkYarnPackage
9 , electron
10 , desktopToDarwinBundle
11 , copyDesktopItems
13 let
14   executableName = "micropad";
16   mkYarnPackage rec {
17     pname = "micropad";
18     version = "4.5.1";
20     src = fetchFromGitHub {
21       owner = "MicroPad";
22       repo = "Micropad-Electron";
23       rev = "v${version}";
24       hash = "sha256-z+g+FwmoX4Qqf+v4BVLCtfrXwGiAUFlPLQQhp2CMhLU=";
25     };
27     micropad-core = fetchzip {
28       url = "https://github.com/MicroPad/MicroPad-Core/releases/download/v${version}/micropad.tar.xz";
29       hash = "sha256-y13PVA/AKKsc5q7NDwZFasb7fOo+56IW8qbTbsm2WWc=";
30     };
32     packageJSON = ./package.json;
34     offlineCache = fetchYarnDeps {
35       yarnLock = "${src}/yarn.lock";
36       hash = "sha256-ESYSHuHLNsn3EYKIe2p0kg142jyC0USB+Ef//oGeF08=";
37     };
39     nativeBuildInputs = [ copyDesktopItems makeWrapper ]
40       ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
42     buildPhase = ''
43       runHook preBuild
44       pushd deps/micropad/
45       yarn --offline build
46       popd
47       runHook postBuild
48     '';
50     installPhase = ''
51       runHook preInstall
53       # resources
54       mkdir -p "$out/share/"
55       cp -r './deps/micropad' "$out/share/micropad"
56       ln -s '${micropad-core}' "$out/share/micropad/core"
57       rm "$out/share/micropad/node_modules"
58       cp -r './node_modules' "$out/share/micropad"
60       # icons
61       for icon in $out/share/micropad/build/icons/*.png; do
62         mkdir -p "$out/share/icons/hicolor/$(basename $icon .png | sed -e 's/^icon-//')/apps"
63         ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png | sed -e 's/^icon-//')/apps/micropad.png"
64       done
66       # executable wrapper
67       makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
68         --add-flags "$out/share/micropad" \
69         --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
71       runHook postInstall
72     '';
74     # Do not attempt generating a tarball for micropad again.
75     doDist = false;
77     # The desktop item properties should be kept in sync with data from upstream:
78     # https://github.com/MicroPad/MicroPad-Electron/blob/master/package.json
79     desktopItems = [
80       (makeDesktopItem {
81         name = "micropad";
82         exec = "${executableName} %u";
83         icon = "micropad";
84         desktopName = "µPad";
85         startupWMClass = "µPad";
86         comment = meta.description;
87         categories = ["Office"];
88       })
89     ];
91     passthru.updateScript = ./update.sh;
93     meta = with lib; {
94       description = "A powerful note-taking app that helps you organise + take notes without restrictions";
95       homepage = "https://getmicropad.com/";
96       license = licenses.mpl20;
97       maintainers = with maintainers; [rhysmdnz];
98       inherit (electron.meta) platforms;
99       mainProgram = "micropad";
100     };
101   }