feat(system): professionalize system configurations

- Consolidate imperative system settings into /etc/nixos/state.json
- Implement nomarchy.system options for DNS, Wifi powersave, Timezone, and hardware features
- Add declarative browser policies for Chromium/Brave based on theme
- Update toggles scripts to mutate system JSON and run sys-update --impure
- Remove obsolete imperative browser theme and redundant system modules
This commit is contained in:
Bernardo Magri
2026-04-04 19:22:47 +01:00
parent 42f515f4a9
commit 08e2b4e248
17 changed files with 225 additions and 164 deletions

28
modules/system/state.nix Normal file
View File

@@ -0,0 +1,28 @@
{ lib, ... }:
let
stateFile = "/etc/nixos/state.json";
# Helper to read state from a file, with a default
readState = file: default:
if builtins.pathExists file then
builtins.fromJSON (builtins.readFile file)
else
default;
systemState = readState stateFile {};
in
{
config.nomarchy.system = {
dns = systemState.dns or "DHCP";
customDns = systemState.customDns or [];
wifi.powersave = systemState.wifi.powersave or true;
timezone = systemState.timezone or "UTC";
features = {
fingerprint = systemState.features.fingerprint or false;
fido2 = systemState.features.fido2 or false;
hybridGPU = systemState.features.hybridGPU or false;
};
theme = systemState.theme or "nord";
};
}