biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / audio / open-stage-control / default.nix
blob60b9bc23bc3621eb00b63832e3dcd6539639e26b
1 { lib
2 , buildNpmPackage
3 , fetchFromGitHub
4 , makeBinaryWrapper
5 , makeDesktopItem
6 , copyDesktopItems
7 , nodejs_18
8 , electron
9 , python3
10 , nix-update-script
13 buildNpmPackage rec {
14   pname = "open-stage-control";
15   version = "1.26.2";
17   src = fetchFromGitHub {
18     owner = "jean-emmanuel";
19     repo = "open-stage-control";
20     rev = "v${version}";
21     hash = "sha256-hBQyz6VAtiC1XOADZml1MwGKtmdyiJNlRAmHRjt6QsA=";
22   };
24   # Remove some Electron stuff from package.json
25   postPatch = ''
26     sed -i -e '/"electron"\|"electron-installer-debian"/d' package.json
27   '';
29   npmDepsHash = "sha256-UqjYNXdNoQmirIgU9DRgkp14SIrawfrfi9mD2h6ACyU=";
31   nodejs = nodejs_18;
33   nativeBuildInputs = [
34     copyDesktopItems
35     makeBinaryWrapper
36   ];
38   buildInputs = [
39     python3.pkgs.python-rtmidi
40   ];
42   doInstallCheck = true;
44   makeCacheWritable = true;
45   npmFlags = [ "--legacy-peer-deps" ];
47   # Override installPhase so we can copy the only directory that matters (app)
48   installPhase = ''
49     runHook preInstall
51     # copy built app and node_modules directories
52     mkdir -p $out/lib/node_modules/open-stage-control
53     cp -r app $out/lib/node_modules/open-stage-control/
55     # copy icon
56     install -Dm644 resources/images/logo.png $out/share/icons/hicolor/256x256/apps/open-stage-control.png
57     install -Dm644 resources/images/logo.svg $out/share/icons/hicolor/scalable/apps/open-stage-control.svg
59     # wrap electron and include python-rtmidi
60     makeWrapper '${electron}/bin/electron' $out/bin/open-stage-control \
61       --inherit-argv0 \
62       --add-flags $out/lib/node_modules/open-stage-control/app \
63       --prefix PYTHONPATH : "$PYTHONPATH" \
64       --prefix PATH : '${lib.makeBinPath [ python3 ]}'
66     runHook postInstall
67   '';
69   installCheckPhase = ''
70     XDG_CONFIG_HOME="$(mktemp -d)" $out/bin/open-stage-control --help
71   '';
73   desktopItems = [
74     (makeDesktopItem {
75       name = "open-stage-control";
76       exec = "open-stage-control";
77       icon = "open-stage-control";
78       desktopName = "Open Stage Control";
79       comment = meta.description;
80       categories = [ "Network" "Audio" "AudioVideo" "Midi" ];
81       startupWMClass = "open-stage-control";
82     })
83   ];
85   passthru.updateScript = nix-update-script { };
87   meta = with lib; {
88     description = "Libre and modular OSC / MIDI controller";
89     homepage = "https://openstagecontrol.ammd.net/";
90     license = licenses.gpl3Only;
91     maintainers = with maintainers; [ lilyinstarlight ];
92     platforms = platforms.linux;
93     mainProgram = "open-stage-control";
94   };