Files
nixos/cleo.darwin.nix
T
2026-07-28 19:07:30 -04:00

137 lines
3.6 KiB
Nix

{ pkgs, lib, inputs, ... }:
let
ansibleRequired = {
taps = [
"fwdcloudsec/granted" # aws sso utility
"felipeelias/tap" # claude-statusline
"f1bonacc1/tap" # process-compose
"oven-sh/bun" # bun
"sst/tap" # opencode
];
brews = [
"allure"
"aws-sso-util"
"awscli"
"ccusage"
"fd"
"f1bonacc1/tap/process-compose"
"felipeelias/tap/claude-statusline"
"oven-sh/bun/bun"
"fwdcloudsec/granted/granted"
"gdal"
"gh"
"jq"
"maven"
"rg"
"snyk-cli"
"sst/tap/opencode"
## Excluded intentionally
# "libpq@17"
# "node@22"
];
casks = [
"1password-cli"
"aws-vpn-client"
"chromedriver"
"claude-code" # stable channel; playbook can opt into claude-code@latest
"copilot-cli"
"docker-desktop"
"expo-orbit"
"zulu@17"
"ngrok"
## Excluded intentionally
# "visual-studio-code" # app installed by brew; home-manager owns settings + extensions
# "jetbrains-toolbox"
];
};
in {
ids.gids.nixbld = 350;
security.pam.services.sudo_local.touchIdAuth = true;
# Set vim as default editor
environment.variables.EDITOR = "vim";
environment.variables.VISUAL = "vim";
environment.variables.GIT_EDITOR = "vim";
environment.variables.HOMEBREW_NO_ANALYTICS = "1";
environment.systemPackages = with pkgs; [
vim
git
wget
curl
python3
postgresql_17
home-manager
ttyd
xcodes
xz
# node 22 pinned to the exact version cleo-app requires (nixpkgs-nodejs in flake.nix)
pinnedNode.nodejs_22
pinnedNode.yarn
];
# Add Homebrew to PATH
environment.systemPath = [ "/opt/homebrew/bin" "/opt/homebrew/sbin" "/Users/matthew.bessette/.local/bin" ];
system.primaryUser = "matthew.bessette";
users.users."matthew.bessette" = {
name = "matthew.bessette";
home = "/Users/matthew.bessette";
};
# Homebrew for Casks and specific binaries
# In a nix-darwin setup, Homebrew packages are not actually stored inside the Nix store.
# Instead, nix-darwin acts as a manager that triggers the standard Homebrew installation
# process on your macOS system.
homebrew = {
enable = true;
onActivation.cleanup = "uninstall";
onActivation.autoUpdate = true;
onActivation.upgrade = true;
# global.autoUpdate = true;
# Each list is (ansible-managed set) ++ (nix-only extras), deduped. With
# cleanup = "uninstall" above, anything NOT listed here gets removed on
# activation — so ansibleRequired must be merged in or nix would clobber it.
taps = lib.unique (ansibleRequired.taps ++ [
# nix-only taps go here
]);
brews = lib.unique (ansibleRequired.brews ++ [
"biome"
"jira-cli"
"treehouse"
]);
# visual-studio-code is installed by Homebrew (in ansibleRequired.casks) so
# Homebrew owns the .app; home-manager (cleo.home.nix) owns settings +
# extensions only (programs.vscode with package = null) — no second copy.
casks = lib.unique (ansibleRequired.casks ++ [
"android-commandlinetools"
"android-platform-tools"
"bruno"
"claude"
"figma"
"super-productivity"
"kopiaui"
"libreoffice"
"obsidian"
"postico"
"sublime-text"
"spotify"
"yubico-yubikey-manager"
"zoom"
]);
masApps = {
BetterSnapTool = 417375580;
HiddenBar = 1452453066;
# "Jamf Trust" = 1608041266;
MeetingBar = 1518425043;
Wireguard = 1451685025;
};
};
nix.settings.experimental-features = "nix-command flakes";
system.stateVersion = 4;
}