97 lines
2.0 KiB
Nix
97 lines
2.0 KiB
Nix
{
|
|
pkgs,
|
|
username,
|
|
sshKeys,
|
|
...
|
|
}:
|
|
|
|
{
|
|
system.primaryUser = username;
|
|
|
|
users.knownUsers = [ username ];
|
|
users.users.${username} = {
|
|
home = "/Users/${username}";
|
|
shell = pkgs.fish;
|
|
uid = 501;
|
|
openssh.authorizedKeys.keys = sshKeys;
|
|
};
|
|
|
|
# ── macOS system preferences ───────────────────────
|
|
system.defaults = {
|
|
LaunchServices.LSQuarantine = false;
|
|
dock = {
|
|
autohide = true;
|
|
autohide-delay = 0.0;
|
|
autohide-time-modifier = 0.15;
|
|
show-recents = false;
|
|
mru-spaces = false;
|
|
wvous-tl-corner = 1;
|
|
wvous-tr-corner = 1;
|
|
wvous-bl-corner = 1;
|
|
wvous-br-corner = 1;
|
|
};
|
|
finder.FXPreferredViewStyle = "clmv";
|
|
NSGlobalDomain = {
|
|
AppleShowAllExtensions = true;
|
|
InitialKeyRepeat = 15;
|
|
KeyRepeat = 2;
|
|
};
|
|
};
|
|
|
|
# ── Homebrew ───────────────────────────────────────
|
|
homebrew = {
|
|
enable = true;
|
|
greedyCasks = true; # always upgrade casks even if they auto-update
|
|
|
|
taps = [
|
|
"goooler/repo"
|
|
];
|
|
|
|
brews = [
|
|
"mole"
|
|
];
|
|
|
|
# GUI apps
|
|
casks = [
|
|
"1password"
|
|
"brave-browser"
|
|
"cherry-studio"
|
|
"dbeaver-community"
|
|
"discord"
|
|
"feishu"
|
|
"goooler/repo/fl-clash"
|
|
"ghostty"
|
|
"tailscale-app"
|
|
"keka"
|
|
"logitech-g-hub"
|
|
"mos"
|
|
"movist-pro"
|
|
"orbstack"
|
|
"qq"
|
|
"raycast"
|
|
"spotify"
|
|
"telegram-desktop"
|
|
"tencent-meeting"
|
|
"termius"
|
|
"visual-studio-code"
|
|
"wechat"
|
|
"winbox"
|
|
];
|
|
|
|
# Mac App Store
|
|
masApps = {
|
|
"Microsoft Word" = 462054704;
|
|
"Microsoft Excel" = 462058435;
|
|
"Microsoft PowerPoint" = 462062816;
|
|
"Windows App" = 1295203466;
|
|
"Xnip" = 1221250572;
|
|
};
|
|
|
|
onActivation = {
|
|
autoUpdate = true;
|
|
upgrade = true;
|
|
cleanup = "zap"; # remove anything not declared above
|
|
};
|
|
};
|
|
}
|