Refactor options.nix as separate file
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
self: { pkgs, ... }: {
|
self: { pkgs, ... }: {
|
||||||
|
imports = [ ./modules/options.nix ];
|
||||||
|
|
||||||
# List packages installed in system profile. To search by name, run:
|
# List packages installed in system profile. To search by name, run:
|
||||||
# $ nix-env -qaP | grep wget
|
# $ nix-env -qaP | grep wget
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
|
|||||||
+2
-1
@@ -2,12 +2,13 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./options.nix
|
||||||
|
|
||||||
hardware/intel-cpu.nix
|
hardware/intel-cpu.nix
|
||||||
hardware/amd-cpu.nix
|
hardware/amd-cpu.nix
|
||||||
hardware/no-mitigations.nix
|
hardware/no-mitigations.nix
|
||||||
hardware/acer-undervolt.nix
|
hardware/acer-undervolt.nix
|
||||||
|
|
||||||
system/roles.nix
|
|
||||||
system/nixpkgs.nix
|
system/nixpkgs.nix
|
||||||
system/location.nix
|
system/location.nix
|
||||||
system/shell.nix
|
system/shell.nix
|
||||||
|
|||||||
@@ -38,72 +38,7 @@ let
|
|||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{ config = lib.mkMerge [
|
||||||
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 [
|
|
||||||
|
|
||||||
# --- Optimised binary builds ---------------------------------------------
|
# --- Optimised binary builds ---------------------------------------------
|
||||||
(lib.mkIf (cfg.enable && cfg.optimisedBinaries) {
|
(lib.mkIf (cfg.enable && cfg.optimisedBinaries) {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.enableGnome = lib.mkEnableOption "Enable Gnome desktop";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.enableGnome {
|
config = lib.mkIf config.lumpiasty.enableGnome {
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.enablePlasma {
|
config = lib.mkIf config.lumpiasty.enablePlasma {
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
options.lumpiasty.enablePulseaudio = lib.mkEnableOption "Enable Plasma6 desktop";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.enablePulseaudio {
|
config = lib.mkIf config.lumpiasty.enablePulseaudio {
|
||||||
# Enable sound with pipewire. Dont forget after 24.05
|
# Enable sound with pipewire. Dont forget after 24.05
|
||||||
services.pulseaudio.enable = false;
|
services.pulseaudio.enable = false;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.enableTailscale = lib.mkEnableOption "Enable Tailscale VPN";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.enableTailscale {
|
config = lib.mkIf config.lumpiasty.enableTailscale {
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,177 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ ... }:
|
||||||
|
|
||||||
# Touch pad configuration interface
|
# Touch pad configuration interface.
|
||||||
|
# Options are declared in ./options.nix; config is applied by home-modules/plasma.nix.
|
||||||
let
|
|
||||||
scrollMethods = {
|
|
||||||
twoFingers = "twoFingers";
|
|
||||||
touchPadEdges = "touchPadEdges";
|
|
||||||
};
|
|
||||||
rightClickMethods = {
|
|
||||||
bottomRight = "bottomRight";
|
|
||||||
twoFingers = "twoFingers";
|
|
||||||
};
|
|
||||||
accelerationProfiles = {
|
|
||||||
none = "none";
|
|
||||||
default = "default";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
# 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");
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,6 @@
|
|||||||
# persist values across boot / resume.
|
# persist values across boot / resume.
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.acerUndervolt = lib.mkEnableOption "ryzenadj + ryzen_smu tooling for Acer 8845HS";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.acerUndervolt {
|
config = lib.mkIf config.lumpiasty.acerUndervolt {
|
||||||
boot.kernelModules = [ "ryzen_smu" ];
|
boot.kernelModules = [ "ryzen_smu" ];
|
||||||
boot.extraModulePackages = [ config.boot.kernelPackages.ryzen-smu ];
|
boot.extraModulePackages = [ config.boot.kernelPackages.ryzen-smu ];
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.amdCpu = lib.mkEnableOption "Enable amd CPU";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.amdCpu {
|
config = lib.mkIf config.lumpiasty.amdCpu {
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = true;
|
hardware.cpu.amd.updateMicrocode = true;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.intelCpu = lib.mkEnableOption "Enable intel CPU";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.intelCpu {
|
config = lib.mkIf config.lumpiasty.intelCpu {
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
# hardware.cpu.intel.updateMicrocode = true;
|
# hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.noMitigations = lib.mkEnableOption "Disable mitigations";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.noMitigations {
|
config = lib.mkIf config.lumpiasty.noMitigations {
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [
|
||||||
"mitigations=off"
|
"mitigations=off"
|
||||||
|
|||||||
@@ -0,0 +1,258 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
scrollMethods = {
|
||||||
|
twoFingers = "twoFingers";
|
||||||
|
touchPadEdges = "touchPadEdges";
|
||||||
|
};
|
||||||
|
rightClickMethods = {
|
||||||
|
bottomRight = "bottomRight";
|
||||||
|
twoFingers = "twoFingers";
|
||||||
|
};
|
||||||
|
accelerationProfiles = {
|
||||||
|
none = "none";
|
||||||
|
default = "default";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.lumpiasty = {
|
||||||
|
pc = lib.mkEnableOption "Enable options specific to personal computers";
|
||||||
|
laptop = lib.mkEnableOption "Enable options specific to laptops";
|
||||||
|
intelCpu = lib.mkEnableOption "Enable intel CPU";
|
||||||
|
amdCpu = lib.mkEnableOption "Enable amd CPU";
|
||||||
|
noMitigations = lib.mkEnableOption "Disable mitigations";
|
||||||
|
acerUndervolt = lib.mkEnableOption "ryzenadj + ryzen_smu tooling for Acer 8845HS";
|
||||||
|
enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop";
|
||||||
|
enableGnome = lib.mkEnableOption "Enable Gnome desktop";
|
||||||
|
enablePulseaudio = lib.mkEnableOption "Enable Pulseaudio/Pipewire";
|
||||||
|
enableTailscale = lib.mkEnableOption "Enable Tailscale VPN";
|
||||||
|
sshd = lib.mkEnableOption "Enable OpenSSH server";
|
||||||
|
gaming = lib.mkEnableOption "Enable options specific to gaming computers";
|
||||||
|
scx = lib.mkEnableOption "Enable sched-ext";
|
||||||
|
ipv6Mostly = lib.mkEnableOption "Enable IPv6-mostly (RFC 8925 + CLAT/464XLAT) support in NetworkManager";
|
||||||
|
|
||||||
|
users = {
|
||||||
|
user = lib.mkEnableOption "Create user \"user\"";
|
||||||
|
drugi = lib.mkEnableOption "Create user \"drugi\"";
|
||||||
|
};
|
||||||
|
|
||||||
|
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");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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.";
|
||||||
|
};
|
||||||
|
|
||||||
|
cpuPartitioning = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = config.lumpiasty.audioRt.enable;
|
||||||
|
description = ''
|
||||||
|
Cgroup-based CPU partitioning via dedicated audio.slice and
|
||||||
|
restricted app/session/background slices.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rtLimits = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = config.lumpiasty.audioRt.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 = config.lumpiasty.audioRt.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 = config.lumpiasty.audioRt.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 = config.lumpiasty.audioRt.enable;
|
||||||
|
description = ''
|
||||||
|
Rebuild easyeffects and its DSP dependencies with -march=znver4 -O3
|
||||||
|
(and LTO for cmake builds, target-cpu for rust builds).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
{
|
{
|
||||||
options.lumpiasty.gaming = lib.mkEnableOption "Enable options specific to gaming computers";
|
|
||||||
options.lumpiasty.scx = lib.mkEnableOption "Enable sched-ext";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.gaming {
|
config = lib.mkIf config.lumpiasty.gaming {
|
||||||
# https://github.com/NixOS/nixpkgs/blob/10e687235226880ed5e9f33f1ffa71fe60f2638a/nixos/modules/programs/steam.nix
|
# https://github.com/NixOS/nixpkgs/blob/10e687235226880ed5e9f33f1ffa71fe60f2638a/nixos/modules/programs/steam.nix
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
# defaults, mirroring the Fedora 45 change:
|
# defaults, mirroring the Fedora 45 change:
|
||||||
# https://fedoraproject.org/wiki/Changes/IPv6-Mostly_Support_In_NetworkManager
|
# https://fedoraproject.org/wiki/Changes/IPv6-Mostly_Support_In_NetworkManager
|
||||||
{
|
{
|
||||||
options.lumpiasty.ipv6Mostly = lib.mkEnableOption "Enable IPv6-mostly (RFC 8925 + CLAT/464XLAT) support in NetworkManager";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.ipv6Mostly {
|
config = lib.mkIf config.lumpiasty.ipv6Mostly {
|
||||||
# Use the patched NM build with CLAT support, without replacing pkgs.networkmanager
|
# Use the patched NM build with CLAT support, without replacing pkgs.networkmanager
|
||||||
# globally (which would cascade rebuilds across the entire system closure).
|
# globally (which would cascade rebuilds across the entire system closure).
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
{config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.lumpiasty.pc = lib.mkEnableOption "Enable options specific to personal computers";
|
|
||||||
options.lumpiasty.laptop = lib.mkEnableOption "Enable options specific to laptops";
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.lumpiasty.sshd = lib.mkEnableOption "Enable intel CPU";
|
|
||||||
|
|
||||||
config = lib.mkIf config.lumpiasty.sshd {
|
config = lib.mkIf config.lumpiasty.sshd {
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -10,12 +10,6 @@ let
|
|||||||
mkUser = import ../../lib/mkUser.nix { inherit lib; };
|
mkUser = import ../../lib/mkUser.nix { inherit lib; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.lumpiasty.users = {
|
|
||||||
user = lib.mkEnableOption "Create user \"user\"";
|
|
||||||
drugi = lib.mkEnableOption "Create user \"drugi\"";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# Install system-wide docker because rootless causes issues with binfmt
|
# Install system-wide docker because rootless causes issues with binfmt
|
||||||
virtualisation.docker.enable = config.lumpiasty.pc;
|
virtualisation.docker.enable = config.lumpiasty.pc;
|
||||||
|
|||||||
Reference in New Issue
Block a user