summary refs log tree commit diff
path: root/pkgs/applications/misc/bazecor/default.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-11-21 16:12:21 +0100
committerAlyssa Ross <hi@alyssa.is>2023-11-21 16:12:48 +0100
commit048a4cd441a59cbf89defb18bb45c9f0b4429b35 (patch)
treef8f5850ff05521ab82d65745894714a8796cbfb6 /pkgs/applications/misc/bazecor/default.nix
parent030c5028b07afcedce7c5956015c629486cc79d9 (diff)
parent4c2d05dd6435d449a3651a6dd314d9411b5f8146 (diff)
downloadnixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar.gz
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar.bz2
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar.lz
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar.xz
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.tar.zst
nixpkgs-048a4cd441a59cbf89defb18bb45c9f0b4429b35.zip
Rebase onto e4ad989506ec7d71f7302cc3067abd82730a4beb HEAD rootfs
Signed-off-by: Alyssa Ross <hi@alyssa.is>
Diffstat (limited to 'pkgs/applications/misc/bazecor/default.nix')
-rw-r--r--pkgs/applications/misc/bazecor/default.nix56
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/applications/misc/bazecor/default.nix b/pkgs/applications/misc/bazecor/default.nix
new file mode 100644
index 00000000000..e84cf11b338
--- /dev/null
+++ b/pkgs/applications/misc/bazecor/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, appimageTools
+, fetchurl
+}:
+
+appimageTools.wrapAppImage rec {
+  pname = "bazecor";
+  version = "1.3.6";
+
+  src = appimageTools.extract {
+    inherit pname version;
+    src = fetchurl {
+      url = "https://github.com/Dygmalab/Bazecor/releases/download/v.${version}/Bazecor-${version}-x64.AppImage";
+      hash = "sha256-Mz7T/AAlyfMzdfy/ZV4AEP3ClTolwr2pPzkSCPL66/w=";
+    };
+
+    # Workaround for https://github.com/Dygmalab/Bazecor/issues/370
+    postExtract = ''
+      substituteInPlace \
+        $out/usr/lib/bazecor/resources/app/.webpack/main/index.js \
+        --replace \
+          'checkUdev=()=>{try{if(c.default.existsSync(f))return c.default.readFileSync(f,"utf-8").trim()===l.trim()}catch(e){console.error(e)}return!1}' \
+          'checkUdev=()=>{return 1}'
+    '';
+  };
+
+  # also make sure to update the udev rules in ./10-dygma.rules; most recently
+  # taken from
+  # https://github.com/Dygmalab/Bazecor/blob/v1.3.6/src/main/utils/udev.ts#L6
+
+  extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [
+    p.glib
+  ];
+
+  # Also expose the udev rules here, so it can be used as:
+  #   services.udev.packages = [ pkgs.bazecor ];
+  # to allow non-root modifications to the keyboards.
+
+  extraInstallCommands = ''
+    mv $out/bin/bazecor-* $out/bin/bazecor
+
+    mkdir -p $out/lib/udev/rules.d
+    ln -s --target-directory=$out/lib/udev/rules.d ${./10-dygma.rules}
+  '';
+
+  meta = {
+    description = "Graphical configurator for Dygma Products";
+    homepage = "https://github.com/Dygmalab/Bazecor";
+    changelog = "https://github.com/Dygmalab/Bazecor/releases/tag/v${version}";
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ amesgen ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "bazecor";
+  };
+}