Commit graph

1500 commits

Author SHA1 Message Date
Malo Bourgon
e0ffd55e7a
modules/homebrew: fix typos and improve option descriptions 2026-02-12 10:24:39 -08:00
Malo Bourgon
c68f5d1387
modules/homebrew: add onActivation.cleanup "check" mode
Closes #1032

Add `"check"` to the `onActivation.cleanup` enum. When set, nix-darwin runs
`brew bundle cleanup` during system checks to detect Homebrew packages that
are installed but not present in the generated Brewfile. If extra packages
are found, activation fails with a list of them and remediation steps.

Unlike `"uninstall"` and `"zap"`, the `"check"` mode never removes packages
-- it only reports. This runs during both `darwin-rebuild check` and
`darwin-rebuild switch`, matching the behavior of all other system checks.
2026-02-12 10:24:39 -08:00
Malo Bourgon
ca6f8609c3
modules/homebrew: add shell integration options
Add `enableBashIntegration`, `enableFishIntegration`, and
`enableZshIntegration` options that evaluate `brew shellenv` to set up
Homebrew's environment and shell completions. This automates the
boilerplate that every nix-darwin Homebrew user currently writes manually.

All three shells use `interactiveShellInit`, consistent with direnv and
home-manager conventions. Fish additionally sets up completions paths in
the same hook.
2026-02-12 10:24:39 -08:00
Malo Bourgon
8c29e146dd
modules/homebrew: replace brewPrefix with prefix
Closes #596

`homebrew.brewPrefix` defaulted to the bin directory (`/opt/homebrew/bin`),
not the actual Homebrew prefix (`/opt/homebrew`). This misled users into
writing `${config.homebrew.brewPrefix}/bin`, producing the broken path
`/opt/homebrew/bin/bin`.

Replace it with `homebrew.prefix`, which has correct semantics matching
`brew --prefix`. The old `brewPrefix` option is removed using
`mkRemovedOptionModule`, which catches both users who set the option and
users who read it in custom code. A warning also fires if the new `prefix`
value ends with `/bin`, catching users who copy the old value verbatim.
2026-02-10 09:26:54 -08:00
Malo Bourgon
24531016d8
modules/homebrew: deprecate homebrew.global.lockfiles
Homebrew Bundle removed lockfile support in Homebrew 4.4.0 (Oct 2024):
the `--no-lock` CLI flag, the `HOMEBREW_BUNDLE_NO_LOCK` env var, and
the `no_lock` parameter in `installer.rb` are all dead code. Setting
`homebrew.global.lockfiles` has had no effect on current Homebrew
versions.

- Replace the `lockfiles` option with a hidden stub (matching `noLock`)
- Replace the `noLock` hard assertion with a shared deprecation warning
  for both options
- Stop setting `HOMEBREW_BUNDLE_NO_LOCK` in `environment.variables`
- Remove the lockfiles paragraph from the `brewfile` option description
2026-02-10 09:26:54 -08:00
Malo Bourgon
65cfcebaa2
modules/homebrew: remove homebrew.whalebrews option
Whalebrew support was fully removed from Homebrew Bundle in
Homebrew 4.7.0 (Nov 2025). A `whalebrew` entry in a Brewfile now
raises `RuntimeError: Invalid Brewfile: undefined method 'whalebrew'`,
breaking the entire `brew bundle` invocation.

Use `mkRemovedOptionModule` so that existing configs get a clear
warning instead of an undefined-option error. Also removes the
auto-addition of `"whalebrew"` to `homebrew.brews` and the Brewfile
generation for Docker containers.
2026-02-10 09:26:54 -08:00
Malo Bourgon
3479b795aa
modules/homebrew: add homebrew.cargoPackages option
Add support for `cargo "pkg"` entries in the generated Brewfile. Homebrew
Bundle supports installing Rust crates via `cargo install`; the `rust`
formula is automatically installed if not already present.
2026-02-10 09:24:45 -08:00
Malo Bourgon
cbe4a600d4
modules/homebrew: add homebrew.goPackages option
Add support for `go "pkg"` entries in the generated Brewfile. Homebrew
Bundle supports installing Go packages via `go install`; the `go`
formula is automatically installed if not already present.
2026-02-10 09:24:17 -08:00
Malo Bourgon
c65c24c87c
modules/homebrew: add postinstall option for brews and casks
Both `brew bundle` formula and cask installers support a `postinstall`
option -- a shell command to run after the package is installed or
upgraded. The command only executes when the package actually changed,
not on every `brew bundle` run.

Examples from the Homebrew docs added to the `homebrew.brews` and
`homebrew.casks` option examples and tests.
2026-02-10 09:22:16 -08:00
Malo Bourgon
a3fd89f1bb
modules/homebrew: add link: :overwrite support
Homebrew supports `link: :overwrite` which runs `brew link --overwrite`,
force-overwriting existing symlinks. Extract the existing
`restart_service` special-case logic into a reusable helper
(`mkBrewfileLineBoolOrSymbolString`) for options that can be either a
bool or a Ruby symbol in the Brewfile.
2026-02-10 09:22:15 -08:00
Malo Bourgon
36815b4852
modules/homebrew: add restart_service "always" support
Homebrew supports restart_service: :always which restarts the service
on every brew bundle run, even if the formula wasn't changed.
2026-02-10 09:22:15 -08:00
Michael Hoang
7c952d9a52
Add support for installing vscode extensions via brew (#1222) 2026-02-10 15:13:34 +00:00
Frank Chiarulli Jr.
fdbfb1dc1b add support for installing vscode extensions via brew 2026-02-09 21:59:25 -05:00
Josh Gibbs
53dd29f381
remove duplicates from brewfile 2026-02-03 21:22:21 -08:00
Ihar Hrachyshka
05a5979906 networking: add dhcpClientId option to set DHCP Client ID 2026-01-18 14:10:56 -05:00
Radek Pietruszewski
6d323f4ffd
programs/direnv: add enable*Integration options
Ability to disable shell hook is needed to use alternative shell hooks - e.g. direnv-instant. These options mirror NixOS's exactly.
2026-01-16 10:14:43 +01:00
vaaski
e5e7b6e878
feat(screencapture): add save-selections 2026-01-06 15:41:11 +01:00
Nikita Lenyk
8cecf9c5c5 fix(modules): fixed typos in various modules 2025-12-29 18:31:13 +02:00
angel
0b53d57d3a
feat(gnupg): add configurable package option and install it
Signed-off-by: Angel J <78835633+Iamanaws@users.noreply.github.com>
2025-12-26 07:42:37 -08:00
Sam
c496b15409
modules/examples/lnl: drop qes
See:
- https://github.com/NixOS/nixpkgs/issues/371202
- https://github.com/NixOS/nixpkgs/pull/473109
- https://github.com/astratagem/dotfield/issues/1
- https://github.com/asmvik/skhd/issues/44

Looks like it was merged into skhd pre-2020 and was only in nixpkgs in a
cached state. Based on that last link the cached version may not even
work on newer versions of macOS?

Regardless, this is causing tests to fail.
2025-12-23 14:09:41 -05:00
Louis Opter
a58dd30d2b
github-runner: canonicalizes workDir to fix actions/checkout@v6
We ran into this issue wherein GitHub's `actions/checkout` would fail
because `git-config` would fail to include additional configuration.

The symptom was:

```
Error: fatal: could not read Username for 'https://github.com': terminal prompts disabled
```

And is caused by `git config --local includeIf.gitdir:/var/lib/github-runners/_work/…`.

Wherein `git` apparently resolves (canonicalizes) the current repository
path which then does not match the argument for `includeIf.gitdir` which
then means the configuration that `actions/checkout` is trying to apply
does not get pulled in, which then prevents git from authenticating with
GitHub and fails the build.

Ngl, gemini 3 found that out for me.

We could prefix `/private` everywhere, but changing the user's home
directory is going to [be tricky], not sure what do to about that.

[be tricky]: 7e22bf538a/modules/users/default.nix (L208)
2025-12-12 20:52:37 +00:00
Louis Opter
8393ede275
github-runner: fix warnings from nixd" 2025-12-12 20:52:33 +00:00
zowoq
36fed93cf5 fold -> foldr
deprecated in f4d36941eb
2025-11-26 19:41:19 +10:00
Sam
3bda9f6b14
zsh: allow configuring history (#1635)
Some checks failed
Test / test-stable (push) Has been cancelled
Test / install-against-stable (push) Has been cancelled
Test / install-flake (push) Has been cancelled
Update website / Build (push) Has been cancelled
Update website / Deploy (push) Has been cancelled
2025-11-18 22:37:57 +00:00
zowoq
31e3a75444 applications: change pathsToLink to a list
fbe214434a
2025-11-14 09:54:32 +10:00
Bryan Lai
454d8d95c6 zsh: allow configuring history 2025-11-13 14:54:56 +08:00
Sam
5125a3cd41
fix: zsh-fast-syntax-highlighting path (#1624)
Some checks failed
Test / test-stable (push) Has been cancelled
Test / install-against-stable (push) Has been cancelled
Test / install-flake (push) Has been cancelled
Update website / Build (push) Has been cancelled
Update website / Deploy (push) Has been cancelled
2025-11-08 18:51:26 +00:00
Yiyu Zhou
7451154694 Add system.defaults.finder._FXEnableColumnAutoSizing 2025-11-06 14:29:09 -08:00
XYenon
54802bec7c fix: zsh-fast-syntax-highlighting path
https://github.com/NixOS/nixpkgs/pull/101007
2025-11-05 15:41:07 +08:00
Josh Tilles
89abe5ba46 Adapt to a vim pkg rename/replacement in Nixpkgs
Addresses an error like the following:
```sh-session
$ sudo darwin-rebuild --verbose --print-build-logs switch
building the system configuration...
fetching git input 'git+file:///private/etc/nix-darwin'
error:
       … while evaluating an expression to select 'drvPath' on it
         at «internal»:1:552:
       … while evaluating strict
         at «internal»:1:552:
       (stack trace truncated; use '--show-trace' to show the full trace)

       error: 'vim_configurable' has been renamed to/replaced by 'vim-full'
```

See <853d9f31ea>

Fixes nix-darwin/nix-darwin#1622
2025-11-04 17:31:53 -05:00
Michael Hoang
69921864a7
dnsmasq: make the daemon wait for the nix store to be mounted (#1620) 2025-11-03 16:12:48 +00:00
Wigger Boelens
682de76b1e
dnsmasq: make the daemon wait for the nix store to be mounted
This resolves the issue of the daemon not starting because the nix store is not yet mounted

Signed-off-by: Wigger Boelens <me@wigger.email>
2025-11-03 15:54:39 +01:00
Sam
c3c8c9f2a5
feat(trackpad): add additional trackpad and gesture support (#1591)
Some checks failed
Test / test-stable (push) Has been cancelled
Test / install-against-stable (push) Has been cancelled
Test / install-flake (push) Has been cancelled
Update website / Build (push) Has been cancelled
Update website / Deploy (push) Has been cancelled
2025-11-01 23:27:41 +00:00
Sam
fc4e3dbe40
feat: make persistent-others similar to the new persistent-apps (#1431) 2025-11-01 18:33:40 +00:00
Ryan Cao
a4ecab1763
networking: modify firewall settings only if explicitly set 2025-10-24 14:23:07 +01:00
Wigger Boelens
1204e79a1e
dnsmasq: add servers option for upstream DNS configuration
Adds a new `services.dnsmasq.servers` option to configure upstream DNS servers. This allows users to specify which DNS servers dnsmasq should forward queries to, supporting domain-specific routing and custom ports.
When empty (default), dnsmasq uses servers from /etc/resolv.conf.

Signed-off-by: Wigger Boelens <me@wigger.email>
2025-10-17 13:05:13 +02:00
Nelson Tam
a9f953b682
aerospace: add option for colemak key-mapping 2025-10-13 17:02:03 +11:00
Michael Hoang
c48e963a55
telegraf: set HOME to avoid crash at startup (#1598)
Some checks failed
Test / test-stable (push) Has been cancelled
Test / install-against-stable (push) Has been cancelled
Test / install-flake (push) Has been cancelled
Update website / Build (push) Has been cancelled
Update website / Deploy (push) Has been cancelled
2025-09-25 13:02:32 +00:00
Jörg Thalheim
49eedd3d2a telegraf: set HOME to avoid crash at startup
https://github.com/nix-community/infra/pull/1982
2025-09-25 09:14:03 +02:00
Quintus Cardozo
5206a9fd30
Correct enum values for system.defaults.NSGlobalDomain.AppleIconAppearanceTheme 2025-09-21 13:59:38 +10:00
Quintus Cardozo
3c7396a09c
Add system.defaults.NSGlobalDomain.AppleIconAppearanceTheme 2025-09-19 13:58:48 +10:00
Dusty Pomerleau
d55543d033 feat(trackpad): add additional trackpad and gesture support:
To `system.defaults.trackpad`, add:

```
ActuateDetents
DragLock
ForceSuppressed
TrackpadCornerSecondaryClick
TrackpadFourFingerHorizSwipeGesture
TrackpadFourFingerPinchGesture
TrackpadFourFingerVertSwipeGesture
TrackpadMomentumScroll
TrackpadPinch
TrackpadRotate
TrackpadThreeFingerHorizSwipeGesture
TrackpadThreeFingerTapGesture
TrackpadThreeFingerVertSwipeGesture
TrackpadTwoFingerDoubleTapGesture
TrackpadTwoFingerFromRightEdgeSwipeGesture
```

To `system.defaults.dock` add:

```
showAppExposeGestureEnabled
showDesktopGestureEnabled
showLaunchpadGestureEnabled
showMissionControlGestureEnabled
```
2025-09-18 11:36:57 +10:00
Sam
ebd0bfc11f
defaults: add NSGlobalDomain.NSStatusItem{Spacing,SelectionPadding} (#1310)
Some checks failed
Test / test-stable (push) Has been cancelled
Test / install-against-stable (push) Has been cancelled
Test / install-flake (push) Has been cancelled
Update website / Build (push) Has been cancelled
Update website / Deploy (push) Has been cancelled
2025-09-17 09:55:40 +00:00
Maarten Staa
ac7999d72d Add NSStatusItemSpacing and NSStatusItemSelectionPadding
Add `NSStatusItemSpacing` and `NSStatusItemSelectionPadding` to `NSGlobalDomain`
options.

These options control the spacing between and padding inside status icons in the
menu bar. With these options, it's possible to squeeze more items on the menu
bar, something that's especially useful on machines with a notch.

This is a copy of #872, which was closed without being merged.

Co-Authored-By: Rob Harrop <rob@robharrop.dev>
2025-09-17 09:51:34 +02:00
Luc Perkins
55106a887e
Fix typo in Nix module 2025-09-09 16:38:50 +02:00
Michael Hoang
15f067638e
github-runner: fix the nodeRuntimes option (#1582) 2025-09-06 03:54:02 +00:00
Michael Hoang
d7c9b35913
github-runner: add support for node24 (#1573) 2025-09-06 03:51:15 +00:00
Nathan Henrie
349b2c66a9 apply should return null if the argument is not a list
Fixes https://github.com/nix-darwin/nix-darwin/issues/1578
2025-09-04 13:34:55 -06:00
Sander
f910ac37b6
github-runner: fix the nodeRuntimes option
The conditional override was intended to be backwards-compatible with older runner packages without the `nodeRuntimes` argument.
However, `override` doesn't yield default arguments, so the override was never applied.

This commit removes the conditional entirely since `nodeRuntimes` was added back in 24.05.
2025-08-28 12:51:30 +02:00
Sam
8df64f8196
Application 'linking' done right (#1396) 2025-08-22 01:17:29 +00:00