at 23.11-pre 1.5 kB view raw
1{ pkgs, lib, config, ... }: 2 3with lib; 4 5let 6 cfg = config.services.hardware.openrgb; 7in { 8 options.services.hardware.openrgb = { 9 enable = mkEnableOption (lib.mdDoc "OpenRGB server"); 10 11 package = mkOption { 12 type = types.package; 13 default = pkgs.openrgb; 14 defaultText = literalMD "pkgs.openrgb"; 15 description = lib.mdDoc "Set version of openrgb package to use."; 16 }; 17 18 motherboard = mkOption { 19 type = types.nullOr (types.enum [ "amd" "intel" ]); 20 default = null; 21 description = lib.mdDoc "CPU family of motherboard. Allows for addition motherboard i2c support."; 22 }; 23 24 server.port = mkOption { 25 type = types.port; 26 default = 6742; 27 description = lib.mdDoc "Set server port of openrgb."; 28 }; 29 30 }; 31 32 config = mkIf cfg.enable { 33 environment.systemPackages = [ cfg.package ]; 34 services.udev.packages = [ cfg.package ]; 35 36 boot.kernelModules = [ "i2c-dev" ] 37 ++ lib.optionals (cfg.motherboard == "amd") [ "i2c-piix4" ] 38 ++ lib.optionals (cfg.motherboard == "intel") [ "i2c-i801" ]; 39 40 systemd.services.openrgb = { 41 description = "OpenRGB server daemon"; 42 wantedBy = [ "multi-user.target" ]; 43 serviceConfig = { 44 StateDirectory = "OpenRGB"; 45 WorkingDirectory = "/var/lib/OpenRGB"; 46 ExecStart = "${cfg.package}/bin/openrgb --server --server-port ${toString cfg.server.port}"; 47 Restart = "always"; 48 }; 49 }; 50 }; 51 52 meta.maintainers = with lib.maintainers; [ jonringer ]; 53}