diff --git a/hosts/boreal/default.nix b/hosts/boreal/default.nix index 1d04ac5..30f339a 100644 --- a/hosts/boreal/default.nix +++ b/hosts/boreal/default.nix @@ -98,7 +98,7 @@ "rfkill-release" ]; - services.udev.packages = [pkgs.packages.kaleidoscope-udev-rules]; + services.udev.packages = [pkgs.chrysalis]; hardware.bluetooth = { enable = true; diff --git a/hosts/zephyrus/default.nix b/hosts/zephyrus/default.nix index 8bced4c..2eff70d 100644 --- a/hosts/zephyrus/default.nix +++ b/hosts/zephyrus/default.nix @@ -93,7 +93,7 @@ environment.systemPackages = [pkgs.arandr pkgs.chrysalis]; - services.udev.packages = [pkgs.packages.kaleidoscope-udev-rules]; + services.udev.packages = [pkgs.chrysalis]; hardware.bluetooth = { enable = true; diff --git a/overlays/chrysalis/default.nix b/overlays/chrysalis/default.nix new file mode 100644 index 0000000..60308c8 --- /dev/null +++ b/overlays/chrysalis/default.nix @@ -0,0 +1,34 @@ +final: prev: { + chrysalis = let + pname = "chrysalis"; + version = "0.11.3"; + name = "${pname}-${version}-binary"; + in prev.appimageTools.wrapAppImage rec { + inherit name; + + src = prev.appimageTools.extract { + inherit name; + src = prev.fetchurl { + url = "https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}.AppImage"; + sha256 = "sha256-N0M1lZvPKAT+UXZgn68DaDupzXJupcOE06gFxKP6W0o="; + }; + }; + + multiPkgs = null; + extraPkgs = p: (prev.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} $out/bin/${pname} + mkdir -p $out/lib/udev/rules.d + ln -s \ + --target-directory=$out/lib/udev/rules.d \ + ${src}/resources/static/udev/60-kaleidoscope.rules + ''; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index 1f747a6..67e397d 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,4 @@ { i3status-rust = import ./i3status-rust; + chrysalis = import ./chrysalis; }