69 lines
2.1 KiB
Nix
69 lines
2.1 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.users.users.${config.services.displayManager.autoLogin.user}.home}/.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;
|
|
systemd.services.supergfxd.serviceConfig.ExecStartPre = "-${pkgs.coreutils}/bin/sleep 5";
|
|
})
|
|
];
|
|
}
|