about summary refs log tree commit diff
path: root/pkgs/applications/audio/open-stage-control
diff options
context:
space:
mode:
authorLily Foster <lily@lily.flowers>2022-10-20 10:54:18 -0400
committerLily Foster <lily@lily.flowers>2022-10-20 10:54:18 -0400
commit351632dd32a303908311ceaa30894426ebe452a8 (patch)
treec960af7c57366ccbe90e8e1989a0d5d39d979cdc /pkgs/applications/audio/open-stage-control
parentd2cfe468f81b5380a24a4de4f66c57d94ee9ca0e (diff)
open-stage-control: turn on strictDeps and add updateScript
Diffstat (limited to 'pkgs/applications/audio/open-stage-control')
-rw-r--r--pkgs/applications/audio/open-stage-control/default.nix16
-rwxr-xr-xpkgs/applications/audio/open-stage-control/generate-dependencies.sh18
-rwxr-xr-xpkgs/applications/audio/open-stage-control/update.sh25
3 files changed, 38 insertions, 21 deletions
diff --git a/pkgs/applications/audio/open-stage-control/default.nix b/pkgs/applications/audio/open-stage-control/default.nix
index f865e31b2dc91..9de4ab1fd9c24 100644
--- a/pkgs/applications/audio/open-stage-control/default.nix
+++ b/pkgs/applications/audio/open-stage-control/default.nix
@@ -9,7 +9,7 @@ in
 
 nodeComposition.package.override rec {
   pname = "open-stage-control";
-  inherit (nodeComposition.args) version;
+  version = "1.17.0";
 
   src = fetchFromGitHub {
     owner = "jean-emmanuel";
@@ -18,16 +18,25 @@ nodeComposition.package.override rec {
     hash = "sha256-q18pRtsHfme+OPmi3LhJDK1AdpfkwhoE9LA2rNenDtY=";
   };
 
+  strictDeps = true;
+
   nativeBuildInputs = [
     copyDesktopItems
     makeBinaryWrapper
+    nodejs
+    python3
   ];
 
   buildInputs = [
     python3.pkgs.python-rtmidi
   ];
 
-  dontNpmInstall = true;
+  doInstallCheck = true;
+
+  preRebuild = ''
+    # remove electron to prevent building since nixpkgs electron is used instead
+    rm -r node_modules/electron
+  '';
 
   postInstall = ''
     # build assets
@@ -48,7 +57,6 @@ nodeComposition.package.override rec {
   installCheckPhase = ''
     XDG_CONFIG_HOME="$(mktemp -d)" $out/bin/open-stage-control --help
   '';
-  doInstallCheck = true;
 
   desktopItems = [
     (makeDesktopItem {
@@ -62,6 +70,8 @@ nodeComposition.package.override rec {
     })
   ];
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "Libre and modular OSC / MIDI controller";
     homepage = "https://openstagecontrol.ammd.net/";
diff --git a/pkgs/applications/audio/open-stage-control/generate-dependencies.sh b/pkgs/applications/audio/open-stage-control/generate-dependencies.sh
deleted file mode 100755
index ce811b669e121..0000000000000
--- a/pkgs/applications/audio/open-stage-control/generate-dependencies.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i bash -p jq nodePackages.node2nix
-
-# Get latest release tag
-tag="$(curl -s https://api.github.com/repos/jean-emmanuel/open-stage-control/releases/latest | jq -r .tag_name)"
-
-# Download package.json from the latest release
-curl -s https://raw.githubusercontent.com/jean-emmanuel/open-stage-control/"$tag"/package.json | grep -v '"electron"\|"electron-installer-debian"\|"electron-packager"\|"electron-packager-plugin-non-proprietary-codecs-ffmpeg"' >package.json
-
-# Lock dependencies with node2nix
-node2nix \
-  --node-env ../../../development/node-packages/node-env.nix \
-  --nodejs-16 \
-  --input package.json \
-  --output node-packages.nix \
-  --composition node-composition.nix
-
-rm -f package.json
diff --git a/pkgs/applications/audio/open-stage-control/update.sh b/pkgs/applications/audio/open-stage-control/update.sh
new file mode 100755
index 0000000000000..a8cd0e04fa685
--- /dev/null
+++ b/pkgs/applications/audio/open-stage-control/update.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p common-updater-scripts jq nodePackages.node2nix
+set -euo pipefail
+
+# Find nixpkgs repo
+nixpkgs="$(git rev-parse --show-toplevel || (printf 'Could not find root of nixpkgs repo\nAre we running from within the nixpkgs git repo?\n' >&2; exit 1))"
+
+# Get latest release tag
+tag="$(curl -s https://api.github.com/repos/jean-emmanuel/open-stage-control/releases/latest | jq -r .tag_name)"
+
+# Download package.json from the latest release
+curl -sSL https://raw.githubusercontent.com/jean-emmanuel/open-stage-control/"$tag"/package.json | grep -v '"electron"\|"electron-installer-debian"' >"$nixpkgs"/pkgs/applications/audio/open-stage-control/package.json
+
+# Lock dependencies with node2nix
+node2nix \
+  --node-env "$nixpkgs"/pkgs/development/node-packages/node-env.nix \
+  --nodejs-16 \
+  --input "$nixpkgs"/pkgs/applications/audio/open-stage-control/package.json \
+  --output "$nixpkgs"/pkgs/applications/audio/open-stage-control/node-packages.nix \
+  --composition "$nixpkgs"/pkgs/applications/audio/open-stage-control/node-composition.nix
+
+rm -f "$nixpkgs"/pkgs/applications/audio/open-stage-control/package.json
+
+# Update hash
+(cd "$nixpkgs" && update-source-version "${UPDATE_NIX_ATTR_PATH:-open-stage-control}" "${tag#v}")