nixconfig/nixos/homelab.nix
2026-02-27 02:58:18 -08:00

56 lines
1.7 KiB
Nix

{
lib,
pkgs,
...
}:
{
imports = [
../modules/media/arr-suite.nix
../modules/smb.nix
../modules/nixos/homelab/networking.nix
../modules/nixos/homelab/services.nix
../modules/nixos/common/base.nix
../modules/nixos/homelab/user.nix
../modules/nixos/common/tailscale.nix
];
config = {
# Use linux_zen kernel for performance improvements as recommended in Kernel.md
boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen;
zramSwap.enable = lib.mkForce false;
boot.kernelParams = [
"zswap.enabled=1"
"zswap.compressor=zstd"
"zswap.max_pool_percent=20"
"processor.max_cstate=1"
];
boot.kernel.sysctl = {
"vm.swappiness" = 30;
"vm.vfs_cache_pressure" = 100;
# Use CAKE traffic shaper to prevent lag (bufferbloat) during heavy downloads
"net.core.default_qdisc" = "cake";
# Use BBR for better throughput and reduced buffering for media streaming
"net.ipv4.tcp_congestion_control" = "bbr";
};
hardware.cpu.amd.updateMicrocode = true;
systemd.services.sonarr.after = [ "network-online.target" ];
systemd.services.sonarr.requires = [ "network-online.target" ];
systemd.services.radarr.after = [ "network-online.target" ];
systemd.services.radarr.requires = [ "network-online.target" ];
systemd.services.prowlarr.after = [ "network-online.target" ];
systemd.services.prowlarr.requires = [ "network-online.target" ];
arrSuite.unpackerr.enable = true;
system.stateVersion = "24.11";
# Auto-reboot the system if it hangs (5 minute timeout)
boot.kernelModules = [ "sp5100_tco" ];
systemd.watchdog.rebootTime = "300s";
programs.fish.enable = true;
};
}