Support alternate configuration files for k9s in darwin where XDG is
not mandated and k9s expects configuration files in
`~/Library/Application Support/k9s/`.
* neovim: add extraWrapperArgs option
pass external arguments to neovim-unwrapper
this gives users more flexibility in managing neovim configuration
* neovim: add test for `extraWrapperArgs`
Firefox, upon exit, creates the default containers.json file in place of
the one that home-manager created. This leads to errors when switching
to a new profile, as home-manager is careful with overwriting existing
files. The added option toggles that behaviour.
Closes: https://github.com/nix-community/home-manager/issues/4989
The current module constrains to values in enum but khal supports RGB
colors as well
khal.readthedocs.io/en/latest/configure.html#the-calendars-section !
(be careful when setting an RGB value, it has to be quoted else it is ignored, got bitten by it with a manual config )
NB: It's also not possible to set addresses khal.readthedocs.io/en/latest/configure.html#the-calendars-section
Currently translated at 5.5% (1 of 18 strings)
Translate using Weblate (Vietnamese)
Currently translated at 33.3% (12 of 36 strings)
Translate using Weblate (Vietnamese)
Currently translated at 11.1% (4 of 36 strings)
Co-authored-by: Nguyen Khanh <nguynkhan479@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/vi/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/vi/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
Nixpkgs has recently made a few major changes to its
xdg-desktop-portal package, which silently breaks our module here:
- The NIXOS_XDG_DESKTOP_PORTAL_CONFIG_DIR variable patch has been
removed (in favor of putting portal configurations in /etc or
XDG_CONFIG_HOME).
- A new variable, NIX_XDG_DESKTOP_PORTAL_DIR, was introduced in a
patch to avoid setting XDG_DESKTOP_PORTAL_DIR (which also affected
portal configuration reading, not only portal definitions)
I updated our module to match the changes, but this breakage also made
me revisit this module and look into some improvements.
Long story short, I think it's worth it to make it more similar to the
NixOS one, as it will make behavior more predictable and consistent.
The main change is relying on the upstream linked systemd
unit (instead of using systemd.user.services), and setting the
environment variables globally instead of scoping it to the unit, as
it's a very global thing anyway.
The systemd.time documentation defines the shorthands `daily` and
`minutely` which are currently not included in the nix-gc module.
This commit adds the `daily` option, but omits `minutely` since it's not
a timescale that would make sense to run a gc for.
https://www.freedesktop.org/software/systemd/man/latest/systemd.time.html
The documentation for the option says...
> If you want a default binding to be passed through to the website,
> bind it to null.
but if you actually try to set a key to `null`, it causes an error.
> A definition for option
> `programs.qutebrowser.keyBindings."<Ctrl+Shift+Tab>".normal' is not
> of type `strings concatenated with " ;; "'.
So this commit implements unbinding as it is documented.
The beets package no longer has the "enableCheck" option so this was
confusing. Also the word override was used to mean two different
things so I modified the FAQ to use the word "change" and linked to
documentation regarding package overrides.
Using `mkDefault` for the individual aliases makes it easier to
override or replace individual entries by the user, without having to
use `mkForce` which is often confusing for new users.
Adding unmailboxes option to neomutt, which adds the `unmailboxes`
option it to every account.email with neomutt enabled.
See https://www.mutt.org/doc/manual/#mailboxes for more.
Fixes warnings about the non-existent `~/.nix-defexpr` folder when
using `use-xdg-base-directories = true`.
Example:
warning: Nix search path entry '/home/user/.nix-defexpr/channels' does not exist, ignoring
Starting Home Manager activation
Activating checkFilesChanged
Activating checkLinkTargets
Activating writeBoundary
Activating installPackages
replacing old 'home-manager-path'
installing 'home-manager-path'
Activating dconfSettings
Activating linkDesktopApplications
Activating linkGeneration
Cleaning up orphan links from /home/user
No change so reusing latest profile generation 13
Creating home file links in /home/user
Activating onFilesChange
Activating reloadSystemd
warning: Nix search path entry '/home/user/.nix-defexpr/channels' does not exist, ignoring
Borgmatic has support for Borg's pattern matching. It is mutually
exclusive with the existing `sourceDirectories` option, so assertions
have been added to make sure that both are not set at the same
time (but also that at least one of them is). Additionally, tests have
been added to test the following configurations: `patterns` instead of
`sourceDirectories`, both at the same time, and neither.
In Nix 2.3, all GC roots must be stored under `/nix/var/nix/gcroots`,
unless `--indirect` is specified. In Nix 2.4 and above, this flag is
ignored, because all GC roots created by `--add-root` are indirect.
Change-Id: I3eb3d7bc774af2ff336a2cdf312d30a99cdcb928
In most cases where this function is used, suppressing only the standard
output is more appropriate. Culling diagnostic output hides error
messages and makes debugging more difficult and confusing.
`$DRY_RUN_NULL`, which the `--silence` flag replaced, was used both for
suppressing standard output on its own, and for doing so along with
diagnostic output; however, when the `run` function was added this
distinction was lost, and both outputs would be discarded.
This reintroduces the needed functionality, and changes usages of
`--silence` to `--quiet` where previously only standard output was
suppressed, or where this should have probably been the case anyway.
Change-Id: Ifb1b52a1d1eea0117261c782d686ad7c71b43162
When a non-directory, such as a file or a dead symlink, already exists,
mkdir -p fails with "cannot create directory ‘...’: File exists".
This is a problem when, for example, a symlink points to a directory on
a filesystem that isn't mounted yet.
This commit changes the way aliases are rendered, adding the "no more
flags" flag `--`, which means that, for example, the alias `"-" = "cd
-";` will work as expected. (I was getting a syntax error before this
change.)
Additionally, now the alias key is shell escaped, which may help some
edge cases. I'm honestly not sure if this part is necessary since I
assume an alias can't contain spaces anyway, but it definitely
shouldn't break anything.
* vdirsyncer: change verify to type path
accounts.<calendar/contacts>.accounts.<name>.vdirsyncer.verify should not be a bool, it should be a path.
* vdirsyncer: Add example of verify use
* programs.khal: fix build failure due to null value
* calendar: allow null value for primaryCollection
* calendar / programs.khal: set default values to avoid common errors
* khal: fix contact integration
- Add tests for contact+khal
- Make options `color`/`priority` available for contact accounts
* khal: add separate calendar for each contact collection
A contact account may have multiple VCARD collections, but Khal doesn't
search recursively. Collection folder names must be hardcoded, and each
has its own calendar.
- Add khal.collections option for contact accounts
- Default to previous setup for accounts with a single collection
- Add tests
* khal: specify how priority is defined by Khal
See https://khal.readthedocs.io/en/latest/configure.html
The `exec` command does not do any shell parsing and does not
understand the `&&` which is how the extraCommands are added after
dbus activation. There doesn't seem to be a reason for `exec` here
anyway so just remove it and allow shell parsing.
* Skip font installation if the derivation hasn't changed.
* Use `rsync` instead of `install` to copy font files, to avoid useless
copying of pre-existent identical files.
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
neomutt: Updated options and added tests
neomutt: Added test for individual mailbox type
neomutt: Formatted code
neomutt: Enable ssl_force_tls based on IMAP instead of SMTP
neomutt: Applied suggestions from @chayleaf
neomutt: fix breaking tests
* imapnotify: enable STARTTLS if enabled in email account config
Since version 2.3.10 goimapnotify supports starttls. In version 2.3.11 a
typo in the settings was fixed, using tlsOptions.starttls to enable it.
This commit enables starttls in the goimapnotify config file if it is
enabled in the email account's imap settings.
* imapnotify: test generated config file
Compare the generated service config file with a manually verified
sample.
workspace 10 is part of upstream's default config, but was missing in home-manager.
The initial "sway: add module" PR (02d6040003) went through multiple iterations and had workspace 10 included for a brief moment.
Until the author removed it in a force-push commenting
> Have removed the last change which added bound ${modifer}+0 to workspace number 10 as this messed up workspace numbering in sway.
The reason might have been, that sway used to sort the workspaces in the order they appeared in the config.
Attribute sets in nix are sorted, but not "naturally sorted", meaning `bindsym Mod1+0 workspace number 10` comes before `bindsym Mod1+0 workspace number 1`.
It's unclear if that's what really happened. A workaround would have been to use `lib.lists.naturalSort` in `keybindingsStr`.
But I cannot reproduce this anymore in any way.
I assume this has been fixed many years ago by now.
upstream config: 020a572ed6/config.in (L113-L134)
In order to manage the extensions and configs from openvscode-server,
the only additional requirement was some mapping missing between the
name of the package and the default configDir/extensionDir
This ensures that `KITTY_SHELL_INTEGRATION` is manually set to the
user's `shellIntegration.mode`. This is necessary because sometimes
the variable is not set in subshells or splits.
`shellIntegration.mode` is also now ensured to always contain `no-rc`.
Since the module system doesn't allow specifying order on types.lines
users can't specify anything to run after what modules have put into
shellInitInteractive since it runs last. This implements a fourth field
that runs after all others, not to be used by HM modules, but regular
users.
Co-authored-by: Carl Hjerpe <git@hjerpe.xyz>
The `run` function export was removed in #4965. This broke the
expectation in this module that `run` would be available outside of
main activation script, as `$DRY_RUN_CMD` once was.
Fixes#4980
Farm links from the selected firefox package,
programs.firefox.nativeMessagingHosts and a package with a .keep file
for always creating the ~/.mozilla/native-messaging-hosts folder as a
regular folder with links in it.
Fixes#4959
The `home-manager.lib.homeManagerConfiguration` function now has an
additional attribute that can be used to extend a Home Manager
configuration with additional modules outside the project tree.
It works similar to the result of `lib.nixosSystem` from Nixpkgs
This removes the services.keepassx module and all options related to it.
This is because KeePassX has been unmaintaned for a long time, and the
migration path to KeePassXC is not clear.
Note, this package probably hasn't worked for nearly a year since the
package was removed from Nixpkgs:
https://github.com/NixOS/nixpkgs/pull/216748Closes#4949
Signed-off-by: Sumner Evans <me@sumnerevans.com>
Since nushell 0.89, automatically spreading lists is deprecated. This
commit introduces a string replace for the zoxide init script to replace
the deprecated code.
See: https://github.com/ajeetdsouza/zoxide/issues/662Fixes: #4916
The previous syntax (`plugin:name { ...settings}`) is not working with
more than one plugin. There is no documentation for this, just the
source code [1].
With this update the plugins paths aren't generated together with the
full config (so the "plugin" field is not "important" anymore) and the
plugins settings are generated like the other fields.
[1] 4d403dac32/src/config/ConfigManager.cpp (L1574)
The plugin setting in the Hyprland config is used both for defining
plugin paths and configuring the plugins. This fix removes the
silent override of the plugins settings converting them to the
`plugin:<name> { ...settings }` syntax.
DBus activated services such as mako use the XCURSOR_THEME and
XCURSOR_SIZE environment variables to decide how to show the cursor,
so without these, the cursor may not match the rest of the desktop
when hovering over (in this example) mako notification surfaces.
The gradle package from nixpkgs will install a default Java version and
pass it to the gradle executable without polluting the global env.
Users can customize this by overriding the gradle package like so:
programs.gradle = {
package = (pkgs.gradle.override {
java = pkgs.jdk21;
});
}
This commit makes it possible to specify Firefox' extraPolicies
through:
programs.firefox.package = pkgs.firefox.override {
extraPolicies = {... }
}
This was possible in the past but was broken by:
3feeb77155
firefox: add support for specifying policies (#4626)
This adds a Boolean option `uninstall`. When enabled this option will
reset side-effecting configurations to their "empty" state. The intent
is that this will cause the activation script to remove all managed
files and packages.
Doing it this way should hopefully be more robust than the previous
solution. It also allows a somewhat more convenient uninstall process
when using Flakes; put `uninstall = true` in your existing
configuration and then do a switch.
Also add simple uninstall test in CI test job.
The identity's signature will be configured according to signature.text
and signature.showSignature. Signature commands are not supported by
Thunderbird.
> -e file
> True if file exists.
> -f file
> True if file exists and is a regular file.
> [...]
> -L file
> True if file exists and is a symbolic link.
>
> (Source: bash(1))
Minor fix in documentation. The example in
`programs.zsh.prezto.pmoduleDirs` is not compatible with shell
environment variables like `$HOME`, must be replaced with nix
compatible variables eg: `home.homeDirectory`.
Fixes#4452
Osmscout-server includes a setting in its UI to create a systemd user
service and socket to run the server on demand. This does not function
correctly on NixOS, for two reasons:
1. It assumes that the binary path is stable (e.g.
/usr/bin/osmscout-server), which is not the case on NixOS.
2. It auto-detects the unwrapped binary path, which doesn't work.
This module allows the user to access the same functionality on NixOS.
Having the module enabled but never using gh will result in the config file
existing but no hosts.yml. In that scenario we won't have anything to
migrate, so only test for hosts.yml.
The service was never marked with a failed state with the previous
approach, which could lead broken synchronisation pair states to go
undetected.
The module now uses a timer instead of unlimited restarts, which does
not have this issue.
* aerc-accounts: support for maildirpp
aerc-accounts now is aware of the mbsync.subFolders setting
* aerc: Adds test for maildirpp format
---------
Co-authored-by: lgehr <lgehr@mailbox.org>
Commit 8cedd6 `fish: support flexible abbreviations` removed shell
escaping for fish shell abbr values. This was a dangerous breaking
change offered little value and made writing abbr expansions more
difficult. This commit restores automatic shell escaping of fish abbr
values.
In nushell, the ENV_CONVERSIONS environment variable is used to
transform the defined variables from a string to a nushell value (PATH
to a list being one of the most common uses). This commit applies
user-defined conversions to direnv-loaded variables.
This fixes binary autocompletion not being triggered for newly added
paths and makes direnv work consistently with nushell
Introduces a new program called gradle for managing files stored in
the home directory by the [Gradle Build Tool](https://gradle.org).
Gradle uses the $HOME/.gradle folder for all it's configuration.
Features of the new program module are:
- Automatically setting programs.java.enable = true to make a Java
installation available for running Gradle.
- Specifying an alternate Gradle home directory
- Setting of abitrary values for gradle.properties stored inside the
Gradle home directory.
- Defining init scripts that will be linked into the init.d inside
the Gradle home directory.
Co-authored-by: Olli Helenius <liff@iki.fi>
Co-authored-by: Robert Helgesson <robert@rycee.net>
Adds a program module for [Sapling](https://sapling-scm.com/).
Since Sapling itself is very similar in nature to Mercurial,
`modules/programs/mercurial.nix` was copied to make this module with
the ignore pieces removed (Sapling respects gitignore).
If `nix.settings.use-xdg-base-directories` is true, the
`~/.nix-profile` directory may not exist, and `home.profileDirectory`
should be checked instead.
Co-authored-by: Bruno BELANYI <bruno@belanyi.fr>
When using the previous approach I've always gotten errors that I can't
reload config on the .lock file that exists in /tmp when you run a
standard configured hyprland.
This commit improves this by using hyprctl to find instances to reload
instead.
We can remove the HYPRLAND_INSTANCE_SIGNATURE bogus assignment once
https://github.com/hyprwm/Hyprland/issues/4088 is resolved.
Co-authored-by: Carl Hjerpe <git@hjerpe.xyz>
Add the option sourceFirst to the hyprland module. When this option is
enabled source entries will be put near the top of the file, so that
the variables declared in other files can be used by the other
configuration entries.
Add "source" to the list of important prefixes when the former option
is enabled.
Resolves#4729
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.