nixos/common.nix
ediblerope 70ee0fc811 common: cap nix-daemon CPUWeight at 50 to keep services responsive
Heavy local builds (gnupg/openldap checkPhase under a freshly-bumped
nixpkgs lock) were saturating CPU and starving AdGuard on the
mediaserver, making DNS effectively unresponsive until the build
finished or got cancelled.

Halving the daemon's CPU share leaves headroom for latency-sensitive
services without meaningfully slowing builds on an otherwise idle box.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-29 11:17:51 +01:00

109 lines
3.6 KiB
Nix

# Common.nix
{ config, pkgs, lib, inputs, ... }:
{
imports = [
# Hosts #
./hosts/FredOS-Gaming.nix
./hosts/FredOS-Macbook.nix
./hosts/FredOS-Mediaserver.nix
# Generic settings #
./settings/gnome.nix
./settings/locale.nix
./settings/audio.nix
./settings/users.nix
./settings/shell.nix
./apps/zen.nix
# Services #
./services/server-permissions.nix
./services/game-servers.nix
./services/qbittorrent-nox.nix
./services/nginx.nix
./services/go2rtc.nix
./services/sonarr.nix
./services/radarr.nix
./services/prowlarr.nix
./services/jellyfin.nix
./services/bazarr.nix
./services/cloudflare-ddns.nix
./services/authelia.nix
./services/homepage.nix
./services/arr-interconnect.nix
./services/recyclarr.nix
./services/adguard.nix
./services/router.nix
./services/crowdsec.nix
];
### Make build time quicker
documentation.nixos.enable = false;
# Home Manager #
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.fred = import ./home-manager/fred.nix;
#############################################################################
# Make boot time quicker
boot.loader.timeout = lib.mkDefault 5;
systemd.services.NetworkManager-wait-online.enable = false;
systemd.services.systemd-udev-settle.enable = false;
systemd.services.firewall = {
wantedBy = lib.mkForce [ ];
after = [ "multi-user.target" ];
};
boot.initrd.verbose = false;
#############################################################################
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Keep services responsive while heavy local builds run (gnupg/openldap
# checkPhase etc. were starving AdGuard until the binary cache catches up).
# Default CPUWeight is 100; halving the daemon's share lets latency-sensitive
# services breathe without meaningfully slowing builds on an idle box.
systemd.services.nix-daemon.serviceConfig.CPUWeight = 50;
# Use latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# openldap 2.6.13's test017-syncreplication-refresh is timing-flaky and
# fails reliably on local builds when the binary cache hasn't yet served
# the upstream-built artifact. Skip its test phase. Remove this overlay
# once Hydra's substituter has populated openldap for the pinned nixpkgs.
nixpkgs.overlays = [
(final: prev: {
openldap = prev.openldap.overrideAttrs (_: { doCheck = false; });
})
];
# Enable network-manager
networking.networkmanager.enable = true;
# Fish shell
programs.fish.enable = true;
users.defaultUserShell = pkgs.fish;
# Shell aliases (work in both bash and fish)
environment.shellAliases = {
update = "bash -c 'OLD_SYSTEM=$(readlink /run/current-system) && sudo nixos-rebuild build $@ --impure --flake github:ediblerope/nixos-config && sudo nixos-rebuild switch $@ --impure --flake github:ediblerope/nixos-config && nvd diff $OLD_SYSTEM /run/current-system && (command -v record-update &>/dev/null && record-update $OLD_SYSTEM /run/current-system || true) && command -v matugen &>/dev/null && matugen image ~/.local/share/backgrounds/wallpaper.png --source-color-index 0 -m dark || true' --";
clean = "sudo nix-collect-garbage -d";
ll = "ls -alh";
clear = "command clear";
reboot = "sudo systemctl reboot";
};
# Add packages
environment.systemPackages = with pkgs; [
git
localsend
nvd
busybox
];
}