diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 76b9adfa..6ba7256d 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -10,7 +10,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
- target-branch: "release-23.05"
+ target-branch: "release-23.11"
schedule:
interval: "weekly"
commit-message:
@@ -18,7 +18,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
- target-branch: "release-23.11"
+ target-branch: "release-24.05"
schedule:
interval: "weekly"
commit-message:
diff --git a/.github/workflows/github_pages.yml b/.github/workflows/github_pages.yml
index 238cb843..32e670e8 100644
--- a/.github/workflows/github_pages.yml
+++ b/.github/workflows/github_pages.yml
@@ -22,7 +22,7 @@ jobs:
nix-build -A docs.html
cp -r result/share/doc/home-manager public
- name: Deploy
- uses: peaceiris/actions-gh-pages@v3
+ uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
diff --git a/README.md b/README.md
index 486194aa..4444fbbd 100644
--- a/README.md
+++ b/README.md
@@ -112,7 +112,7 @@ License
This project is licensed under the terms of the [MIT license](LICENSE).
[#home-manager]: https://webchat.oftc.net/?channels=home-manager
-[Nix Flakes]: https://nixos.wiki/wiki/Flakes
+[Nix Flakes]: https://wiki.nixos.org/wiki/Flakes
[NixOS]: https://nixos.org/
[Nix]: https://nixos.org/explore.html
[Nixpkgs]: https://github.com/NixOS/nixpkgs
diff --git a/docs/default.nix b/docs/default.nix
index 422e5ef8..21f00fb4 100644
--- a/docs/default.nix
+++ b/docs/default.nix
@@ -55,7 +55,11 @@ let
hmPath = toString ./..;
buildOptionsDocs = args@{ modules, includeModuleSystemOptions ? true, ... }:
- let options = (lib.evalModules { inherit modules; }).options;
+ let
+ options = (lib.evalModules {
+ inherit modules;
+ class = "homeManager";
+ }).options;
in pkgs.buildPackages.nixosOptionsDoc ({
options = if includeModuleSystemOptions then
options
@@ -160,6 +164,7 @@ in {
inherit lib pkgs;
check = false;
} ++ [ scrubbedPkgsModule ];
+ class = "homeManager";
};
in builtins.toJSON result.config.meta.maintainers);
}
diff --git a/docs/manual/installation.md b/docs/manual/installation.md
index b663b688..07b1392d 100644
--- a/docs/manual/installation.md
+++ b/docs/manual/installation.md
@@ -24,7 +24,7 @@ Home Manager can be used in three primary ways:
:::{.note}
In this chapter we describe how to install Home Manager in the standard
way using channels. If you prefer to use [Nix
-Flakes](https://nixos.wiki/wiki/Flakes) then please see the instructions
+Flakes](https://wiki.nixos.org/wiki/Flakes) then please see the instructions
in [nix flakes](#ch-nix-flakes).
:::
diff --git a/docs/manual/nix-flakes.md b/docs/manual/nix-flakes.md
index 9ac5c0cf..93f71feb 100644
--- a/docs/manual/nix-flakes.md
+++ b/docs/manual/nix-flakes.md
@@ -1,7 +1,7 @@
# Nix Flakes {#ch-nix-flakes}
Home Manager is compatible with [Nix
-Flakes](https://nixos.wiki/wiki/Flakes). But please be aware that this
+Flakes](https://wiki.nixos.org/wiki/Flakes). But please be aware that this
support is still experimental and may change in backwards
incompatible ways.
diff --git a/docs/manual/nix-flakes/standalone.md b/docs/manual/nix-flakes/standalone.md
index 428f29bc..4ee8278a 100644
--- a/docs/manual/nix-flakes/standalone.md
+++ b/docs/manual/nix-flakes/standalone.md
@@ -58,5 +58,5 @@ If you only want to update a single flake input, then the command
You can also pass flake-related options such as `--recreate-lock-file`
or `--update-input ` to `home-manager` when building or
switching, and these options will be forwarded to `nix build`. See the
-[NixOS Wiki page](https://nixos.wiki/wiki/Flakes) for details.
+[NixOS Wiki page](https://wiki.nixos.org/wiki/Flakes) for details.
:::
diff --git a/flake.lock b/flake.lock
index 5dd1e12d..3213b2ad 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
- "lastModified": 1712163089,
- "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
+ "lastModified": 1715266358,
+ "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
+ "rev": "f1010e0469db743d14519a1efd37e23f8513d714",
"type": "github"
},
"original": {
diff --git a/home-manager/home-manager b/home-manager/home-manager
index 1fa7af0e..630fe39a 100644
--- a/home-manager/home-manager
+++ b/home-manager/home-manager
@@ -11,6 +11,12 @@ export TEXTDOMAINDIR=@OUT@/share/locale
# shellcheck disable=1091
source @HOME_MANAGER_LIB@
+function errMissingOptArg() {
+ # translators: For example: "home-manager: missing argument for --cores"
+ _iError "%s: missing argument for %s" "$0" "$1" >&2
+ exit 1
+}
+
function setNixProfileCommands() {
if [[ -e $HOME/.nix-profile/manifest.json \
|| -e ${XDG_STATE_HOME:-$HOME/.local/state}/nix/profile/manifest.json ]] ; then
@@ -277,10 +283,12 @@ function doInit() {
switch=1
;;
--home-manager-url)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
homeManagerUrl="$1"
shift
;;
--nixpkgs-url)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
nixpkgsUrl="$1"
shift
;;
@@ -390,9 +398,10 @@ $xdgVars
};
# Home Manager can also manage your environment variables through
- # 'home.sessionVariables'. If you don't want to manage your shell through Home
- # Manager then you have to manually source 'hm-session-vars.sh' located at
- # either
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
@@ -733,7 +742,11 @@ function newsReadIdsFile() {
touch "$path"
fi
- echo "$path"
+ # Remove duplicate slashes in case $HOME or $XDG_DATA_HOME have a trailing
+ # slash. Double slashes causes Nix to error out with
+ #
+ # error: syntax error, unexpected PATH_END, expecting DOLLAR_CURLY".
+ echo "$path" | tr -s /
}
# Builds the Home Manager news data file.
@@ -768,7 +781,7 @@ function buildNews() {
done
local readIdsFile
- readIdsFile=$(newsReadIdsFile)
+ readIdsFile="$(newsReadIdsFile)"
nix-instantiate \
--no-build-output --strict \
@@ -787,7 +800,7 @@ function doShowNews() {
buildNews "$newsNixFile"
local readIdsFile
- readIdsFile=$(newsReadIdsFile)
+ readIdsFile="$(newsReadIdsFile)"
local news
@@ -951,22 +964,27 @@ while [[ $# -gt 0 ]]; do
COMMAND="$opt"
;;
-A)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
HOME_MANAGER_CONFIG_ATTRIBUTE="$1"
shift
;;
-I)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
EXTRA_NIX_PATH+=("$1")
shift
;;
-b)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
export HOME_MANAGER_BACKUP_EXT="$1"
shift
;;
-f|--file)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
HOME_MANAGER_CONFIG="$1"
shift
;;
--flake)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
FLAKE_ARG="$1"
shift
;;
@@ -974,18 +992,23 @@ while [[ $# -gt 0 ]]; do
PASSTHROUGH_OPTS+=("$opt")
;;
--update-input)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
PASSTHROUGH_OPTS+=("$opt" "$1")
shift
;;
--override-input)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
+ [[ -v 2 && $2 != -* ]] || errMissingOptArg "$opt $1"
PASSTHROUGH_OPTS+=("$opt" "$1" "$2")
shift 2
;;
--experimental-features)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
PASSTHROUGH_OPTS+=("$opt" "$1")
shift
;;
--extra-experimental-features)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
PASSTHROUGH_OPTS+=("$opt" "$1")
shift
;;
@@ -1003,10 +1026,13 @@ while [[ $# -gt 0 ]]; do
export DRY_RUN=1
;;
--option|--arg|--argstr)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
+ [[ -v 2 ]] || errMissingOptArg "$opt $1"
PASSTHROUGH_OPTS+=("$opt" "$1" "$2")
shift 2
;;
-j|--max-jobs|--cores|--builders)
+ [[ -v 1 && $1 != -* ]] || errMissingOptArg "$opt"
PASSTHROUGH_OPTS+=("$opt" "$1")
shift
;;
diff --git a/home-manager/po/ca.po b/home-manager/po/ca.po
index fe90504c..4159c95f 100644
--- a/home-manager/po/ca.po
+++ b/home-manager/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-04-05 11:01+0000\n"
"Last-Translator: Leix b \n"
"Language-Team: Catalan \n"
"Language-Team: Czech =2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.4\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "V %s nebyl nalezen konfigurační soubor"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,16 +39,16 @@ msgstr ""
"Udržovat Home Manager %s v %s je zastaralé,\n"
"prosím přesuňte jej do %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Konfigurační soubor nenalezen. Prosím vytvořte jej v %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager nebyl nalezen v %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"adresář."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -91,42 +96,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Kontrola správnosti Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Nebyl nalezen vhodný adresář profilu, byly zkoušeny %s a %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Nelze ověřit parametry z konfigurace flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: neznámý parametr '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Spusťte '%s --help' pro vypsání nápovědy"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Soubor %s již existuje, ponechán beze změn..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Vytvářím %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Vytvářím první generaci Home Manageru..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -143,7 +148,7 @@ msgstr ""
"k zobrazení všech dostupných možností."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -157,11 +162,11 @@ msgstr ""
" %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Nelze vytvořit instanci flake konfigurace"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -178,72 +183,72 @@ msgstr[2] ""
"%d nepřečtených novinek.\n"
"Přečtěte je pomocí příkazu \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Neznáme nastavení \"news.display\" \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Sestavení nelze provést v adresáři dostupném pouze pro čtení"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Generace s ID %s neexistuje"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Nelze odstranit současnou generaci %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Odstraňuji generaci %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Žádná generace k vypršení platnosti"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Žádný home-manager balíček není nainstalován."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Neznámý parametr %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Toto odstraní Home Manager z vašeho systému."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Toto zkouška na nečisto, nic nebude odinstalováno."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Opravdu odinstalovat Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Přepínám na prázdou konfiguraci Home Manageru..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Hurá!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager se odinstalovává, ale váš home.nix nebyl změněn."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations očekává jeden parametr, přítomno %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Neznámý příkaz: %s"
diff --git a/home-manager/po/da.po b/home-manager/po/da.po
index de348823..c49a76fd 100644
--- a/home-manager/po/da.po
+++ b/home-manager/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-02-16 22:01+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Danish \n"
"Language-Team: German \n"
"Language-Team: Spanish \n"
@@ -19,14 +19,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: falta argumento para %s"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Archivo de configuración no encontrado en %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,16 +39,16 @@ msgstr ""
"Mantener tu Home Manager %s en %s está obsoleto,\n"
"por favor muévalo a %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Archivo de configuración no encontrado. Por favor cree uno en %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "No se ha encontrado el Home Manager en %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"archivo/directorio allí."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -91,44 +96,44 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Chequeando Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"No se ha podido encontrar un directorio de perfiles adecuado, se ha probado "
"con %s y %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "No se pudo inspeccionar las opciones de la configuración flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: opción desconocida '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Ejecute '%s --help' para ver ayuda"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "El fichero %s ya existe, dejándolo sin modificar..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Creando %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Creando generación inicial de Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -145,7 +150,7 @@ msgstr ""
"ver todas las opciones disponibles."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -160,11 +165,11 @@ msgstr ""
"si el error parecer ser culpa de Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "No se pudo instanciar una configuración flake"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -178,72 +183,72 @@ msgstr[1] ""
"Hay %d noticias relevantes no leídas.\n"
"Léalas ejecutando el comando \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuración \"news.display\" no reconocida \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Por favor, defina la variable del entorno $EDITOR o $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "No se puede ejecutar en un directorio de sólo lectura"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "No existe la generación con ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "No se pudo borrar la generación actual %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Borrando generación %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "No se encontraron generaciones para expirar"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "No se encontró ningún paquete home-manager instalado."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Argumento desconocido %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Home Manager será borrado del sistema."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Este es un simulacro, nada será realmente desinstalado."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Desinstalar Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Cambiando a configuración vacía de Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Bien!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager desinstalado pero no se ha modificado home.nix."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera un argumento pero se dieron %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Comando desconocido %s"
diff --git a/home-manager/po/fa.po b/home-manager/po/fa.po
index b032ad13..b3aceeb1 100644
--- a/home-manager/po/fa.po
+++ b/home-manager/po/fa.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2023-05-28 22:49+0000\n"
-"Last-Translator: Mohammad Abdolirad \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-05-02 10:58+0000\n"
+"Last-Translator: Keivan \n"
"Language-Team: Persian \n"
"Language: fa\n"
@@ -17,38 +17,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.18-dev\n"
+"X-Generator: Weblate 5.5.3-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: مقدار %s یافت نشد"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
-msgstr "هیچ فایل تنظیماتی در %s پیدا نشد"
+msgstr "هیچ فایل تنظیماتی در %s یافت نشد"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
+"نگه داری %s در %s منسوخ شده است.\n"
+"لطفا آنرا به %s انتفال دهید"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "هیچ فایل تنظیماتی پیدا نشد. لطفا یک فایل در %s بسازید"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
-msgstr ""
+msgstr "Home manager در %s یافت نشد."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
+"مسیر زاپاس برای Home manager در %s منسوخ شده است اما یک فایل/دایرکتوری در "
+"این مسیر پیدا شد."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -68,43 +77,61 @@ msgid ""
"\n"
" $ rm -r \"%s\""
msgstr ""
+"برای از بین بردن این اخطار, یکی از کار های زیر را انجام دهید.\n"
+"\n"
+"1. مسیر Home Manager را به صورت دقیق با اضافه کردن خط زیر\n"
+"\n"
+" { programs.home-manager.path = \"%s\"; }\n"
+"\n"
+"به کانفیگ خود, تعریف کنید\n"
+"\n"
+"اگر Home Manager را به طور مستقیم import کرده اید, میتوانید از پارامتر `path`"
+" استفاده کنید\n"
+"\n"
+" pkgs.callPackage /path/to/home-manager-package { path = \"%s\"; }\n"
+"\n"
+"برای هنگامی که دارید پکیج Home Manager را صدا میزنید\n"
+"\n"
+"2. مسیر منسوخ شده را پاک کنید\n"
+"\n"
+" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "چک کردن پایداری Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
-msgstr ""
+msgstr "بعد از امتحان کردن %s و %s , دایرکتوری مناسب برای پروفایل یافت نشد"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
-msgstr ""
+msgstr "عدم امکان بررسی گزینههای تنظیمات Flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
-msgstr ""
+msgstr "%s: آپشن مورد نظر شما یافت نشد %s"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
-msgstr ""
+msgstr "%s --help برای دیدن راهنمایی دستور رو به رو را اجرا کنید"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "فایل %s از قبل وجود داشته است، بدون تغییر رها شد..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
-msgstr "ساختن %s..."
+msgstr "درحال ساختن %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
-msgstr ""
+msgstr "در حال ساخت نسخه اولیه Home Manager."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -113,9 +140,15 @@ msgid ""
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
+"پایان! ابزار home-manager نصب شده است و شما میتوانید با تغییر دادن فایل\n"
+"\n"
+" %s\n"
+"\n"
+"تنظیمات Home Manager خود را تغییر دهید. برای دیدن همه ی تنظیمات موجود\n"
+"دستور 'man home-configuration.nix' را اجرا کنید."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -123,13 +156,19 @@ msgid ""
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
+"ای بابا, فرایند نصب با شکست مواجه شد! اگر بنظرتان میاید مشکل از Home Manager "
+"است, لطفا یک issue در\n"
+"\n"
+" %s\n"
+"\n"
+"ایجاد کنید."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
-msgstr ""
+msgstr "عدم امکان نمونهسازی تنظیمات flake"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -137,81 +176,84 @@ msgid_plural ""
"There are %d unread and relevant news items.\n"
"Read them by running the command \"%s news\"."
msgstr[0] ""
+"%d خبر خوانده نشده وجود دارد.\n"
+"میتوانید آن را با اجرای دستور \"%s news\" بخوانید."
msgstr[1] ""
-
-#: home-manager/home-manager:578
-msgid "Unknown \"news.display\" setting \"%s\"."
-msgstr ""
+"%d خبر خوانده نشده وجود دارد.\n"
+"میتوانید آنها را با اجرای دستور \"%s news\" بخوانید."
#: home-manager/home-manager:586
+msgid "Unknown \"news.display\" setting \"%s\"."
+msgstr "تنظیمات \"news.display\" در \"%s\" شناخته شده نیست."
+
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
-msgstr ""
+msgstr "لطفا متغیر محلی $EDITOR و یا $VISUAL را تنظیم کنید"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
-msgstr ""
+msgstr "نمیتوان دستور build را در یک دایکتوری read-only اجرا کرد"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
-msgstr ""
+msgstr "هیچ نسل ای با شناسه %s یافت نشد"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "نمیتوان نسل فعلی %s را حذف کرد"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "حذف کردن نسل %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
-msgstr ""
+msgstr "هیچ نسلی برای منسوخ کردن وجود ندارد"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
-msgstr ""
+msgstr "بنظر میاید هیچ پکیجی از home-manager نصب نشده است."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
-msgstr ""
+msgstr "پارامتر %s شناخته نشده است"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
-msgstr ""
+msgstr "این عمل Home Manager را از سیستم شما حذف میکند."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
-msgstr ""
+msgstr "این یک عمل آزمایشی است, قرار نیست چیزی واقعا حذف شود."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
-msgstr "واقعاً هوم منیجر را حذف نصب کنید؟"
+msgstr "واقعا میخواهید Home Manager را حذف کنید؟"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
-msgstr ""
+msgstr "در حال انتقال به تنظیمات خالی Home Manager..."
-#: home-manager/home-manager:855
-#, fuzzy
+#: home-manager/home-manager:863
msgid "Yay!"
-msgstr "آره!"
+msgstr "ایول!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
-msgstr "هوم منیجر حذف نصب شد اما home.nix شما دست نخورده باقی ماند."
+msgstr "Home Manager حذف نصب شد اما home.nix شما دست نخورده باقی ماند."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
-msgstr ""
+msgstr "expire-generations یک پارامتر نیاز دارد, اما %d پارامتر دریافت کرد"
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "دستور ناشناخته: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
-msgstr ""
+msgstr "این نسخه قابل build کردن نیست, لطفا آن را با nix-shell اجرا کنید."
#, sh-format
#~ msgid "Please set the $EDITOR environment variable"
diff --git a/home-manager/po/fi.po b/home-manager/po/fi.po
index aed3b397..4e3c1935 100644
--- a/home-manager/po/fi.po
+++ b/home-manager/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -17,36 +17,41 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr ""
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr ""
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -67,42 +72,42 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr ""
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr ""
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr ""
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr ""
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr ""
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -113,7 +118,7 @@ msgid ""
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -123,11 +128,11 @@ msgid ""
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr ""
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -137,72 +142,72 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr ""
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr ""
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr ""
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr ""
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr ""
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr ""
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr ""
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr ""
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr ""
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr ""
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr ""
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr ""
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr ""
diff --git a/home-manager/po/fr.po b/home-manager/po/fr.po
index b7a87485..de1c061b 100644
--- a/home-manager/po/fr.po
+++ b/home-manager/po/fr.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2024-03-04 06:44+0000\n"
-"Last-Translator: Alexis Rossfelder \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-29 18:07+0000\n"
+"Last-Translator: Michael Thomas \n"
"Language-Team: French \n"
"Language: fr\n"
@@ -17,16 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 5.5-dev\n"
+"X-Generator: Weblate 5.5.2\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s : argument manquant pour %s"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Aucun fichier de configuration trouvé à l'emplacement %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,18 +39,18 @@ msgstr ""
"Garder votre Home Manager %s dans %s est obsolète,\n"
"Veuillez le déplacer à %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr ""
"Aucun fichier de configuration trouvé. Veuillez en créer un à l'emplacement "
"%s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager indisponible à %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -54,7 +59,7 @@ msgstr ""
"dossier y a été trouvé."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -90,42 +95,42 @@ msgstr ""
"\n"
"\t$ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Vérification de Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Impossible de trouver le dossier de profil approprié, essayé %s et %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Impossible d'inspecter les options de la configuration d'un flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s : option inconnue '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Exécuter « %s --help » pour de l'aide sur l'utilisation"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Le fichier %s existe déjà, il sera laissé inchangé..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Création de %s ..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Création de la génération initiale de Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -143,7 +148,7 @@ msgstr ""
"essayez 'man home-configuration.nix'."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -159,11 +164,11 @@ msgstr ""
"si l'erreur semble être liée à Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Impossible d'instancier une configuration flake"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -177,72 +182,72 @@ msgstr[1] ""
"Il y a %d nouveaux éléments non lus et pertinents.\n"
"Vous pouvez les lire en exécutant la commande \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuration \"news.display\" inconnue \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Veuillez remplir la variable d'environnement $EDITOR ou VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Impossible de lancer une compilation dans un dossier en écriture seule"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Aucune génération avec l'ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Impossible de supprimer la génération courante %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Suppression de la génération %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Aucune génération expirée"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Aucun package home-manager ne semble être installé."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Argument inconnu %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Cela va supprimer Home Manager de votre système."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "C'est un essai, rien ne sera réellement désinstallé."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Voulez-vous vraiment désinstaller Home Manager ?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Changement vers une configuration vierge de Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Yay !"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager est désinstallé mais votre home.nix reste intact."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations attend un argument, a obtenu %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Commande inconnue : %s"
diff --git a/home-manager/po/home-manager.pot b/home-manager/po/home-manager.pot
index 4b238d10..2fcdc5a6 100644
--- a/home-manager/po/home-manager.pot
+++ b/home-manager/po/home-manager.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,36 +18,41 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr ""
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr ""
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -68,42 +73,42 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr ""
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr ""
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr ""
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr ""
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr ""
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -114,7 +119,7 @@ msgid ""
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -124,11 +129,11 @@ msgid ""
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr ""
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -138,72 +143,72 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr ""
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr ""
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr ""
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr ""
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr ""
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr ""
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr ""
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr ""
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr ""
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr ""
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr ""
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr ""
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr ""
diff --git a/home-manager/po/id.po b/home-manager/po/id.po
index 0db625b3..2dd2c14d 100644
--- a/home-manager/po/id.po
+++ b/home-manager/po/id.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-02-16 22:01+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Indonesian , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Home Manager\n"
+"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-23 17:49+0000\n"
+"Last-Translator: Bjarki Gunnarsson \n"
+"Language-Team: Icelandic \n"
+"Language: is\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n"
+"X-Generator: Weblate 5.5-dev\n"
+
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+#, fuzzy
+msgid "%s: missing argument for %s"
+msgstr "%s: vantar inntak fyrir %s"
+
+#: home-manager/home-manager:64
+msgid "No configuration file found at %s"
+msgstr "Engin stillingaskrá fundin í %s"
+
+#. translators: The first '%s' specifier will be replaced by either
+#. 'home.nix' or 'flake.nix'.
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
+msgid ""
+"Keeping your Home Manager %s in %s is deprecated,\n"
+"please move it to %s"
+msgstr ""
+"Það er úrelt að geyma Home Manager %s í %s,\n"
+"vinsamlega færðu hann í %s"
+
+#: home-manager/home-manager:92
+msgid "No configuration file found. Please create one at %s"
+msgstr "Engin stillingaskrá fundin. Vinsamlegast búðu hana til í %s"
+
+#: home-manager/home-manager:107
+msgid "Home Manager not found at %s."
+msgstr "Home Manager ekki fundinn í %s."
+
+#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
+#: home-manager/home-manager:115
+msgid ""
+"The fallback Home Manager path %s has been deprecated and a file/directory "
+"was found there."
+msgstr ""
+"Vara Home Manager slóðin %s hefur verið úreld en skrá/mappa hefur verið "
+"fundin þar."
+
+#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
+#: home-manager/home-manager:118
+msgid ""
+"To remove this warning, do one of the following.\n"
+"\n"
+"1. Explicitly tell Home Manager to use the path, for example by adding\n"
+"\n"
+" { programs.home-manager.path = \"%s\"; }\n"
+"\n"
+" to your configuration.\n"
+"\n"
+" If you import Home Manager directly, you can use the `path` parameter\n"
+"\n"
+" pkgs.callPackage /path/to/home-manager-package { path = \"%s\"; }\n"
+"\n"
+" when calling the Home Manager package.\n"
+"\n"
+"2. Remove the deprecated path.\n"
+"\n"
+" $ rm -r \"%s\""
+msgstr ""
+
+#: home-manager/home-manager:146
+msgid "Sanity checking Nix"
+msgstr ""
+
+#: home-manager/home-manager:166
+msgid "Could not find suitable profile directory, tried %s and %s"
+msgstr ""
+
+#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
+#: home-manager/home-manager:221
+msgid "Can't inspect options of a flake configuration"
+msgstr ""
+
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
+msgid "%s: unknown option '%s'"
+msgstr ""
+
+#: home-manager/home-manager:301 home-manager/home-manager:1052
+msgid "Run '%s --help' for usage help"
+msgstr ""
+
+#: home-manager/home-manager:327 home-manager/home-manager:431
+msgid "The file %s already exists, leaving it unchanged..."
+msgstr ""
+
+#: home-manager/home-manager:329 home-manager/home-manager:433
+msgid "Creating %s..."
+msgstr ""
+
+#: home-manager/home-manager:475
+msgid "Creating initial Home Manager generation..."
+msgstr ""
+
+#. translators: The "%s" specifier will be replaced by a file path.
+#: home-manager/home-manager:480
+msgid ""
+"All done! The home-manager tool should now be installed and you can edit\n"
+"\n"
+" %s\n"
+"\n"
+"to configure Home Manager. Run 'man home-configuration.nix' to\n"
+"see all available options."
+msgstr ""
+
+#. translators: The "%s" specifier will be replaced by a URL.
+#: home-manager/home-manager:485
+msgid ""
+"Uh oh, the installation failed! Please create an issue at\n"
+"\n"
+" %s\n"
+"\n"
+"if the error seems to be the fault of Home Manager."
+msgstr ""
+
+#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
+#: home-manager/home-manager:496
+msgid "Can't instantiate a flake configuration"
+msgstr ""
+
+#: home-manager/home-manager:572
+msgid ""
+"There is %d unread and relevant news item.\n"
+"Read it by running the command \"%s news\"."
+msgid_plural ""
+"There are %d unread and relevant news items.\n"
+"Read them by running the command \"%s news\"."
+msgstr[0] ""
+msgstr[1] ""
+
+#: home-manager/home-manager:586
+msgid "Unknown \"news.display\" setting \"%s\"."
+msgstr ""
+
+#: home-manager/home-manager:594
+#, sh-format
+msgid "Please set the $EDITOR or $VISUAL environment variable"
+msgstr ""
+
+#: home-manager/home-manager:612
+msgid "Cannot run build in read-only directory"
+msgstr ""
+
+#: home-manager/home-manager:693
+msgid "No generation with ID %s"
+msgstr ""
+
+#: home-manager/home-manager:695
+msgid "Cannot remove the current generation %s"
+msgstr ""
+
+#: home-manager/home-manager:697
+msgid "Removing generation %s"
+msgstr ""
+
+#: home-manager/home-manager:718
+msgid "No generations to expire"
+msgstr ""
+
+#: home-manager/home-manager:729
+msgid "No home-manager packages seem to be installed."
+msgstr ""
+
+#: home-manager/home-manager:811
+msgid "Unknown argument %s"
+msgstr ""
+
+#: home-manager/home-manager:835
+msgid "This will remove Home Manager from your system."
+msgstr ""
+
+#: home-manager/home-manager:838
+msgid "This is a dry run, nothing will actually be uninstalled."
+msgstr ""
+
+#: home-manager/home-manager:842
+msgid "Really uninstall Home Manager?"
+msgstr ""
+
+#: home-manager/home-manager:848
+msgid "Switching to empty Home Manager configuration..."
+msgstr ""
+
+#: home-manager/home-manager:863
+msgid "Yay!"
+msgstr ""
+
+#: home-manager/home-manager:868
+msgid "Home Manager is uninstalled but your home.nix is left untouched."
+msgstr ""
+
+#: home-manager/home-manager:1091
+msgid "expire-generations expects one argument, got %d."
+msgstr ""
+
+#: home-manager/home-manager:1113
+msgid "Unknown command: %s"
+msgstr ""
+
+#: home-manager/install.nix:18
+msgid "This derivation is not buildable, please run it using nix-shell."
+msgstr ""
diff --git a/home-manager/po/it.po b/home-manager/po/it.po
index 7c281a12..8ffe648f 100644
--- a/home-manager/po/it.po
+++ b/home-manager/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-02-29 10:10+0000\n"
"Last-Translator: FedFer98123 \n"
"Language-Team: Italian \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-29 18:07+0000\n"
+"Last-Translator: Kento Okamoto \n"
"Language-Team: Japanese \n"
"Language: ja\n"
@@ -17,16 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.4\n"
+"X-Generator: Weblate 5.5.2\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: %s の引数がありません"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "%s に設定ファイルが見つかりません"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,23 +39,23 @@ msgstr ""
"Home Managerの %s の %s への保管は非推奨となりました\n"
"%s へ移動させてください"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "設定ファイルがありません。ファイルを %s に作ってください"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -71,43 +76,43 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Nixの健全性検査中です"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"適切なプロファイル ディレクトリが見つかりませんでした。%s と %s を試しました"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "flake設定のオプションを検査できません"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: 不明なオプション '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "'%s --help' でヘルプを参照することができます"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "%s は既に存在します。変更せずに続行しています..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "%s を作成中です..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Home Managerの世代を初期化しています..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -125,7 +130,7 @@ msgstr ""
"'man home-configuration.nix' を実行してください。"
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -141,11 +146,11 @@ msgstr ""
"というissueを立ててください。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "flake設定を初期化できません"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -156,75 +161,75 @@ msgstr[0] ""
"未読のお知らせが%d件あります。\n"
"\"%s news\"コマンドで確認できます。"
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "\"news.display\"に\"%s\"という設定は存在しません。"
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "読み込み専用ディレクトリ内ではbuild(作成)できません"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "ID %s を持つ世代はありません"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "現在使用中の世代 %s は削除できません"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "世代 %s を削除中です"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "期限切れで削除される世代はありません"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "home-managerパッケージがインストールされていないようです。"
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "不明な引数 %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "この操作によってHome Managerはシステムから削除されます。"
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "これはdry run (予行練習)で、実際にはアンインストールは行われません。"
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "本当にHome Managerをアンインストールしますか?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "空のHome Managerの設定に切り替えています..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "イェイ!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Managerはアンインストールされましたが、home.nixはそのまま残してありま"
"す。"
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr ""
"expire-generations は一つしか引数を取らないところ、%d 個が与えられました。"
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "不明なコマンド: %s"
diff --git a/home-manager/po/ko.po b/home-manager/po/ko.po
index 02dacc74..2b8fbd2a 100644
--- a/home-manager/po/ko.po
+++ b/home-manager/po/ko.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-03-19 04:01+0000\n"
"Last-Translator: honnip \n"
"Language-Team: Korean \n"
"Language-Team: Lithuanian =2 && ("
-"n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.4\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Nerastas konfigūracijos failas %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
#, fuzzy
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
@@ -36,23 +41,23 @@ msgstr ""
"Home Manager saugojimas %s viduje %s yra pasenes,\n"
"prašome perkelti į %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Nerastas konfigūracijos failas. Sukurkite jį adresu %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Nerastas Home Manager šioje vietoje %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -73,42 +78,42 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Nix tikrinamas"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Nepavyko rasti tinkamo profilio katalogo, bandyta naudoti %s ir %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Negalima patikrinti flake konfigūracijos pasirinkimų"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: nežinomas pasirinkimas „%s“"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Paleiskite „%s --help“, kad gautumėte naudojimosi instrukcijas"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Failas %s jau egzistuoja, jis paliekamas nepakeistas..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Kuriamas %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Kuriama pradinė Home Manager generacija..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -127,7 +132,7 @@ msgstr ""
"jei norite pamatyti visus pasirinkimus."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -142,11 +147,11 @@ msgstr ""
"jei atrodo, kad klaida įvyko dėl Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Negalima sukurti pradinės flake konfigūracijos"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -163,73 +168,73 @@ msgstr[2] ""
"Yra %d neperskaitytų ir aktualių naujienų.\n"
"Perskaitykite jas paleidus komandą \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Nežinomas \"news.display\" nustatymas \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
#, fuzzy
msgid "Cannot run build in read-only directory"
msgstr "Negalima vykdyti kompiliavimo read-only kataloge"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Nėra generacijos su ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Negalima pašalinti esamos generacijos %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Pašalinama generacija %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Nėra generacijų, kurios baigtų galioti"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Nėra instaliuotų home-manager paketų."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Nežinomas argumentas %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Tai pašalins Home Manager iš jūsų sistemos."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Tai bandomasis paleidimas, niekas nebus ištrinta."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Tikrai išdiegti Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Perjungiama į tuščią Home Manager konfigūraciją..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Valio!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager yra išdiegtas, bet jūsų home.nix liko nepaliestas."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations tikisi vieno argumento, gauta %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Nežinoma komanda: %s"
diff --git a/home-manager/po/nb_NO.po b/home-manager/po/nb_NO.po
index 97deaaf0..41f5035c 100644
--- a/home-manager/po/nb_NO.po
+++ b/home-manager/po/nb_NO.po
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-04-02 21:38+0000\n"
"Last-Translator: LilleAila \n"
-"Language-Team: Norwegian Bokmål \n"
+"Language-Team: Norwegian Bokmål \n"
"Language: nb_NO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,14 +19,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Fant ingen oppsettsfil i %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
#, fuzzy
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
@@ -35,23 +40,23 @@ msgstr ""
"Å holde Home Manager %s i %s er avviklet,\n"
"vennligst flytt det til %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Fant ikke noen oppsettsfil. Opprett en i %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager var ikke funnet på %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -72,43 +77,43 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Kontrollerer at Nix fungerer"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Kunne ikke finne en passende profilmappe, prøvde %s og %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Kan ikke inspisere alternativer for et flake-oppsett"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: ukjent alternativ «%s»"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Kjør «%s --help» for brukshjelp"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
#, fuzzy
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Filen %s eksisterer fra før, lar den være uendret..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Lager %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Oppretter ny Home Manager-generasjon..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -125,7 +130,7 @@ msgstr ""
"se alle tilgjengelige innstillinger."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -140,11 +145,11 @@ msgstr ""
"hvis du tror feilen er forårsaket av Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Kan ikke igangsette flak-oppsett"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -158,72 +163,72 @@ msgstr[1] ""
"Det er %d uleste og relevante nyhetssaker.\n"
"Les dem ved å kjøre kommandoen «%s news»."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Ukjent «news.display»-innstilling «%s»."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Kan ikke kjøre bygg i skrivebeskyttet mappe"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Ingen generering med ID-en %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Kan ikke fjerne nåværende generering %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Fjerner generering %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Ingen genereringer til utløp"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Ingen «home-manager»-pakker ser ut til å være installert."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Ukjent parameter %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Dette vil fjerne Home Manager fra systemet ditt."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Dette er en testkjøring. Ingenting vil bli avinstallert."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Vil du avinstallere Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Bytter til tomt Home Manager-oppsett …"
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Hurra!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager er avinstallert, men din home.nix er levnet uforandret."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "«expire-generations» forventet ett argument, mottok %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Ukjent kommando: %s"
diff --git a/home-manager/po/nl.po b/home-manager/po/nl.po
index 5d6573f8..9f614ab1 100644
--- a/home-manager/po/nl.po
+++ b/home-manager/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-02-16 22:01+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Dutch \n"
"Language-Team: Polish =20) ? 1 : 2);\n"
"X-Generator: Weblate 5.4\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -35,16 +40,16 @@ msgstr ""
"Przechowywanie %s Home Managera w %s jest przestarzałe,\n"
"proszę przenieść go do %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego. Proszę utworzyć plik %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager nie znaleziony w %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -53,7 +58,7 @@ msgstr ""
"katalog."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -93,42 +98,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Sprawdzanie poprawności Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Nie można znaleźć odpowiedniego katalogu profilu, próbowano %s i %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Nie mogę sprawdzić konfiguracji flake'a"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: nieznana opcja „%s”"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Uruchom „%s --help” by otrzymać pomoc"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Plik %s już istnieje, pozostawianie go bez zmian..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Tworzenie %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Tworzenie pierwotnej generacji Home Managera..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -146,7 +151,7 @@ msgstr ""
"sprawdzić wszystkie możliwe opcje konfiguracyjne."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -161,11 +166,11 @@ msgstr ""
"jeśli myślisz, że problem spowodowany jest przez błąd Home Managera."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Nie mogę utworzyć instancji konfiguracji flake'a"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -182,73 +187,73 @@ msgstr[2] ""
"Jest %d nieodczytanych wiadomości.\n"
"Możesz je odczytać uruchamiając „%s news”."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Nieznane ustawienie „%s” „news.display”."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Nie mogę uruchomić budowania w katalogu tylko-do-odczytu"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Brak generacji z ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Nie mogę usunąć bieżącej generacji %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Usuwanie generacji %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Brak wygasających generacji"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Pakiety home-manager nie wydają się być zainstalowane."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Nieznany argument %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "To usunie Home Managera z twojego systemu."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "To jest próba, faktycznie nic nie będzie usunięte."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Jesteś pewien usunięcia Home Managera?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Przełączanie do pustej konfiguracji Home Managera..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Jej!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Manager jest usunięty ale twój home.nix jest pozostawiony nietknięty."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations oczekuje jednego argumentu, otrzymano %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Nieznana komenda: %s"
diff --git a/home-manager/po/pt.po b/home-manager/po/pt.po
index 3e356d6a..a5de344b 100644
--- a/home-manager/po/pt.po
+++ b/home-manager/po/pt.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2024-02-16 22:01+0000\n"
-"Last-Translator: Robert Helgesson \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-19 17:07+0000\n"
+"Last-Translator: Felipe Silva \n"
"Language-Team: Portuguese \n"
"Language: pt\n"
@@ -17,16 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 5.4\n"
+"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: faltando argumento para %s"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Nenhum ficheiro de configuração encontrado em %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,16 +39,16 @@ msgstr ""
"Manter o %s do seu Home Manager em %s já não é suportado,\n"
"por favor mova-o para %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Ficheiro de configuração não encontrado. Por favor crie um em %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager não foi encontrado em %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"diretório foi encontrado lá."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -91,44 +96,44 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Revalidando Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"Não foi possível encontrar uma diretoria de perfil apropriada, foi tentado "
"%s e %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Não é possivel inspecionar a opção de configuração do flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: opção não reconhecida '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Execute '%s --help' para instruções de uso"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "O arquivo %s já existe, deixando do jeito que está..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Criando %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Criando a geração inicial do Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -145,7 +150,7 @@ msgstr ""
"ver todas as opções disponíveis."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -160,11 +165,11 @@ msgstr ""
"se o erro lhe parecer ser um problema do Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Não foi possível instanciar a configuração de flake"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -178,72 +183,72 @@ msgstr[1] ""
"Há %d novos itens relevants não lidos\n"
"Leia executando o comando \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
-msgstr ""
+msgstr "Por favor, defina a variável de ambiente $EDITOR ou $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Não é possível fazer o build num diretório somente leitura"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Nenhuma geração com ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Não foi possível remover a geração atual %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "A remover a geração %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Nenhuma geração a expirar"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Nenhum pacote parece instalado com home-manager."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Argumento desconhecido %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Isto irá remover o Home Manager do seu sistema."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Essa é uma execução de teste, nada de fato será desinstalado."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Confirma a desinstalação do Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Trocando para configuração vazia do Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Boa!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera um argumento, recebeu %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Comando não reconhecido: %s"
diff --git a/home-manager/po/pt_BR.po b/home-manager/po/pt_BR.po
index 3cb16292..a3075d41 100644
--- a/home-manager/po/pt_BR.po
+++ b/home-manager/po/pt_BR.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2024-02-28 13:02+0000\n"
-"Last-Translator: guto \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-19 17:07+0000\n"
+"Last-Translator: Felipe Silva \n"
"Language-Team: Portuguese (Brazil) \n"
"Language: pt_BR\n"
@@ -19,14 +19,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: faltando argumento para %s"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Nenhum arquivo de configuração encontrado no %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,16 +39,16 @@ msgstr ""
"Manter seu Home Manager %s em %s foi descontinuado,\n"
"por favor mova-o para %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Arquivo de configuração não encontrado. Por favor crie um em %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager não encontrado em %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"algum arquivo/diretório nele."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -92,43 +97,43 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Revalidando Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
-"Não foi possível encontrar um diretório de perfil apropriado, tentei %s e %s"
+"Não foi possível encontrar um diretório de perfil apropriado, tentou %s e %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Não é possivel inspecionar a opção de configuração do flake"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: opção não reconhecida '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Execute '%s --help' para instruções de uso"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "O arquivo %s já existe, mantendo ele sem modificações..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Criando %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Criando a geração inicial do Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -146,7 +151,7 @@ msgstr ""
"ver todas as opções disponíveis."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -161,11 +166,11 @@ msgstr ""
"se o erro lhe parecer ser um problema do Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Não foi possível instanciar a configuração de flake"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -179,72 +184,72 @@ msgstr[1] ""
"Há %d novos itens relevants não lidos\n"
"Leia executando o comando \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Por favor, defina a variável de ambiente $EDITOR ou $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Não é possível fazer o build em um diretório somente leitura"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Nenhuma geração com ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Não foi possível remover a geração atual %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Removendo geração %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Nenhuma geração a expirar"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Nenhum pacote parece instalado com home-manager."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Argumento desconhecido %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Isso irá remover o Home Manager do seu sistema."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Essa é uma execução de teste, nada de fato será desinstalado."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Confirma a desinstalação do Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Trocando para configuração vazia do Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Boa!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera um argumento, recebeu %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Comando não reconhecido: %s"
diff --git a/home-manager/po/ro.po b/home-manager/po/ro.po
index 18f9dad7..bd48a4a8 100644
--- a/home-manager/po/ro.po
+++ b/home-manager/po/ro.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-03-31 22:01+0000\n"
"Last-Translator: SMFloris \n"
"Language-Team: Romanian \n"
"Language-Team: Russian =20) ? 1 : 2);\n"
"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Не найден файл конфигурации в %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -35,16 +40,16 @@ msgstr ""
"Файл %s вашего Home Manager находится в устаревшем месте %s\n"
"пожалуйста, переместите его в %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Не найден файл конфигурации. Пожалуйста, создайте его в %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager не был найден в %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -53,7 +58,7 @@ msgstr ""
"файл или папка."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -92,42 +97,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Проверка работоспособности Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Не найдена подходящая директория профиля, пробовали %s и %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Не могу получить опции для flake-конфигурации"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: неизвестная опция '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Выполните '%s --help', чтобы получить справку"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Файл %s уже существует и не будет изменен..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Создание %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Создаю начальное поколение Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -144,7 +149,7 @@ msgstr ""
"Выполните 'man home-configuration.nix', чтобы увидеть доступные опции."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -159,11 +164,11 @@ msgstr ""
"если считаете, что в ошибке виноват Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Не могу создать экземляр для flake-конфигурации"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -180,72 +185,72 @@ msgstr[2] ""
"У вас есть %d непрочитанных и релевантных новостей.\n"
"Прочтите их, выполнив команду \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Неизвестное значение \"news.display\": \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Пожалуйста, установите переменную среды $EDITOR или $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Не могу начать сборку в директории, защищённой от записи"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Поколение под номером %s не существует"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Не могу удалить текущее поколение %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Удаляю поколение %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Нет поколений, которые можно просрочить"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Не обнаружено пакетов, установленных через home-manager."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Неизвестный аргумент %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Это удалит Home Manager из вашей системы."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Это пробный запуск, на самом деле ничего не удаляется."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Действительно хотите удалить Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Переключаюсь на пустую конфигурацию Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Ура!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager удалён, но ваш home.nix остался нетронутым."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations требует один аргумент, но передано %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s"
diff --git a/home-manager/po/sv.po b/home-manager/po/sv.po
index 2454def1..15930e49 100644
--- a/home-manager/po/sv.po
+++ b/home-manager/po/sv.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2024-02-18 14:02+0000\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-22 07:07+0000\n"
"Last-Translator: bittin1ddc447d824349b2 \n"
"Language-Team: Swedish \n"
@@ -17,16 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.4\n"
+"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: saknar argument för %s"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Det finns ingen konfigurationsfil i %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,16 +39,16 @@ msgstr ""
"Att behålla din Home Manager %s i %s är föråldrat,\n"
"snälla flytta den till %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Hittade ingen konfigurationsfil. Skapa en i %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager hittades inte på %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"där."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -91,42 +96,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Kontrollerar att Nix funkar"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Kunde inte hitta lämplig profil-katalog, försökte med %s och %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Kan inte granska alternativ i en flake-konfiguration"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: okänt val '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Kör '%s --help' för användarhjälp"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Filen %s finns redan, lämnar den orörd..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Skapar %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Skapar initial Home Manager-generation..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -143,7 +148,7 @@ msgstr ""
"att se alla tillgängliga alternativ."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -158,11 +163,11 @@ msgstr ""
"om problemet verkar bero på något Home Manager gör fel."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Kan inte instansera en flake-konfiguration"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -176,72 +181,72 @@ msgstr[1] ""
"Det finns %d olästa och relevanta nyheter.\n"
"Läs dem genom att köra kommandot \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Okänt \"news.display\"-värde \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Vänligen ställ in miljövariabeln $EDITOR eller $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Kan inte bygga i katalog med bara läsrättigheter"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Ingen generation med ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Kan inte ta bort nuvarande generation %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Tar bort generation %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Ingen generation att förfalla"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Paketet home-manager verkar inte vara installerat."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Okänt argument %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Detta kommer att ta bort Home Manager från ditt system."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Detta är en testkörning, inget kommer att bli avinstallerat."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Verkligen avinstallera Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Byter till tom Home Manager-konfiguration..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Hurra!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager är avinstallerad men din home.nix är orörd."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expect-generations förväntar sig ett argument, fick %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Okänt kommando: %s"
diff --git a/home-manager/po/th.po b/home-manager/po/th.po
index 2aaaa756..174b1c0a 100644
--- a/home-manager/po/th.po
+++ b/home-manager/po/th.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-09-19 06:27+0000\n"
"Last-Translator: Kamontat Chantrachirathumrong \n"
@@ -20,36 +20,41 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.0.2\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "ไม่พบการตั้งค่าที่ %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr ""
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
msgstr ""
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -70,42 +75,42 @@ msgid ""
" $ rm -r \"%s\""
msgstr ""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr ""
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr ""
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr ""
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr ""
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr ""
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -116,7 +121,7 @@ msgid ""
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -126,11 +131,11 @@ msgid ""
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr ""
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -140,72 +145,72 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr ""
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr ""
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr ""
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr ""
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr ""
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr ""
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr ""
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr ""
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr ""
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr ""
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr ""
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr ""
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr ""
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr ""
diff --git a/home-manager/po/tr.po b/home-manager/po/tr.po
index 7cbf6354..66c89e60 100644
--- a/home-manager/po/tr.po
+++ b/home-manager/po/tr.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2024-02-16 22:01+0000\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-19 17:07+0000\n"
"Last-Translator: Oğuz Ersen \n"
"Language-Team: Turkish \n"
@@ -17,16 +17,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.4\n"
+"X-Generator: Weblate 5.5-dev\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr "%s: %s için argüman eksik"
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "%s konumunda yapılandırma dosyası bulunamadı"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -34,17 +39,17 @@ msgstr ""
"Home Managerı %s de tutmak artık desteklenmemektedir,\n"
"lütfen % e taşıyın"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr ""
"Yapılandırma dosyası bulunamadı. Lütfen %s konumunda bir tane oluşturun"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "%s konumunda Home Manager bulunamadı."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -53,7 +58,7 @@ msgstr ""
"dizin bulundu."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -92,42 +97,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Nix denetleniyor"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Kullanılabilir profil dizini bulunamadı, %s ve %s denendi"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Flake yapılandırmasının ayarları incelenemiyor"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: Bilinmeyen komut '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Yardım için '%s --help'"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "%s dosyası zaten var, değişiklik yapılmıyor..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Oluşturuluyor %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "İlk Home Manager inşası oluşturuluyor..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -144,7 +149,7 @@ msgstr ""
"'man home-configuration.nix'."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -160,11 +165,11 @@ msgstr ""
"adresinden bildirin."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Flake yapılandırması örneklendirilemiyor"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -178,72 +183,72 @@ msgstr[1] ""
"%d tane okunmamış ilgili haberler bulunmakta.\n"
"Okumak için \"%s news\" komutunu kullanın."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Bilinmeyen \"news.display\" seçeneği \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Lütfen $EDITOR veya $VISUAL ortam değişkenini ayarlayın"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Sadece okuma izni olan bir dizinde inşa çalıştırılamaz"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "%s ID'sine sahip nesil bulunamadı"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Kullanımda olan %s inşası silinemez"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "İnşa siliniyor %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Süresi dolacak inşa yok"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Galiba home-manager paketi kurulu değil."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Bilinmeyen argüman %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Bu, sisteminizden Home Manager'ı kaldıracak."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Bu sadece bir inşa denemesi, hiçbir şey silinmeyecek."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Home Manager'ı silmek istediğinize emin misiniz?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Boş Home Manager yapılandırmasına geçiliyor..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Güzel!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager kaldırıldı ama home.nix dosyasına dokunulmadı."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations bir argüman istiyor, %d tane girildi."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s"
diff --git a/home-manager/po/uk.po b/home-manager/po/uk.po
index 28534c34..55aa12de 100644
--- a/home-manager/po/uk.po
+++ b/home-manager/po/uk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-02-18 14:02+0000\n"
"Last-Translator: Сергій \n"
"Language-Team: Ukrainian =20) ? 1 : 2);\n"
"X-Generator: Weblate 5.4\n"
-#: home-manager/home-manager:58
+#. translators: For example: "home-manager: missing argument for --cores"
+#: home-manager/home-manager:16
+msgid "%s: missing argument for %s"
+msgstr ""
+
+#: home-manager/home-manager:64
msgid "No configuration file found at %s"
msgstr "Файл конфігурації не знайдено в %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
-#: home-manager/home-manager:75 home-manager/home-manager:79
-#: home-manager/home-manager:178
+#: home-manager/home-manager:81 home-manager/home-manager:85
+#: home-manager/home-manager:184
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
@@ -35,16 +40,16 @@ msgstr ""
"Збереження вашого Home Manager %s у %s є застарілим,\n"
"будь ласка, перемістіть його до %s"
-#: home-manager/home-manager:86
+#: home-manager/home-manager:92
msgid "No configuration file found. Please create one at %s"
msgstr "Файл конфігурації не знайдено. Будь ласка, створіть його в %s"
-#: home-manager/home-manager:101
+#: home-manager/home-manager:107
msgid "Home Manager not found at %s."
msgstr "Home Manager не знайдено на %s."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:109
+#: home-manager/home-manager:115
msgid ""
"The fallback Home Manager path %s has been deprecated and a file/directory "
"was found there."
@@ -52,7 +57,7 @@ msgstr ""
"Резервний шлях до Home Manager %s застарів, і там було знайдено файл/каталог."
#. translators: This message will be seen by very few users that likely are familiar with English. So feel free to leave this untranslated.
-#: home-manager/home-manager:112
+#: home-manager/home-manager:118
msgid ""
"To remove this warning, do one of the following.\n"
"\n"
@@ -91,42 +96,42 @@ msgstr ""
"\n"
" $ rm -r \"%s\""
-#: home-manager/home-manager:140
+#: home-manager/home-manager:146
msgid "Sanity checking Nix"
msgstr "Перевірка адекватності Nix"
-#: home-manager/home-manager:160
+#: home-manager/home-manager:166
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Не вдалося знайти відповідний каталог профілю, спробував %s і %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:215
+#: home-manager/home-manager:221
msgid "Can't inspect options of a flake configuration"
msgstr "Неможливо перевірити параметри flake-конфігурації"
-#: home-manager/home-manager:288 home-manager/home-manager:311
-#: home-manager/home-manager:1030
+#: home-manager/home-manager:296 home-manager/home-manager:319
+#: home-manager/home-manager:1051
msgid "%s: unknown option '%s'"
msgstr "%s: невідомий параметр '%s'"
-#: home-manager/home-manager:293 home-manager/home-manager:1031
+#: home-manager/home-manager:301 home-manager/home-manager:1052
msgid "Run '%s --help' for usage help"
msgstr "Запустіть '%s --help' для отримання довідки про використання"
-#: home-manager/home-manager:319 home-manager/home-manager:423
+#: home-manager/home-manager:327 home-manager/home-manager:431
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Файл %s вже існує, залишаючи його незмінним..."
-#: home-manager/home-manager:321 home-manager/home-manager:425
+#: home-manager/home-manager:329 home-manager/home-manager:433
msgid "Creating %s..."
msgstr "Створення %s..."
-#: home-manager/home-manager:467
+#: home-manager/home-manager:475
msgid "Creating initial Home Manager generation..."
msgstr "Створення початкової генерації Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
-#: home-manager/home-manager:472
+#: home-manager/home-manager:480
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
@@ -144,7 +149,7 @@ msgstr ""
"переглянути всі доступні варіанти."
#. translators: The "%s" specifier will be replaced by a URL.
-#: home-manager/home-manager:477
+#: home-manager/home-manager:485
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
@@ -159,11 +164,11 @@ msgstr ""
"якщо здається, що помилка сталася через Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
-#: home-manager/home-manager:488
+#: home-manager/home-manager:496
msgid "Can't instantiate a flake configuration"
msgstr "Не вдається створити екземпляр flake-конфігурації"
-#: home-manager/home-manager:564
+#: home-manager/home-manager:572
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -180,72 +185,72 @@ msgstr[2] ""
"Є %d непрочитаних і ревалентних новин.\n"
"Прочитайте їх, виконавши команду \"%s news\"."
-#: home-manager/home-manager:578
+#: home-manager/home-manager:586
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Невідоме налаштування \"news.display\" \"%s\"."
-#: home-manager/home-manager:586
+#: home-manager/home-manager:594
#, sh-format
msgid "Please set the $EDITOR or $VISUAL environment variable"
msgstr "Будь ласка, встановіть змінну оточення $EDITOR або $VISUAL"
-#: home-manager/home-manager:604
+#: home-manager/home-manager:612
msgid "Cannot run build in read-only directory"
msgstr "Неможливо запустити збірку в каталозі, доступному лише для читання"
-#: home-manager/home-manager:685
+#: home-manager/home-manager:693
msgid "No generation with ID %s"
msgstr "Немає генерації з ID %s"
-#: home-manager/home-manager:687
+#: home-manager/home-manager:695
msgid "Cannot remove the current generation %s"
msgstr "Не вдається видалити поточну генерацію %s"
-#: home-manager/home-manager:689
+#: home-manager/home-manager:697
msgid "Removing generation %s"
msgstr "Видалення генерації %s"
-#: home-manager/home-manager:710
+#: home-manager/home-manager:718
msgid "No generations to expire"
msgstr "Немає генерацій, термін дії яких закінчується"
-#: home-manager/home-manager:721
+#: home-manager/home-manager:729
msgid "No home-manager packages seem to be installed."
msgstr "Здається, не встановлено жодних пакунків home-manager."
-#: home-manager/home-manager:803
+#: home-manager/home-manager:811
msgid "Unknown argument %s"
msgstr "Невідомий аргумент %s"
-#: home-manager/home-manager:827
+#: home-manager/home-manager:835
msgid "This will remove Home Manager from your system."
msgstr "Це призведе до видалення Home Manager з вашої системи."
-#: home-manager/home-manager:830
+#: home-manager/home-manager:838
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Це пробний запуск, насправді нічого не буде видалено."
-#: home-manager/home-manager:834
+#: home-manager/home-manager:842
msgid "Really uninstall Home Manager?"
msgstr "Дійсно видаліть Home Manager?"
-#: home-manager/home-manager:840
+#: home-manager/home-manager:848
msgid "Switching to empty Home Manager configuration..."
msgstr "Перехід до порожньої конфігурації Home Manager..."
-#: home-manager/home-manager:855
+#: home-manager/home-manager:863
msgid "Yay!"
msgstr "Ура!"
-#: home-manager/home-manager:860
+#: home-manager/home-manager:868
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager буде видалено, але ваш home.nix залишиться недоторканим."
-#: home-manager/home-manager:1070
+#: home-manager/home-manager:1091
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generation очікує один аргумент, отримав %d."
-#: home-manager/home-manager:1092
+#: home-manager/home-manager:1113
msgid "Unknown command: %s"
msgstr "Невідома команда: %s"
diff --git a/home-manager/po/vi.po b/home-manager/po/vi.po
index d0a57b9b..336b5562 100644
--- a/home-manager/po/vi.po
+++ b/home-manager/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-03-27 15:05+0000\n"
"Last-Translator: Nguyen Khanh \n"
"Language-Team: Vietnamese \n"
"Language-Team: Chinese (Simplified) \n"
"Language-Team: Chinese (Traditional)
- Add fonts in the Nix user profile
-
- ${config.home.path}/etc/fonts/conf.d
- ${config.home.path}/etc/fonts/fonts.conf
-
- ${config.home.path}/lib/X11/fonts
- ${config.home.path}/share/fonts
- ${profileDirectory}/lib/X11/fonts
- ${profileDirectory}/share/fonts
-
- ${config.home.path}/lib/fontconfig/cache
+ ${conf}
'';
+ in {
+ "fontconfig/conf.d/10-hm-fonts.conf".text = mkFontconfigConf ''
+ Add fonts in the Nix user profile
+
+ ${config.home.path}/etc/fonts/conf.d
+ ${config.home.path}/etc/fonts/fonts.conf
+
+ ${config.home.path}/lib/X11/fonts
+ ${config.home.path}/share/fonts
+ ${profileDirectory}/lib/X11/fonts
+ ${profileDirectory}/share/fonts
+
+ ${config.home.path}/lib/fontconfig/cache
+ '';
+
+ "fontconfig/conf.d/52-hm-default-fonts.conf".text = let
+ genDefault = fonts: name:
+ optionalString (fonts != [ ]) ''
+
+ ${name}
+
+ ${
+ concatStringsSep "" (map (font: ''
+ ${font}
+ '') fonts)
+ }
+
+
+ '';
+ in mkFontconfigConf ''
+
+ ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
+ ${genDefault cfg.defaultFonts.serif "serif"}
+ ${genDefault cfg.defaultFonts.monospace "monospace"}
+ ${genDefault cfg.defaultFonts.emoji "emoji"}
+ '';
};
};
}
diff --git a/modules/misc/news.nix b/modules/misc/news.nix
index 97b8da7b..2164d66a 100644
--- a/modules/misc/news.nix
+++ b/modules/misc/news.nix
@@ -1470,12 +1470,192 @@ in {
'';
}
+ {
+ time = "2024-03-28T17:02:19+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.amberol'.
+ '';
+ }
+
{
time = "2024-04-08T21:43:38+00:00";
message = ''
A new module is available: 'programs.bun'.
'';
}
+
+ {
+ time = "2024-04-18T22:30:49+00:00";
+ message = ''
+ A new module is available: 'programs.fd'.
+ '';
+ }
+
+ {
+ time = "2024-04-19T09:23:52+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'programs.tofi'.
+ '';
+ }
+
+ {
+ time = "2024-04-19T10:01:55+00:00";
+ message = ''
+ A new module is available: 'programs.spotify-player'.
+ '';
+ }
+
+ {
+ time = "2024-04-19T14:53:17+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.remmina'.
+ '';
+ }
+
+ {
+ time = "2024-04-21T20:53:09+00:00";
+ message = ''
+ A new module is available: 'programs.poetry'.
+
+ Poetry is a tool that helps you manage Python project dependencies and
+ packages. See https://python-poetry.org/ for more.
+ '';
+ }
+
+ {
+ time = "2024-04-22T18:04:47+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.amberol'.
+
+ Amberol is a music player with no delusions of grandeur. If you just
+ want to play music available on your local system then Amberol is the
+ music player you are looking for. See https://apps.gnome.org/Amberol/
+ for more.
+ '';
+ }
+
+ {
+ time = "2024-04-28T20:27:08+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.psd'.
+
+ Profile-sync-daemon (psd) is a tiny pseudo-daemon designed to manage
+ your browser's profile in tmpfs and to periodically sync it back to
+ your physical disc (HDD/SSD).
+ '';
+ }
+
+ {
+ time = "2024-04-29T22:01:51+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.swaync'.
+
+ SwayNotificationCenter is a simple notification daemon with a GTK GUI
+ for notifications and the control center. See
+ https://github.com/ErikReider/SwayNotificationCenter for more.
+ '';
+ }
+
+ {
+ time = "2024-04-30T18:28:28+00:00";
+ message = ''
+ A new module is available: 'programs.freetube'.
+
+ FreeTube is a YouTube client built around using YouTube more
+ privately. You can enjoy your favorite content and creators without
+ your habits being tracked. See https://freetubeapp.io/ for more.
+ '';
+ }
+
+ {
+ time = "2024-04-30T21:57:23+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.conky'.
+
+ Conky is a system monitor for X. Conky can display just about
+ anything, either on your root desktop or in its own window. See
+ https://conky.cc/ for more.
+ '';
+ }
+
+ {
+ time = "2024-05-05T07:22:01+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.hypridle'.
+
+ Hypridle is a program that monitors user activity and runs commands
+ when idle or active. See https://github.com/hyprwm/hypridle for more.
+ '';
+ }
+
+ {
+ time = "2024-05-06T07:36:13+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'programs.gnome-shell'.
+
+ GNOME Shell is the graphical shell of the GNOME desktop environment.
+ It provides basic functions like launching applications and switching
+ between windows, and is also a widget engine.
+ '';
+ }
+
+ {
+ time = "2024-05-10T10:30:58+00:00";
+ message = ''
+ A new module is available: 'programs.fastfetch'.
+
+ Fastfetch is a Neofetch-like tool for fetching system information and
+ displaying them in a pretty way. See
+ https://github.com/fastfetch-cli/fastfetch for more.
+ '';
+ }
+
+ {
+ time = "2024-05-10T11:48:34+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'programs.hyprlock'.
+
+ Hyprland's simple, yet multi-threaded and GPU-accelerated screen
+ locking utility. See https://github.com/hyprwm/hyprlock for more.
+ '';
+ }
+
+ {
+ time = "2024-05-10T13:35:19+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.hyprpaper'.
+
+ Hyprpaper is a blazing fast wallpaper utility for Hyprland with the
+ ability to dynamically change wallpapers through sockets. It will work
+ on all wlroots-based compositors, though. See
+ https://github.com/hyprwm/hyprpaper for more.
+ '';
+ }
+
+ {
+ time = "2024-05-10T21:28:38+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'programs.yambar'.
+
+ Yambar is a lightweight and configurable status panel for X11 and
+ Wayland, that goes to great lengths to be both CPU and battery
+ efficient - polling is only done when absolutely necessary.
+
+ See https://codeberg.org/dnkl/yambar for more.
+ '';
+ }
];
};
}
diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix
index f02bc186..a36bd567 100644
--- a/modules/misc/qt.nix
+++ b/modules/misc/qt.nix
@@ -6,6 +6,7 @@ let
# Map platform names to their packages.
platformPackages = with pkgs; {
gnome = [ qgnomeplatform qgnomeplatform-qt6 ];
+ adwaita = [ qadwaitadecorations qadwaitadecorations-qt6 ];
gtk = [ libsForQt5.qtstyleplugins qt6Packages.qt6gtk2 ];
kde = [ libsForQt5.plasma-integration libsForQt5.systemsettings ];
lxqt = [ lxqt.lxqt-qtplugin lxqt.lxqt-config ];
@@ -55,56 +56,85 @@ in {
qt = {
enable = lib.mkEnableOption "Qt 5 and 6 configuration";
- platformTheme = lib.mkOption {
+ platformTheme = let
+ newOption = {
+ name = lib.mkOption {
+ type = with lib.types; nullOr str;
+ default = null;
+ example = "adwaita";
+ relatedPackages = [
+ "qgnomeplatform"
+ "qgnomeplatform-qt6"
+ "qadwaitadecorations"
+ "qadwaitadecorations-qt6"
+ [ "libsForQt5" "plasma-integration" ]
+ [ "libsForQt5" "qt5ct" ]
+ [ "libsForQt5" "qtstyleplugins" ]
+ [ "libsForQt5" "systemsettings" ]
+ [ "lxqt" "lxqt-config" ]
+ [ "lxqt" "lxqt-qtplugin" ]
+ [ "qt6Packages" "qt6ct" ]
+ [ "qt6Packages" "qt6gtk2" ]
+ ];
+ description = ''
+ Platform theme to use for Qt applications.
+
+ Some examples are
+
+ `gtk`
+ : Use GTK theme with
+ [`qtstyleplugins`](https://github.com/qt/qtstyleplugins)
+
+ `gtk3`
+ : Use [GTK3 integration](https://github.com/qt/qtbase/tree/dev/src/plugins/platformthemes/gtk3)
+ for file picker dialogs, font and theme configuration
+
+ `adwaita`
+ : Use Adwaita theme with
+ [`qadwaitadecorations`](https://github.com/FedoraQt/QAdwaitaDecorations)
+
+ `gnome` (deprecated)
+ : Use GNOME theme with
+ [`qgnomeplatform`](https://github.com/FedoraQt/QGnomePlatform).
+ Is no longer maintained so prefer `adwaita`.
+
+ `lxqt`
+ : Use LXQt theme style set using the
+ [`lxqt-config-appearance`](https://github.com/lxqt/lxqt-config)
+ application
+
+ `qtct`
+ : Use Qt style set using
+ [`qt5ct`](https://github.com/desktop-app/qt5ct)
+ and [`qt6ct`](https://github.com/trialuser02/qt6ct)
+ applications
+
+ `kde`
+ : Use Qt settings from Plasma
+ '';
+ };
+ package = lib.mkOption {
+ type = with lib.types; nullOr (either package (listOf package));
+ default = null;
+ example =
+ lib.literalExpression "[pkgs.adwaita-qt pkgs.adwaita-qt6]";
+ description = ''
+ Theme package to be used in Qt5/Qt6 applications.
+ Auto-detected from {option}`qt.platformTheme.name` if possible.
+ See its documentation for available options.
+ '';
+ };
+ };
+ in lib.mkOption {
type = with lib.types;
- nullOr (enum [ "gtk" "gtk3" "gnome" "lxqt" "qtct" "kde" ]);
+ nullOr
+ (either (enum [ "gtk" "gtk3" "gnome" "adwaita" "lxqt" "qtct" "kde" ])
+ (lib.types.submodule { options = newOption; }));
default = null;
- example = "gnome";
- relatedPackages = [
- "qgnomeplatform"
- "qgnomeplatform-qt6"
- [ "libsForQt5" "plasma-integration" ]
- [ "libsForQt5" "qt5ct" ]
- [ "libsForQt5" "qtstyleplugins" ]
- [ "libsForQt5" "systemsettings" ]
- [ "lxqt" "lxqt-config" ]
- [ "lxqt" "lxqt-qtplugin" ]
- [ "qt6Packages" "qt6ct" ]
- [ "qt6Packages" "qt6gtk2" ]
- ];
description = ''
- Platform theme to use for Qt applications.
-
- The options are
-
- `gtk`
- : Use GTK theme with
- [`qtstyleplugins`](https://github.com/qt/qtstyleplugins)
-
- `gtk3`
- : Use [GTK3 integration](https://github.com/qt/qtbase/tree/dev/src/plugins/platformthemes/gtk3)
- for file picker dialogs, font and theme configuration
-
- `gnome`
- : Use GNOME theme with
- [`qgnomeplatform`](https://github.com/FedoraQt/QGnomePlatform)
-
- `lxqt`
- : Use LXQt theme style set using the
- [`lxqt-config-appearance`](https://github.com/lxqt/lxqt-config)
- application
-
- `qtct`
- : Use Qt style set using
- [`qt5ct`](https://github.com/desktop-app/qt5ct)
- and [`qt6ct`](https://github.com/trialuser02/qt6ct)
- applications
-
- `kde`
- : Use Qt settings from Plasma
+ Deprecated. Use {option}`qt.platformTheme.name` instead.
'';
};
-
style = {
name = lib.mkOption {
type = with lib.types; nullOr str;
@@ -149,6 +179,7 @@ in {
description = ''
Theme package to be used in Qt5/Qt6 applications.
Auto-detected from {option}`qt.style.name` if possible.
+ See its documentation for available options.
'';
};
};
@@ -156,11 +187,24 @@ in {
};
config = let
+ platformTheme = if (builtins.isString cfg.platformTheme) then {
+ option = "qt.platformTheme";
+ name = cfg.platformTheme;
+ package = null;
+ } else if cfg.platformTheme == null then {
+ option = null;
+ name = null;
+ package = null;
+ } else {
+ option = "qt.platformTheme.name";
+ name = cfg.platformTheme.name;
+ package = cfg.platformTheme.package;
+ };
# Necessary because home.sessionVariables doesn't support mkIf
envVars = lib.filterAttrs (n: v: v != null) {
- QT_QPA_PLATFORMTHEME = if (cfg.platformTheme != null) then
- styleNames.${cfg.platformTheme} or cfg.platformTheme
+ QT_QPA_PLATFORMTHEME = if (platformTheme.name != null) then
+ styleNames.${platformTheme.name} or platformTheme.name
else
null;
QT_STYLE_OVERRIDE = cfg.style.name;
@@ -181,14 +225,20 @@ in {
in lib.mkIf cfg.enable {
assertions = [{
- assertion = cfg.platformTheme == "gnome" -> cfg.style.name != null
+ assertion = platformTheme.name == "gnome" -> cfg.style.name != null
&& cfg.style.package != null;
message = ''
- `qt.platformTheme` "gnome" must have `qt.style` set to a theme that
+ `qt.platformTheme.name` "gnome" must have `qt.style` set to a theme that
supports both Qt and Gtk, for example "adwaita", "adwaita-dark", or "breeze".
'';
}];
+ warnings = (lib.lists.optional (platformTheme.option == "qt.platformTheme")
+ "The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`.")
+ ++ (lib.lists.optional
+ (platformTheme.name == "gnome" && platformTheme.package == null)
+ "The value `gnome` for option `${platformTheme.option}` is deprecated. Use `adwaita` instead.");
+
qt.style.package = lib.mkIf (cfg.style.name != null)
(lib.mkDefault (stylePackages.${lib.toLower cfg.style.name} or null));
@@ -208,13 +258,16 @@ in {
# Apply theming also to apps started by systemd.
systemd.user.sessionVariables = envVars // envVarsExtra;
- home.packages = (lib.optionals (cfg.platformTheme != null)
- platformPackages.${cfg.platformTheme} or [ ])
- ++ (lib.optionals (cfg.style.package != null)
- (lib.toList cfg.style.package));
+ home.packages = (lib.findFirst (x: x != [ ]) [ ] [
+ (lib.optionals (platformTheme.package != null)
+ (lib.toList platformTheme.package))
+ (lib.optionals (platformTheme.name != null)
+ platformPackages.${platformTheme.name} or [ ])
+ ]) ++ (lib.optionals (cfg.style.package != null)
+ (lib.toList cfg.style.package));
xsession.importedVariables = [ "QT_PLUGIN_PATH" "QML2_IMPORT_PATH" ]
- ++ lib.optionals (cfg.platformTheme != null) [ "QT_QPA_PLATFORMTHEME" ]
+ ++ lib.optionals (platformTheme.name != null) [ "QT_QPA_PLATFORMTHEME" ]
++ lib.optionals (cfg.style.name != null) [ "QT_STYLE_OVERRIDE" ];
};
}
diff --git a/modules/misc/qt/kconfig.nix b/modules/misc/qt/kconfig.nix
new file mode 100644
index 00000000..f7c35573
--- /dev/null
+++ b/modules/misc/qt/kconfig.nix
@@ -0,0 +1,73 @@
+{ config, pkgs, lib, ... }:
+
+let
+
+ cfg = config.qt.kde.settings;
+in {
+ options.qt.kde.settings = lib.mkOption {
+ type = with lib.types;
+ let
+ valueType =
+ nullOr (oneOf [ bool int float str path (attrsOf valueType) ]) // {
+ description = "KDE option value";
+ };
+ in attrsOf valueType;
+ default = { };
+ example = {
+ powermanagementprofilesrc.AC.HandleButtonEvents.lidAction = 32;
+ };
+ description = ''
+ A set of values to be modified by {command}`kwriteconfig5`.
+
+ The example value would cause the following command to run in the
+ activation script:
+
+ ``` shell
+ kwriteconfig5 --file $XDG_CONFIG_HOME/powermanagementprofilesrc \
+ --group AC \
+ --group HandleButtonEvents \
+ --group lidAction \
+ --key lidAction \
+ 32
+ ```
+
+ Note, `null` values will delete the corresponding entry instead of
+ inserting any value.
+ '';
+ };
+
+ config = lib.mkIf (cfg != { }) {
+ home.activation.kconfig = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
+ ${let
+ inherit (config.xdg) configHome;
+ toValue = v:
+ let t = builtins.typeOf v;
+ in if v == null then
+ "--delete"
+ else if t == "bool" then
+ "--type bool ${builtins.toJSON v}"
+ else
+ lib.escapeShellArg (toString v);
+ toLine = file: path: value:
+ if builtins.isAttrs value then
+ lib.mapAttrsToList
+ (group: value: toLine file (path ++ [ group ]) value) value
+ else
+ "run test -f '${configHome}/${file}' && run ${pkgs.libsForQt5.kconfig}/bin/kwriteconfig5 --file '${configHome}/${file}' ${
+ lib.concatMapStringsSep " " (x: "--group ${x}")
+ (lib.lists.init path)
+ } --key '${lib.lists.last path}' ${toValue value}";
+ lines = lib.flatten
+ (lib.mapAttrsToList (file: attrs: toLine file [ ] attrs) cfg);
+ in builtins.concatStringsSep "\n" lines}
+
+ # TODO: some way to only call the dbus calls needed
+ run ${pkgs.libsForQt5.qttools.bin}/bin/qdbus org.kde.KWin /KWin reconfigure || echo "KWin reconfigure failed"
+ # the actual values are https://github.com/KDE/plasma-workspace/blob/c97dddf20df5702eb429b37a8c10b2c2d8199d4e/kcms/kcms-common_p.h#L13
+ for changeType in {0..10}; do
+ # even if one of those calls fails the others keep running
+ run ${pkgs.dbus}/bin/dbus-send /KGlobalSettings org.kde.KGlobalSettings.notifyChange int32:$changeType int32:0 || echo "KGlobalSettings.notifyChange $changeType failed"
+ done
+ '';
+ };
+}
diff --git a/modules/misc/version.nix b/modules/misc/version.nix
index 048f784a..d068a386 100644
--- a/modules/misc/version.nix
+++ b/modules/misc/version.nix
@@ -21,6 +21,7 @@ in {
"23.05"
"23.11"
"24.05"
+ "24.11"
];
description = ''
It is occasionally necessary for Home Manager to change
diff --git a/modules/misc/xdg-portal.nix b/modules/misc/xdg-portal.nix
index af305374..b863b23e 100644
--- a/modules/misc/xdg-portal.nix
+++ b/modules/misc/xdg-portal.nix
@@ -2,9 +2,7 @@
let
- inherit (lib)
- mapAttrsToList mkEnableOption mkIf mkMerge mkOption optional optionalString
- types;
+ inherit (lib) mkIf mkMerge mkOption optional types;
associationOptions = with types;
attrsOf (coercedTo (either (listOf str) str)
@@ -14,8 +12,24 @@ in {
meta.maintainers = [ lib.maintainers.misterio77 ];
options.xdg.portal = {
- enable = mkEnableOption
- "[XDG desktop integration](https://github.com/flatpak/xdg-desktop-portal)";
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ example = true;
+ description = ''
+ Whether to enable [XDG desktop integration](https://github.com/flatpak/xdg-desktop-portal).
+
+ Note, if you use the NixOS module and have `useUserPackages = true`,
+ make sure to add
+
+ ``` nix
+ environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ];
+ ```
+
+ to your system configuration so that the portal definitions and DE
+ provided configurations get linked.
+ '';
+ };
extraPortals = mkOption {
type = types.listOf types.package;
diff --git a/modules/modules.nix b/modules/modules.nix
index e42b5737..ea95259b 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -34,6 +34,7 @@ let
./misc/numlock.nix
./misc/pam.nix
./misc/qt.nix
+ ./misc/qt/kconfig.nix
./misc/specialisation.nix
./misc/submodule-support.nix
./misc/tmpfiles.nix
@@ -86,10 +87,13 @@ let
./programs/emacs.nix
./programs/eww.nix
./programs/eza.nix
+ ./programs/fastfetch.nix
+ ./programs/fd.nix
./programs/feh.nix
./programs/firefox.nix
./programs/fish.nix
./programs/foot.nix
+ ./programs/freetube.nix
./programs/fuzzel.nix
./programs/fzf.nix
./programs/gallery-dl.nix
@@ -100,6 +104,7 @@ let
./programs/git-credential-oauth.nix
./programs/git.nix
./programs/gitui.nix
+ ./programs/gnome-shell.nix
./programs/gnome-terminal.nix
./programs/go.nix
./programs/gpg.nix
@@ -113,6 +118,7 @@ let
./programs/hstr.nix
./programs/htop.nix
./programs/hyfetch.nix
+ ./programs/hyprlock.nix
./programs/i3blocks.nix
./programs/i3status-rust.nix
./programs/i3status.nix
@@ -184,6 +190,7 @@ let
./programs/pistol.nix
./programs/piston-cli.nix
./programs/pls.nix
+ ./programs/poetry.nix
./programs/powerline-go.nix
./programs/pqiv.nix
./programs/pubs.nix
@@ -210,6 +217,7 @@ let
./programs/sioyek.nix
./programs/skim.nix
./programs/sm64ex.nix
+ ./programs/spotify-player.nix
./programs/sqls.nix
./programs/ssh.nix
./programs/starship.nix
@@ -228,6 +236,7 @@ let
./programs/tmate.nix
./programs/tmux.nix
./programs/todoman.nix
+ ./programs/tofi.nix
./programs/topgrade.nix
./programs/translate-shell.nix
./programs/urxvt.nix
@@ -246,6 +255,7 @@ let
./programs/wpaperd.nix
./programs/xmobar.nix
./programs/xplr.nix
+ ./programs/yambar.nix
./programs/yazi.nix
./programs/yt-dlp.nix
./programs/z-lua.nix
@@ -257,8 +267,9 @@ let
./programs/zsh.nix
./programs/zsh/prezto.nix
./programs/zsh/zsh-abbr.nix
- ./services/arrpc.nix
./services/activitywatch.nix
+ ./services/amberol.nix
+ ./services/arrpc.nix
./services/autorandr.nix
./services/avizo.nix
./services/barrier.nix
@@ -273,6 +284,7 @@ let
./services/clipman.nix
./services/clipmenu.nix
./services/comodoro.nix
+ ./services/conky.nix
./services/copyq.nix
./services/darkman.nix
./services/devilspie2.nix
@@ -295,6 +307,8 @@ let
./services/gromit-mpx.nix
./services/home-manager-auto-upgrade.nix
./services/hound.nix
+ ./services/hypridle.nix
+ ./services/hyprpaper.nix
./services/imapnotify.nix
./services/kanshi.nix
./services/kbfs.nix
@@ -332,12 +346,14 @@ let
./services/plex-mpv-shim.nix
./services/polybar.nix
./services/poweralertd.nix
+ ./services/psd.nix
./services/pueue.nix
./services/pulseeffects.nix
./services/random-background.nix
./services/recoll.nix
./services/redshift-gammastep/gammastep.nix
./services/redshift-gammastep/redshift.nix
+ ./services/remmina.nix
./services/rsibreak.nix
./services/safeeyes.nix
./services/screen-locker.nix
@@ -348,6 +364,7 @@ let
./services/stalonetray.nix
./services/status-notifier-watcher.nix
./services/swayidle.nix
+ ./services/swaync.nix
./services/swayosd.nix
./services/sxhkd.nix
./services/syncthing.nix
diff --git a/modules/po/ca.po b/modules/po/ca.po
index 0c2679b6..5f94ebb7 100644
--- a/modules/po/ca.po
+++ b/modules/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-12-10 15:58+0000\n"
"Last-Translator: Nara Díaz Viñolas \n"
"Language-Team: Catalan \n"
"Language-Team: Czech =2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.3-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Vytváření linků na domácí soubory v %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Čištění osiřelých linků z %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Vytvářím profil generace %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Žádná změna, takže bude použita profil poslední generace %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -63,7 +63,7 @@ msgstr ""
"\n"
"Poté zkuste znova aktivovat vaši Home Manager konfiguraci."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Aktivuji %s"
diff --git a/modules/po/da.po b/modules/po/da.po
index e01ade19..acb46662 100644
--- a/modules/po/da.po
+++ b/modules/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-09-27 11:02+0000\n"
"Last-Translator: Emil Heilbo \n"
"Language-Team: Danish \n"
"Language-Team: German \n"
"Language-Team: Spanish \n"
+"Language-Team: Persian \n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 5.5.3-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr ""
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr ""
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr ""
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr ""
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -48,7 +51,7 @@ msgid ""
"Then try activating your Home Manager configuration again."
msgstr ""
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr ""
@@ -58,7 +61,7 @@ msgstr ""
#: modules/lib-bash/activation-init.sh:54
msgid "Could not find suitable profile directory, tried %s and %s"
-msgstr ""
+msgstr "بعد از امتحان کردن %s و %s , دایرکتوری مناسب برای پروفایل یافت نشد"
#: modules/lib-bash/activation-init.sh:83
msgid "Sanity checking oldGenNum and oldGenPath"
@@ -94,7 +97,7 @@ msgstr ""
#: modules/lib-bash/activation-init.sh:157
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "چک کردن پایداری Nix"
#: modules/lib-bash/activation-init.sh:170
msgid "This is a dry run"
diff --git a/modules/po/fi.po b/modules/po/fi.po
index 2443eb01..8733eb95 100644
--- a/modules/po/fi.po
+++ b/modules/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -16,23 +16,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr ""
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr ""
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr ""
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr ""
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -48,7 +48,7 @@ msgid ""
"Then try activating your Home Manager configuration again."
msgstr ""
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr ""
diff --git a/modules/po/fr.po b/modules/po/fr.po
index cee443cf..ca50783d 100644
--- a/modules/po/fr.po
+++ b/modules/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-07-15 14:49+0000\n"
"Last-Translator: swaps \n"
"Language-Team: French 1;\n"
"X-Generator: Weblate 5.0-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Création des liens de fichiers personnels dans %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Nettoyage des liens orphelins de %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Création de la génération de profil %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Pas de changement, réutilisation du dernier profil génération %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -63,7 +63,7 @@ msgstr ""
"\n"
"Après, essayez encore d'activer votre configuration de Home Manager."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Activation de %s"
diff --git a/modules/po/hm-modules.pot b/modules/po/hm-modules.pot
index e187449c..7a33a805 100644
--- a/modules/po/hm-modules.pot
+++ b/modules/po/hm-modules.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,23 +17,23 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr ""
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr ""
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr ""
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr ""
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -49,7 +49,7 @@ msgid ""
"Then try activating your Home Manager configuration again."
msgstr ""
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr ""
diff --git a/modules/po/id.po b/modules/po/id.po
index 6e17edae..78db0232 100644
--- a/modules/po/id.po
+++ b/modules/po/id.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-10-04 06:02+0000\n"
"Last-Translator: Reza Almanda \n"
"Language-Team: Indonesian , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Home Manager Modules\n"
+"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: is\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: modules/files.nix:191
+msgid "Creating home file links in %s"
+msgstr ""
+
+#: modules/files.nix:204
+msgid "Cleaning up orphan links from %s"
+msgstr ""
+
+#: modules/files.nix:220
+msgid "Creating profile generation %s"
+msgstr ""
+
+#: modules/files.nix:237
+msgid "No change so reusing latest profile generation %s"
+msgstr ""
+
+#: modules/home-environment.nix:634
+msgid ""
+"Oops, Nix failed to install your new Home Manager profile!\n"
+"\n"
+"Perhaps there is a conflict with a package that was installed using\n"
+"\"%s\"? Try running\n"
+"\n"
+" %s\n"
+"\n"
+"and if there is a conflicting package you can remove it with\n"
+"\n"
+" %s\n"
+"\n"
+"Then try activating your Home Manager configuration again."
+msgstr ""
+
+#: modules/home-environment.nix:667
+msgid "Activating %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:22
+msgid "Migrating profile from %s to %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:54
+msgid "Could not find suitable profile directory, tried %s and %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:83
+msgid "Sanity checking oldGenNum and oldGenPath"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:86
+msgid ""
+"The previous generation number and path are in conflict! These\n"
+"must be either both empty or both set but are now set to\n"
+"\n"
+" '%s' and '%s'\n"
+"\n"
+"If you don't mind losing previous profile generations then\n"
+"the easiest solution is probably to run\n"
+"\n"
+" rm %s/home-manager*\n"
+" rm %s/current-home\n"
+"\n"
+"and trying home-manager switch again. Good luck!"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:127
+msgid "Error: USER is set to \"%s\" but we expect \"%s\""
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:136
+msgid "Error: HOME is set to \"%s\" but we expect \"%s\""
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:153
+msgid "Starting Home Manager activation"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:157
+msgid "Sanity checking Nix"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:170
+msgid "This is a dry run"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:174
+msgid "This is a live run"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:180
+msgid "Using Nix version: %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:183
+msgid "Activation variables:"
+msgstr ""
diff --git a/modules/po/it.po b/modules/po/it.po
index 290affdf..c39d3495 100644
--- a/modules/po/it.po
+++ b/modules/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-12-02 23:06+0000\n"
"Last-Translator: Lorenzo Brzek \n"
"Language-Team: Italian \n"
"Language-Team: Japanese \n"
"Language-Team: Korean \n"
"Language-Team: Lithuanian =2 && ("
-"n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.4\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Kuriamos home failų nuorodos adresu %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
#, fuzzy
msgid "Cleaning up orphan links from %s"
msgstr "Valomos pamestos nuorodos iš %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Kuriama profilio generacija %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Nėra pakeitimų, naudojama paskutinė profilio generacija %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -65,7 +65,7 @@ msgstr ""
"\n"
"Tada pabandykite aktyvuoti Home Manager konfigūraciją iš naujo."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Aktyvuojamas %s"
diff --git a/modules/po/nb_NO.po b/modules/po/nb_NO.po
index b1f4cfaa..b3754af0 100644
--- a/modules/po/nb_NO.po
+++ b/modules/po/nb_NO.po
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-04-02 21:38+0000\n"
"Last-Translator: LilleAila \n"
-"Language-Team: Norwegian Bokmål \n"
+"Language-Team: Norwegian Bokmål \n"
"Language: nb_NO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Lager hjemmefillenker i %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Fjerner frakoblede lenker fra %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Oppretter profil for generering %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Ingen endring, gjenbruker derfor siste profilgenerering %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -63,7 +63,7 @@ msgstr ""
"\n"
"for så å aktivere ditt Home Manager-oppsett igjen."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Aktiverer %s"
diff --git a/modules/po/nl.po b/modules/po/nl.po
index 520af142..418594aa 100644
--- a/modules/po/nl.po
+++ b/modules/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-12-02 23:06+0000\n"
"Last-Translator: Zurga \n"
"Language-Team: Dutch \n"
"Language-Team: Polish =20) ? 1 : 2;\n"
"X-Generator: Weblate 4.18-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Tworzenie dowiązań plików w %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Czyszczenie osieroconych linków z %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Tworzenie profilu generacji %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Brak zmian więc używam ostatniej generacji profilu %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -65,7 +65,7 @@ msgstr ""
"\n"
"Po czym spróbuj aktywować swoją konfigurację Home Manager jeszcze raz."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Aktywowanie %s"
diff --git a/modules/po/pt.po b/modules/po/pt.po
index 73a53688..9bd5144a 100644
--- a/modules/po/pt.po
+++ b/modules/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-10-19 04:00+0000\n"
"Last-Translator: SrGesus \n"
"Language-Team: Portuguese 1;\n"
"X-Generator: Weblate 5.1\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "A criar links simbólicos em %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "A limpar links órfãos do directório %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "A criar geração %s para o perfil"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Nenhuma mudança, portanto a reusar a última geração %s para o perfil"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -63,7 +63,7 @@ msgstr ""
"\n"
"E então tente novamente ativar a sua configuração do Home Manager."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Ativando %s"
diff --git a/modules/po/pt_BR.po b/modules/po/pt_BR.po
index aea9b0ab..83d01927 100644
--- a/modules/po/pt_BR.po
+++ b/modules/po/pt_BR.po
@@ -7,35 +7,35 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
-"PO-Revision-Date: 2023-11-30 15:04+0000\n"
-"Last-Translator: Gabriel Fontes \n"
-"Language-Team: Portuguese (Brazil) \n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
+"PO-Revision-Date: 2024-04-19 17:07+0000\n"
+"Last-Translator: Felipe Silva \n"
+"Language-Team: Portuguese (Brazil) \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 5.3-dev\n"
+"X-Generator: Weblate 5.5-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Criando links simbólicos em %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
-msgstr "Limpando links órfãos do directório %s"
+msgstr "Limpando links órfãos de %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
-msgstr "Criando geração %s para o perfil"
+msgstr "Criando perfil de geração %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Nenhuma mudança, portanto reusando a última geração %s para o perfil"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -63,7 +63,7 @@ msgstr ""
"\n"
"E então tente novamente ativar a sua configuração do Home Manager."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Ativando %s"
@@ -74,7 +74,7 @@ msgstr "Migrando perfil de %s para %s"
#: modules/lib-bash/activation-init.sh:54
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
-"Não foi possível encontrar um diretório de perfil apropriado, tentei %s e %s"
+"Não foi possível encontrar um diretório de perfil apropriado, tentou %s e %s"
#: modules/lib-bash/activation-init.sh:83
msgid "Sanity checking oldGenNum and oldGenPath"
diff --git a/modules/po/ro.po b/modules/po/ro.po
index 022007dd..d817496a 100644
--- a/modules/po/ro.po
+++ b/modules/po/ro.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-08-11 19:51+0000\n"
"Last-Translator: HeartBlin913861820c094e37 \n"
"Language-Team: Romanian \n"
"Language-Team: Russian =20) ? 1 : 2;\n"
"X-Generator: Weblate 5.3-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Создаю ссылки в домашней директории %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Удаляю устаревшие ссылки из %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Создаю профиль в поколении %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Изменений нет, переиспользую профиль в последнем поколении %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"\n"
"После попробуйте активировать конфигурацию снова."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Активирую %s"
diff --git a/modules/po/sv.po b/modules/po/sv.po
index 5d474429..266a84d8 100644
--- a/modules/po/sv.po
+++ b/modules/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2023-05-27 12:11+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Swedish \n"
"Language-Team: Turkish \n"
"Language-Team: Ukrainian =20) ? 1 : 2;\n"
"X-Generator: Weblate 5.4-dev\n"
-#: modules/files.nix:236
+#: modules/files.nix:191
msgid "Creating home file links in %s"
msgstr "Створення посилань на файли в домашньому каталозі в %s"
-#: modules/files.nix:249
+#: modules/files.nix:204
msgid "Cleaning up orphan links from %s"
msgstr "Очищення невідомих посилань із %s"
-#: modules/files.nix:265
+#: modules/files.nix:220
msgid "Creating profile generation %s"
msgstr "Створення генерації профілю %s"
-#: modules/files.nix:282
+#: modules/files.nix:237
msgid "No change so reusing latest profile generation %s"
msgstr "Без змін, тому повторне використання останньої генерації профілю %s"
-#: modules/home-environment.nix:622
+#: modules/home-environment.nix:634
msgid ""
"Oops, Nix failed to install your new Home Manager profile!\n"
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"\n"
"Потім спробуйте знову активувати конфігурацію Home Manager."
-#: modules/home-environment.nix:655
+#: modules/home-environment.nix:667
msgid "Activating %s"
msgstr "Активація %s"
diff --git a/modules/po/vi.po b/modules/po/vi.po
index a7c2bafb..a285c2bf 100644
--- a/modules/po/vi.po
+++ b/modules/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager Modules\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2024-02-15 16:04+0100\n"
+"POT-Creation-Date: 2024-04-17 23:19+0200\n"
"PO-Revision-Date: 2024-03-27 15:05+0000\n"
"Last-Translator: Nguyen Khanh \n"
"Language-Team: Vietnamese \n"
"Language-Team: Chinese (Simplified) \n"
"Language-Team: Chinese (Traditional)
+ for the documentation.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."fastfetch/config.jsonc" = mkIf (cfg.settings != { }) {
+ source = jsonFormat.generate "config.jsonc" cfg.settings;
+ };
+ };
+}
diff --git a/modules/programs/fd.nix b/modules/programs/fd.nix
new file mode 100644
index 00000000..bc5b709d
--- /dev/null
+++ b/modules/programs/fd.nix
@@ -0,0 +1,59 @@
+{ config, lib, pkgs, ... }:
+with lib; {
+ meta.maintainers = [ maintainers.uncenter ];
+
+ options.programs.fd = {
+ enable = mkEnableOption
+ "fd, a simple, fast and user-friendly alternative to {command}`find`";
+
+ ignores = mkOption {
+ type = types.listOf types.str;
+ default = [ ];
+ example = [ ".git/" "*.bak" ];
+ description = "List of paths that should be globally ignored.";
+ };
+
+ hidden = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Search hidden files and directories ({option}`--hidden` argument).
+ '';
+ };
+
+ extraOptions = mkOption {
+ type = types.listOf types.str;
+ default = [ ];
+ example = [ "--no-ignore" "--absolute-path" ];
+ description = ''
+ Extra command line options passed to fd.
+ '';
+ };
+
+ package = mkPackageOption pkgs "fd" { };
+ };
+
+ config = let
+ cfg = config.programs.fd;
+
+ args = escapeShellArgs (optional cfg.hidden "--hidden" ++ cfg.extraOptions);
+
+ optionsAlias = { fd = "fd ${args}"; };
+ in mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ programs.bash.shellAliases = optionsAlias;
+
+ programs.zsh.shellAliases = optionsAlias;
+
+ programs.fish.shellAliases = optionsAlias;
+
+ programs.ion.shellAliases = optionsAlias;
+
+ programs.nushell.shellAliases = optionsAlias;
+
+ xdg.configFile."fd/ignore" = mkIf (cfg.ignores != [ ]) {
+ text = concatStringsSep "\n" cfg.ignores + "\n";
+ };
+ };
+}
diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix
index cbf78fb0..1370d4c2 100644
--- a/modules/programs/firefox.nix
+++ b/modules/programs/firefox.nix
@@ -459,7 +459,7 @@ in {
{
name = "wiki";
tags = [ "wiki" "nix" ];
- url = "https://nixos.wiki/";
+ url = "https://wiki.nixos.org/";
}
];
}
@@ -545,8 +545,8 @@ in {
};
"NixOS Wiki" = {
- urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
- iconUpdateURL = "https://nixos.wiki/favicon.png";
+ urls = [{ template = "https://wiki.nixos.org/index.php?search={searchTerms}"; }];
+ iconUpdateURL = "https://wiki.nixos.org/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@nw" ];
};
@@ -683,6 +683,11 @@ in {
Note that it is necessary to manually enable these extensions
inside Firefox after the first installation.
+
+ To automatically enable extensions add
+ `"extensions.autoDisableScopes" = 0;`
+ to
+ [{option}`programs.firefox.profiles..settings`](#opt-programs.firefox.profiles._name_.settings)
'';
};
diff --git a/modules/programs/freetube.nix b/modules/programs/freetube.nix
new file mode 100644
index 00000000..77700fe5
--- /dev/null
+++ b/modules/programs/freetube.nix
@@ -0,0 +1,60 @@
+{ lib, pkgs, config, ... }:
+
+let
+ inherit (lib)
+ concatStringsSep mapAttrsToList mkIf mkEnableOption mkPackageOption mkOption
+ literalExpression;
+
+ cfg = config.programs.freetube;
+
+ settings = settings:
+ let
+ convertSetting = name: value:
+ builtins.toJSON {
+ "_id" = name;
+ "value" = value;
+ };
+ in concatStringsSep "\n" (mapAttrsToList convertSetting settings) + "\n";
+in {
+ meta.maintainers = with lib.maintainers; [ vonixxx ];
+
+ options.programs.freetube = {
+ enable = mkEnableOption "FreeTube, a YT client for Windows, Mac, and Linux";
+
+ package = mkPackageOption pkgs "freetube" { };
+
+ settings = mkOption {
+ type = lib.types.attrs;
+ default = { };
+ example = literalExpression ''
+ {
+ allowDashAv1Formats = true;
+ checkForUpdates = false;
+ defaultQuality = "1080";
+ baseTheme = "catppuccinMocha";
+ }
+ '';
+ description = ''
+ Configuration settings for FreeTube.
+
+ All configurable options can be deduced by enabling them through the
+ GUI and observing the changes in {file}`settings.db`.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."FreeTube/hm_settings.db" = {
+ source = pkgs.writeText "hm_settings.db" (settings cfg.settings);
+
+ onChange = let
+ hmSettingsDb = "${config.xdg.configHome}/FreeTube/hm_settings.db";
+ settingsDb = "${config.xdg.configHome}/FreeTube/settings.db";
+ in ''
+ run install -Dm644 $VERBOSE_ARG '${hmSettingsDb}' '${settingsDb}'
+ '';
+ };
+ };
+}
diff --git a/modules/programs/git.nix b/modules/programs/git.nix
index 53728060..3061feff 100644
--- a/modules/programs/git.nix
+++ b/modules/programs/git.nix
@@ -392,7 +392,7 @@ in {
nameValuePair "sendemail.${name}" (if account.msmtp.enable then {
smtpServer = "${pkgs.msmtp}/bin/msmtp";
envelopeSender = "auto";
- from = address;
+ from = "${realName} <${address}>";
} else
{
smtpEncryption = if smtp.tls.enable then
@@ -407,7 +407,7 @@ in {
mkIf smtp.tls.enable (toString smtp.tls.certificatesFile);
smtpServer = smtp.host;
smtpUser = userName;
- from = address;
+ from = "${realName} <${address}>";
} // optionalAttrs (smtp.port != null) {
smtpServerPort = smtp.port;
});
diff --git a/modules/programs/gnome-shell.nix b/modules/programs/gnome-shell.nix
new file mode 100644
index 00000000..36a57cea
--- /dev/null
+++ b/modules/programs/gnome-shell.nix
@@ -0,0 +1,115 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+ cfg = config.programs.gnome-shell;
+
+ extensionOpts = { config, ... }: {
+ options = {
+ id = mkOption {
+ type = types.str;
+ example = "user-theme@gnome-shell-extensions.gcampax.github.com";
+ description = ''
+ ID of the GNOME Shell extension. If not provided, it
+ will be obtained from `package.extensionUuid`.
+ '';
+ };
+
+ package = mkOption {
+ type = types.package;
+ example = "pkgs.gnome.gnome-shell-extensions";
+ description = ''
+ Package providing a GNOME Shell extension in
+ `$out/share/gnome-shell/extensions/''${id}`.
+ '';
+ };
+ };
+
+ config = mkIf (hasAttr "extensionUuid" config.package) {
+ id = mkDefault config.package.extensionUuid;
+ };
+ };
+
+ themeOpts = {
+ options = {
+ name = mkOption {
+ type = types.str;
+ example = "Plata-Noir";
+ description = ''
+ Name of the GNOME Shell theme.
+ '';
+ };
+
+ package = mkOption {
+ type = types.nullOr types.package;
+ default = null;
+ example = literalExpression "pkgs.plata-theme";
+ description = ''
+ Package providing a GNOME Shell theme in
+ `$out/share/themes/''${name}/gnome-shell`.
+ '';
+ };
+ };
+ };
+
+in {
+ meta.maintainers = [ maintainers.terlar ];
+
+ options.programs.gnome-shell = {
+ enable = mkEnableOption "GNOME Shell customization";
+
+ extensions = mkOption {
+ type = types.listOf (types.submodule extensionOpts);
+ default = [ ];
+ example = literalExpression ''
+ [
+ { package = pkgs.gnomeExtensions.dash-to-panel; }
+ {
+ id = "user-theme@gnome-shell-extensions.gcampax.github.com";
+ package = pkgs.gnome.gnome-shell-extensions;
+ }
+ ]
+ '';
+ description = ''
+ List of GNOME Shell extensions.
+ '';
+ };
+
+ theme = mkOption {
+ type = types.nullOr (types.submodule themeOpts);
+ default = null;
+ example = literalExpression ''
+ {
+ name = "Plata-Noir";
+ package = pkgs.plata-theme;
+ }
+ '';
+ description = ''
+ Theme to use for GNOME Shell.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable (mkMerge [
+ (mkIf (cfg.extensions != [ ]) {
+ dconf.settings."org/gnome/shell" = {
+ disable-user-extensions = false;
+ enabled-extensions = catAttrs "id" cfg.extensions;
+ };
+
+ home.packages = catAttrs "package" cfg.extensions;
+ })
+
+ (mkIf (cfg.theme != null) {
+ dconf.settings."org/gnome/shell/extensions/user-theme".name =
+ cfg.theme.name;
+
+ programs.gnome-shell.extensions = [{
+ id = "user-theme@gnome-shell-extensions.gcampax.github.com";
+ package = pkgs.gnome.gnome-shell-extensions;
+ }];
+
+ home.packages = [ cfg.theme.package ];
+ })
+ ]);
+}
diff --git a/modules/programs/helix.nix b/modules/programs/helix.nix
index 9c5519f3..96c5bdbf 100644
--- a/modules/programs/helix.nix
+++ b/modules/programs/helix.nix
@@ -96,6 +96,16 @@ in {
'';
};
+ ignores = mkOption {
+ type = types.listOf types.str;
+ default = [ ];
+ example = [ ".build/" "!.gitignore" ];
+ description = ''
+ List of paths that should be globally ignored for file picker.
+ Supports the usual ignore and negative ignore (unignore) rules used in `.gitignore` files.
+ '';
+ };
+
themes = mkOption {
type = types.attrsOf tomlFormat.type;
default = { };
@@ -195,6 +205,9 @@ in {
"helix/languages.toml" = mkIf (cfg.languages != { }) {
source = tomlFormat.generate "helix-languages-config" cfg.languages;
};
+ "helix/ignore" = mkIf (cfg.ignores != [ ]) {
+ text = concatStringsSep "\n" cfg.ignores + "\n";
+ };
};
themes = (mapAttrs' (n: v:
diff --git a/modules/programs/hyprlock.nix b/modules/programs/hyprlock.nix
new file mode 100644
index 00000000..25d87188
--- /dev/null
+++ b/modules/programs/hyprlock.nix
@@ -0,0 +1,127 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.hyprlock;
+
+in {
+ meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ];
+
+ options.programs.hyprlock = {
+ enable = mkEnableOption "" // {
+ description = ''
+ Whether to enable Hyprlock, Hyprland's GPU-accelerated lock screen
+ utility.
+
+ Note that PAM must be configured to enable hyprlock to perform
+ authentication. The package installed through home-manager will *not* be
+ able to unlock the session without this configuration.
+
+ On NixOS, it can be enabled using:
+
+ ```nix
+ security.pam.services.hyprlock = {};
+ ```
+ '';
+ };
+
+ package = mkPackageOption pkgs "hyprlock" { };
+
+ settings = lib.mkOption {
+ type = with lib.types;
+ let
+ valueType = nullOr (oneOf [
+ bool
+ int
+ float
+ str
+ path
+ (attrsOf valueType)
+ (listOf valueType)
+ ]) // {
+ description = "Hyprlock configuration value";
+ };
+ in valueType;
+ default = { };
+ example = lib.literalExpression ''
+ {
+ general = {
+ disable_loading_bar = true;
+ grace = 300;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+
+ background = [
+ {
+ path = "screenshot";
+ blur_passes = 3;
+ blur_size = 8;
+ }
+ ];
+
+ input-field = [
+ {
+ size = "200, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(202, 211, 245)";
+ inner_color = "rgb(91, 96, 120)";
+ outer_color = "rgb(24, 25, 38)";
+ outline_thickness = 5;
+ placeholder_text = '\'Password...'\';
+ shadow_passes = 2;
+ }
+ ];
+ }
+ '';
+ description = ''
+ Hyprlock configuration written in Nix. Entries with the same key should
+ be written as lists. Variables' and colors' names should be quoted. See
+ for more examples.
+ '';
+ };
+
+ extraConfig = lib.mkOption {
+ type = lib.types.lines;
+ default = "";
+ description = ''
+ Extra configuration lines to add to `~/.config/hypr/hyprlock.conf`.
+ '';
+ };
+
+ sourceFirst = lib.mkEnableOption ''
+ putting source entries at the top of the configuration
+ '' // {
+ default = true;
+ };
+
+ importantPrefixes = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [ "$" "monitor" "size" ]
+ ++ lib.optionals cfg.sourceFirst [ "source" ];
+ example = [ "$" "monitor" "size" ];
+ description = ''
+ List of prefix of attributes to source at the top of the config.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."hypr/hyprlock.conf" =
+ let shouldGenerate = cfg.extraConfig != "" || cfg.settings != { };
+ in mkIf shouldGenerate {
+ text = lib.optionalString (cfg.settings != { })
+ (lib.hm.generators.toHyprconf {
+ attrs = cfg.settings;
+ inherit (cfg) importantPrefixes;
+ }) + lib.optionalString (cfg.extraConfig != null) cfg.extraConfig;
+ };
+ };
+}
diff --git a/modules/programs/joplin-desktop.nix b/modules/programs/joplin-desktop.nix
index bbf9e400..418abff3 100644
--- a/modules/programs/joplin-desktop.nix
+++ b/modules/programs/joplin-desktop.nix
@@ -49,7 +49,7 @@ in {
sync = {
target = lib.mkOption {
type = lib.types.enum [
- null
+ "undefined"
"none"
"file-system"
"onedrive"
@@ -60,15 +60,23 @@ in {
"joplin-server"
"joplin-cloud"
];
- default = null;
+ default = "undefined";
example = "dropbox";
description = "What is the type of sync target.";
};
interval = lib.mkOption {
- type =
- lib.types.enum [ null "disabled" "5m" "10m" "30m" "1h" "12h" "1d" ];
- default = null;
+ type = lib.types.enum [
+ "undefined"
+ "disabled"
+ "5m"
+ "10m"
+ "30m"
+ "1h"
+ "12h"
+ "1d"
+ ];
+ default = "undefined";
example = "10m";
description = ''
Set the synchronisation interval.
@@ -90,6 +98,7 @@ in {
"editor" = cfg.general.editor;
"sync.target" = {
+ "undefined" = null;
"none" = 0;
"file-system" = 2;
"onedrive" = 3;
@@ -99,9 +108,10 @@ in {
"s3" = 8;
"joplin-server" = 9;
"joplin-cloud" = 10;
- }.${cfg.sync.target} or null;
+ }.${cfg.sync.target};
"sync.interval" = {
+ "undefined" = null;
"disabled" = 0;
"5m" = 300;
"10m" = 600;
@@ -109,10 +119,11 @@ in {
"1h" = 3600;
"12h" = 43200;
"1d" = 86400;
- }.${cfg.sync.interval} or null;
+ }.${cfg.sync.interval};
} // cfg.extraConfig));
in lib.hm.dag.entryAfter [ "linkGeneration" ] ''
# Ensure that settings.json exists.
+ mkdir -p ${builtins.dirOf configPath}
touch ${configPath}
# Config has to be written to temporary variable because jq cannot edit files in place.
config="$(jq -s '.[0] + .[1]' ${configPath} ${newConfig})"
diff --git a/modules/programs/jujutsu.nix b/modules/programs/jujutsu.nix
index 269c5ef9..a21c7108 100644
--- a/modules/programs/jujutsu.nix
+++ b/modules/programs/jujutsu.nix
@@ -22,19 +22,26 @@ in {
package = mkPackageOption pkgs "jujutsu" { };
+ ediff = mkOption {
+ type = types.bool;
+ default = config.programs.emacs.enable;
+ defaultText = literalExpression "config.programs.emacs.enable";
+ description = ''
+ Enable ediff as a merge tool
+ '';
+ };
+
settings = mkOption {
type = tomlFormat.type;
default = { };
- example = literalExpression ''
- {
- user = {
- name = "John Doe";
- email = "jdoe@example.org";
- };
- }
- '';
+ example = {
+ user = {
+ name = "John Doe";
+ email = "jdoe@example.org";
+ };
+ };
description = ''
- Options to add to the {file}`.jjconfig.toml` file. See
+ Options to add to the {file}`config.toml` file. See
for options.
'';
@@ -44,8 +51,19 @@ in {
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
- home.file.".jjconfig.toml" = mkIf (cfg.settings != { }) {
- source = tomlFormat.generate "jujutsu-config" cfg.settings;
+ xdg.configFile."jj/config.toml" = mkIf (cfg.settings != { }) {
+ source = tomlFormat.generate "jujutsu-config" (cfg.settings
+ // optionalAttrs (cfg.ediff) (let
+ emacsDiffScript = pkgs.writeShellScriptBin "emacs-ediff" ''
+ set -euxo pipefail
+ ${config.programs.emacs.package}/bin/emacsclient -c --eval "(ediff-merge-files-with-ancestor \"$1\" \"$2\" \"$3\" nil \"$4\")"
+ '';
+ in {
+ merge-tools.ediff = {
+ program = getExe emacsDiffScript;
+ merge-args = [ "$left" "$right" "$base" "$output" ];
+ };
+ }));
};
};
}
diff --git a/modules/programs/k9s.nix b/modules/programs/k9s.nix
index 900e129e..6ef53291 100644
--- a/modules/programs/k9s.nix
+++ b/modules/programs/k9s.nix
@@ -6,6 +6,7 @@ let
cfg = config.programs.k9s;
yamlFormat = pkgs.formats.yaml { };
+ inherit (pkgs.stdenv.hostPlatform) isDarwin;
in {
meta.maintainers = with maintainers; [
@@ -33,7 +34,8 @@ in {
type = yamlFormat.type;
default = { };
description = ''
- Configuration written to {file}`$XDG_CONFIG_HOME/k9s/config.yaml`. See
+ Configuration written to {file}`$XDG_CONFIG_HOME/k9s/config.yaml` (linux)
+ or {file}`Library/Application Support/k9s/config.yaml` (darwin), See
for supported values.
'';
example = literalExpression ''
@@ -47,7 +49,8 @@ in {
type = types.attrsOf yamlFormat.type;
default = { };
description = ''
- Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/`. See
+ Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/` (linux)
+ or {file}`Library/Application Support/k9s/skins/` (darwin). See
for supported values.
'';
example = literalExpression ''
@@ -65,7 +68,8 @@ in {
type = yamlFormat.type;
default = { };
description = ''
- Aliases written to {file}`$XDG_CONFIG_HOME/k9s/aliases.yaml`. See
+ Aliases written to {file}`$XDG_CONFIG_HOME/k9s/aliases.yaml` (linux)
+ or {file}`Library/Application Support/k9s/aliases.yaml` (darwin). See
for supported values.
'';
example = literalExpression ''
@@ -80,7 +84,8 @@ in {
type = yamlFormat.type;
default = { };
description = ''
- Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkey.yaml`. See
+ Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkeys.yaml` (linux)
+ or {file}`Library/Application Support/k9s/hotkeys.yaml` (darwin). See
for supported values.
'';
example = literalExpression ''
@@ -101,7 +106,8 @@ in {
type = yamlFormat.type;
default = { };
description = ''
- Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugin.yaml`. See
+ Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugins.yaml (linux)`
+ or {file}`Library/Application Support/k9s/plugins.yaml` (darwin). See
for supported values.
'';
example = literalExpression ''
@@ -132,7 +138,9 @@ in {
type = yamlFormat.type;
default = { };
description = ''
- Resource column views written to {file}`$XDG_CONFIG_HOME/k9s/views.yaml`.
+ Resource column views written to
+ {file}`$XDG_CONFIG_HOME/k9s/views.yaml (linux)`
+ or {file}`Library/Application Support/k9s/views.yaml` (darwin).
See for supported values.
'';
example = literalExpression ''
@@ -162,13 +170,19 @@ in {
{ };
skinFiles = mapAttrs' (name: value:
- nameValuePair "k9s/skins/${name}.yaml" {
- source = yamlFormat.generate "k9s-skin-${name}.yaml" value;
- }) cfg.skins;
+ nameValuePair (if !(isDarwin && !config.xdg.enable) then
+ "k9s/skins/${name}.yaml"
+ else
+ "Library/Application Support/k9s/skins/${name}.yaml") {
+ source = yamlFormat.generate "k9s-skin-${name}.yaml" value;
+ }) cfg.skins;
+
+ enableXdgConfig = !isDarwin || config.xdg.enable;
+
in mkIf cfg.enable {
home.packages = [ cfg.package ];
- xdg.configFile = {
+ xdg.configFile = mkIf enableXdgConfig ({
"k9s/config.yaml" = mkIf (cfg.settings != { }) {
source = yamlFormat.generate "k9s-config"
(lib.recursiveUpdate skinSetting cfg.settings);
@@ -178,17 +192,44 @@ in {
source = yamlFormat.generate "k9s-aliases" cfg.aliases;
};
- "k9s/hotkey.yaml" = mkIf (cfg.hotkey != { }) {
+ "k9s/hotkeys.yaml" = mkIf (cfg.hotkey != { }) {
source = yamlFormat.generate "k9s-hotkey" cfg.hotkey;
};
- "k9s/plugin.yaml" = mkIf (cfg.plugin != { }) {
+ "k9s/plugins.yaml" = mkIf (cfg.plugin != { }) {
source = yamlFormat.generate "k9s-plugin" cfg.plugin;
};
"k9s/views.yaml" = mkIf (cfg.views != { }) {
source = yamlFormat.generate "k9s-views" cfg.views;
};
- } // skinFiles;
+ } // skinFiles);
+
+ home.file = mkIf (!enableXdgConfig) ({
+ "Library/Application Support/k9s/config.yaml" =
+ mkIf (cfg.settings != { }) {
+ source = yamlFormat.generate "k9s-config"
+ (lib.recursiveUpdate skinSetting cfg.settings);
+ };
+
+ "Library/Application Support/k9s/aliases.yaml" =
+ mkIf (cfg.aliases != { }) {
+ source = yamlFormat.generate "k9s-aliases" cfg.aliases;
+ };
+
+ "Library/Application Support/k9s/hotkeys.yaml" =
+ mkIf (cfg.hotkey != { }) {
+ source = yamlFormat.generate "k9s-hotkey" cfg.hotkey;
+ };
+
+ "Library/Application Support/k9s/plugins.yaml" =
+ mkIf (cfg.plugin != { }) {
+ source = yamlFormat.generate "k9s-plugin" cfg.plugin;
+ };
+
+ "Library/Application Support/k9s/views.yaml" = mkIf (cfg.views != { }) {
+ source = yamlFormat.generate "k9s-views" cfg.views;
+ };
+ } // skinFiles);
};
}
diff --git a/modules/programs/mpv.nix b/modules/programs/mpv.nix
index eb9c9c4a..26cad111 100644
--- a/modules/programs/mpv.nix
+++ b/modules/programs/mpv.nix
@@ -176,6 +176,20 @@ in {
}
'';
};
+
+ extraInput = mkOption {
+ description = ''
+ Additional lines that are appended to {file}`$XDG_CONFIG_HOME/mpv/input.conf`.
+ See {manpage}`mpv(1)` for the full list of options.
+ '';
+ type = with types; lines;
+ default = "";
+ example = ''
+ esc quit #! Quit
+ # script-binding uosc/video #! Video tracks
+ # additional comments
+ '';
+ };
};
};
@@ -199,8 +213,11 @@ in {
${optionalString (cfg.profiles != { }) (renderProfiles cfg.profiles)}
'';
})
- (mkIf (cfg.bindings != { }) {
- xdg.configFile."mpv/input.conf".text = renderBindings cfg.bindings;
+ (mkIf (cfg.bindings != { } || cfg.extraInput != "") {
+ xdg.configFile."mpv/input.conf".text = mkMerge [
+ (mkIf (cfg.bindings != { }) (renderBindings cfg.bindings))
+ (mkIf (cfg.extraInput != "") cfg.extraInput)
+ ];
})
{
xdg.configFile = mapAttrs' (name: value:
diff --git a/modules/programs/neomutt-accounts.nix b/modules/programs/neomutt-accounts.nix
index a7ed7ec6..bdeda863 100644
--- a/modules/programs/neomutt-accounts.nix
+++ b/modules/programs/neomutt-accounts.nix
@@ -76,6 +76,12 @@ in {
'';
};
+ showDefaultMailbox = mkOption {
+ type = types.bool;
+ default = true;
+ description = "Show the default mailbox (INBOX)";
+ };
+
mailboxName = mkOption {
type = types.nullOr types.str;
default = null;
diff --git a/modules/programs/neomutt.nix b/modules/programs/neomutt.nix
index d338a580..588b801e 100644
--- a/modules/programs/neomutt.nix
+++ b/modules/programs/neomutt.nix
@@ -235,7 +235,8 @@ let
account.neomutt.extraMailboxes;
in with account; ''
# register account ${name}
- ${mailboxes} "${mailroot}/${folders.inbox}"
+ ${optionalString account.neomutt.showDefaultMailbox
+ ''${mailboxes} "${mailroot}/${folders.inbox}"''}
${extraMailboxes}
${hookName} ${mailroot}/ " \
source ${accountFilename account} "
@@ -402,6 +403,11 @@ in {
default = true;
};
+ sourcePrimaryAccount =
+ mkEnableOption "source the primary account by default" // {
+ default = true;
+ };
+
unmailboxes = mkOption {
type = types.bool;
default = false;
@@ -451,15 +457,15 @@ in {
set delete = yes
+ ${optionalString cfg.vimKeys
+ "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"}
+
# Binds
${bindSection}
# Macros
${macroSection}
- ${optionalString cfg.vimKeys
- "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"}
-
# Register accounts
${
optionalString (accountCommandNeeded) ''
@@ -467,8 +473,9 @@ in {
''
}${concatMapStringsSep "\n" registerAccount neomuttAccounts}
- # Source primary account
- source ${accountFilename primary}
+ ${optionalString cfg.sourcePrimaryAccount ''
+ # Source primary account
+ source ${accountFilename primary}''}
# Extra configuration
${optionsStr cfg.settings}
diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix
index a3b87ea2..fad05c1c 100644
--- a/modules/programs/neovim.nix
+++ b/modules/programs/neovim.nix
@@ -198,6 +198,28 @@ in {
'';
};
+ extraWrapperArgs = mkOption {
+ type = with types; listOf str;
+ default = [ ];
+ example = literalExpression ''
+ [
+ "--suffix"
+ "LIBRARY_PATH"
+ ":"
+ "''${lib.makeLibraryPath [ pkgs.stdenv.cc.cc pkgs.zlib ]}"
+ "--suffix"
+ "PKG_CONFIG_PATH"
+ ":"
+ "''${lib.makeSearchPathOutput "dev" "lib/pkgconfig" [ pkgs.stdenv.cc.cc pkgs.zlib ]}"
+ ]
+ '';
+ description = ''
+ Extra arguments to be passed to the neovim wrapper.
+ This option sets environment variables required for building and running binaries
+ with external package managers like mason.nvim.
+ '';
+ };
+
generatedConfigViml = mkOption {
type = types.lines;
visible = true;
@@ -415,7 +437,8 @@ in {
programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package
(neovimConfig // {
- wrapperArgs = (lib.escapeShellArgs neovimConfig.wrapperArgs) + " "
+ wrapperArgs = (lib.escapeShellArgs
+ (neovimConfig.wrapperArgs ++ cfg.extraWrapperArgs)) + " "
+ extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " "
+ extraMakeWrapperLuaArgs;
wrapRc = false;
diff --git a/modules/programs/nushell.nix b/modules/programs/nushell.nix
index 51419971..2ebd9554 100644
--- a/modules/programs/nushell.nix
+++ b/modules/programs/nushell.nix
@@ -6,7 +6,7 @@ let
cfg = config.programs.nushell;
- configDir = if pkgs.stdenv.isDarwin then
+ configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"Library/Application Support/nushell"
else
"${config.xdg.configHome}/nushell";
diff --git a/modules/programs/poetry.nix b/modules/programs/poetry.nix
new file mode 100644
index 00000000..d297f0c7
--- /dev/null
+++ b/modules/programs/poetry.nix
@@ -0,0 +1,55 @@
+{ pkgs, config, lib, ... }:
+
+let
+
+ inherit (lib) mkEnableOption mkPackageOption mkOption literalExpression;
+
+ tomlFormat = pkgs.formats.toml { };
+
+ configDir = if pkgs.stdenv.isDarwin then
+ "Library/Application Support"
+ else
+ config.xdg.configHome;
+
+ cfg = config.programs.poetry;
+
+in {
+ meta.maintainers = with lib.maintainers; [ mirkolenz ];
+
+ options.programs.poetry = {
+ enable = mkEnableOption "poetry";
+
+ package = mkPackageOption pkgs "poetry" {
+ example = "pkgs.poetry.withPlugins (ps: with ps; [ poetry-plugin-up ])";
+ extraDescription = "May be used to install custom poetry plugins.";
+ };
+
+ settings = mkOption {
+ type = tomlFormat.type;
+ default = { };
+ example = literalExpression ''
+ {
+ virtualenvs.create = true;
+ virtualenvs.in-project = true;
+ }
+ '';
+ description = ''
+ Configuration written to
+ {file}`$XDG_CONFIG_HOME/pypoetry/config.toml` on Linux or
+ {file}`$HOME/Library/Application Support/pypoetry/config.toml` on Darwin.
+ See
+
+ for more information.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ home.file."${configDir}/pypoetry/config.toml" =
+ lib.mkIf (cfg.settings != { }) {
+ source = tomlFormat.generate "poetry-config" cfg.settings;
+ };
+ };
+}
diff --git a/modules/programs/qutebrowser.nix b/modules/programs/qutebrowser.nix
index 9c3ad6a8..04e5423d 100644
--- a/modules/programs/qutebrowser.nix
+++ b/modules/programs/qutebrowser.nix
@@ -84,7 +84,7 @@ in {
{
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
aw = "https://wiki.archlinux.org/?search={}";
- nw = "https://nixos.wiki/index.php?search={}";
+ nw = "https://wiki.nixos.org/index.php?search={}";
g = "https://www.google.com/search?hl=en&q={}";
}
'';
diff --git a/modules/programs/rio.nix b/modules/programs/rio.nix
index 58c4720d..5a5ce6fa 100644
--- a/modules/programs/rio.nix
+++ b/modules/programs/rio.nix
@@ -6,7 +6,7 @@ let
in {
options.programs.rio = {
enable = lib.mkEnableOption null // {
- description = lib.mdDoc ''
+ description = ''
Enable Rio, a terminal built to run everywhere, as a native desktop applications by
Rust/WebGPU or even in the browsers powered by WebAssembly/WebGPU.
'';
diff --git a/modules/programs/spotify-player.nix b/modules/programs/spotify-player.nix
new file mode 100644
index 00000000..83eefe12
--- /dev/null
+++ b/modules/programs/spotify-player.nix
@@ -0,0 +1,154 @@
+{ config, lib, pkgs, ... }:
+
+let
+ inherit (lib)
+ mkEnableOption mkPackageOption mkOption types literalExpression mkIf;
+
+ cfg = config.programs.spotify-player;
+ tomlFormat = pkgs.formats.toml { };
+
+in {
+ meta.maintainers = with lib.hm.maintainers; [ diniamo ];
+
+ options.programs.spotify-player = {
+ enable = mkEnableOption "spotify-player";
+
+ package = mkPackageOption pkgs "spotify-player" { };
+
+ settings = mkOption {
+ type = tomlFormat.type;
+ default = { };
+ example = literalExpression ''
+ {
+ theme = "default";
+ playback_window_position = "Top";
+ copy_command = {
+ command = "wl-copy";
+ args = [];
+ };
+ device = {
+ audio_cache = false;
+ normalization = false;
+ };
+ }
+ '';
+ description = ''
+ Configuration written to
+ {file}`$XDG_CONFIG_HOME/spotify-player/app.toml`.
+
+ See
+
+ for the full list of options.
+ '';
+ };
+
+ themes = mkOption {
+ type = types.listOf tomlFormat.type;
+ default = [ ];
+ example = literalExpression ''
+ [
+ {
+ name = "default2";
+ palette = {
+ black = "black";
+ red = "red";
+ green = "green";
+ yellow = "yellow";
+ blue = "blue";
+ magenta = "magenta";
+ cyan = "cyan";
+ white = "white";
+ bright_black = "bright_black";
+ bright_red = "bright_red";
+ bright_green = "bright_green";
+ bright_yellow = "bright_yellow";
+ bright_blue = "bright_blue";
+ bright_magenta = "bright_magenta";
+ bright_cyan = "bright_cyan";
+ bright_white = "bright_white";
+ };
+ component_style = {
+ block_title = { fg = "Magenta"; };
+ border = {};
+ playback_track = { fg = "Cyan"; modifiers = ["Bold"]; };
+ playback_artists = { fg = "Cyan"; modifiers = ["Bold"]; };
+ playback_album = { fg = "Yellow"; };
+ playback_metadata = { fg = "BrightBlack"; };
+ playback_progress_bar = { bg = "BrightBlack"; fg = "Green"; };
+ current_playing = { fg = "Green"; modifiers = ["Bold"]; };
+ page_desc = { fg = "Cyan"; modifiers = ["Bold"]; };
+ table_header = { fg = "Blue"; };
+ selection = { modifiers = ["Bold" "Reversed"]; };
+ };
+ }
+ ]
+ '';
+ description = ''
+ Configuration written to the `themes` field of
+ {file}`$XDG_CONFIG_HOME/spotify-player/theme.toml`.
+
+ See
+
+ for the full list of options.
+ '';
+ };
+
+ keymaps = mkOption {
+ type = types.listOf tomlFormat.type;
+ default = [ ];
+ example = literalExpression ''
+ [
+ {
+ command = "NextTrack";
+ key_sequence = "g n";
+ }
+ {
+ command = "PreviousTrack";
+ key_sequence = "g p";
+ }
+ {
+ command = "Search";
+ key_sequence = "C-c C-x /";
+ }
+ {
+ command = "ResumePause";
+ key_sequence = "M-enter";
+ }
+ {
+ command = "None";
+ key_sequence = "q";
+ }
+ ]
+ '';
+ description = ''
+ Configuration written to the `keymaps` field of
+ {file}`$XDG_CONFIG_HOME/spotify-player/keymap.toml`.
+
+ See
+
+ for the full list of options.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ xdg.configFile = {
+ "spotify-player/app.toml" = mkIf (cfg.settings != { }) {
+ source = tomlFormat.generate "spotify-player-app" cfg.settings;
+ };
+
+ "spotify-player/theme.toml" = mkIf (cfg.themes != [ ]) {
+ source =
+ tomlFormat.generate "spotify-player-theme" { inherit (cfg) themes; };
+ };
+
+ "spotify-player/keymap.toml" = mkIf (cfg.keymaps != [ ]) {
+ source = tomlFormat.generate "spotify-player-keymap" {
+ inherit (cfg) keymaps;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/programs/tealdeer.nix b/modules/programs/tealdeer.nix
index 55b6c22b..d9318d10 100644
--- a/modules/programs/tealdeer.nix
+++ b/modules/programs/tealdeer.nix
@@ -50,7 +50,7 @@ in {
The activation script should be fast and idempotent, so the option was removed.
Please use
- `programs.teadleer.settings.updates.auto_update = true`
+ `programs.tealdeer.settings.updates.auto_update = true`
instead, to make sure tealdeer's cache is updated periodically.
'')
diff --git a/modules/programs/thefuck.nix b/modules/programs/thefuck.nix
index 2cad4c33..ab56ea01 100644
--- a/modules/programs/thefuck.nix
+++ b/modules/programs/thefuck.nix
@@ -32,6 +32,14 @@ with lib;
Whether to enable Zsh integration.
'';
};
+
+ enableNushellIntegration = mkOption {
+ default = true;
+ type = types.bool;
+ description = ''
+ Whether to enable Nushell integration.
+ '';
+ };
};
config = let
@@ -66,5 +74,11 @@ with lib;
};
programs.zsh.initExtra = mkIf cfg.enableZshIntegration shEvalCmd;
+
+ programs.nushell = mkIf cfg.enableNushellIntegration {
+ extraConfig = ''
+ alias fuck = ${cfg.package}/bin/thefuck $"(history | last 1 | get command | get 0)"
+ '';
+ };
};
}
diff --git a/modules/programs/tofi.nix b/modules/programs/tofi.nix
new file mode 100644
index 00000000..acc1a994
--- /dev/null
+++ b/modules/programs/tofi.nix
@@ -0,0 +1,63 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.tofi;
+
+in {
+ meta.maintainers = [ hm.maintainers.henrisota ];
+
+ options.programs.tofi = {
+ enable = mkEnableOption "Tofi, a tiny dynamic menu for Wayland";
+
+ package = mkPackageOption pkgs "tofi" { };
+
+ settings = mkOption {
+ type = with types;
+ let primitive = either (either str int) bool;
+ in attrsOf primitive;
+ default = { };
+ example = literalExpression ''
+ {
+ background-color = "#000000";
+ border-width = 0;
+ font = "monospace";
+ height = "100%";
+ num-results = 5;
+ outline-width = 0;
+ padding-left = "35%";
+ padding-top = "35%";
+ result-spacing = 25;
+ width = "100%";
+ }
+ '';
+ description = ''
+ Settings to be written to the Tofi configuration file.
+
+ See
+ for the full list of options.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ assertions =
+ [ (hm.assertions.assertPlatform "programs.tofi" pkgs platforms.linux) ];
+
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."tofi/config" = mkIf (cfg.settings != { }) {
+ text = let
+ renderedSettings = generators.toINIWithGlobalSection { } {
+ globalSection = cfg.settings;
+ };
+ in removeSuffix "\n\n" ''
+ # Generated by Home Manager.
+
+ ${renderedSettings}
+ '';
+ };
+ };
+}
diff --git a/modules/programs/vdirsyncer.nix b/modules/programs/vdirsyncer.nix
index 562d7b4b..2e013af0 100644
--- a/modules/programs/vdirsyncer.nix
+++ b/modules/programs/vdirsyncer.nix
@@ -26,9 +26,11 @@ let
filterAttrs (_: v: v != null)
((getAttrs [ "type" "fileExt" "encoding" ] a.local) // {
path = a.local.path;
- postHook = optionalString (a.vdirsyncer.postHook != null)
+ postHook = if a.vdirsyncer.postHook != null then
(pkgs.writeShellScriptBin "post-hook" a.vdirsyncer.postHook
- + "/bin/post-hook");
+ + "/bin/post-hook")
+ else
+ null;
});
remoteStorage = a:
diff --git a/modules/programs/yambar.nix b/modules/programs/yambar.nix
new file mode 100644
index 00000000..f4e0a434
--- /dev/null
+++ b/modules/programs/yambar.nix
@@ -0,0 +1,55 @@
+{ config, lib, pkgs, ... }:
+
+let
+
+ cfg = config.programs.yambar;
+ yamlFormat = pkgs.formats.yaml { };
+
+in {
+ meta.maintainers = [ lib.maintainers.carpinchomug ];
+
+ options.programs.yambar = {
+ enable = lib.mkEnableOption "Yambar";
+
+ package = lib.mkPackageOption pkgs "yambar" { };
+
+ settings = lib.mkOption {
+ type = yamlFormat.type;
+ default = { };
+ example = lib.literalExpression ''
+ bar = {
+ location = "top";
+ height = 26;
+ background = "00000066";
+
+ right = [
+ {
+ clock.content = [
+ {
+ string.text = "{time}";
+ }
+ ];
+ }
+ ];
+ };
+ '';
+ description = ''
+ Configuration written to {file}`$XDG_CONFIG_HOME/yambar/config.yml`.
+ See {manpage}`yambar(5)` for options.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ assertions = [
+ (lib.hm.assertions.assertPlatform "programs.yambar" pkgs
+ lib.platforms.linux)
+ ];
+
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."yambar/config.yml" = lib.mkIf (cfg.settings != { }) {
+ source = yamlFormat.generate "config.yml" cfg.settings;
+ };
+ };
+}
diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix
index c4520e7a..3ec73f30 100644
--- a/modules/programs/zsh.nix
+++ b/modules/programs/zsh.nix
@@ -612,7 +612,7 @@ in
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
'')
(optionalString (cfg.autosuggestion.enable && cfg.autosuggestion.highlight != null) ''
- AUTOSUGGESTION_HIGHLIGHT_COLOR="${cfg.autosuggestion.highlight}"
+ ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.autosuggestion.highlight}"
'')
(optionalString cfg.oh-my-zsh.enable ''
diff --git a/modules/services/amberol.nix b/modules/services/amberol.nix
new file mode 100644
index 00000000..a6301244
--- /dev/null
+++ b/modules/services/amberol.nix
@@ -0,0 +1,70 @@
+{ config, lib, pkgs, ... }:
+
+let
+
+ cfg = config.services.amberol;
+
+in {
+ meta.maintainers = with lib.maintainers; [ surfaceflinger ];
+
+ options.services.amberol = {
+ enable = lib.mkEnableOption "" // {
+ description = ''
+ Whether to enable Amberol music player as a daemon.
+
+ Note, it is necessary to add
+ ```nix
+ programs.dconf.enable = true;
+ ```
+ to your system configuration for the daemon to work correctly.
+ '';
+ };
+
+ package = lib.mkPackageOption pkgs "amberol" { };
+
+ enableRecoloring = lib.mkOption {
+ type = lib.types.bool;
+ default = true;
+ description = "UI recoloring using the album art.";
+ };
+
+ replaygain = lib.mkOption {
+ type = lib.types.enum [ "album" "track" "off" ];
+ default = "track";
+ description = "ReplayGain mode.";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ assertions = [
+ (lib.hm.assertions.assertPlatform "services.amberol" pkgs
+ lib.platforms.linux)
+ ];
+
+ # Running amberol will just attach itself to gapplication service.
+ home.packages = [ cfg.package ];
+
+ dconf.settings."io/bassi/Amberol" = {
+ background-play = true;
+ enable-recoloring = cfg.enableRecoloring;
+ replay-gain = cfg.replaygain;
+ };
+
+ systemd.user.services.amberol = {
+ Unit = {
+ Description = "Amberol music player daemon";
+ Requires = [ "dbus.service" ];
+ After = [ "graphical-session-pre.target" ];
+ PartOf = [ "graphical-session.target" ];
+ };
+
+ Install.WantedBy = [ "graphical-session.target" ];
+
+ Service = {
+ ExecStart = "${lib.getExe cfg.package} --gapplication-service";
+ Restart = "on-failure";
+ RestartSec = 5;
+ };
+ };
+ };
+}
diff --git a/modules/services/cliphist.nix b/modules/services/cliphist.nix
index 6ba733fa..3599557f 100644
--- a/modules/services/cliphist.nix
+++ b/modules/services/cliphist.nix
@@ -9,6 +9,22 @@ in {
package = lib.mkPackageOption pkgs "cliphist" { };
+ allowImages = lib.mkOption {
+ type = lib.types.bool;
+ default = true;
+ description = ''
+ Store images in clipboard history.
+ '';
+ };
+
+ extraOptions = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [ "-max-dedupe-search" "10" "-max-items" "500" ];
+ description = ''
+ Flags to append to the cliphist command.
+ '';
+ };
+
systemdTarget = lib.mkOption {
type = lib.types.str;
default = "graphical-session.target";
@@ -23,7 +39,8 @@ in {
};
};
- config = lib.mkIf cfg.enable {
+ config = let extraOptionsStr = lib.escapeShellArgs cfg.extraOptions;
+ in lib.mkIf cfg.enable {
assertions = [
(lib.hm.assertions.assertPlatform "services.cliphist" pkgs
lib.platforms.linux)
@@ -40,7 +57,23 @@ in {
Service = {
Type = "simple";
ExecStart =
- "${pkgs.wl-clipboard}/bin/wl-paste --watch ${cfg.package}/bin/cliphist store";
+ "${pkgs.wl-clipboard}/bin/wl-paste --watch ${cfg.package}/bin/cliphist ${extraOptionsStr} store";
+ Restart = "on-failure";
+ };
+
+ Install = { WantedBy = [ cfg.systemdTarget ]; };
+ };
+
+ systemd.user.services.cliphist-images = lib.mkIf cfg.allowImages {
+ Unit = {
+ Description = "Clipboard management daemon - images";
+ PartOf = [ "graphical-session.target" ];
+ };
+
+ Service = {
+ Type = "simple";
+ ExecStart =
+ "${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${cfg.package}/bin/cliphist ${extraOptionsStr} store";
Restart = "on-failure";
};
diff --git a/modules/services/conky.nix b/modules/services/conky.nix
new file mode 100644
index 00000000..bf7eeea8
--- /dev/null
+++ b/modules/services/conky.nix
@@ -0,0 +1,53 @@
+{ config, lib, pkgs, ... }:
+
+let
+
+ cfg = config.services.conky;
+
+in with lib; {
+ meta.maintainers = [ hm.maintainers.kaleo ];
+
+ options = {
+ services.conky = {
+ enable = mkEnableOption "Conky, a light-weight system monitor";
+
+ package = mkPackageOption pkgs "conky" { };
+
+ extraConfig = lib.mkOption {
+ type = types.lines;
+ default = "";
+ description = ''
+ Configuration used by the Conky daemon. Check
+ for
+ options. If not set, the default configuration, as described by
+ {command}`conky --print-config`, will be used.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ assertions =
+ [ (hm.assertions.assertPlatform "services.conky" pkgs platforms.linux) ];
+
+ home.packages = [ cfg.package ];
+
+ systemd.user.services.conky = {
+ Unit = {
+ Description = "Conky - Lightweight system monitor";
+ After = [ "graphical-session.target" ];
+ };
+
+ Service = {
+ Restart = "always";
+ RestartSec = "3";
+ ExecStart = toString ([ "${pkgs.conky}/bin/conky" ]
+ ++ optional (cfg.extraConfig != "")
+ "--config ${pkgs.writeText "conky.conf" cfg.extraConfig}");
+ };
+
+ Install.WantedBy = [ "graphical-session.target" ];
+ };
+ };
+}
+
diff --git a/modules/services/espanso.nix b/modules/services/espanso.nix
index 404dfecd..f6e27e79 100644
--- a/modules/services/espanso.nix
+++ b/modules/services/espanso.nix
@@ -1,11 +1,9 @@
{ pkgs, config, lib, ... }:
let
inherit (lib)
- mkOption mkEnableOption mkIf maintainers literalExpression types platforms
+ mkOption mkEnableOption mkIf maintainers literalExpression types
mkRemovedOptionModule versionAtLeast;
- inherit (lib.hm.assertions) assertPlatform;
-
cfg = config.services.espanso;
espansoVersion = cfg.package.version;
@@ -19,6 +17,7 @@ in {
maintainers.lucasew
maintainers.bobvanderlinden
lib.hm.maintainers.liyangau
+ maintainers.n8henrie
];
options = {
services.espanso = {
@@ -99,15 +98,12 @@ in {
};
config = mkIf cfg.enable {
- assertions = [
- (assertPlatform "services.espanso" pkgs platforms.linux)
- {
- assertion = versionAtLeast espansoVersion "2";
- message = ''
- The services.espanso module only supports Espanso version 2 or later.
- '';
- }
- ];
+ assertions = [{
+ assertion = versionAtLeast espansoVersion "2";
+ message = ''
+ The services.espanso module only supports Espanso version 2 or later.
+ '';
+ }];
home.packages = [ cfg.package ];
@@ -131,5 +127,19 @@ in {
};
Install = { WantedBy = [ "default.target" ]; };
};
+
+ launchd.agents.espanso = {
+ enable = true;
+ config = {
+ ProgramArguments = [ "${cfg.package}/bin/espanso" "launcher" ];
+ EnvironmentVariables.PATH =
+ "${cfg.package}/bin:/usr/bin:/bin:/usr/sbin:/sbin";
+ KeepAlive = {
+ Crashed = true;
+ SuccessfulExit = false;
+ };
+ RunAtLoad = true;
+ };
+ };
};
}
diff --git a/modules/services/hypridle.nix b/modules/services/hypridle.nix
new file mode 100644
index 00000000..0e28c543
--- /dev/null
+++ b/modules/services/hypridle.nix
@@ -0,0 +1,95 @@
+{ config, lib, pkgs, ... }:
+with lib;
+let
+
+ cfg = config.services.hypridle;
+in {
+ meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ];
+
+ options.services.hypridle = {
+ enable = mkEnableOption "Hypridle, Hyprland's idle daemon";
+
+ package = mkPackageOption pkgs "hypridle" { };
+
+ settings = lib.mkOption {
+ type = with lib.types;
+ let
+ valueType = nullOr (oneOf [
+ bool
+ int
+ float
+ str
+ path
+ (attrsOf valueType)
+ (listOf valueType)
+ ]) // {
+ description = "Hypridle configuration value";
+ };
+ in valueType;
+ default = { };
+ description = ''
+ Hypridle configuration written in Nix. Entries with the same key
+ should be written as lists. Variables' and colors' names should be
+ quoted. See for more examples.
+ '';
+ example = lib.literalExpression ''
+ {
+ general = {
+ after_sleep_cmd = "hyprctl dispatch dpms on";
+ ignore_dbus_inhibit = false;
+ lock_cmd = "hyprlock";
+ };
+
+ listener = [
+ {
+ timeout = 900;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 1200;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ }
+ '';
+ };
+
+ importantPrefixes = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [ "$" ];
+ example = [ "$" ];
+ description = ''
+ List of prefix of attributes to source at the top of the config.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ xdg.configFile."hypr/hypridle.conf" = mkIf (cfg.settings != { }) {
+ text = lib.hm.generators.toHyprconf {
+ attrs = cfg.settings;
+ inherit (cfg) importantPrefixes;
+ };
+ };
+
+ systemd.user.services.hypridle = {
+ Install = { WantedBy = [ "graphical-session.target" ]; };
+
+ Unit = {
+ ConditionEnvironment = "WAYLAND_DISPLAY";
+ Description = "hypridle";
+ After = [ "graphical-session-pre.target" ];
+ PartOf = [ "graphical-session.target" ];
+ X-Restart-Triggers =
+ [ "${config.xdg.configFile."hypr/hypridle.conf".source}" ];
+ };
+
+ Service = {
+ ExecStart = "${getExe cfg.package}";
+ Restart = "always";
+ RestartSec = "10";
+ };
+ };
+ };
+}
diff --git a/modules/services/hyprpaper.nix b/modules/services/hyprpaper.nix
new file mode 100644
index 00000000..ede09b25
--- /dev/null
+++ b/modules/services/hyprpaper.nix
@@ -0,0 +1,89 @@
+{ config, lib, pkgs, ... }:
+with lib;
+let
+
+ cfg = config.services.hyprpaper;
+in {
+ meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ];
+
+ options.services.hyprpaper = {
+ enable = mkEnableOption "Hyprpaper, Hyprland's wallpaper daemon";
+
+ package = mkPackageOption pkgs "hyprpaper" { };
+
+ settings = lib.mkOption {
+ type = with lib.types;
+ let
+ valueType = nullOr (oneOf [
+ bool
+ int
+ float
+ str
+ path
+ (attrsOf valueType)
+ (listOf valueType)
+ ]) // {
+ description = "Hyprpaper configuration value";
+ };
+ in valueType;
+ default = { };
+ description = ''
+ hyprpaper configuration written in Nix. Entries with the same key
+ should be written as lists. Variables' and colors' names should be
+ quoted. See for more examples.
+ '';
+ example = lib.literalExpression ''
+ {
+ ipc = "on";
+ splash = false;
+ splash_offset = 2.0;
+
+ preload =
+ [ "/share/wallpapers/buttons.png" "/share/wallpapers/cat_pacman.png" ];
+
+ wallpaper = [
+ "DP-3,/share/wallpapers/buttons.png"
+ "DP-1,/share/wallpapers/cat_pacman.png"
+ ];
+ }
+ '';
+ };
+
+ importantPrefixes = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [ "$" ];
+ example = [ "$" ];
+ description = ''
+ List of prefix of attributes to source at the top of the config.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ xdg.configFile."hypr/hyprpaper.conf" = mkIf (cfg.settings != { }) {
+ text = lib.hm.generators.toHyprconf {
+ attrs = cfg.settings;
+ inherit (cfg) importantPrefixes;
+ };
+ };
+
+ systemd.user.services.hyprpaper = {
+ Install = { WantedBy = [ "graphical-session.target" ]; };
+
+ Unit = {
+ ConditionEnvironment = "WAYLAND_DISPLAY";
+ Description = "hyprpaper";
+ After = [ "graphical-session-pre.target" ];
+ PartOf = [ "graphical-session.target" ];
+ X-Restart-Triggers =
+ [ "${config.xdg.configFile."hypr/hyprpaper.conf".source}" ];
+ };
+
+ Service = {
+ ExecStart = "${getExe cfg.package}";
+ Restart = "always";
+ RestartSec = "10";
+ };
+ };
+ };
+}
diff --git a/modules/services/kanshi.nix b/modules/services/kanshi.nix
index 02fe8e3c..1e695030 100644
--- a/modules/services/kanshi.nix
+++ b/modules/services/kanshi.nix
@@ -6,6 +6,48 @@ let
cfg = config.services.kanshi;
+ directivesTag = types.attrTag {
+ profile = mkOption {
+ type = profileModule;
+ description = ''
+ profile attribute set.
+ '';
+ };
+ output = mkOption {
+ type = outputModule;
+ description = ''
+ output attribute set.
+ '';
+ };
+ include = mkOption {
+ type = types.str;
+ description = ''
+ Include as another file from _path_.
+ Expands shell syntax (see *wordexp*(3) for details).
+ '';
+ };
+ };
+
+ tagToStr = x:
+ if x ? profile then
+ profileStr x.profile
+ else if x ? output then
+ outputStr x.output
+ else if x ? include then
+ ''include "${x.include}"''
+ else
+ throw "Unknown tags ${attrNames x}";
+
+ directivesStr = ''
+ ${concatStringsSep "\n" (map tagToStr cfg.settings)}
+ '';
+
+ oldDirectivesStr = ''
+ ${concatStringsSep "\n"
+ (mapAttrsToList (n: v: profileStr (v // { name = n; })) cfg.profiles)}
+ ${cfg.extraConfig}
+ '';
+
outputModule = types.submodule {
options = {
@@ -113,6 +155,14 @@ let
'';
};
+ name = mkOption {
+ type = types.str;
+ default = "";
+ description = ''
+ Profile name
+ '';
+ };
+
exec = mkOption {
type = with types; coercedTo str singleton (listOf str);
default = [ ];
@@ -127,15 +177,14 @@ let
};
};
- profileStr = name:
- { outputs, exec, ... }: ''
- profile ${name} {
- ${
- concatStringsSep "\n "
- (map outputStr outputs ++ map (cmd: "exec ${cmd}") exec)
- }
+ profileStr = { outputs, exec, ... }@args: ''
+ profile ${args.name or ""} {
+ ${
+ concatStringsSep "\n "
+ (map outputStr outputs ++ map (cmd: "exec ${cmd}") exec)
}
- '';
+ }
+ '';
in {
meta.maintainers = [ hm.maintainers.nurelin ];
@@ -157,7 +206,7 @@ in {
type = types.attrsOf profileModule;
default = { };
description = ''
- List of profiles.
+ Attribute set of profiles.
'';
example = literalExpression ''
undocked = {
@@ -190,6 +239,39 @@ in {
'';
};
+ settings = mkOption {
+ type = types.listOf directivesTag;
+ default = [ ];
+ description = ''
+ Ordered list of directives.
+ See kanshi(5) for informations.
+ '';
+ example = literalExpression ''
+ { include = "path/to/included/files"; }
+ { output.criteria = "eDP-1";
+ output.scale = 2;
+ }
+ { profile.name = "undocked";
+ profile.outputs = [
+ {
+ criteria = "eDP-1";
+ }
+ ];
+ }
+ { profile.name = "docked";
+ profile.outputs = [
+ {
+ criteria = "eDP-1";
+ }
+ {
+ criteria = "Some Company ASDF 4242";
+ transform = "90";
+ }
+ ];
+ }
+ '';
+ };
+
systemdTarget = mkOption {
type = types.str;
default = "sway-session.target";
@@ -199,33 +281,56 @@ in {
};
};
- config = mkIf cfg.enable {
- assertions = [
- (lib.hm.assertions.assertPlatform "services.kanshi" pkgs
- lib.platforms.linux)
- ];
+ config = mkIf cfg.enable (mkMerge [
+ {
+ assertions = [
+ (lib.hm.assertions.assertPlatform "services.kanshi" pkgs
+ lib.platforms.linux)
+ {
+ assertion = (cfg.profiles == { } && cfg.extraConfig == "")
+ || (length cfg.settings) == 0;
+ message =
+ "Cannot mix kanshi.settings with kanshi.profiles or kanshi.extraConfig";
+ }
+ ];
+ }
- xdg.configFile."kanshi/config".text = ''
- ${concatStringsSep "\n" (mapAttrsToList profileStr cfg.profiles)}
- ${cfg.extraConfig}
- '';
+ (mkIf (cfg.profiles != { }) {
+ warnings = [
+ "kanshi.profiles option is deprecated. Use kanshi.settings instead."
+ ];
+ })
- systemd.user.services.kanshi = {
- Unit = {
- Description = "Dynamic output configuration";
- Documentation = "man:kanshi(1)";
- PartOf = cfg.systemdTarget;
- Requires = cfg.systemdTarget;
- After = cfg.systemdTarget;
+ (mkIf (cfg.extraConfig != "") {
+ warnings = [
+ "kanshi.extraConfig option is deprecated. Use kanshi.settings instead."
+ ];
+ })
+
+ {
+ xdg.configFile."kanshi/config".text =
+ if cfg.profiles == { } && cfg.extraConfig == "" then
+ directivesStr
+ else
+ oldDirectivesStr;
+
+ systemd.user.services.kanshi = {
+ Unit = {
+ Description = "Dynamic output configuration";
+ Documentation = "man:kanshi(1)";
+ PartOf = cfg.systemdTarget;
+ Requires = cfg.systemdTarget;
+ After = cfg.systemdTarget;
+ };
+
+ Service = {
+ Type = "simple";
+ ExecStart = "${cfg.package}/bin/kanshi";
+ Restart = "always";
+ };
+
+ Install = { WantedBy = [ cfg.systemdTarget ]; };
};
-
- Service = {
- Type = "simple";
- ExecStart = "${cfg.package}/bin/kanshi";
- Restart = "always";
- };
-
- Install = { WantedBy = [ cfg.systemdTarget ]; };
- };
- };
+ }
+ ]);
}
diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix
index 39673131..91b6657f 100644
--- a/modules/services/kdeconnect.nix
+++ b/modules/services/kdeconnect.nix
@@ -24,7 +24,6 @@ in {
default = false;
description = "Whether to enable kdeconnect-indicator service.";
};
-
};
};
@@ -71,6 +70,7 @@ in {
"stalonetray.service"
];
PartOf = [ "graphical-session.target" ];
+ Requires = [ "tray.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
@@ -82,6 +82,5 @@ in {
};
};
})
-
];
}
diff --git a/modules/services/mopidy.nix b/modules/services/mopidy.nix
index 37642a29..b0270857 100644
--- a/modules/services/mopidy.nix
+++ b/modules/services/mopidy.nix
@@ -48,6 +48,8 @@ let
configFilePaths = concatStringsSep ":"
([ "${config.xdg.configHome}/mopidy/mopidy.conf" ] ++ cfg.extraConfigFiles);
+ hasMopidyLocal = builtins.elem pkgs.mopidy-local cfg.extensionPackages;
+
in {
meta.maintainers = [ hm.maintainers.foo-dogsquared ];
@@ -133,7 +135,7 @@ in {
Install.WantedBy = [ "default.target" ];
};
- systemd.user.services.mopidy-scan = {
+ systemd.user.services.mopidy-scan = mkIf hasMopidyLocal {
Unit = {
Description = "mopidy local files scanner";
Documentation = [ "https://mopidy.com/" ];
diff --git a/modules/services/psd.nix b/modules/services/psd.nix
new file mode 100644
index 00000000..477176aa
--- /dev/null
+++ b/modules/services/psd.nix
@@ -0,0 +1,88 @@
+{ config, lib, pkgs, ... }:
+
+let
+
+ cfg = config.services.psd;
+
+in {
+ meta.maintainers = [ lib.hm.maintainers.danjujan ];
+
+ options.services.psd = {
+ enable = lib.mkEnableOption "Profile-sync-daemon service";
+
+ resyncTimer = lib.mkOption {
+ type = lib.types.str;
+ default = "1h";
+ example = "1h 30min";
+ description = ''
+ The amount of time to wait before syncing browser profiles back to the
+ disk.
+
+ Takes a systemd time span, see {manpage}`systemd.time(7)`. The time unit
+ defaults to seconds if omitted.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ assertions = [
+ (lib.hm.assertions.assertPlatform "services.psd" pkgs lib.platforms.linux)
+ ];
+
+ home.packages = [ pkgs.profile-sync-daemon ];
+
+ systemd.user = {
+ services = let
+ exe = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon";
+ envPath = lib.makeBinPath (with pkgs; [
+ rsync
+ kmod
+ gawk
+ nettools
+ util-linux
+ profile-sync-daemon
+ ]);
+ in {
+ psd = {
+ Unit = {
+ Description = "Profile-sync-daemon";
+ Wants = [ "psd-resync.service" ];
+ RequiresMountsFor = [ "/home/" ];
+ After = "winbindd.service";
+ };
+ Service = {
+ Type = "oneshot";
+ RemainAfterExit = "yes";
+ ExecStart = "${exe} startup";
+ ExecStop = "${exe} unsync";
+ Environment = [ "LAUNCHED_BY_SYSTEMD=1" "PATH=$PATH:${envPath}" ];
+ };
+ Install = { WantedBy = [ "default.target" ]; };
+ };
+
+ psd-resync = {
+ Unit = {
+ Description = "Timed profile resync";
+ After = [ "psd.service" ];
+ Wants = [ "psd-resync.timer" ];
+ PartOf = [ "psd.service" ];
+ };
+ Service = {
+ Type = "oneshot";
+ ExecStart = "${exe} resync";
+ Environment = [ "PATH=$PATH:${envPath}" ];
+ };
+ Install = { WantedBy = [ "default.target" ]; };
+ };
+ };
+
+ timers.psd-resync = {
+ Unit = {
+ Description = "Timer for Profile-sync-daemon";
+ PartOf = [ "psd-resync.service" "psd.service" ];
+ };
+ Timer = { OnUnitActiveSec = cfg.resyncTimer; };
+ };
+ };
+ };
+}
diff --git a/modules/services/remmina.nix b/modules/services/remmina.nix
new file mode 100644
index 00000000..dac0471d
--- /dev/null
+++ b/modules/services/remmina.nix
@@ -0,0 +1,74 @@
+{ config, lib, pkgs, ... }:
+
+let
+
+ inherit (lib) mkIf mkMerge mkEnableOption mkPackageOption mkOption;
+
+ cfg = config.services.remmina;
+
+in {
+ meta.maintainers = with lib.maintainers; [ cyntheticfox ];
+
+ options.services.remmina = {
+ enable = mkEnableOption "Remmina";
+
+ package = mkPackageOption pkgs "remmina" { };
+
+ addRdpMimeTypeAssoc = mkEnableOption "Remmina RDP file open option" // {
+ default = true;
+ };
+
+ systemdService = {
+ enable = mkEnableOption "systemd Remmina service" // { default = true; };
+
+ startupFlags = mkOption {
+ type = with lib.types; listOf str;
+ default = [ "--icon" ];
+ description = ''
+ Startup flags documented in the manpage to run at service startup.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable (mkMerge [
+ { home.packages = [ cfg.package ]; }
+
+ (mkIf cfg.systemdService.enable {
+ systemd.user.services.remmina = {
+ Unit = {
+ Description = "Remmina remote desktop client";
+ Documentation = "man:remmina(1)";
+ Requires = [ "graphical-session-pre.target" ];
+ };
+
+ Service = {
+ Type = "simple";
+ ExecStart = "${lib.getExe cfg.package} ${
+ lib.escapeShellArgs cfg.systemdService.startupFlags
+ }";
+ Restart = "on-failure";
+ };
+
+ Install.WantedBy = [ "graphical-session.target" ];
+ };
+ })
+
+ (mkIf (config.xdg.mimeApps.enable && cfg.addRdpMimeTypeAssoc) {
+ xdg.mimeApps.associations.added."application/x-rdp" =
+ "org.remmina.Remmina.desktop";
+
+ xdg.dataFile."mime/packages/application-x-rdp.xml".text = ''
+
+
+
+ rdp file
+
+
+
+
+
+ '';
+ })
+ ]);
+}
diff --git a/modules/services/swaync.nix b/modules/services/swaync.nix
new file mode 100644
index 00000000..60bcc913
--- /dev/null
+++ b/modules/services/swaync.nix
@@ -0,0 +1,113 @@
+{ pkgs, lib, config, ... }:
+
+let
+
+ cfg = config.services.swaync;
+
+ jsonFormat = pkgs.formats.json { };
+
+in {
+ meta.maintainers = [ lib.hm.maintainers.abayomi185 ];
+
+ options.services.swaync = {
+ enable = lib.mkEnableOption "Swaync notification daemon";
+
+ package = lib.mkPackageOption pkgs "swaynotificationcenter" { };
+
+ style = lib.mkOption {
+ type = lib.types.nullOr (lib.types.either lib.types.path lib.types.lines);
+ default = null;
+ example = ''
+ .notification-row {
+ outline: none;
+ }
+
+ .notification-row:focus,
+ .notification-row:hover {
+ background: @noti-bg-focus;
+ }
+
+ .notification {
+ border-radius: 12px;
+ margin: 6px 12px;
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
+ 0 2px 6px 2px rgba(0, 0, 0, 0.3);
+ padding: 0;
+ }
+ '';
+ description = ''
+ CSS style of the bar. See
+
+ for the documentation.
+
+ If the value is set to a path literal, then the path will be used as the CSS file.
+ '';
+ };
+
+ settings = lib.mkOption {
+ type = jsonFormat.type;
+ default = { };
+ example = lib.literalExpression ''
+ {
+ positionX = "right";
+ positionY = "top";
+ layer = "overlay";
+ control-center-layer = "top";
+ layer-shell = true;
+ cssPriority = "application";
+ control-center-margin-top = 0;
+ control-center-margin-bottom = 0;
+ control-center-margin-right = 0;
+ control-center-margin-left = 0;
+ notification-2fa-action = true;
+ notification-inline-replies = false;
+ notification-icon-size = 64;
+ notification-body-image-height = 100;
+ notification-body-image-width = 200
+ };
+ '';
+ description = ''
+ Configuration written to {file}`$XDG_CONFIG_HOME/swaync/config.json`.
+ See
+
+ for the documentation.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ # at-spi2-core is to minimize journalctl noise of:
+ # "AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files"
+ home.packages = [ cfg.package pkgs.at-spi2-core ];
+
+ xdg.configFile = {
+ "swaync/config.json".source =
+ jsonFormat.generate "config.json" cfg.settings;
+ "swaync/style.css" = lib.mkIf (cfg.style != null) {
+ source = if builtins.isPath cfg.style || lib.isStorePath cfg.style then
+ cfg.style
+ else
+ pkgs.writeText "swaync/style.css" cfg.style;
+ };
+ };
+
+ systemd.user.services.swaync = {
+ Unit = {
+ Description = "Swaync notification daemon";
+ Documentation = "https://github.com/ErikReider/SwayNotificationCenter";
+ PartOf = [ "graphical-session.target" ];
+ After = [ "graphical-session-pre.target" ];
+ ConditionEnvironment = "WAYLAND_DISPLAY";
+ };
+
+ Service = {
+ Type = "dbus";
+ BusName = "org.freedesktop.Notifications";
+ ExecStart = "${cfg.package}/bin/swaync";
+ Restart = "on-failure";
+ };
+
+ Install.WantedBy = [ "graphical-session.target" ];
+ };
+ };
+}
diff --git a/modules/services/swayosd.nix b/modules/services/swayosd.nix
index 51e7eb6d..79ca7f5e 100644
--- a/modules/services/swayosd.nix
+++ b/modules/services/swayosd.nix
@@ -26,6 +26,15 @@ in {
description = "OSD margin from top edge (0.5 would be screen center).";
};
+ stylePath = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ example = "/etc/xdg/swayosd/style.css";
+ description = ''
+ Use a custom Stylesheet file instead of looking for one.
+ '';
+ };
+
display = mkOption {
type = types.nullOr types.str;
default = null;
@@ -57,6 +66,8 @@ in {
Type = "simple";
ExecStart = "${cfg.package}/bin/swayosd-server"
+ (optionalString (cfg.display != null) " --display ${cfg.display}")
+ + (optionalString (cfg.stylePath != null)
+ " --style ${escapeShellArg cfg.stylePath}")
+ (optionalString (cfg.topMargin != null)
" --top-margin ${toString cfg.topMargin}");
Restart = "always";
diff --git a/modules/services/window-managers/hyprland.nix b/modules/services/window-managers/hyprland.nix
index cf163108..ff162fb3 100644
--- a/modules/services/window-managers/hyprland.nix
+++ b/modules/services/window-managers/hyprland.nix
@@ -9,7 +9,6 @@ let
systemdActivation = ''
exec-once = ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables} ${extraCommands}
'';
-
in {
meta.maintainers = [ lib.maintainers.fufexan ];
@@ -28,9 +27,12 @@ in {
[ "wayland" "windowManager" "hyprland" "xwayland" "hidpi" ]
"HiDPI patches are deprecated. Refer to https://wiki.hyprland.org/Configuring/XWayland")
- (lib.mkRenamedOptionModule # \
+ (lib.mkRemovedOptionModule # \
[ "wayland" "windowManager" "hyprland" "nvidiaPatches" ] # \
- [ "wayland" "windowManager" "hyprland" "enableNvidiaPatches" ])
+ "Nvidia patches are no longer needed")
+ (lib.mkRemovedOptionModule # \
+ [ "wayland" "windowManager" "hyprland" "enableNvidiaPatches" ] # \
+ "Nvidia patches are no longer needed")
(lib.mkRenamedOptionModule # \
[ "wayland" "windowManager" "hyprland" "systemdIntegration" ] # \
@@ -45,10 +47,7 @@ in {
finalPackage = lib.mkOption {
type = lib.types.package;
readOnly = true;
- default = cfg.package.override {
- enableXWayland = cfg.xwayland.enable;
- enableNvidiaPatches = cfg.enableNvidiaPatches;
- };
+ default = cfg.package.override { enableXWayland = cfg.xwayland.enable; };
defaultText = lib.literalMD
"`wayland.windowManager.hyprland.package` with applied configuration";
description = ''
@@ -103,13 +102,14 @@ in {
];
description = "Extra commands to be run after D-Bus activation.";
};
+
+ enableXdgAutostart = lib.mkEnableOption ''
+ autostart of applications using
+ {manpage}`systemd-xdg-autostart-generator(8)`'';
};
xwayland.enable = lib.mkEnableOption "XWayland" // { default = true; };
- enableNvidiaPatches =
- lib.mkEnableOption "patching wlroots for better Nvidia support";
-
settings = lib.mkOption {
type = with lib.types;
let
@@ -181,6 +181,16 @@ in {
'' // {
default = true;
};
+
+ importantPrefixes = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [ "$" "bezier" "name" ]
+ ++ lib.optionals cfg.sourceFirst [ "source" ];
+ example = [ "$" "bezier" ];
+ description = ''
+ List of prefix of attributes to source at the top of the config.
+ '';
+ };
};
config = lib.mkIf cfg.enable {
@@ -202,65 +212,28 @@ in {
shouldGenerate = cfg.systemd.enable || cfg.extraConfig != ""
|| cfg.settings != { } || cfg.plugins != [ ];
- toHyprconf = with lib;
- attrs: indentLevel:
- let
- indent = concatStrings (replicate indentLevel " ");
-
- sections = filterAttrs (n: v: isAttrs v && n != "device") attrs;
-
- mkSection = n: attrs: ''
- ${indent}${n} {
- ${toHyprconf attrs (indentLevel + 1)}${indent}}
- '';
-
- mkDeviceCategory = device: ''
- ${indent}device {
- name=${device.name}
- ${
- toHyprconf (filterAttrs (n: _: "name" != n) device)
- (indentLevel + 1)
- }${indent}}
- '';
-
- deviceCategory = lib.optionalString (hasAttr "device" attrs)
- (if isList attrs.device then
- (concatMapStringsSep "\n" (d: mkDeviceCategory d) attrs.device)
- else
- mkDeviceCategory attrs.device);
-
- mkFields = generators.toKeyValue {
- listsAsDuplicateKeys = true;
- inherit indent;
- };
- allFields = filterAttrs (n: v: !(isAttrs v) && n != "device") attrs;
-
- importantFields = filterAttrs (n: _:
- (hasPrefix "$" n) || (hasPrefix "bezier" n)
- || (cfg.sourceFirst && (hasPrefix "source" n))) allFields;
-
- fields = builtins.removeAttrs allFields
- (mapAttrsToList (n: _: n) importantFields);
- in mkFields importantFields + deviceCategory
- + concatStringsSep "\n" (mapAttrsToList mkSection sections)
- + mkFields fields;
-
pluginsToHyprconf = plugins:
- toHyprconf {
- plugin = let
- mkEntry = entry:
- if lib.types.package.check entry then
- "${entry}/lib/lib${entry.pname}.so"
- else
- entry;
- in map mkEntry cfg.plugins;
- } 0;
+ lib.hm.generators.toHyprconf {
+ attrs = {
+ plugin = let
+ mkEntry = entry:
+ if lib.types.package.check entry then
+ "${entry}/lib/lib${entry.pname}.so"
+ else
+ entry;
+ in map mkEntry cfg.plugins;
+ };
+ inherit (cfg) importantPrefixes;
+ };
in lib.mkIf shouldGenerate {
text = lib.optionalString cfg.systemd.enable systemdActivation
+ lib.optionalString (cfg.plugins != [ ])
(pluginsToHyprconf cfg.plugins)
- + lib.optionalString (cfg.settings != { }) (toHyprconf cfg.settings 0)
- + lib.optionalString (cfg.extraConfig != "") cfg.extraConfig;
+ + lib.optionalString (cfg.settings != { })
+ (lib.hm.generators.toHyprconf {
+ attrs = cfg.settings;
+ inherit (cfg) importantPrefixes;
+ }) + lib.optionalString (cfg.extraConfig != "") cfg.extraConfig;
onChange = lib.mkIf (cfg.package != null) ''
( # Execute in subshell so we don't poision environment with vars
@@ -278,8 +251,12 @@ in {
Description = "Hyprland compositor session";
Documentation = [ "man:systemd.special(7)" ];
BindsTo = [ "graphical-session.target" ];
- Wants = [ "graphical-session-pre.target" ];
+ Wants = [ "graphical-session-pre.target" ]
+ ++ lib.optional cfg.systemd.enableXdgAutostart
+ "xdg-desktop-autostart.target";
After = [ "graphical-session-pre.target" ];
+ Before = lib.mkIf cfg.systemd.enableXdgAutostart
+ [ "xdg-desktop-autostart.target" ];
};
};
diff --git a/modules/services/window-managers/i3-sway/sway.nix b/modules/services/window-managers/i3-sway/sway.nix
index 88048daf..bc20e9d9 100644
--- a/modules/services/window-managers/i3-sway/sway.nix
+++ b/modules/services/window-managers/i3-sway/sway.nix
@@ -256,63 +256,80 @@ let
outputStr = moduleStr "output";
seatStr = moduleStr "seat";
- configFile = pkgs.writeText "sway.conf" (concatStringsSep "\n"
- ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly)
- ++ (if cfg.config != null then
- with cfg.config;
- ([
- (fontConfigStr fonts)
- "floating_modifier ${floating.modifier}"
- (windowBorderString window floating)
- "hide_edge_borders ${window.hideEdgeBorders}"
- "focus_wrapping ${focus.wrapping}"
- "focus_follows_mouse ${focus.followMouse}"
- "focus_on_window_activation ${focus.newWindow}"
- "mouse_warping ${
- if builtins.isString (focus.mouseWarping) then
- focus.mouseWarping
- else if focus.mouseWarping then
- "output"
- else
- "none"
- }"
- "workspace_layout ${workspaceLayout}"
- "workspace_auto_back_and_forth ${
- lib.hm.booleans.yesNo workspaceAutoBackAndForth
- }"
- "client.focused ${colorSetStr colors.focused}"
- "client.focused_inactive ${colorSetStr colors.focusedInactive}"
- "client.unfocused ${colorSetStr colors.unfocused}"
- "client.urgent ${colorSetStr colors.urgent}"
- "client.placeholder ${colorSetStr colors.placeholder}"
- "client.background ${colors.background}"
- (keybindingsStr {
- keybindings = keybindingDefaultWorkspace;
- bindsymArgs =
- lib.optionalString (cfg.config.bindkeysToCode) "--to-code";
- })
- (keybindingsStr {
- keybindings = keybindingsRest;
- bindsymArgs =
- lib.optionalString (cfg.config.bindkeysToCode) "--to-code";
- })
- (keycodebindingsStr keycodebindings)
- ] ++ mapAttrsToList inputStr input
- ++ mapAttrsToList outputStr output # outputs
- ++ mapAttrsToList seatStr seat # seats
- ++ mapAttrsToList (modeStr cfg.config.bindkeysToCode) modes # modes
- ++ mapAttrsToList assignStr assigns # assigns
- ++ map barStr bars # bars
- ++ optional (gaps != null) gapsStr # gaps
- ++ map floatingCriteriaStr floating.criteria # floating
- ++ map windowCommandsStr window.commands # window commands
- ++ map startupEntryStr startup # startup
- ++ map workspaceOutputStr workspaceOutputAssign # custom mapping
- )
- else
- [ ]) ++ (optional cfg.systemd.enable ''
- exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL XCURSOR_THEME XCURSOR_SIZE; systemctl --user start sway-session.target"'')
- ++ (optional (!cfg.xwayland) "xwayland disable") ++ [ cfg.extraConfig ]));
+ variables = concatStringsSep " " cfg.systemd.variables;
+ extraCommands = concatStringsSep " && " cfg.systemd.extraCommands;
+ swayPackage = if cfg.package == null then pkgs.sway else cfg.package;
+ systemdActivation = ''
+ exec "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd ${variables}; ${extraCommands}"'';
+
+ configFile = pkgs.writeTextFile {
+ name = "sway.conf";
+
+ # Sway always does some init, see https://github.com/swaywm/sway/issues/4691
+ checkPhase = lib.optionalString cfg.checkConfig ''
+ export DBUS_SESSION_BUS_ADDRESS=/dev/null
+ export XDG_RUNTIME_DIR=$(mktemp -d)
+ ${pkgs.xvfb-run}/bin/xvfb-run ${swayPackage}/bin/sway --config "$target" --validate --unsupported-gpu
+ '';
+
+ text = concatStringsSep "\n"
+ ((optional (cfg.extraConfigEarly != "") cfg.extraConfigEarly)
+ ++ (if cfg.config != null then
+ with cfg.config;
+ ([
+ (fontConfigStr fonts)
+ "floating_modifier ${floating.modifier}"
+ (windowBorderString window floating)
+ "hide_edge_borders ${window.hideEdgeBorders}"
+ "focus_wrapping ${focus.wrapping}"
+ "focus_follows_mouse ${focus.followMouse}"
+ "focus_on_window_activation ${focus.newWindow}"
+ "mouse_warping ${
+ if builtins.isString (focus.mouseWarping) then
+ focus.mouseWarping
+ else if focus.mouseWarping then
+ "output"
+ else
+ "none"
+ }"
+ "workspace_layout ${workspaceLayout}"
+ "workspace_auto_back_and_forth ${
+ lib.hm.booleans.yesNo workspaceAutoBackAndForth
+ }"
+ "client.focused ${colorSetStr colors.focused}"
+ "client.focused_inactive ${colorSetStr colors.focusedInactive}"
+ "client.unfocused ${colorSetStr colors.unfocused}"
+ "client.urgent ${colorSetStr colors.urgent}"
+ "client.placeholder ${colorSetStr colors.placeholder}"
+ "client.background ${colors.background}"
+ (keybindingsStr {
+ keybindings = keybindingDefaultWorkspace;
+ bindsymArgs =
+ lib.optionalString (cfg.config.bindkeysToCode) "--to-code";
+ })
+ (keybindingsStr {
+ keybindings = keybindingsRest;
+ bindsymArgs =
+ lib.optionalString (cfg.config.bindkeysToCode) "--to-code";
+ })
+ (keycodebindingsStr keycodebindings)
+ ] ++ mapAttrsToList inputStr input
+ ++ mapAttrsToList outputStr output # outputs
+ ++ mapAttrsToList seatStr seat # seats
+ ++ mapAttrsToList (modeStr cfg.config.bindkeysToCode) modes # modes
+ ++ mapAttrsToList assignStr assigns # assigns
+ ++ map barStr bars # bars
+ ++ optional (gaps != null) gapsStr # gaps
+ ++ map floatingCriteriaStr floating.criteria # floating
+ ++ map windowCommandsStr window.commands # window commands
+ ++ map startupEntryStr startup # startup
+ ++ map workspaceOutputStr workspaceOutputAssign # custom mapping
+ )
+ else
+ [ ]) ++ (optional cfg.systemd.enable systemdActivation)
+ ++ (optional (!cfg.xwayland) "xwayland disable")
+ ++ [ cfg.extraConfig ]);
+ };
defaultSwayPackage = pkgs.sway.override {
extraSessionCommands = cfg.extraSessionCommands;
@@ -366,6 +383,37 @@ in {
* {env}`WAYLAND_DISPLAY`
* {env}`SWAYSOCK`
* {env}`XDG_CURRENT_DESKTOP`
+ * {env}`XDG_SESSION_TYPE`
+ * {env}`NIXOS_OZONE_WL`
+ * {env}`XCURSOR_THEME`
+ * {env}`XCURSOR_SIZE`
+ You can extend this list using the `systemd.variables` option.
+ '';
+ };
+
+ variables = mkOption {
+ type = types.listOf types.str;
+ default = [
+ "DISPLAY"
+ "WAYLAND_DISPLAY"
+ "SWAYSOCK"
+ "XDG_CURRENT_DESKTOP"
+ "XDG_SESSION_TYPE"
+ "NIXOS_OZONE_WL"
+ "XCURSOR_THEME"
+ "XCURSOR_SIZE"
+ ];
+ example = [ "-all" ];
+ description = ''
+ Environment variables imported into the systemd and D-Bus user environment.
+ '';
+ };
+
+ extraCommands = mkOption {
+ type = types.listOf types.str;
+ default = [ "systemctl --user start sway-session.target" ];
+ description = ''
+ Extra commands to run after D-Bus activation.
'';
};
@@ -430,6 +478,13 @@ in {
description = "Sway configuration options.";
};
+ checkConfig = mkOption {
+ type = types.bool;
+ default = true;
+ description =
+ "If enabled (the default), validates the generated config file.";
+ };
+
extraConfig = mkOption {
type = types.lines;
default = "";
@@ -467,9 +522,7 @@ in {
home.packages = optional (cfg.package != null) cfg.package
++ optional cfg.xwayland pkgs.xwayland;
- xdg.configFile."sway/config" = let
- swayPackage = if cfg.package == null then pkgs.sway else cfg.package;
- in {
+ xdg.configFile."sway/config" = {
source = configFile;
onChange = ''
swaySocket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/sway-ipc.$UID.$(${pkgs.procps}/bin/pgrep --uid $UID -x sway || true).sock"
diff --git a/modules/services/wlsunset.nix b/modules/services/wlsunset.nix
index 3bc3f2f7..f3352750 100644
--- a/modules/services/wlsunset.nix
+++ b/modules/services/wlsunset.nix
@@ -11,7 +11,7 @@ in {
enable = mkEnableOption "wlsunset";
package = mkOption {
- type = types.package;
+ type = with types; package;
default = pkgs.wlsunset;
defaultText = "pkgs.wlsunset";
description = ''
@@ -20,7 +20,9 @@ in {
};
latitude = mkOption {
- type = types.str;
+ type = with types; nullOr (either str (either float int));
+ default = null;
+ example = -74.3;
description = ''
Your current latitude, between `-90.0` and
`90.0`.
@@ -28,7 +30,9 @@ in {
};
longitude = mkOption {
- type = types.str;
+ type = with types; nullOr (either str (either float int));
+ default = null;
+ example = 12.5;
description = ''
Your current longitude, between `-180.0` and
`180.0`.
@@ -37,7 +41,7 @@ in {
temperature = {
day = mkOption {
- type = types.int;
+ type = with types; int;
default = 6500;
description = ''
Colour temperature to use during the day, in Kelvin (K).
@@ -46,7 +50,7 @@ in {
};
night = mkOption {
- type = types.int;
+ type = with types; int;
default = 4000;
description = ''
Colour temperature to use during the night, in Kelvin (K).
@@ -56,15 +60,42 @@ in {
};
gamma = mkOption {
- type = types.str;
- default = "1.0";
+ type = with types; (either str (either float int));
+ default = 1.0;
+ example = 0.6;
description = ''
Gamma value to use.
'';
};
+ output = mkOption {
+ type = with types; nullOr str;
+ default = null;
+ description = ''
+ Name of output to use, by default all outputs are used.
+ '';
+ };
+
+ sunrise = mkOption {
+ type = with types; nullOr str;
+ default = null;
+ example = "06:30";
+ description = ''
+ The time when the sun rises (in 24 hour format).
+ '';
+ };
+
+ sunset = mkOption {
+ type = with types; nullOr str;
+ default = null;
+ example = "18:00";
+ description = ''
+ The time when the sun sets (in 24 hour format).
+ '';
+ };
+
systemdTarget = mkOption {
- type = types.str;
+ type = with types; str;
default = "graphical-session.target";
description = ''
Systemd target to bind to.
@@ -76,6 +107,22 @@ in {
assertions = [
(lib.hm.assertions.assertPlatform "services.wlsunset" pkgs
lib.platforms.linux)
+ {
+ assertion = (cfg.sunrise != null || cfg.sunset != null)
+ != (cfg.latitude != null || cfg.longitude != null);
+ message =
+ "Either `sunrise` and `sunset` together or `longitude` and `latitude` together must be set for wlsunset";
+ }
+ {
+ assertion = (cfg.sunrise != null) == (cfg.sunset != null);
+ message =
+ "Both `sunset` and `sunrise` together must be set for wlsunset";
+ }
+ {
+ assertion = (cfg.latitude != null) == (cfg.longitude != null);
+ message =
+ "Both `latitude and `longitude` together must be set for wlsunset";
+ }
];
systemd.user.services.wlsunset = {
@@ -86,14 +133,17 @@ in {
Service = {
ExecStart = let
- args = [
- "-l ${cfg.latitude}"
- "-L ${cfg.longitude}"
- "-t ${toString cfg.temperature.night}"
- "-T ${toString cfg.temperature.day}"
- "-g ${cfg.gamma}"
- ];
- in "${cfg.package}/bin/wlsunset ${concatStringsSep " " args}";
+ args = cli.toGNUCommandLineShell { } {
+ t = cfg.temperature.night;
+ T = cfg.temperature.day;
+ g = cfg.gamma;
+ l = cfg.latitude;
+ L = cfg.longitude;
+ S = cfg.sunrise;
+ s = cfg.sunset;
+ o = cfg.output;
+ };
+ in "${cfg.package}/bin/wlsunset ${args}";
};
Install = { WantedBy = [ cfg.systemdTarget ]; };
diff --git a/modules/systemd.nix b/modules/systemd.nix
index 041b9dfa..f209f65d 100644
--- a/modules/systemd.nix
+++ b/modules/systemd.nix
@@ -5,8 +5,8 @@ let
cfg = config.systemd.user;
inherit (lib)
- any attrValues getAttr hm isBool literalExpression mkIf mkMerge mkOption
- types;
+ any attrValues getAttr hm isBool literalExpression mkIf mkMerge
+ mkEnableOption mkOption types;
settingsFormat = pkgs.formats.ini { listsAsDuplicateKeys = true; };
@@ -105,6 +105,11 @@ in {
options = {
systemd.user = {
+ enable = mkEnableOption "the user systemd service manager" // {
+ default = pkgs.stdenv.isLinux;
+ defaultText = literalExpression "pkgs.stdenv.isLinux";
+ };
+
systemctlPath = mkOption {
default = "${pkgs.systemd}/bin/systemctl";
defaultText = literalExpression ''"''${pkgs.systemd}/bin/systemctl"'';
@@ -286,7 +291,12 @@ in {
# If we run under a Linux system we assume that systemd is
# available, in particular we assume that systemctl is in PATH.
# Do not install any user services if username is root.
- config = mkIf (pkgs.stdenv.isLinux && config.home.username != "root") {
+ config = mkIf (cfg.enable && config.home.username != "root") {
+ assertions = [{
+ assertion = pkgs.stdenv.isLinux;
+ message = "This module is only available on Linux.";
+ }];
+
xdg.configFile = mkMerge [
(lib.listToAttrs ((buildServices "service" cfg.services)
++ (buildServices "slice" cfg.slices)
diff --git a/modules/targets/darwin/user-defaults/opts-allhosts.nix b/modules/targets/darwin/user-defaults/opts-allhosts.nix
index 820f05b3..4a4f1067 100644
--- a/modules/targets/darwin/user-defaults/opts-allhosts.nix
+++ b/modules/targets/darwin/user-defaults/opts-allhosts.nix
@@ -41,6 +41,19 @@ in {
description = "Sets the measurement unit.";
};
+ ApplePressAndHoldEnabled = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description =
+ "Repeat a key when it is held down (false) or display the accented character selector (true)";
+ };
+
+ AppleShowAllExtensions = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Always show file extensions in Finder";
+ };
+
AppleTemperatureUnit = mkNullableOption {
type = types.enum [ "Celsius" "Fahrenheit" ];
example = "Celsius";
@@ -49,6 +62,16 @@ in {
AppleMetricUnits = mkNullableEnableOption "the metric system";
+ KeyRepeat = mkNullableOption {
+ type = types.int;
+ example = 2;
+ description = ''
+ Interval between key repetitions when holding down a key. Lower is
+ faster. When setting through the control panel, 2 is the lowest value,
+ and 120 the highest.
+ '';
+ };
+
NSAutomaticCapitalizationEnabled =
mkNullableEnableOption "automatic capitalization";
@@ -85,14 +108,50 @@ in {
};
"com.apple.dock" = {
+ autohide = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Hide the Dock automatically";
+ };
+ expose-group-apps = mkNullableEnableOption
+ "grouping of windows by application in Mission Control";
+ orientation = mkNullableOption {
+ type = types.enum [ "left" "bottom" "right" ];
+ example = "left";
+ description = "Position of the Dock on the screen";
+ };
+ size-immutable = mkNullableEnableOption "locking of the dock size";
tilesize = mkNullableOption {
type = types.int;
example = 64;
description = "Sets the size of the dock.";
};
- size-immutable = mkNullableEnableOption "locking of the dock size";
- expose-group-apps = mkNullableEnableOption
- "grouping of windows by application in Mission Control";
+ };
+
+ "com.apple.finder" = {
+ AppleShowAllFiles = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Show hidden files in Finder";
+ };
+
+ FXRemoveOldTrashItems = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Automatically delete items from trash after 30 days";
+ };
+
+ ShowPathBar = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Show the path bar at the bottom of a Finder window";
+ };
+
+ ShowStatusBar = mkNullableOption {
+ type = types.bool;
+ example = true;
+ description = "Show the status bar at the bottom of a Finder window";
+ };
};
"com.apple.menuextra.battery".ShowPercent = mkNullableOption {
@@ -106,6 +165,41 @@ in {
'';
};
+ "com.apple.menuextra.clock" = {
+ IsAnalog = mkNullableEnableOption
+ "showing an analog clock instead of a digital one";
+
+ Show24Hour = mkNullableEnableOption
+ "showing a 24-hour clock, instead of a 12-hour clock";
+
+ ShowAMPM = mkNullableOption {
+ type = types.bool;
+ description = ''
+ Show the AM/PM label. Useful if Show24Hour is false. Default is null.
+ '';
+ };
+
+ ShowDate = mkNullableOption {
+ type = types.enum [ 0 1 2 ];
+ description = ''
+ Show the full date. Default is null.
+
+ 0 = Show the date
+ 1 = Don't show
+ 2 = Don't show
+
+ TODO: I don't know what the difference is between 1 and 2.
+ '';
+ };
+
+ ShowDayOfMonth = mkNullableEnableOption "showing the day of the month";
+
+ ShowDayOfWeek = mkNullableEnableOption "showing the day of the week";
+
+ ShowSeconds = mkNullableEnableOption
+ "showing the clock with second precision, instead of minutes";
+ };
+
"com.apple.Safari" = {
AutoOpenSafeDownloads =
mkNullableEnableOption "opening of downloaded files";
diff --git a/nixos/common.nix b/nixos/common.nix
index 5da3240b..08491be9 100644
--- a/nixos/common.nix
+++ b/nixos/common.nix
@@ -13,6 +13,7 @@ let
hmModule = types.submoduleWith {
description = "Home Manager module";
+ class = "homeManager";
specialArgs = {
lib = extendedLib;
osConfig = config;
diff --git a/tests/default.nix b/tests/default.nix
index 567b75d5..4d8d49d4 100644
--- a/tests/default.nix
+++ b/tests/default.nix
@@ -71,6 +71,7 @@ in import nmtSrc {
./modules/programs/dircolors
./modules/programs/direnv
./modules/programs/emacs
+ ./modules/programs/fastfetch
./modules/programs/feh
./modules/programs/fish
./modules/programs/gallery-dl
@@ -122,6 +123,7 @@ in import nmtSrc {
./modules/programs/pet
./modules/programs/pistol
./modules/programs/pls
+ ./modules/programs/poetry
./modules/programs/powerline-go
./modules/programs/pubs
./modules/programs/pyenv
@@ -140,6 +142,7 @@ in import nmtSrc {
./modules/programs/sftpman
./modules/programs/sioyek
./modules/programs/sm64ex
+ ./modules/programs/spotify-player
./modules/programs/ssh
./modules/programs/starship
./modules/programs/taskwarrior
@@ -163,6 +166,7 @@ in import nmtSrc {
./modules/xresources
] ++ lib.optionals isDarwin [
./modules/launchd
+ ./modules/services/espanso-darwin
./modules/services/git-sync-darwin
./modules/services/imapnotify-darwin
./modules/services/nix-gc-darwin
@@ -187,10 +191,13 @@ in import nmtSrc {
./modules/programs/boxxy
./modules/programs/firefox
./modules/programs/foot
+ ./modules/programs/freetube
./modules/programs/fuzzel
./modules/programs/getmail
+ ./modules/programs/gnome-shell
./modules/programs/gnome-terminal
./modules/programs/hexchat
+ ./modules/programs/hyprlock
./modules/programs/i3blocks
./modules/programs/i3status-rust
./modules/programs/imv
@@ -206,11 +213,13 @@ in import nmtSrc {
./modules/programs/swayr
./modules/programs/terminator
./modules/programs/thunderbird
+ ./modules/programs/tofi
./modules/programs/waybar
./modules/programs/wlogout
./modules/programs/wofi
./modules/programs/wpaperd
./modules/programs/xmobar
+ ./modules/programs/yambar
./modules/programs/yt-dlp
./modules/services/activitywatch
./modules/services/avizo
@@ -220,6 +229,7 @@ in import nmtSrc {
./modules/services/cliphist
./modules/services/clipman
./modules/services/comodoro
+ ./modules/services/conky
./modules/services/darkman
./modules/services/devilspie2
./modules/services/dropbox
@@ -233,6 +243,8 @@ in import nmtSrc {
./modules/services/gpg-agent
./modules/services/gromit-mpx
./modules/services/home-manager-auto-upgrade
+ ./modules/services/hypridle
+ ./modules/services/hyprpaper
./modules/services/imapnotify
./modules/services/kanshi
./modules/services/lieer
@@ -252,9 +264,11 @@ in import nmtSrc {
./modules/services/polybar
./modules/services/recoll
./modules/services/redshift-gammastep
+ ./modules/services/remmina
./modules/services/screen-locker
./modules/services/signaturepdf
./modules/services/swayidle
+ ./modules/services/swaync
./modules/services/swayosd
./modules/services/sxhkd
./modules/services/syncthing/linux
diff --git a/tests/integration/standalone/alice-home-init.nix b/tests/integration/standalone/alice-home-init.nix
index c5abf850..3aab1897 100644
--- a/tests/integration/standalone/alice-home-init.nix
+++ b/tests/integration/standalone/alice-home-init.nix
@@ -52,9 +52,10 @@
};
# Home Manager can also manage your environment variables through
- # 'home.sessionVariables'. If you don't want to manage your shell through Home
- # Manager then you have to manually source 'hm-session-vars.sh' located at
- # either
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
diff --git a/tests/modules/misc/qt/qt-basic.nix b/tests/modules/misc/qt/qt-basic.nix
index 9ddddb35..a4cadcb7 100644
--- a/tests/modules/misc/qt/qt-basic.nix
+++ b/tests/modules/misc/qt/qt-basic.nix
@@ -1,5 +1,3 @@
-{ config, lib, pkgs, ... }:
-
{
config = {
qt.enable = true;
diff --git a/tests/modules/misc/qt/qt-platform-theme-gnome.nix b/tests/modules/misc/qt/qt-platform-theme-gnome.nix
index d95ef704..ab65f146 100644
--- a/tests/modules/misc/qt/qt-platform-theme-gnome.nix
+++ b/tests/modules/misc/qt/qt-platform-theme-gnome.nix
@@ -1,9 +1,8 @@
-{ config, lib, pkgs, ... }:
-
{
config = {
qt = {
enable = true;
+ # Check if still backwards compatible
platformTheme = "gnome";
style.name = "adwaita";
};
@@ -20,5 +19,9 @@
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'QML2_IMPORT_PATH'
'';
+ test.asserts.warnings.expected = [
+ "The option `qt.platformTheme` has been renamed to `qt.platformTheme.name`."
+ "The value `gnome` for option `qt.platformTheme` is deprecated. Use `adwaita` instead."
+ ];
};
}
diff --git a/tests/modules/misc/qt/qt-platform-theme-gtk.nix b/tests/modules/misc/qt/qt-platform-theme-gtk.nix
index 070c8020..76a6512f 100644
--- a/tests/modules/misc/qt/qt-platform-theme-gtk.nix
+++ b/tests/modules/misc/qt/qt-platform-theme-gtk.nix
@@ -1,10 +1,8 @@
-{ config, lib, pkgs, ... }:
-
{
config = {
qt = {
enable = true;
- platformTheme = "gtk";
+ platformTheme.name = "gtk";
};
i18n.inputMethod.enabled = "fcitx5";
diff --git a/tests/modules/misc/qt/qt-platform-theme-gtk3.nix b/tests/modules/misc/qt/qt-platform-theme-gtk3.nix
index 2b3ade9d..26408818 100644
--- a/tests/modules/misc/qt/qt-platform-theme-gtk3.nix
+++ b/tests/modules/misc/qt/qt-platform-theme-gtk3.nix
@@ -1,10 +1,8 @@
-{ config, lib, pkgs, ... }:
-
{
config = {
qt = {
enable = true;
- platformTheme = "gtk3";
+ platformTheme.name = "gtk3";
};
nmt.script = ''
diff --git a/tests/modules/programs/alacritty/empty-settings.nix b/tests/modules/programs/alacritty/empty-settings.nix
index ecc6df35..c587018e 100644
--- a/tests/modules/programs/alacritty/empty-settings.nix
+++ b/tests/modules/programs/alacritty/empty-settings.nix
@@ -1,7 +1,3 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
{
config = {
programs.alacritty.enable = true;
diff --git a/tests/modules/programs/alacritty/example-settings-expected.toml b/tests/modules/programs/alacritty/example-settings-expected.toml
index 723f1874..7b08aae8 100644
--- a/tests/modules/programs/alacritty/example-settings-expected.toml
+++ b/tests/modules/programs/alacritty/example-settings-expected.toml
@@ -1,5 +1,5 @@
[[keyboard.bindings]]
-chars = "\x0c"
+chars = "\u000c"
key = "K"
mods = "Control"
diff --git a/tests/modules/programs/alacritty/example-settings.nix b/tests/modules/programs/alacritty/example-settings.nix
index 8aa01380..c8ecb206 100644
--- a/tests/modules/programs/alacritty/example-settings.nix
+++ b/tests/modules/programs/alacritty/example-settings.nix
@@ -1,12 +1,10 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
+{ config, ... }:
{
config = {
programs.alacritty = {
enable = true;
- package = config.lib.test.mkStubPackage { version = "0.13.0"; };
+ package = config.lib.test.mkStubPackage { };
settings = {
window.dimensions = {
@@ -17,7 +15,7 @@ with lib;
keyboard.bindings = [{
key = "K";
mods = "Control";
- chars = "\\x0c";
+ chars = "\\u000c";
}];
};
};
diff --git a/tests/modules/programs/alacritty/settings-merging-expected.yml b/tests/modules/programs/alacritty/settings-merging-expected.yml
deleted file mode 100644
index 49d92a61..00000000
--- a/tests/modules/programs/alacritty/settings-merging-expected.yml
+++ /dev/null
@@ -1 +0,0 @@
-{"font":{"bold":{"family":"SFMono"},"normal":{"family":"SFMono"}},"key_bindings":[{"chars":"\x0c","key":"K","mods":"Control"}],"window":{"dimensions":{"columns":200,"lines":3}}}
\ No newline at end of file
diff --git a/tests/modules/programs/alacritty/settings-merging.nix b/tests/modules/programs/alacritty/settings-merging.nix
index 76aedf4f..e08c96eb 100644
--- a/tests/modules/programs/alacritty/settings-merging.nix
+++ b/tests/modules/programs/alacritty/settings-merging.nix
@@ -1,12 +1,10 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
+{ config, lib, ... }:
{
config = {
programs.alacritty = {
enable = true;
- package = config.lib.test.mkStubPackage { version = "0.12.3"; };
+ package = config.lib.test.mkStubPackage { };
settings = {
window.dimensions = {
@@ -14,10 +12,10 @@ with lib;
columns = 200;
};
- key_bindings = [{
+ keyboard.bindings = [{
key = "K";
mods = "Control";
- chars = "\\x0c";
+ chars = "\\u000c";
}];
font = let
@@ -32,8 +30,8 @@ with lib;
nmt.script = ''
assertFileContent \
- home-files/.config/alacritty/alacritty.yml \
- ${./settings-merging-expected.yml}
+ home-files/.config/alacritty/alacritty.toml \
+ ${./settings-toml-expected.toml}
'';
};
}
diff --git a/tests/modules/programs/alacritty/settings-toml-expected.toml b/tests/modules/programs/alacritty/settings-toml-expected.toml
index 9b0867ee..018881bc 100644
--- a/tests/modules/programs/alacritty/settings-toml-expected.toml
+++ b/tests/modules/programs/alacritty/settings-toml-expected.toml
@@ -6,7 +6,7 @@ family = "SFMono"
family = "SFMono"
[[keyboard.bindings]]
-chars = "\x0c"
+chars = "\u000c"
key = "K"
mods = "Control"
diff --git a/tests/modules/programs/alacritty/toml_config.nix b/tests/modules/programs/alacritty/toml_config.nix
index 4f15e70b..7094f9a9 100644
--- a/tests/modules/programs/alacritty/toml_config.nix
+++ b/tests/modules/programs/alacritty/toml_config.nix
@@ -4,7 +4,7 @@
config = {
programs.alacritty = {
enable = true;
- package = config.lib.test.mkStubPackage { version = "0.13.0"; };
+ package = config.lib.test.mkStubPackage { };
settings = {
window.dimensions = {
@@ -15,7 +15,7 @@
keyboard.bindings = [{
key = "K";
mods = "Control";
- chars = "\\x0c";
+ chars = "\\u000c";
}];
font = {
diff --git a/tests/modules/programs/carapace/nushell.nix b/tests/modules/programs/carapace/nushell.nix
index a025da18..d97fa898 100644
--- a/tests/modules/programs/carapace/nushell.nix
+++ b/tests/modules/programs/carapace/nushell.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
{
programs = {
@@ -7,7 +7,7 @@
};
nmt.script = let
- configDir = if pkgs.stdenv.isDarwin then
+ configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell"
else
"home-files/.config/nushell";
diff --git a/tests/modules/programs/direnv/nix-direnv.nix b/tests/modules/programs/direnv/nix-direnv.nix
index 4c173097..588cd6ed 100644
--- a/tests/modules/programs/direnv/nix-direnv.nix
+++ b/tests/modules/programs/direnv/nix-direnv.nix
@@ -10,9 +10,7 @@ with lib;
nmt.script = ''
assertFileExists home-files/.bashrc
- assertFileRegex \
- home-files/.config/direnv/direnvrc \
- 'source /nix/store/.*nix-direnv.*/share/nix-direnv/direnvrc'
+ assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh
'';
};
}
diff --git a/tests/modules/programs/direnv/nushell.nix b/tests/modules/programs/direnv/nushell.nix
index 46f34ebd..6655f01a 100644
--- a/tests/modules/programs/direnv/nushell.nix
+++ b/tests/modules/programs/direnv/nushell.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
{
programs.nushell.enable = true;
@@ -7,7 +7,7 @@
test.stubs.nushell = { };
nmt.script = let
- configFile = if pkgs.stdenv.isDarwin then
+ configFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell/config.nu"
else
"home-files/.config/nushell/config.nu";
diff --git a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix b/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix
index 4e5efb87..3bfd768c 100644
--- a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix
+++ b/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix
@@ -12,9 +12,7 @@ in {
nmt.script = ''
assertFileExists home-files/.bashrc
- assertFileRegex \
- home-files/.config/direnv/direnvrc \
- 'source /nix/store/.*nix-direnv.*/share/nix-direnv/direnvrc'
+ assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh
assertFileRegex \
home-files/.config/direnv/direnvrc \
'${expectedContent}'
diff --git a/tests/modules/programs/direnv/stdlib.nix b/tests/modules/programs/direnv/stdlib.nix
index 1d06a0bc..2a859132 100644
--- a/tests/modules/programs/direnv/stdlib.nix
+++ b/tests/modules/programs/direnv/stdlib.nix
@@ -10,6 +10,7 @@ in {
programs.direnv.stdlib = expectedContent;
nmt.script = ''
+ assertPathNotExists home-files/.config/direnv/lib/hm-nix-direnv.sh
assertFileExists home-files/.bashrc
assertFileRegex \
home-files/.config/direnv/direnvrc \
diff --git a/tests/modules/programs/fastfetch/basic-configuration.jsonc b/tests/modules/programs/fastfetch/basic-configuration.jsonc
new file mode 100755
index 00000000..70eabbd6
--- /dev/null
+++ b/tests/modules/programs/fastfetch/basic-configuration.jsonc
@@ -0,0 +1,28 @@
+{
+ "display": {
+ "binaryPrefix": "si",
+ "color": "blue",
+ "separator": " "
+ },
+ "logo": {
+ "padding": {
+ "right": 1
+ },
+ "source": "nixos_small"
+ },
+ "modules": [
+ {
+ "format": "{1}-{3}-{11}",
+ "key": "Date",
+ "type": "datetime"
+ },
+ {
+ "format": "{14}:{17}:{20}",
+ "key": "Time",
+ "type": "datetime"
+ },
+ "break",
+ "player",
+ "media"
+ ]
+}
diff --git a/tests/modules/programs/fastfetch/basic-configuration.nix b/tests/modules/programs/fastfetch/basic-configuration.nix
new file mode 100644
index 00000000..a0b6783a
--- /dev/null
+++ b/tests/modules/programs/fastfetch/basic-configuration.nix
@@ -0,0 +1,39 @@
+{
+ programs.fastfetch = {
+ enable = true;
+ settings = {
+ logo = {
+ source = "nixos_small";
+ padding = { right = 1; };
+ };
+ display = {
+ binaryPrefix = "si";
+ color = "blue";
+ separator = " ";
+ };
+ modules = [
+ {
+ type = "datetime";
+ key = "Date";
+ format = "{1}-{3}-{11}";
+ }
+ {
+ type = "datetime";
+ key = "Time";
+ format = "{14}:{17}:{20}";
+ }
+ "break"
+ "player"
+ "media"
+ ];
+ };
+ };
+
+ test.stubs.fastfetch = { };
+
+ nmt.script = let configFile = "home-files/.config/fastfetch/config.jsonc";
+ in ''
+ assertFileExists "${configFile}"
+ assertFileContent "${configFile}" ${./basic-configuration.jsonc}
+ '';
+}
diff --git a/tests/modules/programs/fastfetch/default-configuration.nix b/tests/modules/programs/fastfetch/default-configuration.nix
new file mode 100644
index 00000000..428081d4
--- /dev/null
+++ b/tests/modules/programs/fastfetch/default-configuration.nix
@@ -0,0 +1,9 @@
+{
+ programs.fastfetch.enable = true;
+
+ test.stubs.fastfetch = { };
+
+ nmt.script = ''
+ assertPathNotExists "home-files/.config/fastfetch/config.jsonc"
+ '';
+}
diff --git a/tests/modules/programs/fastfetch/default.nix b/tests/modules/programs/fastfetch/default.nix
new file mode 100644
index 00000000..d347e562
--- /dev/null
+++ b/tests/modules/programs/fastfetch/default.nix
@@ -0,0 +1,4 @@
+{
+ fastfetch-default-configuration = ./default-configuration.nix;
+ fastfetch-basic-configuration = ./basic-configuration.nix;
+}
diff --git a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
index d19eab61..93bc195f 100644
--- a/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
+++ b/tests/modules/programs/firefox/profile-settings-expected-bookmarks.html
@@ -8,18 +8,18 @@
Bookmarks Toolbar
-
- Home Manager
+
- Home Manager
- wikipedia
- kernel.org
Nix sites
- homepage
-
- wiki
+
- wiki
Nix sites
- homepage
-
- wiki
+
- wiki
diff --git a/tests/modules/programs/firefox/profile-settings-expected-containers.json b/tests/modules/programs/firefox/profile-settings-expected-containers.json
index d1727cc2..8eea5555 100644
--- a/tests/modules/programs/firefox/profile-settings-expected-containers.json
+++ b/tests/modules/programs/firefox/profile-settings-expected-containers.json
@@ -1 +1 @@
-{"identities":[{"color":"yellow","icon":"circle","name":"shopping","public":true,"userContextId":6}],"lastUserContextId":6,"version":4}
+{"identities":[{"color":"yellow","icon":"circle","name":"shopping","public":true,"userContextId":6},{"accessKey":"","color":"","icon":"","name":"userContextIdInternal.thumbnail","public":false,"userContextId":4294967294},{"accessKey":"","color":"","icon":"","name":"userContextIdInternal.webextStorageLocal","public":false,"userContextId":4294967295}],"lastUserContextId":6,"version":4}
diff --git a/tests/modules/programs/firefox/profile-settings-expected-search.json b/tests/modules/programs/firefox/profile-settings-expected-search.json
index f17a0b91..832b6c09 100644
--- a/tests/modules/programs/firefox/profile-settings-expected-search.json
+++ b/tests/modules/programs/firefox/profile-settings-expected-search.json
@@ -31,8 +31,8 @@
"_definedAliases": [
"@nw"
],
- "_iconURL": "https://nixos.wiki/favicon.png",
- "_iconUpdateURL": "https://nixos.wiki/favicon.png",
+ "_iconURL": "https://wiki.nixos.org/favicon.png",
+ "_iconUpdateURL": "https://wiki.nixos.org/favicon.png",
"_isAppProvided": false,
"_loadPath": "[home-manager]/programs.firefox.profiles.search.search.engines.\"NixOS Wiki\"",
"_metaData": {
@@ -42,7 +42,7 @@
"_updateInterval": 86400000,
"_urls": [
{
- "template": "https://nixos.wiki/index.php?search={searchTerms}"
+ "template": "https://wiki.nixos.org/index.php?search={searchTerms}"
}
]
},
diff --git a/tests/modules/programs/firefox/profile-settings.nix b/tests/modules/programs/firefox/profile-settings.nix
index 94fa9436..8b781552 100644
--- a/tests/modules/programs/firefox/profile-settings.nix
+++ b/tests/modules/programs/firefox/profile-settings.nix
@@ -27,7 +27,7 @@
toolbar = true;
bookmarks = [{
name = "Home Manager";
- url = "https://nixos.wiki/wiki/Home_Manager";
+ url = "https://wiki.nixos.org/wiki/Home_Manager";
}];
}
{
@@ -51,7 +51,7 @@
{
name = "wiki";
tags = [ "wiki" "nix" ];
- url = "https://nixos.wiki/";
+ url = "https://wiki.nixos.org/";
}
{
name = "Nix sites";
@@ -62,7 +62,7 @@
}
{
name = "wiki";
- url = "https://nixos.wiki/";
+ url = "https://wiki.nixos.org/";
}
];
}
@@ -102,9 +102,10 @@
"NixOS Wiki" = {
urls = [{
- template = "https://nixos.wiki/index.php?search={searchTerms}";
+ template =
+ "https://wiki.nixos.org/index.php?search={searchTerms}";
}];
- iconUpdateURL = "https://nixos.wiki/favicon.png";
+ iconUpdateURL = "https://wiki.nixos.org/favicon.png";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@nw" ];
};
diff --git a/tests/modules/programs/freetube/basic-configuration.db b/tests/modules/programs/freetube/basic-configuration.db
new file mode 100644
index 00000000..50d43a11
--- /dev/null
+++ b/tests/modules/programs/freetube/basic-configuration.db
@@ -0,0 +1,8 @@
+{"_id":"allowDashAv1Formats","value":true}
+{"_id":"checkForBlogPosts","value":false}
+{"_id":"checkForUpdates","value":false}
+{"_id":"commentAutoLoadEnabled","value":true}
+{"_id":"defaultQuality","value":"1080"}
+{"_id":"hideHeaderLogo","value":true}
+{"_id":"listType","value":"list"}
+{"_id":"useRssFeeds","value":true}
diff --git a/tests/modules/programs/freetube/basic-configuration.nix b/tests/modules/programs/freetube/basic-configuration.nix
new file mode 100644
index 00000000..a30d3bed
--- /dev/null
+++ b/tests/modules/programs/freetube/basic-configuration.nix
@@ -0,0 +1,30 @@
+{ config, pkgs, ... }:
+
+{
+ programs.freetube = {
+ enable = true;
+ settings = {
+ useRssFeeds = true;
+ hideHeaderLogo = true;
+ allowDashAv1Formats = true;
+ commentAutoLoadEnabled = true;
+
+ checkForUpdates = false;
+ checkForBlogPosts = false;
+
+ listType = "list";
+ defaultQuality = "1080";
+ };
+ };
+
+ test.stubs.freetube = { };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/FreeTube/hm_settings.db
+ assertFileContent home-files/.config/FreeTube/hm_settings.db \
+ ${./basic-configuration.db}
+
+ assertFileContains activate \
+ "install -Dm644 \$VERBOSE_ARG '/home/hm-user/.config/FreeTube/hm_settings.db' '/home/hm-user/.config/FreeTube/settings.db'"
+ '';
+}
diff --git a/tests/modules/programs/freetube/default.nix b/tests/modules/programs/freetube/default.nix
new file mode 100644
index 00000000..cb6fd4d2
--- /dev/null
+++ b/tests/modules/programs/freetube/default.nix
@@ -0,0 +1 @@
+{ freetube-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/programs/git/git-with-email-expected.conf b/tests/modules/programs/git/git-with-email-expected.conf
index c34ab1d7..fa027422 100644
--- a/tests/modules/programs/git/git-with-email-expected.conf
+++ b/tests/modules/programs/git/git-with-email-expected.conf
@@ -1,12 +1,12 @@
[sendemail "hm-account"]
- from = "hm@example.org"
+ from = "H. M. Test Jr. "
smtpEncryption = "tls"
smtpServer = "smtp.example.org"
smtpSslCertPath = "/etc/test/certificates.crt"
smtpUser = "home.manager.jr"
[sendemail "hm@example.com"]
- from = "hm@example.com"
+ from = "H. M. Test "
smtpEncryption = "ssl"
smtpServer = "smtp.example.com"
smtpSslCertPath = "/etc/ssl/certs/ca-certificates.crt"
diff --git a/tests/modules/programs/git/git-with-email.nix b/tests/modules/programs/git/git-with-email.nix
index ec18ecb9..0999eaa8 100644
--- a/tests/modules/programs/git/git-with-email.nix
+++ b/tests/modules/programs/git/git-with-email.nix
@@ -33,8 +33,8 @@ with lib;
./git-with-email-expected.conf
}
- assertGitConfig "sendemail.hm@example.com.from" "hm@example.com"
- assertGitConfig "sendemail.hm-account.from" "hm@example.org"
+ assertGitConfig "sendemail.hm@example.com.from" "H. M. Test "
+ assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. "
'';
};
}
diff --git a/tests/modules/programs/git/git-with-msmtp-expected.conf b/tests/modules/programs/git/git-with-msmtp-expected.conf
index 1f2c7b79..8cd5d86f 100644
--- a/tests/modules/programs/git/git-with-msmtp-expected.conf
+++ b/tests/modules/programs/git/git-with-msmtp-expected.conf
@@ -1,5 +1,5 @@
[sendemail "hm-account"]
- from = "hm@example.org"
+ from = "H. M. Test Jr. "
smtpEncryption = "tls"
smtpServer = "smtp.example.org"
smtpSslCertPath = "/etc/ssl/certs/ca-certificates.crt"
@@ -7,7 +7,7 @@
[sendemail "hm@example.com"]
envelopeSender = "auto"
- from = "hm@example.com"
+ from = "H. M. Test "
smtpServer = "@msmtp@/bin/msmtp"
[user]
diff --git a/tests/modules/programs/git/git-with-msmtp.nix b/tests/modules/programs/git/git-with-msmtp.nix
index dc6ba465..80e082c9 100644
--- a/tests/modules/programs/git/git-with-msmtp.nix
+++ b/tests/modules/programs/git/git-with-msmtp.nix
@@ -7,6 +7,7 @@ with lib;
config = {
accounts.email.accounts."hm@example.com".msmtp.enable = true;
+
programs.git = {
enable = true;
package = pkgs.gitMinimal;
@@ -33,8 +34,8 @@ with lib;
assertFileContent home-files/.config/git/config \
${./git-with-msmtp-expected.conf}
- assertGitConfig "sendemail.hm@example.com.from" "hm@example.com"
- assertGitConfig "sendemail.hm-account.from" "hm@example.org"
+ assertGitConfig "sendemail.hm@example.com.from" "H. M. Test "
+ assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. "
assertGitConfig "sendemail.hm@example.com.smtpServer" "${pkgs.msmtp}/bin/msmtp"
assertGitConfig "sendemail.hm@example.com.envelopeSender" "auto"
'';
diff --git a/tests/modules/programs/gnome-shell/default.nix b/tests/modules/programs/gnome-shell/default.nix
new file mode 100644
index 00000000..58e4598f
--- /dev/null
+++ b/tests/modules/programs/gnome-shell/default.nix
@@ -0,0 +1 @@
+{ gnome-shell = ./gnome-shell.nix; }
diff --git a/tests/modules/programs/gnome-shell/gnome-shell.nix b/tests/modules/programs/gnome-shell/gnome-shell.nix
new file mode 100644
index 00000000..02f44e0c
--- /dev/null
+++ b/tests/modules/programs/gnome-shell/gnome-shell.nix
@@ -0,0 +1,94 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ dummy-gnome-shell-extensions = pkgs.runCommand "dummy-package" { } ''
+ mkdir -p $out/share/gnome-shell/extensions/dummy-package
+ touch $out/share/gnome-shell/extensions/dummy-package/test
+ '';
+
+ test-extension = pkgs.runCommand "test-extension" { } ''
+ mkdir -p $out/share/gnome-shell/extensions/test-extension
+ touch $out/share/gnome-shell/extensions/test-extension/test
+ '';
+
+ test-extension-uuid = pkgs.runCommand "test-extension-uuid" {
+ passthru.extensionUuid = "test-extension-uuid";
+ } ''
+ mkdir -p $out/share/gnome-shell/extensions/test-extension-uuid
+ touch $out/share/gnome-shell/extensions/test-extension-uuid/test
+ '';
+
+ test-theme = pkgs.runCommand "test-theme" { } ''
+ mkdir -p $out/share/themes/Test/gnome-shell
+ touch $out/share/themes/Test/gnome-shell/test
+ '';
+
+ expectedEnabledExtensions = [
+ "user-theme@gnome-shell-extensions.gcampax.github.com"
+ "test-extension"
+ "test-extension-uuid"
+ ];
+
+ actualEnabledExtensions = catAttrs "value"
+ config.dconf.settings."org/gnome/shell".enabled-extensions.value;
+
+in {
+ nixpkgs.overlays = [
+ (self: super: {
+ gnome = super.gnome.overrideScope (gself: gsuper: {
+ gnome-shell-extensions = dummy-gnome-shell-extensions;
+ });
+ })
+ ];
+
+ programs.gnome-shell.enable = true;
+
+ programs.gnome-shell.extensions = [
+ {
+ id = "test-extension";
+ package = test-extension;
+ }
+ { package = test-extension-uuid; }
+ ];
+
+ programs.gnome-shell.theme = {
+ name = "Test";
+ package = test-theme;
+ };
+
+ assertions = [
+ {
+ assertion =
+ config.dconf.settings."org/gnome/shell".disable-user-extensions
+ == false;
+ message = "Expected disable-user-extensions to be false.";
+ }
+ {
+ assertion =
+ all (e: elem e actualEnabledExtensions) expectedEnabledExtensions;
+ message = ''
+ Expected enabled-extensions to contain all of:
+ ${toString expectedEnabledExtensions}
+ But it was:
+ ${toString actualEnabledExtensions}
+ '';
+ }
+ {
+ assertion =
+ config.dconf.settings."org/gnome/shell/extensions/user-theme".name
+ == "Test";
+ message = "Expected extensions/user-theme/name to be 'Test'.";
+ }
+ ];
+
+ test.stubs.dconf = { };
+
+ nmt.script = ''
+ assertFileExists home-path/share/gnome-shell/extensions/dummy-package/test
+ assertFileExists home-path/share/gnome-shell/extensions/test-extension/test
+ assertFileExists home-path/share/gnome-shell/extensions/test-extension-uuid/test
+ assertFileExists home-path/share/themes/Test/gnome-shell/test
+ '';
+}
diff --git a/tests/modules/programs/helix/example-settings.nix b/tests/modules/programs/helix/example-settings.nix
index 86c6766a..c60883a1 100644
--- a/tests/modules/programs/helix/example-settings.nix
+++ b/tests/modules/programs/helix/example-settings.nix
@@ -43,6 +43,8 @@ with lib;
}];
};
+ ignores = [ ".build/" "!.gitignore" ];
+
themes = {
base16 = let
transparent = "none";
@@ -131,6 +133,9 @@ with lib;
assertFileContent \
home-files/.config/helix/languages.toml \
${./languages-expected.toml}
+ assertFileContent \
+ home-files/.config/helix/ignore \
+ ${./ignore-expected}
assertFileContent \
home-files/.config/helix/themes/base16.toml \
${./theme-base16-expected.toml}
diff --git a/tests/modules/programs/helix/ignore-expected b/tests/modules/programs/helix/ignore-expected
new file mode 100644
index 00000000..fe1c7398
--- /dev/null
+++ b/tests/modules/programs/helix/ignore-expected
@@ -0,0 +1,2 @@
+.build/
+!.gitignore
diff --git a/tests/modules/programs/hyprlock/basic-configuration.conf b/tests/modules/programs/hyprlock/basic-configuration.conf
new file mode 100644
index 00000000..3fdf9ce3
--- /dev/null
+++ b/tests/modules/programs/hyprlock/basic-configuration.conf
@@ -0,0 +1,27 @@
+background {
+ monitor=
+ blur_passes=3
+ blur_size=8
+ path=screenshot
+}
+
+general {
+ disable_loading_bar=true
+ grace=300
+ hide_cursor=true
+ no_fade_in=false
+}
+
+input-field {
+ monitor=
+ size=200, 50
+ dots_center=true
+ fade_on_empty=false
+ font_color=rgb(202, 211, 245)
+ inner_color=rgb(91, 96, 120)
+ outer_color=rgb(24, 25, 38)
+ outline_thickness=5
+ placeholder_text=Password...
+ position=0, -80
+ shadow_passes=2
+}
diff --git a/tests/modules/programs/hyprlock/basic-configuration.nix b/tests/modules/programs/hyprlock/basic-configuration.nix
new file mode 100644
index 00000000..c4f6821e
--- /dev/null
+++ b/tests/modules/programs/hyprlock/basic-configuration.nix
@@ -0,0 +1,45 @@
+{ ... }:
+
+{
+ programs.hyprlock = {
+ enable = true;
+
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ grace = 300;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+
+ background = [{
+ monitor = "";
+ path = "screenshot";
+ blur_passes = 3;
+ blur_size = 8;
+ }];
+
+ input-field = [{
+ size = "200, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(202, 211, 245)";
+ inner_color = "rgb(91, 96, 120)";
+ outer_color = "rgb(24, 25, 38)";
+ outline_thickness = 5;
+ placeholder_text = ''Password...'';
+ shadow_passes = 2;
+ }];
+ };
+ };
+
+ test.stubs.hyprlock = { };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/hypr/hyprlock.conf \
+ ${./basic-configuration.conf}
+ '';
+}
diff --git a/tests/modules/programs/hyprlock/complex-configuration.conf b/tests/modules/programs/hyprlock/complex-configuration.conf
new file mode 100644
index 00000000..1936f43f
--- /dev/null
+++ b/tests/modules/programs/hyprlock/complex-configuration.conf
@@ -0,0 +1,167 @@
+background {
+ monitor=
+ blur_passes=3
+ blur_size=8
+ brightness=0.817200
+ color=rgba(25, 20, 20, 1.0)
+ contrast=0.891700
+ noise=0.011700
+ path=screenshot
+ vibrancy=0.168600
+ vibrancy_darkness=0.050000
+}
+
+general {
+ disable_loading_bar=true
+ grace=300
+ hide_cursor=true
+ ignore_empty_input=false
+ no_fade_in=false
+ no_fade_out=false
+}
+
+image {
+ monitor=
+ size=120
+ border_color=rgb(202, 211, 245)
+ border_size=5
+ halign=center
+ path=/home/$USER/.face
+ position=0, 45
+ reload_cmd=
+ reload_time=-1
+ rotate=0.000000
+ rounding=-1
+ shadow_passes=1
+ valign=center
+}
+
+input-field {
+ monitor=
+ size=200, 50
+ bothlock_color=-1
+ capslock_color=-1
+ check_color=rgb(204, 136, 34)
+ dots_center=true
+ dots_rounding=-1
+ dots_size=0.330000
+ dots_spacing=0.150000
+ fade_on_empty=false
+ fade_timeout=2000
+ fail_color=rgb(204, 34, 34)
+ fail_text=$FAIL
+ fail_transition=300
+ font_color=rgb(202, 211, 245)
+ halign=center
+ hide_input=false
+ inner_color=rgb(91, 96, 120)
+ invert_numlock=false
+ numlock_color=-1
+ outer_color=rgb(24, 25, 38)
+ outline_thickness=5
+ placeholder_text=Password...
+ position=0, -80
+ rounding=-1
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=2
+ shadow_size=3
+ swap_font_color=false
+ valign=center
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=100
+ halign=center
+ position=0, 330
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=2
+ shadow_size=3
+ text=$TIME
+ valign=center
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=25
+ halign=left
+ position=10, 0
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=1
+ shadow_size=3
+ text= $USER
+ valign=top
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=50
+ halign=center
+ position=15, -350
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=1
+ shadow_size=3
+ text=
+ valign=center
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=25
+ halign=center
+ position=0, -430
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=1
+ shadow_size=3
+ text=Locked
+ valign=center
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=30
+ halign=center
+ position=0, 210
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=1
+ shadow_size=3
+ text=cmd[update:120000] echo "$(date +'%a %d %B')"
+ valign=center
+}
+
+label {
+ monitor=
+ color=rgb(202, 211, 245)
+ font_family=MonaspiceNe Nerd Font
+ font_size=25
+ halign=right
+ position=5, 8
+ rotate=0.000000
+ shadow_boost=1.200000
+ shadow_color=rgba(0, 0, 0, 1.0)
+ shadow_passes=1
+ shadow_size=3
+ text=
+ valign=bottom
+}
diff --git a/tests/modules/programs/hyprlock/complex-configuration.nix b/tests/modules/programs/hyprlock/complex-configuration.nix
new file mode 100644
index 00000000..8544a8c5
--- /dev/null
+++ b/tests/modules/programs/hyprlock/complex-configuration.nix
@@ -0,0 +1,183 @@
+{ ... }:
+
+{
+ programs.hyprlock = {
+ enable = true;
+
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ hide_cursor = true;
+ ignore_empty_input = false;
+ grace = 300;
+ no_fade_in = false;
+ no_fade_out = false;
+ };
+
+ background = [{
+ monitor = "";
+ brightness = "0.817200";
+ color = "rgba(25, 20, 20, 1.0)";
+ path = "screenshot";
+ blur_passes = 3;
+ blur_size = 8;
+ contrast = "0.891700";
+ noise = "0.011700";
+ vibrancy = "0.168600";
+ vibrancy_darkness = "0.050000";
+ }];
+
+ input-field = [{
+ monitor = "";
+ size = "200, 50";
+ position = "0, -80";
+ outline_thickness = 5;
+ dots_center = true;
+ outer_color = "rgb(24, 25, 38)";
+ inner_color = "rgb(91, 96, 120)";
+ font_color = "rgb(202, 211, 245)";
+ fade_on_empty = false;
+ placeholder_text = ''Password...'';
+ shadow_passes = 2;
+ bothlock_color = -1;
+ capslock_color = "-1";
+ check_color = "rgb(204, 136, 34)";
+ dots_rounding = "-1";
+ dots_size = "0.330000";
+ dots_spacing = "0.150000";
+ fade_timeout = "2000";
+ fail_color = "rgb(204, 34, 34)";
+ fail_text = "$FAIL";
+ fail_transition = 300;
+ halign = "center";
+ hide_input = false;
+ invert_numlock = false;
+ numlock_color = -1;
+ rounding = -1;
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ swap_font_color = false;
+ valign = "center";
+ }];
+
+ image = [{
+ monitor = "";
+ size = 120;
+ position = "0, 45";
+ path = "/home/$USER/.face";
+ border_color = "rgb(202, 211, 245)";
+ border_size = 5;
+ halign = "center";
+ valign = "center";
+ shadow_passes = 1;
+ reload_cmd = "";
+ reload_time = -1;
+ rotate = "0.000000";
+ rounding = "-1";
+ }];
+
+ label = [
+ {
+ monitor = "";
+ text = ''$TIME'';
+ color = "rgb(202, 211, 245)";
+ font_size = 100;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "center";
+ halign = "center";
+ position = "0, 330";
+ shadow_passes = 2;
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ }
+ {
+ monitor = "";
+ text = '' $USER'';
+ color = "rgb(202, 211, 245)";
+ font_size = 25;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "top";
+ halign = "left";
+ position = "10, 0";
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ shadow_passes = 1;
+ }
+ {
+ monitor = "";
+ text = '' '';
+ color = "rgb(202, 211, 245)";
+ font_size = 50;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "center";
+ halign = "center";
+ position = "15, -350";
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ shadow_passes = 1;
+ }
+ {
+ monitor = "";
+ text = ''Locked'';
+ color = "rgb(202, 211, 245)";
+ font_size = 25;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "center";
+ halign = "center";
+ position = "0, -430";
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ shadow_passes = 1;
+ }
+ {
+ monitor = "";
+ text = ''
+ cmd[update:120000] echo "$(date +'%a %d %B')"'';
+ color = "rgb(202, 211, 245)";
+ font_size = 30;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "center";
+ halign = "center";
+ position = "0, 210";
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ shadow_passes = 1;
+ }
+ {
+ monitor = "";
+ text = '' '';
+ color = "rgb(202, 211, 245)";
+ font_size = 25;
+ font_family = "MonaspiceNe Nerd Font";
+ valign = "bottom";
+ halign = "right";
+ position = "5, 8";
+ rotate = "0.000000";
+ shadow_boost = "1.200000";
+ shadow_color = "rgba(0, 0, 0, 1.0)";
+ shadow_size = 3;
+ shadow_passes = 1;
+ }
+ ];
+ };
+ };
+
+ test.stubs.hyprlock = { };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/hypr/hyprlock.conf \
+ ${./complex-configuration.conf}
+ '';
+}
diff --git a/tests/modules/programs/hyprlock/default.nix b/tests/modules/programs/hyprlock/default.nix
new file mode 100644
index 00000000..3ea18c02
--- /dev/null
+++ b/tests/modules/programs/hyprlock/default.nix
@@ -0,0 +1,4 @@
+{
+ hyprlock-basic-configuration = ./basic-configuration.nix;
+ hyprlock-complex-configuration = ./complex-configuration.nix;
+}
diff --git a/tests/modules/programs/jujutsu/empty-config.nix b/tests/modules/programs/jujutsu/empty-config.nix
index 12c4a2f5..10dd1258 100644
--- a/tests/modules/programs/jujutsu/empty-config.nix
+++ b/tests/modules/programs/jujutsu/empty-config.nix
@@ -6,6 +6,6 @@
test.stubs.jujutsu = { };
nmt.script = ''
- assertPathNotExists home-files/.jjconfig.toml
+ assertPathNotExists home-files/.config/jj/config.toml
'';
}
diff --git a/tests/modules/programs/jujutsu/example-config.nix b/tests/modules/programs/jujutsu/example-config.nix
index 06b68f18..d83b552b 100644
--- a/tests/modules/programs/jujutsu/example-config.nix
+++ b/tests/modules/programs/jujutsu/example-config.nix
@@ -13,9 +13,9 @@
};
nmt.script = ''
- assertFileExists home-files/.jjconfig.toml
+ assertFileExists home-files/.config/jj/config.toml
assertFileContent \
- home-files/.jjconfig.toml \
+ home-files/.config/jj/config.toml \
${
builtins.toFile "expected.toml" ''
[user]
diff --git a/tests/modules/programs/k9s/empty-settings.nix b/tests/modules/programs/k9s/empty-settings.nix
index 5084be4f..35534005 100644
--- a/tests/modules/programs/k9s/empty-settings.nix
+++ b/tests/modules/programs/k9s/empty-settings.nix
@@ -1,11 +1,17 @@
-{ ... }:
+{ pkgs, lib, ... }: {
-{
programs.k9s.enable = true;
+ xdg.enable = lib.mkIf pkgs.stdenv.isDarwin (lib.mkForce false);
+
test.stubs.k9s = { };
- nmt.script = ''
- assertPathNotExists home-files/.config/k9s
+ nmt.script = let
+ configDir = if !pkgs.stdenv.isDarwin then
+ ".config/k9s"
+ else
+ "Library/Application Support/k9s";
+ in ''
+ assertPathNotExists home-files/${configDir}
'';
}
diff --git a/tests/modules/programs/k9s/example-settings.nix b/tests/modules/programs/k9s/example-settings.nix
index 7816a050..23a42120 100644
--- a/tests/modules/programs/k9s/example-settings.nix
+++ b/tests/modules/programs/k9s/example-settings.nix
@@ -1,6 +1,8 @@
-{ config, ... }:
+{ config, pkgs, lib, ... }:
{
+ xdg.enable = lib.mkIf pkgs.stdenv.isDarwin (lib.mkForce false);
+
programs.k9s = {
enable = true;
package = config.lib.test.mkStubPackage { };
@@ -76,34 +78,39 @@
};
};
- nmt.script = ''
- assertFileExists home-files/.config/k9s/config.yaml
+ nmt.script = let
+ configDir = if !pkgs.stdenv.isDarwin then
+ ".config/k9s"
+ else
+ "Library/Application Support/k9s";
+ in ''
+ assertFileExists "home-files/${configDir}/config.yaml"
assertFileContent \
- home-files/.config/k9s/config.yaml \
+ "home-files/${configDir}/config.yaml" \
${./example-config-expected.yaml}
- assertFileExists home-files/.config/k9s/skins/default.yaml
+ assertFileExists "home-files/${configDir}/skins/default.yaml"
assertFileContent \
- home-files/.config/k9s/skins/default.yaml \
+ "home-files/${configDir}/skins/default.yaml" \
${./example-skin-expected.yaml}
- assertFileExists home-files/.config/k9s/skins/alt-skin.yaml
+ assertFileExists "home-files/${configDir}/skins/alt-skin.yaml"
assertFileContent \
- home-files/.config/k9s/skins/alt-skin.yaml \
+ "home-files/${configDir}/skins/alt-skin.yaml" \
${./example-skin-expected-alt.yaml}
- assertFileExists home-files/.config/k9s/hotkey.yaml
+ assertFileExists "home-files/${configDir}/hotkeys.yaml"
assertFileContent \
- home-files/.config/k9s/hotkey.yaml \
+ "home-files/${configDir}/hotkeys.yaml" \
${./example-hotkey-expected.yaml}
- assertFileExists home-files/.config/k9s/aliases.yaml
+ assertFileExists "home-files/${configDir}/aliases.yaml"
assertFileContent \
- home-files/.config/k9s/aliases.yaml \
+ "home-files/${configDir}/aliases.yaml" \
${./example-aliases-expected.yaml}
- assertFileExists home-files/.config/k9s/plugin.yaml
+ assertFileExists "home-files/${configDir}/plugins.yaml"
assertFileContent \
- home-files/.config/k9s/plugin.yaml \
+ "home-files/${configDir}/plugins.yaml" \
${./example-plugin-expected.yaml}
- assertFileExists home-files/.config/k9s/views.yaml
+ assertFileExists "home-files/${configDir}/views.yaml"
assertFileContent \
- home-files/.config/k9s/views.yaml \
+ "home-files/${configDir}/views.yaml" \
${./example-views-expected.yaml}
'';
}
diff --git a/tests/modules/programs/mpv/mpv-example-settings-expected-bindings b/tests/modules/programs/mpv/mpv-example-settings-expected-bindings
index 7a2ee13b..d4ff9c4d 100644
--- a/tests/modules/programs/mpv/mpv-example-settings-expected-bindings
+++ b/tests/modules/programs/mpv/mpv-example-settings-expected-bindings
@@ -1,3 +1,4 @@
Alt+0 set window-scale 0.5
WHEEL_DOWN seek -10
-WHEEL_UP seek 10
\ No newline at end of file
+WHEEL_UP seek 10
+# script-binding uosc/video #! Video tracks
diff --git a/tests/modules/programs/mpv/mpv-example-settings.nix b/tests/modules/programs/mpv/mpv-example-settings.nix
index 9974aff6..002e071c 100644
--- a/tests/modules/programs/mpv/mpv-example-settings.nix
+++ b/tests/modules/programs/mpv/mpv-example-settings.nix
@@ -12,6 +12,10 @@
"Alt+0" = "set window-scale 0.5";
};
+ extraInput = ''
+ # script-binding uosc/video #! Video tracks
+ '';
+
config = {
force-window = true;
ytdl-format = "bestvideo+bestaudio";
diff --git a/tests/modules/programs/neomutt/neomutt-expected.conf b/tests/modules/programs/neomutt/neomutt-expected.conf
index 94c13b29..2a45234d 100644
--- a/tests/modules/programs/neomutt/neomutt-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-expected.conf
@@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
# Macros
-
-
# Register accounts
# register account hm@example.com
mailboxes "/home/hm-user/Mail/hm@example.com/Inbox"
diff --git a/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf b/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf
index cffdace6..47dc8173 100644
--- a/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-not-primary-expected.conf
@@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
# Macros
-
-
# Register accounts
# register account hm-account
mailboxes "/home/hm-user/Mail/hm-account/Inbox"
diff --git a/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf b/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf
index 64ea6890..05736749 100644
--- a/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-with-binds-expected.conf
@@ -9,6 +9,8 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
bind editor "complete-query"
bind index,pager \Cp "sidebar-prev"
@@ -17,8 +19,6 @@ bind index,pager \Cp "sidebar-prev"
macro index s "?"
macro index,pager c "?^K="
-
-
# Register accounts
# register account hm@example.com
mailboxes "/home/hm-user/Mail/hm@example.com/Inbox"
diff --git a/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf b/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf
index 005fd5b0..02f03f6e 100644
--- a/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-with-imap-expected.conf
@@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
# Macros
-
-
# Register accounts
set account_command = '/nix/store/00000000000000000000000000000000-account-command.sh/bin/account-command.sh'
# register account hm@example.com
diff --git a/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf b/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf
index c6838d4c..51c6c6b9 100644
--- a/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-with-imap-type-mailboxes-expected.conf
@@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
# Macros
-
-
# Register accounts
set account_command = '/nix/store/00000000000000000000000000000000-account-command.sh/bin/account-command.sh'
# register account hm@example.com
diff --git a/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf b/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf
index a166b355..605b5ed6 100644
--- a/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf
+++ b/tests/modules/programs/neomutt/neomutt-with-named-mailboxes-expected.conf
@@ -9,14 +9,14 @@ alternative_order text/enriched text/plain text
set delete = yes
+
+
# Binds
# Macros
-
-
# Register accounts
# register account hm@example.com
named-mailboxes "someCustomName" "/home/hm-user/Mail/hm@example.com/Inbox"
diff --git a/tests/modules/programs/neovim/runtime.nix b/tests/modules/programs/neovim/runtime.nix
index b9d9638a..7f39c846 100644
--- a/tests/modules/programs/neovim/runtime.nix
+++ b/tests/modules/programs/neovim/runtime.nix
@@ -20,6 +20,17 @@ with lib;
};
}
];
+ extraWrapperArgs = let buildDeps = with pkgs; [ stdenv.cc.cc zlib ];
+ in [
+ "--suffix"
+ "LIBRARY_PATH"
+ ":"
+ "${lib.makeLibraryPath buildDeps}"
+ "--suffix"
+ "PKG_CONFIG_PATH"
+ ":"
+ "${lib.makeSearchPathOutput "dev" "lib/pkgconfig" buildDeps}"
+ ];
}
{
extraPython3Packages = ps: with ps; [ jedi pynvim ];
@@ -33,7 +44,10 @@ with lib;
nmt.script = ''
ftplugin="home-files/.config/nvim/after/ftplugin/c.vim"
+ nvimbin="home-path/bin/nvim"
assertFileExists "$ftplugin"
+ assertFileRegex "$nvimbin" 'LIBRARY_PATH'
+ assertFileRegex "$nvimbin" 'PKG_CONFIG_PATH'
'';
};
}
diff --git a/tests/modules/programs/nushell/example-settings.nix b/tests/modules/programs/nushell/example-settings.nix
index 73038584..d870eb9d 100644
--- a/tests/modules/programs/nushell/example-settings.nix
+++ b/tests/modules/programs/nushell/example-settings.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
{
programs.nushell = {
@@ -34,7 +34,7 @@
test.stubs.nushell = { };
nmt.script = let
- configDir = if pkgs.stdenv.isDarwin then
+ configDir = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell"
else
"home-files/.config/nushell";
diff --git a/tests/modules/programs/oh-my-posh/nushell.nix b/tests/modules/programs/oh-my-posh/nushell.nix
index ad77f821..da4ffafd 100644
--- a/tests/modules/programs/oh-my-posh/nushell.nix
+++ b/tests/modules/programs/oh-my-posh/nushell.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
{
programs = {
@@ -16,12 +16,12 @@
};
nmt.script = let
- configFile = if pkgs.stdenv.isDarwin then
+ configFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell/config.nu"
else
"home-files/.config/nushell/config.nu";
- envFile = if pkgs.stdenv.isDarwin then
+ envFile = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell/env.nu"
else
"home-files/.config/nushell/env.nu";
diff --git a/tests/modules/programs/poetry/custom-settings.nix b/tests/modules/programs/poetry/custom-settings.nix
new file mode 100644
index 00000000..fc979306
--- /dev/null
+++ b/tests/modules/programs/poetry/custom-settings.nix
@@ -0,0 +1,27 @@
+{ pkgs, ... }:
+
+{
+ programs.poetry = {
+ enable = true;
+ settings = {
+ virtualenvs.create = true;
+ virtualenvs.in-project = true;
+ };
+ };
+
+ test.stubs.poetry = { };
+
+ nmt.script = let
+ expectedConfDir =
+ if pkgs.stdenv.isDarwin then "Library/Application Support" else ".config";
+ expectedConfigPath = "home-files/${expectedConfDir}/pypoetry/config.toml";
+ expectedConfigContent = pkgs.writeText "poetry.config-custom.expected" ''
+ [virtualenvs]
+ create = true
+ in-project = true
+ '';
+ in ''
+ assertFileExists "${expectedConfigPath}"
+ assertFileContent "${expectedConfigPath}" "${expectedConfigContent}"
+ '';
+}
diff --git a/tests/modules/programs/poetry/default-settings.nix b/tests/modules/programs/poetry/default-settings.nix
new file mode 100644
index 00000000..145cf18a
--- /dev/null
+++ b/tests/modules/programs/poetry/default-settings.nix
@@ -0,0 +1,15 @@
+{ pkgs, ... }:
+
+{
+ programs.poetry = { enable = true; };
+
+ test.stubs.poetry = { };
+
+ nmt.script = let
+ expectedConfDir =
+ if pkgs.stdenv.isDarwin then "Library/Application Support" else ".config";
+ expectedConfigPath = "home-files/${expectedConfDir}/pypoetry/config.toml";
+ in ''
+ assertPathNotExists "${expectedConfigPath}"
+ '';
+}
diff --git a/tests/modules/programs/poetry/default.nix b/tests/modules/programs/poetry/default.nix
new file mode 100644
index 00000000..50af2a33
--- /dev/null
+++ b/tests/modules/programs/poetry/default.nix
@@ -0,0 +1,4 @@
+{
+ poetry-default-settings = ./default-settings.nix;
+ poetry-custom-settings = ./custom-settings.nix;
+}
diff --git a/tests/modules/programs/spotify-player/app.toml b/tests/modules/programs/spotify-player/app.toml
new file mode 100644
index 00000000..408e84b0
--- /dev/null
+++ b/tests/modules/programs/spotify-player/app.toml
@@ -0,0 +1,9 @@
+playback_window_position = "Top"
+theme = "default"
+[copy_command]
+args = []
+command = "wl-copy"
+
+[device]
+audio_cache = false
+normalization = false
diff --git a/tests/modules/programs/spotify-player/default.nix b/tests/modules/programs/spotify-player/default.nix
new file mode 100644
index 00000000..9812b128
--- /dev/null
+++ b/tests/modules/programs/spotify-player/default.nix
@@ -0,0 +1 @@
+{ spotify-player-settings = ./settings.nix; }
diff --git a/tests/modules/programs/spotify-player/keymap.toml b/tests/modules/programs/spotify-player/keymap.toml
new file mode 100644
index 00000000..d11c86e4
--- /dev/null
+++ b/tests/modules/programs/spotify-player/keymap.toml
@@ -0,0 +1,19 @@
+[[keymaps]]
+command = "NextTrack"
+key_sequence = "g n"
+
+[[keymaps]]
+command = "PreviousTrack"
+key_sequence = "g p"
+
+[[keymaps]]
+command = "Search"
+key_sequence = "C-c C-x /"
+
+[[keymaps]]
+command = "ResumePause"
+key_sequence = "M-enter"
+
+[[keymaps]]
+command = "None"
+key_sequence = "q"
diff --git a/tests/modules/programs/spotify-player/settings.nix b/tests/modules/programs/spotify-player/settings.nix
new file mode 100644
index 00000000..dc7fe8c6
--- /dev/null
+++ b/tests/modules/programs/spotify-player/settings.nix
@@ -0,0 +1,103 @@
+{
+ programs.spotify-player = {
+ enable = true;
+
+ settings = {
+ theme = "default";
+ playback_window_position = "Top";
+ copy_command = {
+ command = "wl-copy";
+ args = [ ];
+ };
+ device = {
+ audio_cache = false;
+ normalization = false;
+ };
+ };
+
+ themes = [{
+ name = "default2";
+ palette = {
+ black = "black";
+ red = "red";
+ green = "green";
+ yellow = "yellow";
+ blue = "blue";
+ magenta = "magenta";
+ cyan = "cyan";
+ white = "white";
+ bright_black = "bright_black";
+ bright_red = "bright_red";
+ bright_green = "bright_green";
+ bright_yellow = "bright_yellow";
+ bright_blue = "bright_blue";
+ bright_magenta = "bright_magenta";
+ bright_cyan = "bright_cyan";
+ bright_white = "bright_white";
+ };
+ component_style = {
+ block_title = { fg = "Magenta"; };
+ border = { };
+ playback_track = {
+ fg = "Cyan";
+ modifiers = [ "Bold" ];
+ };
+ playback_artists = {
+ fg = "Cyan";
+ modifiers = [ "Bold" ];
+ };
+ playback_album = { fg = "Yellow"; };
+ playback_metadata = { fg = "BrightBlack"; };
+ playback_progress_bar = {
+ bg = "BrightBlack";
+ fg = "Green";
+ };
+ current_playing = {
+ fg = "Green";
+ modifiers = [ "Bold" ];
+ };
+ page_desc = {
+ fg = "Cyan";
+ modifiers = [ "Bold" ];
+ };
+ table_header = { fg = "Blue"; };
+ selection = { modifiers = [ "Bold" "Reversed" ]; };
+ };
+ }];
+
+ keymaps = [
+ {
+ command = "NextTrack";
+ key_sequence = "g n";
+ }
+ {
+ command = "PreviousTrack";
+ key_sequence = "g p";
+ }
+ {
+ command = "Search";
+ key_sequence = "C-c C-x /";
+ }
+ {
+ command = "ResumePause";
+ key_sequence = "M-enter";
+ }
+ {
+ command = "None";
+ key_sequence = "q";
+ }
+ ];
+ };
+
+ test.stubs.spotify-player = { };
+
+ nmt.script = ''
+ assertFileContent home-files/.config/spotify-player/app.toml ${./app.toml}
+ assertFileContent home-files/.config/spotify-player/theme.toml ${
+ ./theme.toml
+ }
+ assertFileContent home-files/.config/spotify-player/keymap.toml ${
+ ./keymap.toml
+ }
+ '';
+}
diff --git a/tests/modules/programs/spotify-player/theme.toml b/tests/modules/programs/spotify-player/theme.toml
new file mode 100644
index 00000000..cb5fa99d
--- /dev/null
+++ b/tests/modules/programs/spotify-player/theme.toml
@@ -0,0 +1,58 @@
+[[themes]]
+name = "default2"
+
+[themes.component_style]
+[themes.component_style.block_title]
+fg = "Magenta"
+
+[themes.component_style.border]
+
+[themes.component_style.current_playing]
+fg = "Green"
+modifiers = ["Bold"]
+
+[themes.component_style.page_desc]
+fg = "Cyan"
+modifiers = ["Bold"]
+
+[themes.component_style.playback_album]
+fg = "Yellow"
+
+[themes.component_style.playback_artists]
+fg = "Cyan"
+modifiers = ["Bold"]
+
+[themes.component_style.playback_metadata]
+fg = "BrightBlack"
+
+[themes.component_style.playback_progress_bar]
+bg = "BrightBlack"
+fg = "Green"
+
+[themes.component_style.playback_track]
+fg = "Cyan"
+modifiers = ["Bold"]
+
+[themes.component_style.selection]
+modifiers = ["Bold", "Reversed"]
+
+[themes.component_style.table_header]
+fg = "Blue"
+
+[themes.palette]
+black = "black"
+blue = "blue"
+bright_black = "bright_black"
+bright_blue = "bright_blue"
+bright_cyan = "bright_cyan"
+bright_green = "bright_green"
+bright_magenta = "bright_magenta"
+bright_red = "bright_red"
+bright_white = "bright_white"
+bright_yellow = "bright_yellow"
+cyan = "cyan"
+green = "green"
+magenta = "magenta"
+red = "red"
+white = "white"
+yellow = "yellow"
diff --git a/tests/modules/programs/thefuck/integration-disabled.nix b/tests/modules/programs/thefuck/integration-disabled.nix
index 9a55efac..45696359 100644
--- a/tests/modules/programs/thefuck/integration-disabled.nix
+++ b/tests/modules/programs/thefuck/integration-disabled.nix
@@ -6,8 +6,10 @@
thefuck.enableBashIntegration = false;
thefuck.enableFishIntegration = false;
thefuck.enableZshIntegration = false;
+ thefuck.enableNushellIntegration = false;
bash.enable = true;
zsh.enable = true;
+ nushell.enable = true;
};
test.stubs.thefuck = { };
@@ -16,5 +18,6 @@
assertFileNotRegex home-files/.bashrc '@thefuck@/bin/thefuck'
assertPathNotExists home-files/.config/fish/functions/fuck.fish
assertFileNotRegex home-files/.zshrc '@thefuck@/bin/thefuck'
+ assertFileNotRegex home-files/.config/nushell/config.nu '@thefuck@/bin/thefuck'
'';
}
diff --git a/tests/modules/programs/thefuck/integration-enabled.nix b/tests/modules/programs/thefuck/integration-enabled.nix
index 79cadaf8..54d6b794 100644
--- a/tests/modules/programs/thefuck/integration-enabled.nix
+++ b/tests/modules/programs/thefuck/integration-enabled.nix
@@ -6,6 +6,7 @@
bash.enable = true;
fish.enable = true;
zsh.enable = true;
+ nushell.enable = true;
};
test.stubs.thefuck = { };
@@ -33,5 +34,10 @@
assertFileContains \
home-files/.zshrc \
'eval "$(@thefuck@/bin/thefuck '"'"'--alias'"'"')"'
+
+ assertFileExists home-files/.config/nushell/config.nu
+ assertFileContains \
+ home-files/.config/nushell/config.nu \
+ 'alias fuck = @thefuck@/bin/thefuck $"(history | last 1 | get command | get 0)"'
'';
}
diff --git a/tests/modules/programs/tofi/basic-configuration.conf b/tests/modules/programs/tofi/basic-configuration.conf
new file mode 100644
index 00000000..3a95c23e
--- /dev/null
+++ b/tests/modules/programs/tofi/basic-configuration.conf
@@ -0,0 +1,12 @@
+# Generated by Home Manager.
+
+background-color=#000000
+border-width=0
+font=monospace
+height=100%
+num-results=5
+outline-width=0
+padding-left=35%
+padding-top=35%
+result-spacing=25
+width=100%
diff --git a/tests/modules/programs/tofi/basic-configuration.nix b/tests/modules/programs/tofi/basic-configuration.nix
new file mode 100644
index 00000000..28b28996
--- /dev/null
+++ b/tests/modules/programs/tofi/basic-configuration.nix
@@ -0,0 +1,28 @@
+{ config, pkgs, ... }: {
+ config = {
+ programs.tofi = {
+ enable = true;
+ package = pkgs.tofi;
+ settings = {
+ background-color = "#000000";
+ border-width = 0;
+ font = "monospace";
+ height = "100%";
+ num-results = 5;
+ outline-width = 0;
+ padding-left = "35%";
+ padding-top = "35%";
+ result-spacing = 25;
+ width = "100%";
+ };
+ };
+
+ test.stubs.tofi = { };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/tofi/config
+ assertFileContent home-files/.config/tofi/config \
+ ${./basic-configuration.conf}
+ '';
+ };
+}
diff --git a/tests/modules/programs/tofi/default.nix b/tests/modules/programs/tofi/default.nix
new file mode 100644
index 00000000..22b89d80
--- /dev/null
+++ b/tests/modules/programs/tofi/default.nix
@@ -0,0 +1 @@
+{ tofi-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/programs/yambar/default.nix b/tests/modules/programs/yambar/default.nix
new file mode 100644
index 00000000..26de5673
--- /dev/null
+++ b/tests/modules/programs/yambar/default.nix
@@ -0,0 +1,4 @@
+{
+ yambar-empty-settings = ./empty-settings.nix;
+ yambar-example-settings = ./example-settings.nix;
+}
diff --git a/tests/modules/programs/yambar/empty-settings.nix b/tests/modules/programs/yambar/empty-settings.nix
new file mode 100644
index 00000000..56cdf27d
--- /dev/null
+++ b/tests/modules/programs/yambar/empty-settings.nix
@@ -0,0 +1,11 @@
+{ ... }:
+
+{
+ programs.yambar.enable = true;
+
+ test.stubs.yambar = { };
+
+ nmt.script = ''
+ assertPathNotExists home-files/.config/yambar
+ '';
+}
diff --git a/tests/modules/programs/yambar/example-settings-expected.yml b/tests/modules/programs/yambar/example-settings-expected.yml
new file mode 100644
index 00000000..0bd9120a
--- /dev/null
+++ b/tests/modules/programs/yambar/example-settings-expected.yml
@@ -0,0 +1,9 @@
+bar:
+ background: '00000066'
+ height: 26
+ location: top
+ right:
+ - clock:
+ content:
+ - string:
+ text: '{time}'
diff --git a/tests/modules/programs/yambar/example-settings.nix b/tests/modules/programs/yambar/example-settings.nix
new file mode 100644
index 00000000..de572090
--- /dev/null
+++ b/tests/modules/programs/yambar/example-settings.nix
@@ -0,0 +1,35 @@
+{ config, ... }:
+
+{
+ programs.yambar = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { };
+
+ settings = {
+ bar = {
+ location = "top";
+ height = 26;
+ background = "00000066";
+ right = [{ clock.content = [{ string.text = "{time}"; }]; }];
+ };
+ };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/yambar/config.yml \
+ ${
+ builtins.toFile "yambar-expected.yml" ''
+ bar:
+ background: '00000066'
+ height: 26
+ location: top
+ right:
+ - clock:
+ content:
+ - string:
+ text: '{time}'
+ ''
+ }
+ '';
+}
diff --git a/tests/modules/programs/yazi/nushell-integration-enabled.nix b/tests/modules/programs/yazi/nushell-integration-enabled.nix
index ddd041dc..9adbaa98 100644
--- a/tests/modules/programs/yazi/nushell-integration-enabled.nix
+++ b/tests/modules/programs/yazi/nushell-integration-enabled.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
let
shellIntegration = ''
@@ -23,7 +23,7 @@ in {
test.stubs.yazi = { };
nmt.script = let
- configPath = if pkgs.stdenv.isDarwin then
+ configPath = if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell/config.nu"
else
"home-files/.config/nushell/config.nu";
diff --git a/tests/modules/services/cliphist/cliphist-extra-options.nix b/tests/modules/services/cliphist/cliphist-extra-options.nix
new file mode 100644
index 00000000..65d4fdca
--- /dev/null
+++ b/tests/modules/services/cliphist/cliphist-extra-options.nix
@@ -0,0 +1,24 @@
+{ ... }: {
+ services.cliphist = {
+ enable = true;
+ allowImages = true;
+ extraOptions = [ "-max-dedupe-search" "10" "-max-items" "500" ];
+ };
+
+ test.stubs = {
+ cliphist = { };
+ wl-clipboard = { };
+ };
+
+ nmt.script = ''
+ servicePath=home-files/.config/systemd/user
+
+ assertFileExists $servicePath/cliphist.service
+ assertFileExists $servicePath/cliphist-images.service
+
+ assertFileRegex $servicePath/cliphist.service " '-max-dedupe-search' '10' "
+ assertFileRegex $servicePath/cliphist.service " '-max-items' '500' "
+ assertFileRegex $servicePath/cliphist-images.service " '-max-dedupe-search' '10' "
+ assertFileRegex $servicePath/cliphist-images.service " '-max-items' '500' "
+ '';
+}
diff --git a/tests/modules/services/cliphist/default.nix b/tests/modules/services/cliphist/default.nix
index 01101332..d74a469b 100644
--- a/tests/modules/services/cliphist/default.nix
+++ b/tests/modules/services/cliphist/default.nix
@@ -1 +1,4 @@
-{ cliphist-sway-session-target = ./cliphist-sway-session-target.nix; }
+{
+ cliphist-sway-session-target = ./cliphist-sway-session-target.nix;
+ cliphist-extra-options = ./cliphist-extra-options.nix;
+}
diff --git a/tests/modules/services/conky/basic-configuration.conf b/tests/modules/services/conky/basic-configuration.conf
new file mode 100644
index 00000000..010eac37
--- /dev/null
+++ b/tests/modules/services/conky/basic-configuration.conf
@@ -0,0 +1,7 @@
+conky.text = [[
+ S Y S T E M I N F O
+ $hr
+ Host:$alignr $nodename
+ Uptime:$alignr $uptime
+ RAM:$alignr $mem/$memmax
+]]
diff --git a/tests/modules/services/conky/basic-configuration.nix b/tests/modules/services/conky/basic-configuration.nix
new file mode 100644
index 00000000..479a1923
--- /dev/null
+++ b/tests/modules/services/conky/basic-configuration.nix
@@ -0,0 +1,30 @@
+{ config, pkgs, ... }:
+
+{
+ services.conky = {
+ enable = true;
+ extraConfig = ''
+ conky.text = [[
+ S Y S T E M I N F O
+ $hr
+ Host:$alignr $nodename
+ Uptime:$alignr $uptime
+ RAM:$alignr $mem/$memmax
+ ]]
+ '';
+ };
+
+ test.stubs.conky = { };
+
+ nmt.script = ''
+ serviceFile="$TESTED/home-files/.config/systemd/user/conky.service"
+
+ assertFileExists $serviceFile
+ assertFileRegex "$serviceFile" \
+ 'ExecStart=@conky@/bin/conky --config .*conky.conf'
+
+ configFile="$(grep -o '/nix.*conky.conf' "$serviceFile")"
+ assertFileContent "$configFile" \
+ ${./basic-configuration.conf}
+ '';
+}
diff --git a/tests/modules/services/conky/default.nix b/tests/modules/services/conky/default.nix
new file mode 100644
index 00000000..e4ca38e0
--- /dev/null
+++ b/tests/modules/services/conky/default.nix
@@ -0,0 +1 @@
+{ conky-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/services/espanso-darwin/basic-configuration.nix b/tests/modules/services/espanso-darwin/basic-configuration.nix
new file mode 100644
index 00000000..4a2f2ee7
--- /dev/null
+++ b/tests/modules/services/espanso-darwin/basic-configuration.nix
@@ -0,0 +1,55 @@
+{ ... }: {
+ services.espanso = {
+ enable = true;
+ configs = { default = { show_notifications = false; }; };
+ matches = {
+ base = {
+ matches = [
+ {
+ trigger = ":now";
+ replace = "It's {{currentdate}} {{currenttime}}";
+ }
+ {
+ trigger = ":hello";
+ replace = ''
+ line1
+ line2'';
+ }
+ {
+ regex = ":hi(?P.*)\\.";
+ replace = "Hi {{person}}!";
+ }
+ ];
+ global_vars = [
+ {
+ name = "currentdate";
+ type = "date";
+ params = { format = "%d/%m/%Y"; };
+ }
+ {
+ name = "currenttime";
+ type = "date";
+ params = { format = "%R"; };
+ }
+ ];
+ };
+ };
+ };
+
+ test.stubs.espanso = { };
+
+ nmt.script = ''
+ serviceFile="LaunchAgents/org.nix-community.home.espanso.plist"
+ serviceFileNormalized="$(normalizeStorePaths "$serviceFile")"
+ assertFileExists $serviceFile
+ assertFileContent $serviceFileNormalized ${./launchd.plist}
+
+ configFile=home-files/.config/espanso/config/default.yml
+ assertFileExists "$configFile"
+ assertFileContent "$configFile" ${../espanso/basic-configuration.yaml}
+
+ matchFile=home-files/.config/espanso/match/base.yml
+ assertFileExists "$matchFile"
+ assertFileContent "$matchFile" ${../espanso/basic-matches.yaml}
+ '';
+}
diff --git a/tests/modules/services/espanso-darwin/default.nix b/tests/modules/services/espanso-darwin/default.nix
new file mode 100644
index 00000000..6acb2f8d
--- /dev/null
+++ b/tests/modules/services/espanso-darwin/default.nix
@@ -0,0 +1 @@
+{ espanso-darwin-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/services/espanso-darwin/launchd.plist b/tests/modules/services/espanso-darwin/launchd.plist
new file mode 100644
index 00000000..ac8ff53e
--- /dev/null
+++ b/tests/modules/services/espanso-darwin/launchd.plist
@@ -0,0 +1,27 @@
+
+
+
+
+ EnvironmentVariables
+
+ PATH
+ @espanso@/bin:/usr/bin:/bin:/usr/sbin:/sbin
+
+ KeepAlive
+
+ Crashed
+
+ SuccessfulExit
+
+
+ Label
+ org.nix-community.home.espanso
+ ProgramArguments
+
+ @espanso@/bin/espanso
+ launcher
+
+ RunAtLoad
+
+
+
\ No newline at end of file
diff --git a/tests/modules/services/hypridle/basic-configuration.nix b/tests/modules/services/hypridle/basic-configuration.nix
new file mode 100644
index 00000000..461f70a5
--- /dev/null
+++ b/tests/modules/services/hypridle/basic-configuration.nix
@@ -0,0 +1,38 @@
+{ pkgs, ... }:
+
+{
+ services.hypridle = {
+ enable = true;
+ package = pkgs.hypridle;
+
+ settings = {
+ general = {
+ after_sleep_cmd = "hyprctl dispatch dpms on";
+ ignore_dbus_inhibit = false;
+ lock_cmd = "hyprlock";
+ };
+
+ listener = [
+ {
+ timeout = 900;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 1200;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+ };
+
+ test.stubs.hypridle = { };
+
+ nmt.script = ''
+ config=home-files/.config/hypr/hypridle.conf
+ clientServiceFile=home-files/.config/systemd/user/hypridle.service
+ assertFileExists $config
+ assertFileExists $clientServiceFile
+ assertFileContent $config ${./hypridle.conf}
+ '';
+}
diff --git a/tests/modules/services/hypridle/default.nix b/tests/modules/services/hypridle/default.nix
new file mode 100644
index 00000000..c959983c
--- /dev/null
+++ b/tests/modules/services/hypridle/default.nix
@@ -0,0 +1 @@
+{ hypridle-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/services/hypridle/hypridle.conf b/tests/modules/services/hypridle/hypridle.conf
new file mode 100644
index 00000000..ee296337
--- /dev/null
+++ b/tests/modules/services/hypridle/hypridle.conf
@@ -0,0 +1,16 @@
+general {
+ after_sleep_cmd=hyprctl dispatch dpms on
+ ignore_dbus_inhibit=false
+ lock_cmd=hyprlock
+}
+
+listener {
+ on-timeout=hyprlock
+ timeout=900
+}
+
+listener {
+ on-resume=hyprctl dispatch dpms on
+ on-timeout=hyprctl dispatch dpms off
+ timeout=1200
+}
diff --git a/tests/modules/services/hyprpaper/basic-configuration.nix b/tests/modules/services/hyprpaper/basic-configuration.nix
new file mode 100644
index 00000000..7bf944fb
--- /dev/null
+++ b/tests/modules/services/hyprpaper/basic-configuration.nix
@@ -0,0 +1,30 @@
+{ pkgs, ... }:
+
+{
+ services.hyprpaper = {
+ enable = true;
+ settings = {
+ ipc = "on";
+ splash = false;
+ splash_offset = 2.0;
+
+ preload =
+ [ "/share/wallpapers/buttons.png" "/share/wallpapers/cat_pacman.png" ];
+
+ wallpaper = [
+ "DP-3,/share/wallpapers/buttons.png"
+ "DP-1,/share/wallpapers/cat_pacman.png"
+ ];
+ };
+ };
+
+ test.stubs.hyprpaper = { };
+
+ nmt.script = ''
+ config=home-files/.config/hypr/hyprpaper.conf
+ clientServiceFile=home-files/.config/systemd/user/hyprpaper.service
+ assertFileExists $config
+ assertFileExists $clientServiceFile
+ assertFileContent $config ${./hyprpaper.conf}
+ '';
+}
diff --git a/tests/modules/services/hyprpaper/default.nix b/tests/modules/services/hyprpaper/default.nix
new file mode 100644
index 00000000..2a5abbfe
--- /dev/null
+++ b/tests/modules/services/hyprpaper/default.nix
@@ -0,0 +1 @@
+{ hyprpaper-basic-configuration = ./basic-configuration.nix; }
diff --git a/tests/modules/services/hyprpaper/hyprpaper.conf b/tests/modules/services/hyprpaper/hyprpaper.conf
new file mode 100644
index 00000000..d7b4ccb4
--- /dev/null
+++ b/tests/modules/services/hyprpaper/hyprpaper.conf
@@ -0,0 +1,7 @@
+ipc=on
+preload=/share/wallpapers/buttons.png
+preload=/share/wallpapers/cat_pacman.png
+splash=false
+splash_offset=2.000000
+wallpaper=DP-3,/share/wallpapers/buttons.png
+wallpaper=DP-1,/share/wallpapers/cat_pacman.png
diff --git a/tests/modules/services/kanshi/basic-configuration.nix b/tests/modules/services/kanshi/basic-configuration.nix
index c5706e63..ffb6db7b 100644
--- a/tests/modules/services/kanshi/basic-configuration.nix
+++ b/tests/modules/services/kanshi/basic-configuration.nix
@@ -47,6 +47,11 @@
'';
};
+ test.asserts.warnings.expected = [
+ "kanshi.profiles option is deprecated. Use kanshi.settings instead."
+ "kanshi.extraConfig option is deprecated. Use kanshi.settings instead."
+ ];
+
nmt.script = ''
serviceFile=home-files/.config/systemd/user/kanshi.service
assertFileExists $serviceFile
diff --git a/tests/modules/services/kanshi/default.nix b/tests/modules/services/kanshi/default.nix
index cb6b2a6b..b7704b11 100644
--- a/tests/modules/services/kanshi/default.nix
+++ b/tests/modules/services/kanshi/default.nix
@@ -1 +1,4 @@
-{ kanshi-basic-configuration = ./basic-configuration.nix; }
+{
+ kanshi-basic-configuration = ./basic-configuration.nix;
+ kanshi-new-configuration = ./new-configuration.nix;
+}
diff --git a/tests/modules/services/kanshi/new-configuration.conf b/tests/modules/services/kanshi/new-configuration.conf
new file mode 100644
index 00000000..c0858a04
--- /dev/null
+++ b/tests/modules/services/kanshi/new-configuration.conf
@@ -0,0 +1,19 @@
+include "path/to/included/file"
+output "*" enable
+profile nomad {
+ output "eDP-1" enable
+}
+
+profile desktop {
+ output "eDP-1" disable
+ output "Iiyama North America PLE2483H-DP" enable position 0,0
+ output "Iiyama North America PLE2483H-DP 1158765348486" enable mode 1920x1080 position 1920,0 scale 2.100000 transform flipped-270
+ exec echo "1 two 3"
+ exec echo "4 five 6"
+}
+
+profile {
+ output "LVDS-1" enable
+ exec echo "7 eight 9"
+}
+
diff --git a/tests/modules/services/kanshi/new-configuration.nix b/tests/modules/services/kanshi/new-configuration.nix
new file mode 100644
index 00000000..9b3a3647
--- /dev/null
+++ b/tests/modules/services/kanshi/new-configuration.nix
@@ -0,0 +1,63 @@
+{ config, pkgs, ... }: {
+ config = {
+ services.kanshi = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { };
+ settings = [
+ { include = "path/to/included/file"; }
+ {
+ output = {
+ criteria = "*";
+ status = "enable";
+ };
+ }
+ {
+ profile.name = "nomad";
+ profile.outputs = [{
+ criteria = "eDP-1";
+ status = "enable";
+ }];
+ }
+ {
+ profile.name = "desktop";
+ profile.exec = [ ''echo "1 two 3"'' ''echo "4 five 6"'' ];
+ profile.outputs = [
+ {
+ criteria = "eDP-1";
+ status = "disable";
+ }
+ {
+ criteria = "Iiyama North America PLE2483H-DP";
+ status = "enable";
+ position = "0,0";
+ }
+ {
+ criteria = "Iiyama North America PLE2483H-DP 1158765348486";
+ status = "enable";
+ position = "1920,0";
+ scale = 2.1;
+ mode = "1920x1080";
+ transform = "flipped-270";
+ }
+ ];
+ }
+ {
+ profile.outputs = [{
+ criteria = "LVDS-1";
+ status = "enable";
+ }];
+ profile.exec = ''echo "7 eight 9"'';
+ }
+ ];
+ };
+
+ nmt.script = ''
+ serviceFile=home-files/.config/systemd/user/kanshi.service
+ assertFileExists $serviceFile
+
+ assertFileExists home-files/.config/kanshi/config
+ assertFileContent home-files/.config/kanshi/config \
+ ${./new-configuration.conf}
+ '';
+ };
+}
diff --git a/tests/modules/services/mopidy/basic-configuration.nix b/tests/modules/services/mopidy/basic-configuration.nix
index 418bfde1..2bffbd68 100644
--- a/tests/modules/services/mopidy/basic-configuration.nix
+++ b/tests/modules/services/mopidy/basic-configuration.nix
@@ -3,6 +3,7 @@
{
services.mopidy = {
enable = true;
+ extensionPackages = [ ];
settings = {
file = {
enabled = true;
@@ -29,7 +30,7 @@
nmt.script = ''
assertFileExists home-files/.config/systemd/user/mopidy.service
- assertFileExists home-files/.config/systemd/user/mopidy-scan.service
+ assertPathNotExists home-files/.config/systemd/user/mopidy-scan.service
assertFileExists home-files/.config/mopidy/mopidy.conf
assertFileContent home-files/.config/mopidy/mopidy.conf \
diff --git a/tests/modules/services/mopidy/default.nix b/tests/modules/services/mopidy/default.nix
index 2f2c33d2..6d71e1f5 100644
--- a/tests/modules/services/mopidy/default.nix
+++ b/tests/modules/services/mopidy/default.nix
@@ -1 +1,5 @@
-{ mopidy-basic-configuration = ./basic-configuration.nix; }
+{
+ mopidy-basic-configuration = ./basic-configuration.nix;
+ mopidy-scan = ./mopidy-scan.nix;
+}
+
diff --git a/tests/modules/services/mopidy/mopidy-scan.nix b/tests/modules/services/mopidy/mopidy-scan.nix
new file mode 100644
index 00000000..58a035a6
--- /dev/null
+++ b/tests/modules/services/mopidy/mopidy-scan.nix
@@ -0,0 +1,13 @@
+{ config, pkgs, ... }:
+
+{
+ services.mopidy = {
+ enable = true;
+ extensionPackages = [ pkgs.mopidy-local ];
+ };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/systemd/user/mopidy.service
+ assertFileExists home-files/.config/systemd/user/mopidy-scan.service
+ '';
+}
diff --git a/tests/modules/services/remmina/basic-config.nix b/tests/modules/services/remmina/basic-config.nix
new file mode 100644
index 00000000..2741353a
--- /dev/null
+++ b/tests/modules/services/remmina/basic-config.nix
@@ -0,0 +1,26 @@
+{ config, ... }: {
+ xdg.mimeApps.enable = true;
+
+ services.remmina = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { };
+
+ addRdpMimeTypeAssoc = false;
+ systemdService = {
+ enable = true;
+ startupFlags = [ "--icon" "--enable-extra-hardening" ];
+ };
+ };
+
+ nmt.script = ''
+ serviceFile='./home-files/.config/systemd/user/remmina.service'
+
+ assertFileExists $serviceFile
+ assertFileRegex $serviceFile 'ExecStart=.*/bin/dummy'
+ assertFileRegex $serviceFile "dummy '--icon' '--enable-extra-hardening'"
+
+ mimetypeFile='./home-files/.local/share/mime/packages/application-x-rdp.xml'
+
+ assertPathNotExists $mimetypeFile
+ '';
+}
diff --git a/tests/modules/services/remmina/default-config.nix b/tests/modules/services/remmina/default-config.nix
new file mode 100644
index 00000000..747623af
--- /dev/null
+++ b/tests/modules/services/remmina/default-config.nix
@@ -0,0 +1,20 @@
+{ config, ... }: {
+ xdg.mimeApps.enable = true;
+
+ services.remmina = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { };
+ };
+
+ nmt.script = ''
+ serviceFile='./home-files/.config/systemd/user/remmina.service'
+
+ assertFileExists $serviceFile
+ assertFileRegex $serviceFile 'ExecStart=.*--icon'
+
+ mimetypeFile='./home-files/.local/share/mime/packages/application-x-rdp.xml'
+
+ assertFileExists $mimetypeFile
+ assertFileRegex $mimetypeFile ''
+ '';
+}
diff --git a/tests/modules/services/remmina/default.nix b/tests/modules/services/remmina/default.nix
new file mode 100644
index 00000000..43fa4894
--- /dev/null
+++ b/tests/modules/services/remmina/default.nix
@@ -0,0 +1,4 @@
+{
+ remmina-default-config = ./default-config.nix;
+ remmina-basic-config = ./basic-config.nix;
+}
diff --git a/tests/modules/services/swaync/default.nix b/tests/modules/services/swaync/default.nix
new file mode 100644
index 00000000..d5682daa
--- /dev/null
+++ b/tests/modules/services/swaync/default.nix
@@ -0,0 +1 @@
+{ swaync = ./swaync.nix; }
diff --git a/tests/modules/services/swaync/swaync.nix b/tests/modules/services/swaync/swaync.nix
new file mode 100644
index 00000000..ceb3bf06
--- /dev/null
+++ b/tests/modules/services/swaync/swaync.nix
@@ -0,0 +1,35 @@
+{ config, ... }:
+
+{
+ services.swaync = {
+ enable = true;
+ package = config.lib.test.mkStubPackage {
+ name = "swaync";
+ outPath = "@swaync@";
+ };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/systemd/user/swaync.service \
+ ${
+ builtins.toFile "swaync.service" ''
+ [Install]
+ WantedBy=graphical-session.target
+
+ [Service]
+ BusName=org.freedesktop.Notifications
+ ExecStart=@swaync@/bin/swaync
+ Restart=on-failure
+ Type=dbus
+
+ [Unit]
+ After=graphical-session-pre.target
+ ConditionEnvironment=WAYLAND_DISPLAY
+ Description=Swaync notification daemon
+ Documentation=https://github.com/ErikReider/SwayNotificationCenter
+ PartOf=graphical-session.target
+ ''
+ }
+ '';
+}
diff --git a/tests/modules/services/swayosd/swayosd.nix b/tests/modules/services/swayosd/swayosd.nix
index ba92d81f..88a7c536 100644
--- a/tests/modules/services/swayosd/swayosd.nix
+++ b/tests/modules/services/swayosd/swayosd.nix
@@ -8,6 +8,7 @@
outPath = "@swayosd@";
};
display = "DISPLAY";
+ stylePath = "/etc/xdg/swayosd/style.css";
topMargin = 0.1;
};
@@ -20,7 +21,7 @@
WantedBy=graphical-session.target
[Service]
- ExecStart=@swayosd@/bin/swayosd-server --display DISPLAY --top-margin 0.100000
+ ExecStart=@swayosd@/bin/swayosd-server --display DISPLAY --style '/etc/xdg/swayosd/style.css' --top-margin 0.100000
Restart=always
Type=simple
diff --git a/tests/modules/services/window-managers/hyprland/default.nix b/tests/modules/services/window-managers/hyprland/default.nix
index 96cae5e4..ae431939 100644
--- a/tests/modules/services/window-managers/hyprland/default.nix
+++ b/tests/modules/services/window-managers/hyprland/default.nix
@@ -1,4 +1,6 @@
{
hyprland-simple-config = ./simple-config.nix;
+ hyprland-multiple-devices-config = ./multiple-devices-config.nix;
+ hyprland-sourceFirst-false-config = ./sourceFirst-false-config.nix;
hyprland-inconsistent-config = ./inconsistent-config.nix;
}
diff --git a/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf b/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf
new file mode 100644
index 00000000..5d910297
--- /dev/null
+++ b/tests/modules/services/window-managers/hyprland/multiple-devices-config.conf
@@ -0,0 +1,60 @@
+exec-once = /nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
+plugin=/path/to/plugin1
+plugin=/nix/store/00000000000000000000000000000000-foo/lib/libfoo.so
+$mod=SUPER
+bezier=smoothOut, 0.36, 0, 0.66, -0.56
+bezier=smoothIn, 0.25, 1, 0.5, 1
+bezier=overshot, 0.4,0.8,0.2,1.2
+source=sourced.conf
+animations {
+ animation=border, 1, 2, smoothIn
+ animation=fade, 1, 4, smoothOut
+ animation=windows, 1, 3, overshot, popin 80%
+ enabled=true
+}
+
+decoration {
+ col.shadow=rgba(00000099)
+ shadow_offset=0 5
+}
+
+device {
+ name=some:device
+ enable=true
+}
+
+device {
+ name=some:device-secondary
+ enable=true
+}
+
+input {
+ touchpad {
+ scroll_factor=0.300000
+ }
+ accel_profile=flat
+ follow_mouse=1
+ kb_layout=ro
+}
+
+plugin {
+ plugin1 {
+ section {
+ other=dummy setting
+ }
+ dummy=plugin setting
+ }
+}
+bindm=$mod, mouse:272, movewindow
+bindm=$mod, mouse:273, resizewindow
+bindm=$mod ALT, mouse:272, resizewindow
+# window resize
+bind = $mod, S, submap, resize
+
+submap = resize
+binde = , right, resizeactive, 10 0
+binde = , left, resizeactive, -10 0
+binde = , up, resizeactive, 0 -10
+binde = , down, resizeactive, 0 10
+bind = , escape, submap, reset
+submap = reset
diff --git a/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix b/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix
new file mode 100644
index 00000000..86d60c63
--- /dev/null
+++ b/tests/modules/services/window-managers/hyprland/multiple-devices-config.nix
@@ -0,0 +1,88 @@
+{ config, lib, ... }:
+
+{
+ wayland.windowManager.hyprland = {
+ enable = true;
+ package = lib.makeOverridable
+ (attrs: config.lib.test.mkStubPackage { name = "hyprland"; }) { };
+ plugins =
+ [ "/path/to/plugin1" (config.lib.test.mkStubPackage { name = "foo"; }) ];
+ settings = {
+ source = [ "sourced.conf" ];
+
+ decoration = {
+ shadow_offset = "0 5";
+ "col.shadow" = "rgba(00000099)";
+ };
+
+ "$mod" = "SUPER";
+
+ animations = {
+ enabled = true;
+ animation = [
+ "border, 1, 2, smoothIn"
+ "fade, 1, 4, smoothOut"
+ "windows, 1, 3, overshot, popin 80%"
+ ];
+ };
+
+ bezier = [
+ "smoothOut, 0.36, 0, 0.66, -0.56"
+ "smoothIn, 0.25, 1, 0.5, 1"
+ "overshot, 0.4,0.8,0.2,1.2"
+ ];
+
+ input = {
+ kb_layout = "ro";
+ follow_mouse = 1;
+ accel_profile = "flat";
+ touchpad = { scroll_factor = 0.3; };
+ };
+
+ bindm = [
+ # mouse movements
+ "$mod, mouse:272, movewindow"
+ "$mod, mouse:273, resizewindow"
+ "$mod ALT, mouse:272, resizewindow"
+ ];
+
+ device = [
+ {
+ name = "some:device";
+ enable = true;
+ }
+ {
+ name = "some:device-secondary";
+ enable = true;
+ }
+ ];
+
+ plugin = {
+ plugin1 = {
+ dummy = "plugin setting";
+ section = { other = "dummy setting"; };
+ };
+ };
+ };
+ extraConfig = ''
+ # window resize
+ bind = $mod, S, submap, resize
+
+ submap = resize
+ binde = , right, resizeactive, 10 0
+ binde = , left, resizeactive, -10 0
+ binde = , up, resizeactive, 0 -10
+ binde = , down, resizeactive, 0 10
+ bind = , escape, submap, reset
+ submap = reset
+ '';
+ };
+
+ nmt.script = ''
+ config=home-files/.config/hypr/hyprland.conf
+ assertFileExists "$config"
+
+ normalizedConfig=$(normalizeStorePaths "$config")
+ assertFileContent "$normalizedConfig" ${./multiple-devices-config.conf}
+ '';
+}
diff --git a/tests/modules/services/window-managers/hyprland/simple-config.conf b/tests/modules/services/window-managers/hyprland/simple-config.conf
index 9b15ba32..29dcd7cd 100644
--- a/tests/modules/services/window-managers/hyprland/simple-config.conf
+++ b/tests/modules/services/window-managers/hyprland/simple-config.conf
@@ -6,10 +6,6 @@ bezier=smoothOut, 0.36, 0, 0.66, -0.56
bezier=smoothIn, 0.25, 1, 0.5, 1
bezier=overshot, 0.4,0.8,0.2,1.2
source=sourced.conf
-device {
- name=some:device
- enable=true
-}
animations {
animation=border, 1, 2, smoothIn
animation=fade, 1, 4, smoothOut
@@ -22,6 +18,11 @@ decoration {
shadow_offset=0 5
}
+device {
+ name=some:device
+ enable=true
+}
+
input {
touchpad {
scroll_factor=0.300000
diff --git a/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf
new file mode 100644
index 00000000..3dc8c39c
--- /dev/null
+++ b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.conf
@@ -0,0 +1,13 @@
+exec-once = /nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
+bezier=smoothOut, 0.36, 0, 0.66, -0.56
+bezier=smoothIn, 0.25, 1, 0.5, 1
+bezier=overshot, 0.4,0.8,0.2,1.2
+input {
+ touchpad {
+ scroll_factor=0.300000
+ }
+ accel_profile=flat
+ follow_mouse=1
+ kb_layout=ro
+}
+source=sourced.conf
diff --git a/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix
new file mode 100644
index 00000000..4161cd75
--- /dev/null
+++ b/tests/modules/services/window-managers/hyprland/sourceFirst-false-config.nix
@@ -0,0 +1,34 @@
+{ config, lib, ... }:
+
+{
+ wayland.windowManager.hyprland = {
+ enable = true;
+ package = lib.makeOverridable
+ (attrs: config.lib.test.mkStubPackage { name = "hyprland"; }) { };
+ settings = {
+ source = [ "sourced.conf" ];
+
+ bezier = [
+ "smoothOut, 0.36, 0, 0.66, -0.56"
+ "smoothIn, 0.25, 1, 0.5, 1"
+ "overshot, 0.4,0.8,0.2,1.2"
+ ];
+
+ input = {
+ kb_layout = "ro";
+ follow_mouse = 1;
+ accel_profile = "flat";
+ touchpad = { scroll_factor = 0.3; };
+ };
+ };
+ sourceFirst = false;
+ };
+
+ nmt.script = ''
+ config=home-files/.config/hypr/hyprland.conf
+ assertFileExists "$config"
+
+ normalizedConfig=$(normalizeStorePaths "$config")
+ assertFileContent "$normalizedConfig" ${./sourceFirst-false-config.conf}
+ '';
+}
diff --git a/tests/modules/services/window-managers/sway/default.nix b/tests/modules/services/window-managers/sway/default.nix
index 2c7f5ff7..7627aab0 100644
--- a/tests/modules/services/window-managers/sway/default.nix
+++ b/tests/modules/services/window-managers/sway/default.nix
@@ -5,12 +5,14 @@
sway-default = ./sway-default.nix;
sway-followmouse = ./sway-followmouse.nix;
sway-followmouse-legacy = ./sway-followmouse-legacy.nix;
+ sway-check-config = ./sway-check-config.nix;
sway-modules = ./sway-modules.nix;
sway-no-xwayland = ./sway-no-xwayland.nix;
sway-null-config = ./sway-null-config.nix;
sway-null-package = ./sway-null-package.nix;
sway-post-2003 = ./sway-post-2003.nix;
sway-systemd-autostart = ./sway-systemd-autostart.nix;
+ sway-systemd-variables = ./sway-systemd-variables.nix;
sway-workspace-default = ./sway-workspace-default.nix;
sway-workspace-output = ./sway-workspace-output.nix;
swaynag-example-settings = ./swaynag-example-settings.nix;
diff --git a/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix b/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix
index 399790fb..9488d00f 100644
--- a/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix
+++ b/tests/modules/services/window-managers/sway/sway-bar-focused-colors.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
diff --git a/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix b/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix
index 0817837a..cf316988 100644
--- a/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix
+++ b/tests/modules/services/window-managers/sway/sway-bindkeys-to-code-and-extra-config.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
config.bindkeysToCode = true;
diff --git a/tests/modules/services/window-managers/sway/sway-check-config.nix b/tests/modules/services/window-managers/sway/sway-check-config.nix
new file mode 100644
index 00000000..e566e4fd
--- /dev/null
+++ b/tests/modules/services/window-managers/sway/sway-check-config.nix
@@ -0,0 +1,12 @@
+{ config, lib, ... }:
+
+lib.mkIf config.test.enableBig {
+ wayland.windowManager.sway = {
+ enable = true;
+ checkConfig = true;
+ };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/sway/config
+ '';
+}
diff --git a/tests/modules/services/window-managers/sway/sway-default.nix b/tests/modules/services/window-managers/sway/sway-default.nix
index 59527247..c62effbe 100644
--- a/tests/modules/services/window-managers/sway/sway-default.nix
+++ b/tests/modules/services/window-managers/sway/sway-default.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
};
diff --git a/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix b/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix
index 03f64fc2..3bce4850 100644
--- a/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix
+++ b/tests/modules/services/window-managers/sway/sway-followmouse-legacy.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
config = {
focus.followMouse = false;
diff --git a/tests/modules/services/window-managers/sway/sway-followmouse.nix b/tests/modules/services/window-managers/sway/sway-followmouse.nix
index b8a2bc16..de2e91b3 100644
--- a/tests/modules/services/window-managers/sway/sway-followmouse.nix
+++ b/tests/modules/services/window-managers/sway/sway-followmouse.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
config = {
focus.followMouse = "always";
diff --git a/tests/modules/services/window-managers/sway/sway-modules.nix b/tests/modules/services/window-managers/sway/sway-modules.nix
index b8aa58c5..287dec17 100644
--- a/tests/modules/services/window-managers/sway/sway-modules.nix
+++ b/tests/modules/services/window-managers/sway/sway-modules.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config = {
menu = "${pkgs.dmenu}/bin/dmenu_run";
diff --git a/tests/modules/services/window-managers/sway/sway-no-xwayland.nix b/tests/modules/services/window-managers/sway/sway-no-xwayland.nix
index b4091267..5eded3b8 100644
--- a/tests/modules/services/window-managers/sway/sway-no-xwayland.nix
+++ b/tests/modules/services/window-managers/sway/sway-no-xwayland.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
config = null;
systemd.enable = false;
xwayland = false;
diff --git a/tests/modules/services/window-managers/sway/sway-null-config.nix b/tests/modules/services/window-managers/sway/sway-null-config.nix
index a859e04e..46e4df23 100644
--- a/tests/modules/services/window-managers/sway/sway-null-config.nix
+++ b/tests/modules/services/window-managers/sway/sway-null-config.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
config = null;
systemd.enable = false;
};
diff --git a/tests/modules/services/window-managers/sway/sway-null-package.nix b/tests/modules/services/window-managers/sway/sway-null-package.nix
index a449b42c..042830d1 100644
--- a/tests/modules/services/window-managers/sway/sway-null-package.nix
+++ b/tests/modules/services/window-managers/sway/sway-null-package.nix
@@ -9,6 +9,7 @@
wayland.windowManager.sway = {
enable = true;
package = null;
+ checkConfig = false;
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
};
diff --git a/tests/modules/services/window-managers/sway/sway-post-2003.nix b/tests/modules/services/window-managers/sway/sway-post-2003.nix
index 13aac533..3617a3b1 100644
--- a/tests/modules/services/window-managers/sway/sway-post-2003.nix
+++ b/tests/modules/services/window-managers/sway/sway-post-2003.nix
@@ -8,6 +8,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
};
diff --git a/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix b/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix
index 5a1d90e2..5c32c19c 100644
--- a/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix
+++ b/tests/modules/services/window-managers/sway/sway-systemd-autostart.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
diff --git a/tests/modules/services/window-managers/sway/sway-systemd-variables.conf b/tests/modules/services/window-managers/sway/sway-systemd-variables.conf
new file mode 100644
index 00000000..1cbb92c3
--- /dev/null
+++ b/tests/modules/services/window-managers/sway/sway-systemd-variables.conf
@@ -0,0 +1,108 @@
+font pango:monospace 8.000000
+floating_modifier Mod1
+default_border pixel 2
+default_floating_border pixel 2
+hide_edge_borders none
+focus_wrapping no
+focus_follows_mouse yes
+focus_on_window_activation smart
+mouse_warping output
+workspace_layout default
+workspace_auto_back_and_forth no
+client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577
+client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
+client.unfocused #333333 #222222 #888888 #292d2e #222222
+client.urgent #2f343a #900000 #ffffff #900000 #900000
+client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
+client.background #ffffff
+
+bindsym Mod1+0 workspace number 10
+bindsym Mod1+1 workspace number 1
+bindsym Mod1+2 workspace number 2
+bindsym Mod1+3 workspace number 3
+bindsym Mod1+4 workspace number 4
+bindsym Mod1+5 workspace number 5
+bindsym Mod1+6 workspace number 6
+bindsym Mod1+7 workspace number 7
+bindsym Mod1+8 workspace number 8
+bindsym Mod1+9 workspace number 9
+bindsym Mod1+Down focus down
+bindsym Mod1+Left focus left
+bindsym Mod1+Return exec @foot@/bin/foot
+bindsym Mod1+Right focus right
+bindsym Mod1+Shift+0 move container to workspace number 10
+bindsym Mod1+Shift+1 move container to workspace number 1
+bindsym Mod1+Shift+2 move container to workspace number 2
+bindsym Mod1+Shift+3 move container to workspace number 3
+bindsym Mod1+Shift+4 move container to workspace number 4
+bindsym Mod1+Shift+5 move container to workspace number 5
+bindsym Mod1+Shift+6 move container to workspace number 6
+bindsym Mod1+Shift+7 move container to workspace number 7
+bindsym Mod1+Shift+8 move container to workspace number 8
+bindsym Mod1+Shift+9 move container to workspace number 9
+bindsym Mod1+Shift+Down move down
+bindsym Mod1+Shift+Left move left
+bindsym Mod1+Shift+Right move right
+bindsym Mod1+Shift+Up move up
+bindsym Mod1+Shift+c reload
+bindsym Mod1+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
+bindsym Mod1+Shift+h move left
+bindsym Mod1+Shift+j move down
+bindsym Mod1+Shift+k move up
+bindsym Mod1+Shift+l move right
+bindsym Mod1+Shift+minus move scratchpad
+bindsym Mod1+Shift+q kill
+bindsym Mod1+Shift+space floating toggle
+bindsym Mod1+Up focus up
+bindsym Mod1+a focus parent
+bindsym Mod1+b splith
+bindsym Mod1+d exec @dmenu@/bin/dmenu_run
+bindsym Mod1+e layout toggle split
+bindsym Mod1+f fullscreen toggle
+bindsym Mod1+h focus left
+bindsym Mod1+j focus down
+bindsym Mod1+k focus up
+bindsym Mod1+l focus right
+bindsym Mod1+minus scratchpad show
+bindsym Mod1+r mode resize
+bindsym Mod1+s layout stacking
+bindsym Mod1+space focus mode_toggle
+bindsym Mod1+v splitv
+bindsym Mod1+w layout tabbed
+
+mode "resize" {
+ bindsym Down resize grow height 10 px
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px
+ bindsym Up resize shrink height 10 px
+ bindsym h resize shrink width 10 px
+ bindsym j resize grow height 10 px
+ bindsym k resize shrink height 10 px
+ bindsym l resize grow width 10 px
+}
+
+bar {
+ font pango:monospace 8.000000
+ mode dock
+ hidden_state hide
+ position bottom
+ status_command @i3status@/bin/i3status
+ swaybar_command @sway@/bin/swaybar
+ workspace_buttons yes
+ strip_workspace_numbers no
+ tray_output *
+ colors {
+ background #000000
+ statusline #ffffff
+ separator #666666
+ focused_workspace #4c7899 #285577 #ffffff
+ active_workspace #333333 #5f676a #ffffff
+ inactive_workspace #333333 #222222 #888888
+ urgent_workspace #2f343a #900000 #ffffff
+ binding_mode #2f343a #900000 #ffffff
+ }
+}
+
+exec "/nix/store/00000000000000000000000000000000-dbus/bin/dbus-update-activation-environment --systemd XCURSOR_THEME XCURSOR_SIZE; systemctl --user start sway-session.target"
diff --git a/tests/modules/services/window-managers/sway/sway-systemd-variables.nix b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix
new file mode 100644
index 00000000..f0b42ecc
--- /dev/null
+++ b/tests/modules/services/window-managers/sway/sway-systemd-variables.nix
@@ -0,0 +1,21 @@
+{ config, lib, pkgs, ... }:
+
+{
+ imports = [ ./sway-stubs.nix ];
+
+ wayland.windowManager.sway = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
+ # overriding findutils causes issues
+ config.menu = "${pkgs.dmenu}/bin/dmenu_run";
+
+ systemd.variables = [ "XCURSOR_THEME" "XCURSOR_SIZE" ];
+ };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/sway/config
+ assertFileContent $(normalizeStorePaths home-files/.config/sway/config) \
+ ${./sway-systemd-variables.conf}
+ '';
+}
diff --git a/tests/modules/services/window-managers/sway/sway-workspace-default.nix b/tests/modules/services/window-managers/sway/sway-workspace-default.nix
index 6af944eb..e5637fd9 100644
--- a/tests/modules/services/window-managers/sway/sway-workspace-default.nix
+++ b/tests/modules/services/window-managers/sway/sway-workspace-default.nix
@@ -6,6 +6,7 @@
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
config.defaultWorkspace = "workspace number 9";
diff --git a/tests/modules/services/window-managers/sway/sway-workspace-output.nix b/tests/modules/services/window-managers/sway/sway-workspace-output.nix
index 47fb7527..dcbff91e 100644
--- a/tests/modules/services/window-managers/sway/sway-workspace-output.nix
+++ b/tests/modules/services/window-managers/sway/sway-workspace-output.nix
@@ -15,6 +15,7 @@ in {
wayland.windowManager.sway = {
enable = true;
package = config.lib.test.mkStubPackage { outPath = "@sway@"; };
+ checkConfig = false;
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
diff --git a/tests/modules/services/wlsunset/wlsunset-service-expected.service b/tests/modules/services/wlsunset/wlsunset-service-expected.service
index f0cf96f3..f311d900 100644
--- a/tests/modules/services/wlsunset/wlsunset-service-expected.service
+++ b/tests/modules/services/wlsunset/wlsunset-service-expected.service
@@ -2,7 +2,7 @@
WantedBy=test.target
[Service]
-ExecStart=@wlsunset@/bin/wlsunset -l 12.3 -L 128.8 -t 3500 -T 6000 -g 0.6
+ExecStart=@wlsunset@/bin/wlsunset '-L' '128.8' '-T' '6000' '-g' '0.6' '-l' '12.3' '-t' '3500'
[Unit]
Description=Day/night gamma adjustments for Wayland compositors.