124 lines
4.3 KiB
Nix
124 lines
4.3 KiB
Nix
{ config, pkgs, lib, inputs, ... }:
|
|
|
|
{
|
|
config = lib.mkIf (config.networking.hostName == "FredOS-Macbook") {
|
|
environment.systemPackages = with pkgs; [
|
|
tlp
|
|
spotify
|
|
discordo
|
|
faugus-launcher
|
|
mission-center
|
|
vlc
|
|
gnome-text-editor
|
|
proton-vpn
|
|
onlyoffice-desktopeditors
|
|
woeusb
|
|
vscodium
|
|
cmatrix
|
|
|
|
# TTY browsing: browsh drives a headless firefox and renders it to the
|
|
# terminal, so firefox has to be on PATH — it is not wrapped in.
|
|
browsh
|
|
firefox
|
|
];
|
|
|
|
programs.geary.enable = true;
|
|
|
|
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.tlp.enable = false;
|
|
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" ];
|
|
};
|
|
};
|
|
};
|
|
}
|