From 537806174f58a1ca5b5f6044772d1772b5fb2296 Mon Sep 17 00:00:00 2001 From: Caroline Larimore Date: Tue, 30 Dec 2025 17:45:15 -0800 Subject: feat: nixos module --- flake.nix | 17 +++++++++++++---- module.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 module.nix diff --git a/flake.nix b/flake.nix index d8a6d46..647dcc2 100644 --- a/flake.nix +++ b/flake.nix @@ -5,16 +5,25 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - outputs = { self, nixpkgs, ... }: let - pkgs = nixpkgs.legacyPackages.x86_64-linux; + outputs = { self, nixpkgs }@inputs: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; in { - devShells.x86_64-linux.default = pkgs.mkShell { + devShells.${system}.default = pkgs.mkShell { packages = with pkgs; [ bashInteractive gcc ]; }; - packages.x86_64-linux.default = pkgs.callPackage ./package.nix {}; + packages.${system} = rec { + k95aux = pkgs.callPackage ./package.nix {}; + default = k95aux; + }; + + nixosModules = rec { + k95aux = import ./module.nix inputs; + default = k95aux; + }; }; } diff --git a/module.nix b/module.nix new file mode 100644 index 0000000..a50b62a --- /dev/null +++ b/module.nix @@ -0,0 +1,41 @@ +inputs: { options, config, lib, pkgs, ... }: + +with lib; let + inherit (pkgs.stdenv.hostPlatform) system; + cfg = config.services.k95aux; + isEmpty = attr: length (attrNames attr) == 0; +in { + options.services.k95aux = with types; { + enable = mkEnableOption "Auxillary Corsair K95 keys"; + package = mkOption { + type = package; + default = inputs.self.packages.${system}.k95aux; + }; + mapping = mkOption { + type = attrsOf types.ints.u8; + default = {}; + }; + }; + + config = let + mapping = strings.concatMapAttrsStringSep "\n" (key: code: "${key} ${toString code}") cfg.mapping; + in mkIf cfg.enable { + systemd.services.k95aux = { + description = "Auxillary Corsair K95 keys service"; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + ExecStart = "${cfg.package}/bin/k95aux"; + Restart = "on-failure"; + }; + + restartTriggers = [ + mapping + ]; + }; + + environment.etc = mkIf (!isEmpty cfg.mapping) { + "k95aux/mapping".text = mapping; + }; + }; +} -- cgit v1.2.3