diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2024-03-30 13:01:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-30 13:01:37 +0100 |
commit | 0fb5a30ab4985f7a7ddebb0b33e073952a4fa732 (patch) | |
tree | 7d58f25f07fb8891810b7cec432a4ff646e04c09 /nixos | |
parent | b488f65e713b57a28a5b1fe176a6ef5b3bb64aa0 (diff) | |
parent | 05901fbaec6e00f9841f62da4bbd72b68096f763 (diff) |
Merge pull request #295236 from yunfachi/init/uni-sync
uni-sync: init at 0.2.0, nixos/uni-sync: init
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2405.section.md | 2 | ||||
-rw-r--r-- | nixos/modules/hardware/uni-sync.nix | 117 | ||||
-rw-r--r-- | nixos/modules/module-list.nix | 1 |
3 files changed, 120 insertions, 0 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 9a2c446a9eb11..b736d71288c0b 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -140,6 +140,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m - [Mealie](https://nightly.mealie.io/), a self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in NuxtJS for a pleasant user experience for the whole family. Available as [services.mealie](#opt-services.mealie.enable) +- [Uni-Sync](https://github.com/EightB1ts/uni-sync), a synchronization tool for Lian Li Uni Controllers. Available as [hardware.uni-sync](#opt-hardware.uni-sync.enable) + ## Backward Incompatibilities {#sec-release-24.05-incompatibilities} <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> diff --git a/nixos/modules/hardware/uni-sync.nix b/nixos/modules/hardware/uni-sync.nix new file mode 100644 index 0000000000000..69411619bc94f --- /dev/null +++ b/nixos/modules/hardware/uni-sync.nix @@ -0,0 +1,117 @@ +{ config +, lib +, pkgs +, ... +}: +with lib; let + cfg = config.hardware.uni-sync; +in +{ + meta.maintainers = with maintainers; [ yunfachi ]; + + options.hardware.uni-sync = { + enable = mkEnableOption (mdDoc "udev rules and software for Lian Li Uni Controllers"); + package = mkPackageOption pkgs "uni-sync" { }; + + devices = mkOption { + default = [ ]; + example = literalExpression '' + [ + { + device_id = "VID:1111/PID:11111/SN:1111111111"; + sync_rgb = true; + channels = [ + { + mode = "PWM"; + } + { + mode = "Manual"; + speed = 100; + } + { + mode = "Manual"; + speed = 54; + } + { + mode = "Manual"; + speed = 0; + } + ]; + } + { + device_id = "VID:1010/PID:10101/SN:1010101010"; + sync_rgb = false; + channels = [ + { + mode = "Manual"; + speed = 0; + } + ]; + } + ] + ''; + description = mdDoc "List of controllers with their configurations."; + type = types.listOf (types.submodule { + options = { + device_id = mkOption { + type = types.str; + example = "VID:1111/PID:11111/SN:1111111111"; + description = mdDoc "Unique device ID displayed at each startup."; + }; + sync_rgb = mkOption { + type = types.bool; + default = false; + example = true; + description = mdDoc "Enable ARGB header sync."; + }; + channels = mkOption { + default = [ ]; + example = literalExpression '' + [ + { + mode = "PWM"; + } + { + mode = "Manual"; + speed = 100; + } + { + mode = "Manual"; + speed = 54; + } + { + mode = "Manual"; + speed = 0; + } + ] + ''; + description = mdDoc "List of channels connected to the controller."; + type = types.listOf (types.submodule { + options = { + mode = mkOption { + type = types.enum [ "Manual" "PWM" ]; + default = "Manual"; + example = "PWM"; + description = mdDoc "\"PWM\" to enable PWM sync. \"Manual\" to set speed."; + }; + speed = mkOption { + type = types.int; + default = "50"; + example = "100"; + description = mdDoc "Fan speed as percentage (clamped between 0 and 100)."; + }; + }; + }); + }; + }; + }); + }; + }; + + config = mkIf cfg.enable { + environment.etc."uni-sync/uni-sync.json".text = mkIf (cfg.devices != [ ]) (builtins.toJSON { configs = cfg.devices; }); + + environment.systemPackages = [ cfg.package ]; + services.udev.packages = [ cfg.package ]; + }; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index aec16e791f4d0..0c8e66c33174a 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -98,6 +98,7 @@ ./hardware/tuxedo-keyboard.nix ./hardware/ubertooth.nix ./hardware/uinput.nix + ./hardware/uni-sync.nix ./hardware/usb-modeswitch.nix ./hardware/usb-storage.nix ./hardware/video/amdgpu-pro.nix |