Files
Nomarchy/core/system/hardware.nix

69 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 = "${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";
})
];
}