about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/ch
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2024-03-01 11:40:12 +0100
committerAlyssa Ross <hi@alyssa.is>2024-03-01 11:40:12 +0100
commitbf6d657e5dbcb5e39fda280ef7e86b2a7794ca86 (patch)
tree8eb035cbab19794f6415cc460fac7226f7a58afc /nixpkgs/pkgs/by-name/ch
parent66f707d69f1e423db5a35c2fe43b32781125a9af (diff)
parent09c1497ce5d4ed4a0edfdd44450d3048074cb300 (diff)
downloadnixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.gz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.bz2
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.lz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.xz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.zst
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.zip
Merge branch 'nixos-unstable-small' of https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/by-name/ch')
-rw-r--r--nixpkgs/pkgs/by-name/ch/chrysalis/package.nix51
-rw-r--r--nixpkgs/pkgs/by-name/ch/chrysalis/update.sh16
2 files changed, 67 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/ch/chrysalis/package.nix b/nixpkgs/pkgs/by-name/ch/chrysalis/package.nix
new file mode 100644
index 000000000000..ab4b5b5f3f8f
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ch/chrysalis/package.nix
@@ -0,0 +1,51 @@
+{ lib, appimageTools, fetchurl }:
+
+let
+  pname = "chrysalis";
+  version = "0.13.3";
+  name = "${pname}-${version}-binary";
+  src = fetchurl {
+    url =
+      "https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}-x64.AppImage";
+    hash =
+      "sha512-F6Y87rgIclj1OA3gVX/gqqp9AvXKQlBXrbqk/26F1KHPF9NzHJgVmeszSo3Nhb6xg4CzWmzkqc8IW2H/Bg57kw==";
+  };
+  appimageContents = appimageTools.extract { inherit name src; };
+in appimageTools.wrapType2 rec {
+  inherit name pname src;
+
+  multiArch = false;
+  extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ p.glib ];
+
+  # Also expose the udev rules here, so it can be used as:
+  #   services.udev.packages = [ pkgs.chrysalis ];
+  # to allow non-root modifications to the keyboards.
+
+  extraInstallCommands = ''
+    mv $out/bin/{${name},${pname}}
+
+    install -m 444 \
+      -D ${appimageContents}/usr/lib/chrysalis/resources/static/udev/60-kaleidoscope.rules \
+      -t $out/lib/udev/rules.d
+
+    install -m 444 \
+        -D ${appimageContents}/Chrysalis.desktop \
+        -t $out/share/applications
+    substituteInPlace \
+        $out/share/applications/Chrysalis.desktop \
+        --replace 'Exec=Chrysalis' 'Exec=${pname}'
+
+    install -Dm444 ${appimageContents}/usr/share/icons/hicolor/256x256/chrysalis.png -t $out/share/pixmaps
+  '';
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    description = "A graphical configurator for Kaleidoscope-powered keyboards";
+    homepage = "https://github.com/keyboardio/Chrysalis";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ aw eclairevoyant nshalman ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "chrysalis";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh b/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh
new file mode 100644
index 000000000000..182d47a9285a
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh
@@ -0,0 +1,16 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash --pure -p curl cacert jq
+
+set -euo pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+DRV_DIR="$PWD"
+
+relinfo=$(curl -sL 'https://api.github.com/repos/keyboardio/chrysalis/releases' | jq 'map(select(.prerelease == false)) | max_by(.tag_name)')
+newver=$(echo "$relinfo" | jq --raw-output '.tag_name' | sed 's|^v||')
+hashurl=$(echo "$relinfo" | jq --raw-output '.assets[] | select(.name == "latest-linux.yml").browser_download_url')
+newhash=$(curl -sL "$hashurl" | grep -Po '^sha512: \K.*')
+
+sed -i package.nix \
+    -e "/^  version =/ s|\".*\"|\"$newver\"|" \
+    -e "/sha512-/ s|\".*\"|\"sha512-$newhash\"|" \