Build on the existing programs.worktrunk module:
- add bash/zsh/fish/nushell shell integrations, enabled by default via
the corresponding home.shell.enable<SHELL>Integration options,
- add an opt-in programs.worktrunk.claudeCodeIntegration, which wires
worktrunk into programs.claude-code: a statusLine, WorktreeCreate/
WorktreeRemove hooks (so agent isolation routes through wt), activity
state-marker hooks (🤖/💬 in wt list), and skills. Of the skills,
/wt-switch-create is on by default while /worktrunk is off by default,
since settings already manages the config it would help edit.
Both integrations need the wt binary, so they are inert when package is
set to null.
Follow-up to #9226, recreating the integration part of #9788.
Assisted-by: Claude-Code:GLM-5.3
b4 (https://b4.docs.kernel.org) is a tool for kernel-style patch and
email review workflows on lore.kernel.org. The module installs b4 and
writes its configuration to git-config's [b4] section -- b4 has no
config file of its own -- defaulting to a recommended Claude Code
review-agent wiring.
The review-editor highlighting and agent-reviewer prompt b4 ships under
misc/ are missing from its PyPI sdist; the module pulls them from the
nixpkgs packages added in NixOS/nixpkgs#543347 rather than fetching the
b4 repository itself.
Assisted-By: Claude Opus 4.8 (1M context)
Use the shared helper to preserve argument boundaries in ExecStart, including embedded newlines. Keep legacy strings and Darwin behavior unchanged, and cover the newline case in a Linux regression test.
Splitting the string on spaces broke arguments that legitimately contain
one, such as `--keep-since=1 day`. Accept a list of strings alongside the
string instead, each element being one argument, and restore the previous
behaviour for strings on both platforms: command line text that systemd
splits on Linux, a single argument on Darwin.
Darwin users passing several flags in one string have to switch to a list
to work around the launchd quoting.
On Linux the arguments are only appended when non-empty, which drops a
trailing space from ExecStart.
On darwin, clean.extraArgs was appended to ProgramArguments as a single
list element, so the launchd module rendered it as one shell-quoted word
and nh received every flag as a single argument:
nh clean user '--keep 5 --keep-since 3d'
error: unexpected argument '--keep 5 --keep-since 3d' found
Linux is unaffected: there extraArgs is interpolated into ExecStart as
text, and systemd splits that into arguments itself. Split on spaces so
both platforms treat the option the same way, dropping empty fields so
that an unset or space-padded value contributes no arguments.
The existing darwin test never set extraArgs, which is why this went
unnoticed. Add a case covering the option's own documented example.
On macOS 27+, wrapped package will have no Mozilla signature and will
fail to access the default datadir. Move users with recent stateVersion
to a non-default datadir recommended by:
https://github.com/NixOS/nixpkgs/pull/556611
Users with existing profiles under default datadir will have to migrate
them to a different location on macOS 27 upgrade. Migrating existing
directory is out of scope for Home Manager.
This is a counterpart for: https://github.com/NixOS/nixpkgs/pull/556611
When configPath is overridden, if wrapper supports the new appDataDir
argument, we pass configPath's absolute form to tell the app to look for
its datadir in the correct directory.
This will become necessary on macOS 27+ where Firefox that is not signed
by Mozilla has no access to its default datadir.
Expose qcal's JSON configuration through programs.qcal.settings and
per-calendar entries through accounts.calendar.accounts.<name>.qcal.settings.
Generated Calendars entries and the account remote projections use
mkDefault so users can override or extend them. timezone and
defaultNumDays become renamed aliases of the settings keys.
Custom packages can expose overrideAttrs without running patch hooks.
Provide mpv and vlc through runtime wrappers instead, covering both
upstream entry points and custom executable names. Test player lookup,
PATH precedence, and inherited helpers with executable fixtures.
Use the configured package for installation and player-specific patching, while preserving configuration generation when package is null. Generate any declared INI section and correct the settings example to match the nested section type.
Set PATH=${config.home.profileDirectory}/bin in the opencode-web
systemd service and launchd agent environment. This gives the service
access to packages installed via Home Manager.
Stylua is deterministic formatter for Lua 5.1, 5.2, 5.3, 5.4, LuaJIT, Luau and CfxLua/FiveM Lua, built using full-moon. StyLua is inspired by the likes of prettier, it parses your Lua codebase, and prints it back out from scratch, enforcing a consistent code style.
Noctalia is a native Wayland desktop shell for people who want a polished, configurable Linux desktop without stitching together a separate bar, launcher, notification daemon, lock screen, wallpaper tool, and settings UI.
eilmeldung is a fast TUI RSS reader built on the news-flash library.
It provides Vim-inspired keybindings, a non-blocking interface and instant
startup, while keeping the interface uncluttered. Articles can be searched and
filtered using a powerful query language, tagged for later reference, and read
in a distraction-free "zen mode".
Absolute path literal so Home Manager does not fail when the Nix option
`lint-absolute-path-literals` is set to `fatal`.
The purpose of `makePath` was to avoid multiple slashes in the printed
path. This is unnecessary as can be seen by the discover entry which
does not do this "beautification".
Drop the dirty_path.nix test as it is no longer relevant.
Update the tests to the new output, which now contains a trailing slash.
This is fine as the khards path attribute expects an directory.