Refactor options.nix as separate file

This commit is contained in:
2026-08-31 00:43:07 +02:00
parent a4d8971a77
commit 4e8aea6a24
18 changed files with 266 additions and 276 deletions
+1 -66
View File
@@ -38,72 +38,7 @@ let
in
{
options.lumpiasty.audioRt = {
enable = lib.mkEnableOption "Audio RT scheduling and CPU isolation";
audioCpus = lib.mkOption {
type = lib.types.str;
default = "12-15";
description = "CPU list reserved for audio services (systemd cpuset syntax).";
};
nonAudioCpus = lib.mkOption {
type = lib.types.str;
default = "0-11";
description = "CPU list for everything else.";
};
# ------ Individual optimization toggles ------
cpuPartitioning = lib.mkOption {
type = lib.types.bool;
default = cfg.enable;
description = ''
Cgroup-based CPU partitioning via dedicated audio.slice and
restricted app/session/background slices.
'';
};
rtLimits = lib.mkOption {
type = lib.types.bool;
default = cfg.enable;
description = ''
Raise rlimits (RTPRIO=95, MEMLOCK=infinity) for the audio group
so PipeWire's module-rt can set SCHED_FIFO 88 directly instead
of going through RTKit's priority-10 ceiling.
'';
};
performanceGovernor = lib.mkOption {
type = lib.types.bool;
default = cfg.enable;
description = ''
Keep cpufreq governor `performance` on the audio cores so they
stay boosted regardless of measured utilization.
'';
};
ananicy = lib.mkOption {
type = lib.types.bool;
default = cfg.enable;
description = ''
Run ananicy-cpp with a rule that pins easyeffects to nice -12 so
its non-RT DSP threads get scheduler preference under load.
'';
};
optimisedBinaries = lib.mkOption {
type = lib.types.bool;
default = cfg.enable;
description = ''
Rebuild easyeffects and its DSP dependencies with -march=znver4 -O3
(and LTO for cmake builds, target-cpu for rust builds).
'';
};
};
config = lib.mkMerge [
{ config = lib.mkMerge [
# --- Optimised binary builds ---------------------------------------------
(lib.mkIf (cfg.enable && cfg.optimisedBinaries) {
-2
View File
@@ -1,8 +1,6 @@
{ config, lib, pkgs, modulesPath, ... }:
{
options.lumpiasty.enableGnome = lib.mkEnableOption "Enable Gnome desktop";
config = lib.mkIf config.lumpiasty.enableGnome {
# Enable the X11 windowing system.
services.xserver.enable = true;
-2
View File
@@ -1,8 +1,6 @@
{ config, lib, pkgs, modulesPath, ... }:
{
options.lumpiasty.enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop";
config = lib.mkIf config.lumpiasty.enablePlasma {
# Enable the X11 windowing system.
services.xserver.enable = true;
-2
View File
@@ -2,8 +2,6 @@
{
options.lumpiasty.enablePulseaudio = lib.mkEnableOption "Enable Plasma6 desktop";
config = lib.mkIf config.lumpiasty.enablePulseaudio {
# Enable sound with pipewire. Dont forget after 24.05
services.pulseaudio.enable = false;
-2
View File
@@ -1,8 +1,6 @@
{ config, lib, pkgs, modulesPath, ... }:
{
options.lumpiasty.enableTailscale = lib.mkEnableOption "Enable Tailscale VPN";
config = lib.mkIf config.lumpiasty.enableTailscale {
services.tailscale = {
enable = true;
+3 -174
View File
@@ -1,177 +1,6 @@
{ config, lib, pkgs, modulesPath, ... }:
{ ... }:
# Touch pad configuration interface
let
scrollMethods = {
twoFingers = "twoFingers";
touchPadEdges = "touchPadEdges";
};
rightClickMethods = {
bottomRight = "bottomRight";
twoFingers = "twoFingers";
};
accelerationProfiles = {
none = "none";
default = "default";
};
in
# Touch pad configuration interface.
# Options are declared in ./options.nix; config is applied by home-modules/plasma.nix.
{
# Copy of https://github.com/nix-community/plasma-manager/blob/trunk/modules/input.nix#L69
options.lumpiasty.touchPad = {
enable = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to enable the touchpad.
'';
};
name = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
example = "PNP0C50:00 0911:5288 Touchpad";
description = ''
The name of the touchpad.
This can be found by looking at the `Name` attribute in the section in
the `/proc/bus/input/devices` path belonging to the touchpad.
'';
};
vendorId = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
example = "0911";
description = ''
The vendor ID of the touchpad.
This can be found by looking at the `Vendor` attribute in the section in
the `/proc/bus/input/devices` path belonging to the touchpad.
'';
};
productId = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
example = "5288";
description = ''
The product ID of the touchpad.
This can be found by looking at the `Product` attribute in the section in
the `/proc/bus/input/devices` path belonging to the touchpad.
'';
};
disableWhileTyping = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to disable the touchpad while typing.
'';
};
leftHanded = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = false;
description = ''
Whether to swap the left and right buttons.
'';
};
middleButtonEmulation = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = false;
description = ''
Whether to enable middle mouse click emulation by pressing the left and right buttons at the same time.
Activating this increases the click latency by 50ms.
'';
};
pointerSpeed = lib.mkOption {
type = with lib.types; nullOr (numbers.between (-1) 1);
default = null;
example = "0";
description = ''
How fast the pointer moves.
'';
};
accelerationProfile = lib.mkOption {
type = with lib.types; nullOr (enum (builtins.attrNames accelerationProfiles));
default = null;
example = "none";
description = "Set the touchpad acceleration profile.";
apply = profile: if (profile == null) then null else accelerationProfiles."${profile}";
};
naturalScroll = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to enable natural scrolling for the touchpad.
'';
};
tapToClick = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to enable tap-to-click for the touchpad.
'';
};
tapAndDrag = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to enable tap-and-drag for the touchpad.
'';
};
tapDragLock = lib.mkOption {
type = with lib.types; nullOr bool;
default = null;
example = true;
description = ''
Whether to enable the tap-and-drag lock for the touchpad.
'';
};
scrollMethod = lib.mkOption {
type = with lib.types; nullOr (enum (builtins.attrNames scrollMethods));
default = null;
example = "touchPadEdges";
description = ''
Configure how scrolling is performed on the touchpad.
'';
apply = method: if (method == null) then null else scrollMethods."${method}";
};
scrollSpeed = lib.mkOption {
type = with lib.types; nullOr (numbers.between 0.1 20);
default = null;
example = 0.1;
description = ''
Configure the scrolling speed of the touchpad. Lower is slower.
If unset, KDE Plasma will default to 0.3.
'';
};
rightClickMethod = lib.mkOption {
type = with lib.types; nullOr (enum (builtins.attrNames rightClickMethods));
default = null;
example = "twoFingers";
description = ''
Configure how right-clicking is performed on the touchpad.
'';
apply = method: if (method == null) then null else rightClickMethods."${method}";
};
twoFingerTap = lib.mkOption {
type =
with lib.types;
nullOr (enum [
"rightClick"
"middleClick"
]);
default = null;
example = "twoFingers";
description = ''
Configure what a two-finger tap maps to on the touchpad.
'';
apply = v: if (v == null) then null else (v == "middleClick");
};
};
}