-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdarwin.nix
More file actions
135 lines (117 loc) · 3.49 KB
/
darwin.nix
File metadata and controls
135 lines (117 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{ username, ... }:
{
# Homebrew integration for casks and Mac App Store apps
# Nix can't install these directly, so we manage Homebrew declaratively
homebrew = {
enable = true;
onActivation = {
cleanup = "zap"; # Remove unlisted packages
autoUpdate = true;
};
taps = [];
brews = [
# CLI tools that aren't in nixpkgs or work better via Homebrew
];
casks = [
"1password"
"1password-cli"
"caffeine"
"claude"
"discord"
"dropbox"
"ghostty"
"netnewswire"
"obsidian"
"zed"
];
masApps = {
# "App Name" = App Store ID;
# You can find IDs with: mas search "App Name"
"Xcode" = 497799835;
"Slack" = 803453959;
"Things" = 904280696;
};
};
# macOS system defaults (replaces your macos.sh)
system.defaults = {
dock = {
autohide = true;
minimize-to-application = true;
mru-spaces = false;
show-recents = false;
tilesize = 48;
};
finder = {
AppleShowAllExtensions = true;
FXEnableExtensionChangeWarning = false;
QuitMenuItem = true;
ShowPathbar = true;
ShowStatusBar = true;
_FXShowPosixPathInTitle = true;
};
loginwindow.GuestEnabled = false;
NSGlobalDomain = {
AppleShowAllExtensions = true;
ApplePressAndHoldEnabled = false;
InitialKeyRepeat = 15;
KeyRepeat = 2;
NSAutomaticCapitalizationEnabled = false;
NSAutomaticDashSubstitutionEnabled = false;
NSAutomaticPeriodSubstitutionEnabled = false;
NSAutomaticQuoteSubstitutionEnabled = false;
NSAutomaticSpellingCorrectionEnabled = false;
NSNavPanelExpandedStateForSaveMode = true;
NSNavPanelExpandedStateForSaveMode2 = true;
PMPrintingExpandedStateForPrint = true;
PMPrintingExpandedStateForPrint2 = true;
"com.apple.swipescrolldirection" = false;
};
screencapture = {
location = "~/Screenshots";
type = "png";
};
trackpad = {
Clicking = true;
TrackpadRightClick = true;
TrackpadThreeFingerDrag = true;
};
};
# Primary user for system defaults and homebrew
system.primaryUser = username;
# Determinate Nix manages the nix installation, so disable nix-darwin's management
nix.enable = false;
nixpkgs.config.allowUnfree = true;
# Create /etc/zshrc that loads nix-darwin env
programs.zsh.enable = true;
# LaunchAgents
launchd.user.agents.sweep-screenshots = {
command = "/Users/${username}/.local/bin/sweep";
serviceConfig = {
StartCalendarInterval = [{ Hour = 9; Minute = 0; }];
StandardOutPath = "/tmp/sweep-screenshots.log";
StandardErrorPath = "/tmp/sweep-screenshots.err";
};
};
launchd.user.agents.ingest-notes = {
command = "/Users/${username}/.local/bin/ingest-notes";
serviceConfig = {
WatchPaths = [
"/Users/${username}/Library/Mobile Documents/iCloud~md~obsidian/Documents/Notes/📥 Inbox.md"
];
StandardOutPath = "/tmp/ingest-notes.log";
StandardErrorPath = "/tmp/ingest-notes.err";
};
};
launchd.user.agents.journal-canvas = {
command = "/Users/${username}/.local/bin/journal-canvas";
serviceConfig = {
WatchPaths = [
"/Users/${username}/Library/Mobile Documents/iCloud~md~obsidian/Documents/Notes/Journal"
];
StandardOutPath = "/tmp/journal-canvas.log";
StandardErrorPath = "/tmp/journal-canvas.err";
};
};
# Used for backwards compatibility
system.stateVersion = 5;
}