* 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>
* sway: add support for XDG autostart using systemd
Using the option wayland.windowManager.sway.systemd.xdgAutostart, users
can now choose to start applications present in
$XDG_CONFIG_HOME/autostart when starting their sway session.
This change also renames wayland.windowManager.sway.systemdIntegration
to wayland.windowManager.sway.systemd.enable;
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
* sway: add Scrumplex to maintainers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
---------
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
* boxxy: add module
* boxxy: added nikp123 to maintainers list
* boxxy: use mkPackageOption instead for the package
Co-authored-by: Naïm Favier <n@monade.li>
* boxxy: use yaml generator instead of json
Co-authored-by: Naïm Favier <n@monade.li>
* boxxy: various fixes
* boxxy: various fixes (part 2)
* boxxy: various fixes (part 3)
* boxxy: various fixes (part 4)
forgot to run ./format, whoops
* boxxy: use literalExpression for the rewrite example
Co-authored-by: Naïm Favier <n@monade.li>
* boxxy: add news entry
---------
Co-authored-by: Naïm Favier <n@monade.li>
* Revert "maintainers: add rasmus-kirk as a maintainer"
This reverts commit 301b364892.
* Revert "joshuto: add the joshuto file manager"
This reverts commit e7fdcb40b2.
* Fix espanso module to work with 2.x version
* espanso: fix espanso module
This module is currently broken. It does not create `config` and `match` folders which are required by espanso 2.x version.
This PR fixed this issue and support creating multiple files under `config` and
`match` folder.
* Espanso: fix espanso module
This module is currently broken. It does not create `config` and `match` folders which are required by espanso 2.x version.
This PR fixed this issue and support creating multiple files under `config` and `match` folder.
Add descriptions
* Add versionAtLeast and mkRemovedOptionModule
* Correct maintainers list
* remove config key from example
* format basic-configuration.nix
* Update modules/services/espanso.nix
Co-authored-by: Naïm Favier <n@monade.li>
* fix maintainers list
---------
Co-authored-by: Naïm Favier <n@monade.li>
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
* home-environment: add `home.sessionVariablesPackage`
Allow the `hm-session-vars.sh` derivation to be referenced from other
modules, e.g. to translate it to fish with babelfish at build time.
* fish: use babelfish for `hm-session-vars.sh`
Translate `hm-session-vars.sh` to fish at system build time,
significantly decreasing shell startup time.
Based on https://github.com/NixOS/nixpkgs/pull/108947 by @kevingriffin.
This is backwards compatible and allows for more flexibility(eg.
allows for defining custom waybar modules in separate nixos modules,
before merging them together)
Co-authored-by: mae <git@badat.dev>
Make use of the recently added nullable `mkPackageOption` feature
to disable installing an SSH client by default: most people should use
the client provided by their system.
The generation activation script should be run by the user specified
in `home.username` and `home.homeDirectory`. If some other user runs
the activation script, then files may end up in the wrong place or
with the wrong owner.
This commits adds a check early in the activation script that verifies
that the running user match the user in the configuration.
Fixes#4019
Kitty provides integrations for bash, fish and zsh. The new
programs.kitty.shellIntegration options allow the configuration of
these integrations.
See <https://sw.kovidgoyal.net/kitty/shell-integration> for more details.
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
* zellij: adds options to integrate with zsh, bash and fish shells
* zellij: add tests for shell integration options
* zellij: eval setup auto start for fish integration
* zellij: use interactiveShellInit for fish integration
* zellij: fixes format issues
* zellij: enable shell integrations by default
* zellij: compresses shell integration test cases
* zellij: removes the disabled shell integration tests
* zellij: formats tests
* pass-secret-service: Add dbus file, assert
Add the dbus service file in the package folder to XDG_DATA_HOME, as
well as adding an assertion to ensure both it and `gnome-keyring` aren't
enabled at the same time.
* pass-secret-service: Add self to CODEOWNERS
* pass-secret-service: Call out conflicting module(s)
* pass-secret-service: Revert `storePath` change
Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>
* pass-secret-service: Add password-store module default changes info
* pass-secret-service: Fix default info, modularize conflict checks
Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>
* Revert "pass-secret-service: Fix default info, modularize conflict checks"
This reverts commit 851df4fe49.
* pass-secret-service: Fix default info
Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>
* pass-secret-service: Indent `storePath` description
---------
Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>
* himalaya: add soywod to maintainers
* himalaya: make the config safer
Also added two services and more tests.
* himalaya: fix doc + typos
* himalaya: use freeform
* himalaya: run ./format
* himalaya: make use of mkPackageOption
It's pretty common to need multiple bindings to
history-substring-search, since different terminals will send different
keys for up/down.
This does not break back-compatibility, and introduces a new test
The current zplug nixpkgs puts everything under `$out/`. It pollutes the nix
profile dir.
This is a breaking change. It depends on an change of the output path in the
nixpkgs zplug package.
Virtual mailboxes (described by Notmuch queries) can now configured for each account in NeoMutt.
Plus, it is possible to disable Notmuch section for a specific account.
Without this, even if you configure a preference for Electron apps to
use Ozone by setting `NIXOS_OZONE_WL=1`, GUI apps launched through
systemd user services use XWayland, since the variable is not set in
their environment.
This fixes that issue by importing it, like we do other variables.
The previous implementation tried to rename the tag named "default" to
the first tag in `cfg.tags`. This was a wrong approach because if a
tag with the same name already existed, the renaming failed and the
default tag would continue to exist.
The looking up of the default tag also contained a bug because it
should have used `by-name` in the path.
Before this change, the default config provided by this module wrote
an empty file to `$HOME/.config/avizo/config.ini`, which caused a
bunch of errors, as Avizo tries to read a 'group' from the ini file,
which fails.
This commit also adds associated test cases.
PR #3871
The added extraConfig option allowes users to insert custom text at
the end of the generated profile `user.js` file. This allows the users
to import templates as part of their configuration.
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
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
The Nix profiles path may not exist right after installing Nix. In
that case, it is created on demand by the Nix CLI tools. However, Home
Manager assumes it exists and fails if it doesn't.
This change makes sure to trigger the creation of the Nix profiles
path before attempting to access it.
If the user runs a recent Nix version that places per-user profiles in
`$XDG_STATE_DIR/nix/profiles`, then migrate the home-manager profile
there.
Also clean up `setupVars` a bit.
While technically dconf on darwin could work, our activation step
requires dbus, which only *lightly* supports Darwin in general, and not
at all in the way it's packaged in nixpkgs. Because of this, we just
disable dconf for darwin hosts by default.
In the future, if someone gets dbus working, this _could_ be re-enabled,
unclear whether there's actual value in it though.
link the packpath in expected folder so that even unwrapped neovim can pick home-manager's plugins.
I sometimes need to run neovim not wrapped/configured by nix (when
developing neovim or when other projects bring their own neovim in
PATH). Currently they dont find plugins installed by home-manager in the
cases where packpath is not set to the generated nix packpath directory.
With this change, neovim can discover HM-installed plugins by itself.
Some of the email providers (like GMail and Fastmail) save Sent messages
automatically, so make the folders optional in the configuration.
Make Drafts folder optional as well, to allow it to be configured
manually in the extraConf with location outside of the maildir.