nix/systems/nixos-pulse/default.nix

123 lines
3.1 KiB
Nix
Raw Normal View History

{ config
, lib
, pkgs
, modulesPath
, system
, inputs
, ...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
2023-10-20 13:53:08 +02:00
../../os-mods/common
2023-10-16 23:54:37 +02:00
../../os-mods/desktop
../../os-mods/network
../../os-mods/virt
../../users
./disko.nix
];
2023-10-16 23:54:37 +02:00
system.stateVersion = "23.05";
2023-10-16 23:54:37 +02:00
nixpkgs.hostPlatform = lib.mkDefault system;
2023-10-15 23:31:59 +02:00
boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot = {
enable = true;
2023-10-16 23:54:37 +02:00
configurationLimit = 32;
};
efi.canTouchEfiVariables = true;
};
initrd = {
availableKernelModules = [ "amdgpu" "nvme" "xhci_pci" "uas" "usbhid" "usb_storage" "sd_mod" ];
kernelModules = [ ];
systemd.enable = true;
};
kernelModules = [ "kvm-amd" "amdgpu" ];
extraModulePackages = [ ];
};
2023-10-16 23:54:37 +02:00
services.btrfs.autoScrub.enable = true;
services.xserver.videoDrivers = [ "amdgpu" ];
networking = {
2023-10-16 23:54:37 +02:00
hostName = "nixos-pulse";
useDHCP = lib.mkDefault true;
interfaces = {
enp5s0f4u1u1c2 = {
useDHCP = false;
ipv4.addresses = [
{
address = "192.168.0.21";
prefixLength = 24;
}
];
ipv4.routes = [
{
address = "192.168.0.0";
prefixLength = 24;
}
{
address = "0.0.0.0";
prefixLength = 0;
via = "192.168.0.5";
}
];
};
};
};
systemd = {
services = {
# This manually configures the automatically created network-adresses service to be more flexible
# regarding booting without the the device being available on boot
# It prevents slow timeouts & errors on boot while preserving Plug & Play ability
network-addresses-enp5s0f4u1u1c2.unitConfig = {
ConditionPathExists = "/sys/class/net/enp5s0f4u1u1c2";
BindsTo = lib.mkForce null;
};
powertop.postStart = ''
HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u)
for i in $HIDDEVICES; do
echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product
echo 'on' > /sys/bus/usb/devices/$i/power/control
done
'';
};
tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
];
};
services.udev.extraRules = ''
ACTION=="add", KERNEL=="enp5s0f4u1u1c2", TAG+="systemd", ENV{SYSTEMD_WANTS}="network-addresses-enp5s0f4u1u1c2.service"
ACTION=="remove", KERNEL=="enp5s0f4u1u1c2", RUN+="${pkgs.systemd}/bin/systemctl stop network-addresses-enp5s0f4u1u1c2.service"
'';
2023-10-16 23:54:37 +02:00
# energy saving stuff
powerManagement.powertop.enable = true;
hardware = {
2023-10-30 19:00:58 +01:00
i2c.enable = true;
2023-10-16 23:54:37 +02:00
tuxedo-control-center = {
enable = true;
package = inputs.tuxedo-nixos.packages.${system}.default;
};
opengl = {
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [
rocm-opencl-icd
rocm-opencl-runtime
];
};
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
2023-10-16 23:54:37 +02:00
zramSwap.enable = true;
}