feat(system): add desktop preset module

Mirror of the laptop preset for the desktop form factor. New
`nomarchy.system.desktop.enable` defaults to `formFactor == "desktop"`,
so the installer's existing formFactor write auto-flips it on without
installer changes (same pattern as laptop).

The module pins `powerManagement.cpuFreqGovernor` to `"performance"`
(via mkDefault) and enables `services.zfs.{autoScrub,trim}` so a
future ZFS pool gets sensible maintenance for free. The ZFS knobs are
no-ops until the user adds zfs to `boot.supportedFilesystems`.

Battery widget filtering is already driven by `formFactor` itself in
`features/desktop/waybar/default.nix`, so the preset doesn't repeat
it. Closes the "Desktop preset module" Next item.
This commit is contained in:
Bernardo Magri
2026-04-26 08:51:28 +01:00
parent 5b014cfa29
commit e9c9342965
5 changed files with 39 additions and 1 deletions

View File

@@ -20,6 +20,7 @@
# Tier 1 system features (all opt-in via nomarchy.system.*).
./snapper.nix
./laptop.nix
./desktop.nix
./hibernate.nix
./containers.nix
./pam.nix

15
core/system/desktop.nix Normal file
View File

@@ -0,0 +1,15 @@
{ config, lib, ... }:
let
cfg = config.nomarchy.system.desktop;
in
{
config = lib.mkIf cfg.enable {
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
# No-op until the user adds ZFS to boot.supportedFilesystems and a pool;
# then maintenance kicks in without further config.
services.zfs.autoScrub.enable = lib.mkDefault true;
services.zfs.trim.enable = lib.mkDefault true;
};
}

View File

@@ -108,6 +108,24 @@
};
};
desktop = {
enable = lib.mkOption {
type = lib.types.bool;
default = config.nomarchy.system.formFactor == "desktop";
defaultText = lib.literalExpression ''config.nomarchy.system.formFactor == "desktop"'';
description = ''
Desktop preset: pins `powerManagement.cpuFreqGovernor` to
`"performance"` and enables `services.zfs.autoScrub` and
`services.zfs.trim` so a future ZFS pool gets sensible
maintenance without further config. The ZFS knobs are no-ops
until the user adds `boot.supportedFilesystems = [ "zfs" ]`
and a pool. Defaults on when `formFactor = "desktop"`. Battery
widget filtering is already handled by `formFactor` itself in
`features/desktop/waybar/default.nix`.
'';
};
};
containers = {
enable = lib.mkEnableOption ''
Rootless Podman with Docker compatibility (`docker` `podman`),