Previously, users cannot enable boolean flags like `--show-all` in bat's
config since all options were expected to be either a string, or a list
of strings. With this commit boolean flags are simply appended to the
end of the config if they are set to `true`, and discarded otherwise.
For example, the config
{
theme = "TwoDark";
show-all = true;
lessopen = false;
}
would produce a config file that looks like
--theme='TwoDark'
--show-all
Fixes#4657
Occasionally, swayidle crashes with a failure to connect to the
Wayland session. Ideally, swayidle should automatically restart
instead of leaving the system in a vulnerable state.
When a user references config.programs.firefox.package in her/his
configuration, s·he will get a different path than what is in the
$PATH variable. To make it possible to get the same path, this commit
introduces the finalPackage read-only option.
Due to the defaults in `systemd.user.settings`, the default value when
there are no settings explicitly set is `{ Manager = { }; }`. This
means an empty file is created even when `systemd.user.settings` is
never used in home-manager configuration. Since user’s `user.conf` is
preferred to the global `/etc/systemd/user.conf`, this can cause any
values set in the latter to be discarded.
The `systemd.user.extraConfig` provides a way to generate a
`systemd-user.conf(5)` file for the user.
This is the home-manager equivalent of NixOS’s option of the same
name, with the difference that NixOS’s option generates a `user.conf`
file that is shared between all users.
This commit fixes a typo in XDG data directory link location in the
`home.pointerCursor` module where the link is placed at
$XDG_DATA_HOME/.icons instead of the correct location
$XDG_DATA_HOME/icons.
Fixes#4638
This commit changes the config format of repositories to the
soon-be-expected `{ "path": "repository-path", }`. The Home Manager
configuration allows a simple string (which will get translated), the
new format by directly using the path attribute, and the one with the
optional label attribute. More information about the background can be
found here https://torsion.org/borgmatic/docs/reference/configuration/
* k9s: add hotkey option
This PR adds an option to customise k9s hotkeys.
The keyword `hotKey` must be in camel case on the user config.
* Update modules/programs/k9s.nix
Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
* fix formatting
---------
Co-authored-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
When xdg.enable is set, aerc uses the $XDG_CONFIG_HOME variable instead
of the default $HOME/Library/Preferences. home-manager needs to check
this to make sure aerc can find the proper file in both cases.
Closes#2923 based on how arnarg solves this in his personal config.
With review suggestions from musjj.
Co-authored-by: Arnar Gauti Ingason <arnarg@fastmail.com>
Co-authored-by: musjj <72612857+musjj@users.noreply.github.com>
When a process inside the sxhkd scope is OOM killed, if the OOM policy
is set to `stop` then the sxhkd scope itself will exit, terminating
every process launched from the keyboard.
This is undesirable, set it to `continue` instead to keep other
processes running.
For devices with more than one battery, cbatticon allows to set the
battery ID as optional positional argument. If this argument is not
given, it default to the first battery it would list with `cbatticon
-p`. This commit adds support for the batteryId option to the cbatticon
module.
Since fzf 0.43.0, the fzf_key_bindings function is only defined when
fish is running interactively, see [1].
This caused errors when entering non-interactive fish shells since we
called fzf_key_bindings during startup.
[1]: 7e89458a3b
The configuration file format of borgmatic has changed in version
1.8.0:
https://projects.torsion.org/borgmatic-collective/borgmatic/src/branch/main/NEWS
This commit makes Home Manager generate borgmatic's configuration file
using the new format.
Even though the NEWS file indicates that old configuration files are
compatible, this is not 100% the case: empty sections work fine in old
borgmatic but stop working in new ones. I've reported the bug upstream
by email as I couldn't create an account on the forge.
Specifically, allow variable expansion for the key codes by switching
from single to double quotes.
This also adds a helpful suggestion to descriptions. Taken from the
project's README, see
4abed97b6e/README.md (L71-L74))
Allows users to customize which environment variables to import in DBus
and SystemD user environments, and to specify which commands will be run
after the environment activation.
The way the `bat` module is currently written makes it essentially
impossible to use themes and syntaxes without IFD, since you must
provide the contents as string, instead of just giving a path to be
linked.
With this change, setting themes/syntaxes by-string will start issuing
warnings, and a new attribute model is added, lightly inspired by how
`programs.zsh.plugins` avoided this issue.
For some reason, Firefox completely discards the ADD_DATE and
LAST_MODIFIED attributes if they are set to 0. This has been
confirmed by exporting a sample set of bookmarks generated by
Nix using home-manager and comparing it to the same sample of
bookmarks set manually and then exported.
Missing these attributes can cause problems for extensions and
other tools that try to read bookmarks. A known example is the
Tridactyl extension.
Currently translated at 94.4% (17 of 18 strings)
Translate using Weblate (Indonesian)
Currently translated at 68.5% (24 of 35 strings)
Translate using Weblate (Indonesian)
Currently translated at 61.1% (11 of 18 strings)
Translate using Weblate (Indonesian)
Currently translated at 42.8% (15 of 35 strings)
Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/id/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/id/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
- If the parse does not match/returns an empty list, transpose does
not transform it into a record and thus load-env fails.
- The parsing assumes keychain to emit bash-style completions, so set
SHELL=bash to ensure keychain output is in the expected format.
PR #4459
Make the `finalPackage` option public, but still read-only. The final
package option is quite useful for users.
For example, to integrate `lazy.nvim` with Nix there are three things
that must be done:
1. `lazy.nvim` resets packpath, which should be managed by Nix; it has
to be turned off with `performance.reset_packpath = false` option in
`lazy.nvim`
2. Same thing applies to rtp, the relevant option is
`performance.rtp.reset = false`
3. `dev.path` must be specified as the folder that contains the plugins.
This folder is the path to Nix store path with Neovim plugins, and
the plugins that are managed by Nix must be marked as `dev = true`
The third condition can not be fulfilled without this PR, as the final
package that Home Manager produces is not exposed, therefore it is
impossible to extract the Nix store path. This PR makes it more
accessible via
${
pkgs.vimUtils.packDir config.programs.neovim.finalPackage.passthru.packpathDirs
}/pack/myNeovimPackages/start
With nushell `0.85.0` this is no longer valid syntax. This change fixes
the syntax error with `0.85.0` while still remaining valid for `0.84.0`
and earlier.
Fixesnix-community/home-manager#4488
The default config for sway generates a bar block with tray_output primary. But wayland (or sway, take your pick?) has no concept of a primary display so this just results in no tray anywhere.
A better default is "*" which puts the tray on every monitor, since sway can do so without issue.
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Adds a programs.rio module to control Rio installation and configuration, a gpu accelerated terminal
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
An IFD was introduced in bdb5bcad01 from
reading the top-level directories of the `home.pointerCursor.package`
at instantiation time.
This commit removes the IFD introduced when linking icon directories
by linking only the icon directory matching `home.pointerCursor.name`
in `home.pointerCursor.package`. This should be functionally
equivalent to linking all top-level directories of the supplied icon
package as the module only generates cursor configurations pertaining
to the cursor identified by `home.pointerCursor.name`. Deviations in
behavior caused by additional files linked in $HOME/.icons as of the
status quo should be treated as impurities.
The current cursor configuration poorly accomodate applications not
following the XDG icon theme spec. As a result, some applications fail
to locate user defined icons and themes.
To address this, symlinks from icon directories in the provided cursor
package was to $HOME/.icons were added added for greater compatibility
with applications using hardcoded icons directories. This approach was
chosen to allow for coexistence of declarative and non-declarative
icon files in the icons directory. In addition, symlinks of icon
directories were mirrored in $XDG_DATA_HOME/.icons for backwards
compatibility. As per the XDG icon theme spec, applications are to
search in $HOME/.icons first for icons and themes so the existing
behavior should not break for XDG compliant applications[1].
[1] https://specifications.freedesktop.org/icon-theme-spec/latest/ar01s03.html
Remove xwayland.hidpi option, since we're dropping HiDPI XWayland
patches support, opting to use the builtin xwayland:force_zero_scaling
option instead. It is described in more detail in
https://wiki.hyprland.org/ Configuring/XWayland.
Don't try to validate a limited set of hardcoded options, instead just
convert them as-is. Now, users can keep all their options in a single
attribute set, including arbitrary `user_{option}`s which was impossible
to express with a hard-coded submodule. As a plus, there is also less
maintainence burden.
While the locale options were declared, the weren't used in the
generation of the config file, because the locale submodule missed a
default, which failed the tests. I added an empty attribute set as a
default, which fixes the test, and works with the defaults in the
submodule options as expected.
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
* gh: option to enable helper for additional hosts
`gh` can also be used with github enterprise
hosts, for which there exists no easy option
to enable the credential helper except for
directly working with `programs.git.extraConfig`.
Not sure if this is a needed addition since it's
somewhat niche, at the same time it's not very
complex and makes the life of github enterprise
a little easier.
* gh: update credential-helper tests
* gh: refactor credential helper option
this moves from `enableGitCredentialHelper` to
`gitCredentialHelper.enable` and
`gitCredentialHelper.hosts`.
* gh: lib.mkIf -> mkIf
- On darwin, creates a launch agent to run git-sync on an interval and
when the `path` changes.
- The `uri` option is not used on Darwin. The auto-creation of the
local git directory from the `uri` is a feature of the
git-sync-on-inotify [1] wrapper (which won't work on Darwin afaik)
and not `git-sync` itself.
[1] https://github.com/simonthum/git-sync/blob/master/contrib/git-sync-on-inotify
* hyprland: prioritize variables and beziers
The `settings` key now handles `$variables` and `bezier`s differently,
putting them at the top of the file.
Also, proper indentation has been implemented.
* Update modules/services/window-managers/hyprland.nix
Co-authored-by: Naïm Favier <n@monade.li>
* hyprland: add animations & beziers test
---------
Co-authored-by: Naïm Favier <n@monade.li>
These (and the `*MD` functions apart from `literalMD`) are now no-ops
in nixpkgs and serve no purpose other than to add additional noise and
potentially mislead people into thinking unmarked DocBook documentation
will still be accepted.
Note that if backporting changes including documentation to 23.05,
the `mdDoc` calls will need to be re-added.
To reproduce this commit, run:
$ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \
nix shell nixpkgs#coreutils \
-c find . -name '*.nix' \
-exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \
--strip {} +
$ ./format
This process was automated by [my fork of `nix-doc-munge`]. All
conversions were automatically checked to produce the same DocBook
result when converted back, modulo minor typographical/formatting
differences on the acceptable-to-desirable spectrum.
To reproduce this commit, run:
$ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \
nix shell nixpkgs#coreutils \
-c find . -name '*.nix' \
-exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \
{} +
$ ./format
[my fork of `nix-doc-munge`]: https://github.com/emilazy/nix-doc-munge/tree/home-manager
The NixOS variant of Markdown doesn't make a distinction between
`<code>` and `<literal>` or `<quote>` and... quotes, and doesn't
support `<parameter>` or `<replaceable>`. These are infrequently used
(apart from `<code>`) and don't add much, so just convert them to
simpler forms to allow the options containing them to be converted
to Markdown automatically.
A few minor syntactic adjustments were also made to make
`nix-doc-munge`'s job easier.
The Markdown options processor cannot handle rendering tables
to DocBook. This could be fixed, but as we won't be using the
DocBook output for long I just removed them for now in the interest
of expediency; they were all well-suited to being description lists
showing option types anyway, apart from one awkward case in the form
of trayer, which also had ad-hoc syntax for enumerating acceptable
values in the documentation. Since the types aren't actually used for
option processing anyway, I changed them to use `enum` and similar to
give a single description of the acceptable values without a big table.
`nix-doc-munge` can't handle these, which is understandable as I can
barely handle them either. There are a few infelicities here: the
current processor can't handle multiple terms to one description in
a description list so they get comma-separated in one case, and one
case that should ideally render as a `<figure>` with a `<figcaption>`
in HTML is reduced to a paragraph with some `<strong>` text. (Which, in
fairness, is how it rendered in practice with the DocBook anyway.) The
docs generator has since been updated to handle figures, but we can't
use it until moving off DocBook output.
These files all have options that trip up the `nix-doc-munge`
conversion tool for one reason or another (syntax that clashes with
Markdown, options that were already using Markdown syntax despite not
being marked that way, output that differs slightly after conversion,
syntax too elaborate to convert with some cheap regular expressions,
...). Translate them manually and do a little copyediting to options
in the vicinity while we're at it.
Output is mostly unchanged aside from some minor typographical and
formatting changes, along with better source links.
We temporarily export `options.docBookForMigration` to allow
`nix-doc-munge` to check its conversions.
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
This removes the hard-coded fallback Home Manager paths. Specifically
${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home-manager
and
"$HOME/.nixpkgs/home-manager"
Use `@HOME_MANAGER_PATH@` if it has been provided and points to
something that exists. Warn the user if it does not point to
something.
If we have not been provided with a `@HOME_MANAGER_PATH@` that exists,
then for both hard-coded paths show a warning if something exists
where the paths are pointing.
This no longer attempts to use either of the hard-coded paths as
fallback for the Home Manager path.
Prior to this change, it was impossible to nest attrsets in
accounts.email.accounts.<name>.imapnotify.extraConfig. However,
goimapnotify's configuration is JSON-based, and the recommended
configuration has:
```
"tlsOptions": {
"rejectUnauthorized": true
},
```
This change changes the type from an attrset of str/int/bool to the
JSON type provided by nixpkg's `pkgs.formats.json`.
Previously, lines in .zshrc were added with quotes in keys
(e.g. ZSH_HIGHLIGHT_STYLES['comment']='fg=#6c6c6c'). However, zsh
considered these quotes to be part of the key, so the "comment" key
remained unchanged.
* home-cursor.nix: enable gtk module when enabling gtk config generation
The gtk configurations are not generated unless config.gtk is enabled.
This is a point of confusion because config.home.pointerCursor.gtk can essentially be disabled,
despite having it enabled.
* home-cursor.nix: Add note to gtk config generation description instead of enabling gtk module
* home-cursor.nix: Add note about applying pointerCursor configs to main submodule desc
* home-cursor.nix: Change tabs to spaces
* aerc: fix per-account extraConfig section names
The aerc configuration file `aerc.conf` can contain 10 different
sections, but only the UI section supports what the aerc manual calls
contextual configuration. This works by appending to the section heading
either `:account=name` or `:folder=bar`.
The aerc-accounts module, however, applied `mkAccountConfig` to each
section heading declared in
`config.accounts.email.accounts.<name>.aerc.extraConfig.*`. This means
home-manager will generate files with `[general:account=default]` and
the options will not be recognized by aerc.
To address this, and since it doesn't make sense for other sections to
only be under a single account's scope, an assertion has been added
to confirm that only sectons that support contextual config (i.e.,
only the UI section) is declared.
This also addresses confusions like declaring
`accounts.email.accounts.*.aerc.extraConfig.general.unsafe-accounts-conf
= true` and triggering a warning message because
`programs.aerc.extraConfig.general.unsafe-accounts-conf` was unset.
This commit also updated documentation throughout the aerc modules to
be in line with this change, and fixed minor typos/formatting therein.
Co-authored-by: Genevieve <genevieve@sunlashed.garden>
* aerc: make assertion plaintext and add test case
This commit adds a test case to check both the warning on unset
`unsafe-accounts-conf = true` when aerc accounts are configured
with Nix, and the new assertion when per-account configuration
contains unsupported subsections (i.e. general).
It also fixes minor formatting issues and typos.
As pointed out in #3291, using the XDG symlink means the agent/unit
files don’t change when the contents of the config changes, and so the
service will not be restarted.
Nushell has the option to source from the login.nu file in the case
that nushell is used as a login shell. This commit adds the login file
alongside the existing config and env files as another configuration
option.
Previously, IMAP was preferred over notmuch, even if notmuch was
configured, causing problems with setting account flavor (which
automatically sets IMAP settings). The new backend order is:
notmuch > IMAP > maildir
This also fixes the notmuch DB path being set to the wrong location.
The notmuch DB is located at the maildir base path, not in each
account's maildir.
Unison supports the same option to be given several times as a command
line argument (e.g. unison -path xxx -path yyy).
This commit adds Home Manager support for this by allowing a list of
strings to be given to services.unison.pairs.<name>.commandOptions values.
# Veuillez saisir le message de validation pour vos modifications. Les lignes
* imapnotify: expose package (and exe) options
There are multiple packages that provide an imapnotify interface. Those
packages have differently named executables. This can now be customized.
This change also means test configurations can use stub packages.
* imapnotify: use/create config in configHome
Exposing the configuration file makes testing imapnotify configurations much
easier. It also allows for golden tests in home-manager.
* imapnotify: extend with launchd agent
Now that home-manager supports launchd agents, the imapnotify service
can be configured (and enabled) for darwin. The configuration matches
that of the linux/systemd version. In particular, by not setting a
`UserName`, this runs as the user whose configuration includes the
module.
Due to the launchd `Program` implementation (it must take an absolute
path) it is not possible to use that for the program and stub the path
in tests. Instead, this uses `ProgramArguments` for the program name.
The `ThrottleInterval` is equivalent to `RestartSec`. `KeepAlive` is
equivalent to `Restart`.
The `ExitTimeOut` default is 20 seconds, but goimapnotify should not
time out — this is achieved by setting the `ExitTimeout` to 0.
* imapnotify: add launchd plist test
This only tests the generated plist (which is new), not the original
systemd implementation, nor the json config file.
(Note the lack of a newline at the end of the plist file.)
This will reduce the system closure size by about 200MB under NixOS by
sharing the glibcLocales package.
When home-manager is installed on Linux without the NixOS module, all
glibc locales are installed, as before.
Resolves: #2333
The current `lla` alias, together with the `total-size` option try to get
the size of the `..` directory, and for this has to recursively open all
sibling folders. This may be super slow if some of those siblings
contain too many files, and raise a ton of useless errors if some of
those siblings contains non-readable files.
I'm suggesting to use `-A` instead, which will skip the obvious `.` and
`..` folders.
While here, I think we could also add `llt`.
Many of the terminals supported inside emacs work perfectly fine with STARSHIP.
The TERM=dumb case already handles the tramp and eterm cases, so as far as I can
tell, this is basically just a check for the benefit of OLD versions of
term-mode (see
emacswiki.org/emacs/AnsiTerm#:~:text=Historically%2C%20'M%2Dx%20ansi%2Dterm,the%20older%20'C%2Dc'%20binding.,
which indicates that it also now handles colors).
PR #3747 renamed the option wayland.windowManager.sway.systemdIntegration
to wayland.windowManager.sway.systemd.enable.
This commit simply updates documentation to reference the new format.
Starship has an advanced, experimental feature where fancy stuff in the
prompt can be replaced with something more simple after the command is
ran. This is very helpful for copy and pasting shell history somewhere
else.
docs: https://starship.rs/advanced-config/#transientprompt-and-transientrightprompt-in-fish
Fish is currently the only shell as far as I can tell that both
home-manager and starship support for this feature. Since the function
has to be called after starship is loaded, this seems like the best
place to put it.
format
* qt: always apply qt.style.package
Before this commit this was only being applied if `qt.platformName` was
set to "gnome". With this change we will always apply the package.
* qt: only set ~/config/Trolltech.conf in GTK or GNOME
* qt: add qtstyleplugin-kvantum-qt4 and qt6Packages.qtstyleplugin-kvantum
qt: add qtstyleplugin-kvantum-qt4
* news: add news entry about the qt module refactors
* qt: add thiagokokada as maintainer
* qt: add "qtct" to qt.platformTheme
This allows usage of qt5ct/qt6ct tool to configure Qt theme/icons/fonts
in non-KDE platforms.
* qt: add missing relatedPackages for qt.platformTheme = "kde"
* qt: add "kvantum" for qt.styles.name
This allow you to configure Qt integration using KDE instead of
qgnomeplatform or qtstyleplugins. Useful if your theme supports both GTK
and KDE, for example Nordic.
To use this properly you will need to do some manual configuration for
now. You can set the theme settings using `~/.config/kdeglobals`.
Example:
```nix
{ ... }:
{
qt = {
enable = true;
platformTheme = "kde";
};
xdg = {
configFile.kdeglobals.text = lib.generators.toINI { } {
General = {
ColorScheme = "nordicbluish";
Name = "nordic-bluish";
shadeSortColumn = true;
};
Icons = {
Theme = "Nordic-bluish";
};
KDE = {
LookAndFeelPackage = "Nordic-bluish";
contrast = 4;
};
};
dataFile = {
# For General.ColorScheme
color-schemes = {
source = "${pkgs.nordic}/share/color-schemes";
recursive = true;
};
# For KDE.LookAndFeelPackage
plasma = {
source = "${pkgs.nordic}/share/plasma";
recursive = true;
};
};
};
}
```
* aerc: add space after definitions
* aerc: only generate files, if options were set
* aerc: improve file permission warning
* aerc: remove redundant access to builtins
* aerc: allow overwriting of derived values
the order of merging the config subsets did not allow the user to specify
outgoing, source and password command values,
if they were previously derived from the SMTP, IMAP, Maildir etc config.
The values from `account.<name>.extraAccounts` now have the highest precedence.
Appropriate tests were added as well.
* aerc: write primary account first
* Add infrastructure for contacts and calendars
This also adds the modules
- programs.vdirsyncer,
- programs.khal, and
- services.vdirsyncer
that integrate with the new infrastructure.
Co-authored-by: Andrew Scott <3648487+ayyjayess@users.noreply.github.com>
Co-authored-by: Sebastian Zivota <sebastian.zivota@mailbox.org>
wip
* vdirsyncer: allow option userName, disallow userNameCommand
1. account option `userName` is now allowed by `programs.vdirsyncer`
2. The commented out account option `userNameCommand` was required to be set
by `programs.vdirsyncer` (e.g. as `null`).
It is now disallowed (commented out) by vdirsyncer.
* khal: added options 'color' and 'priority'
* Apply nixfmt
---------
Co-authored-by: Sebastian Zivota <sebastian.zivota@mailbox.org>
Co-authored-by: Johannes Rosenberger <johannes.rosenberger@jorsn.eu>
Co-authored-by: Johannes Rosenberger <johannes@jorsn.eu>
Co-authored-by: Robert Helgesson <robert@rycee.net>