Files
Nomarchy/modules/system/hardware.nix
Bernardo Magri 08e2b4e248 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
2026-04-04 19:22:47 +01:00

68 lines
2.0 KiB
Nix

{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.nomarchy.hardware;
in
{
options.nomarchy.hardware = {
isXPS = mkEnableOption "Dell XPS specific hardware fixes";
isT2Mac = mkEnableOption "Apple T2 MacBook specific hardware fixes";
isFramework = mkEnableOption "Framework laptop specific hardware fixes";
hasIPU7Camera = mkEnableOption "Intel IPU7 camera support";
};
config = mkMerge [
(mkIf cfg.isXPS {
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:19.0", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="i2c_designware.0", ATTR{power/control}="on"
'';
systemd.services.nomarchy-haptic-touchpad = {
description = "Dell XPS haptic touchpad feedback";
after = [ "systemd-udev-settle.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${config.home-manager.users.${config.services.displayManager.autoLogin.user}.home.homeDirectory}/.nix-profile/bin/nomarchy-haptic-touchpad";
Restart = "on-failure";
RestartSec = "2";
};
};
})
(mkIf cfg.isFramework {
services.udev.extraRules = ''
# Framework 16 QMK HID
SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", MODE="0666", GROUP="users"
'';
})
(mkIf cfg.isT2Mac {
boot.kernelParams = [ "intel_iommu=on" "iommu=pt" "pcie_ports=compat" ];
boot.kernelModules = [ "apple-bce" ];
boot.extraModprobeConfig = ''
options brcmfmac feature_disable=0x82000
'';
})
# System Features
(mkIf config.nomarchy.system.features.fingerprint {
services.fprintd.enable = true;
})
(mkIf config.nomarchy.system.features.fido2 {
security.pam.u2f = {
enable = true;
control = "sufficient";
cue = true;
};
})
(mkIf config.nomarchy.system.features.hybridGPU {
services.supergfxd.enable = true;
})
];
}