Files
Nomarchy/core/system/hardware.nix
Bernardo Magri 0728da4374 feat(audit): address batch 1 of missing scripts and enable fwupd
- Move 18 Hyprland/desktop scripts from features/desktop/scripts/ to packaged directories
- Add nomarchy.hardware.fwupd option (default false) and enable service
- Implement nomarchy-update-firmware wrapper for fwupdmgr
- Add hyprland, swayosd, and fwupd to nomarchy-system-scripts dependencies
- Update docs/SCRIPTS.md with 'kept' status for ported scripts
2026-04-25 22:34:04 +01:00

78 lines
2.2 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";
fwupd = mkOption {
type = types.bool;
default = false;
description = "Whether to enable fwupd firmware update service.";
};
};
config = mkMerge [
(mkIf cfg.fwupd {
services.fwupd.enable = true;
})
(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 = "${pkgs.nomarchy-system-scripts}/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;
systemd.services.supergfxd.serviceConfig.ExecStartPre = "-${pkgs.coreutils}/bin/sleep 5";
})
];
}