System/modules/linux/hardware.nix

55 lines
1.5 KiB
Nix

{ config, lib, pkgs, ... }:
let nw = config.nathan.hardware;
in with lib; {
config = mkMerge [
{
hardware.logitech.wireless = mkIf nw.logitech {
enable = true;
enableGraphical = true;
};
}
(mkIf nw.amdPassthrough {
# Turn on IOMMU and the needed drivers
boot = {
kernelParams = [ "amd_iommu=on" ];
kernelModules = [ "kvm-amd" "vifo-pci" ];
};
# Enable libvirtd
virtualisation.libvirtd = {
enable = true;
onBoot = "ignore";
onShutdown = "shutdown";
qemu = {
ovmf = { enable = true; };
runAsRoot = true;
swtpm.enable = true;
};
};
})
(mkIf nw.printing {
services.printing = {
enable = true;
drivers = with pkgs; [ canon-cups-ufr2 ];
};
environment.systemPackages = with pkgs; [ canon-cups-ufr2 ];
# Enable avahi for printer discovery
services.avahi = {
enable = true;
nssmdns = false;
allowInterfaces = [ "enp6s0" ];
hostName = "levitation";
domainName = "local";
openFirewall = true;
};
system.nssModules = with pkgs.lib;
optional (!config.services.avahi.nssmdns) pkgs.nssmdns;
system.nssDatabases.hosts = with pkgs.lib;
optionals (!config.services.avahi.nssmdns) (mkMerge [
(mkOrder 900
[ "mdns4_minimal [NOTFOUND=return]" ]) # must be before resolve
(mkOrder 1501 [ "mdns4" ]) # 1501 to ensure it's after dns
]);
})
];
}