{ config, pkgs, lib, inputs, ... }: { config = lib.mkIf (config.networking.hostName == "FredOS-Macbook") { environment.systemPackages = with pkgs; [ spotify discordo haruna gnome-text-editor proton-vpn onlyoffice-desktopeditors cmatrix ]; nix.settings.max-jobs = 0; # max-jobs = 0 means an update is pure substitution, and nix's default # 25 parallel HTTPS streams saturate the link hard enough that the # out-of-tree broadcom_sta (wl) driver drops association mid-build — # only a manual wifi reconnect brings it back. Cap the concurrency. nix.settings.http-connections = 8; # 2, not 4: each job is an xz/zstd decompress, and there are only 4 threads # to share with the desktop. 4 just queues them behind each other. nix.settings.max-substitution-jobs = 2; services.power-profiles-daemon.enable = true; # The SMC holds the fan at its 1200 RPM floor while the package sits at # 79C — measured 1210 RPM at settled idle. (An earlier 5813 RPM reading # was a rebuild spinning down, not the steady state.) Nothing in-tree # ramps applesmc, so drive it directly. Tjmax is 100C and thermald throttles # long before that, so no reason for the fan to leave its floor in the 60s. services.mbpfan = { enable = true; settings.general = { low_temp = 68; # below this, coast at minimum high_temp = 80; # start climbing here max_temp = 92; # full tilt, still 8C under Tjmax }; }; # Haswell's own thermal management: throttle gradually via RAPL/P-states # instead of waiting for the hardware's PROCHOT emergency brake. services.thermald.enable = true; # Zen eats the 8GB before zram can save it; without this the box hard-locks # swapping instead of killing the tab that did it. services.earlyoom.enable = true; # Quickshell's battery widget reads org.freedesktop.UPower over DBus services.upower.enable = true; boot.loader.systemd-boot.configurationLimit = 5; boot.initrd.systemd.enable = true; # Swap Fn and left Ctrl on the internal Apple keyboard (PC layout) boot.kernelParams = [ "hid_apple.swap_fn_leftctrl=1" ]; # Allow video group (fred) to write to /sys/class/backlight and /sys/class/leds # (screen brightness and keyboard backlight) hardware.acpilight.enable = true; services.logind.settings.Login = { HandleLidSwitch = "suspend"; HandleLidSwitchExternalPower = "suspend"; }; # systemd's hwdb tags USB touchpads external (no Apple exception # upstream), so libinput refuses to offer DWT on the bcm5974 # (ID_INPUT_TOUCHPAD_INTEGRATION=external). Force internal so # libinput's native DWT pairing with the internal keyboard works. services.udev.extraHwdb = '' touchpad:usb:v05acp0291:* ID_INPUT_TOUCHPAD_INTEGRATION=internal ''; home-manager.users.fred = { pkgs, ... }: { wayland.windowManager.hyprland.settings.monitor = [{ output = ""; mode = "preferred"; position = "auto"; scale = "auto"; }]; systemd.user.services.nemo-warmup = { Unit = { Description = "Pre-warm Nemo file manager libraries"; After = [ "graphical-session.target" ]; PartOf = [ "graphical-session.target" ]; }; Service = { Type = "oneshot"; ExecStart = "${pkgs.nemo}/bin/nemo --quit"; }; Install.WantedBy = [ "graphical-session.target" ]; }; systemd.user.services.kbd-backlight-init = { Unit = { Description = "Set keyboard backlight to 10% on login"; After = [ "graphical-session.target" ]; PartOf = [ "graphical-session.target" ]; }; Service = { Type = "oneshot"; ExecStart = "${pkgs.brightnessctl}/bin/brightnessctl -d smc::kbd_backlight set 10%"; }; Install.WantedBy = [ "graphical-session.target" ]; }; }; }; }