Thank you for your contribution!
I marked this issue as stale due to inactivity.
- If this remains inactive for another 7 days, I will close this issue.
+ Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'.
+ We welcome additional information that will help resolve this issue.
Please read the relevant sections below before commenting.
@@ -36,10 +36,7 @@ issues:
Memorandum on closing issues
- If you have nothing of substance to add, please refrain from commenting and allow the bot to close the issue.
- Also, don't be afraid to manually close an issue, even if it holds valuable information.
-
-
+ Don't be afraid to manually close an issue, even if it holds valuable information.
Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost!
Closing obsolete issues is an important way to help maintainers focus their time and effort.
@@ -49,7 +46,6 @@ pulls:
Thank you for your contribution!
I marked this pull request as stale due to inactivity.
- If this remains inactive for another 7 days, I will close this PR.
Please read the relevant sections below before commenting.
diff --git a/infra/libkookie/home-manager/.github/workflows/github_pages.yml b/infra/libkookie/home-manager/.github/workflows/github_pages.yml
index 97e784bda0f..1e0a0f9a9f8 100644
--- a/infra/libkookie/home-manager/.github/workflows/github_pages.yml
+++ b/infra/libkookie/home-manager/.github/workflows/github_pages.yml
@@ -10,8 +10,8 @@ jobs:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v2
- - uses: cachix/install-nix-action@v16
+ - uses: actions/checkout@v3
+ - uses: cachix/install-nix-action@v17
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v10
diff --git a/infra/libkookie/home-manager/.github/workflows/test.yml b/infra/libkookie/home-manager/.github/workflows/test.yml
index e04df065cfe..22e76b5958c 100644
--- a/infra/libkookie/home-manager/.github/workflows/test.yml
+++ b/infra/libkookie/home-manager/.github/workflows/test.yml
@@ -11,8 +11,8 @@ jobs:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v2
- - uses: cachix/install-nix-action@v16
+ - uses: actions/checkout@v3
+ - uses: cachix/install-nix-action@v17
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v10
diff --git a/infra/libkookie/home-manager/README.md b/infra/libkookie/home-manager/README.md
index bd9af2c6c74..585f337b68c 100644
--- a/infra/libkookie/home-manager/README.md
+++ b/infra/libkookie/home-manager/README.md
@@ -9,7 +9,8 @@ specific (non global) packages and dotfiles.
Before attempting to use Home Manager please read the warning below.
For a more systematic overview of Home Manager and its available
-options, please see the [Home Manager manual][manual].
+options, please see the Home Manager [manual][manual] and
+[options][configuration options].
If you would like to contribute to Home Manager
then please have a look at the [contributing][] chapter of the manual.
@@ -41,8 +42,8 @@ distributions and NixOS versions.
Also, the `home-manager` tool does not explicitly support rollbacks at
the moment so if your home directory gets messed up you'll have to fix
-it yourself. See the [rollbacks](#rollbacks) section for instructions
-on how to manually perform a rollback.
+it yourself. See the [rollbacks][] section for instructions on how to
+manually perform a rollback.
Now when your expectations have been built up and you are eager to try
all this out you can go ahead and read the rest of this text.
@@ -125,3 +126,4 @@ This project is licensed under the terms of the [MIT license](LICENSE).
[manual nixos install]: https://nix-community.github.io/home-manager/index.html#sec-install-nixos-module
[manual nix-darwin install]: https://nix-community.github.io/home-manager/index.html#sec-install-nix-darwin-module
[manual nix flakes]: https://nix-community.github.io/home-manager/index.html#ch-nix-flakes
+[rollbacks]: https://nix-community.github.io/home-manager/index.html#sec-usage-rollbacks
diff --git a/infra/libkookie/home-manager/docs/default.nix b/infra/libkookie/home-manager/docs/default.nix
index 22feac5c978..72ea0b37fdd 100644
--- a/infra/libkookie/home-manager/docs/default.nix
+++ b/infra/libkookie/home-manager/docs/default.nix
@@ -9,8 +9,8 @@ let
name = "nmd";
owner = "rycee";
repo = "nmd";
- rev = "527245ff605bde88c2dd2ddae21c6479bb7cf8aa";
- sha256 = "1zi0f9y3wq4bpslx1py3sfgrgd9av41ahpandvs6rvkpisfsqqlp";
+ rev = "de522bdd533350b3afb41e1ce9b3afb72922fba2";
+ sha256 = "1ji4q7b48nnicgpnnl6yb9xb9zfkmmzkch4yifinphw3ag38qrmd";
};
nmd = import nmdSrc { inherit lib pkgs; };
diff --git a/infra/libkookie/home-manager/docs/faq.adoc b/infra/libkookie/home-manager/docs/faq.adoc
index c42ea87441d..935317e7a13 100644
--- a/infra/libkookie/home-manager/docs/faq.adoc
+++ b/infra/libkookie/home-manager/docs/faq.adoc
@@ -91,14 +91,22 @@ while the `common.nix` file contains configuration shared across the two logins.
You can get some inspiration from the {post-your-homenix}[Post your home-manager home.nix file!] Reddit thread.
-=== Why do I get an error message about `ca.desrt.dconf`?
+=== Why do I get an error message about `ca.desrt.dconf` or `dconf.service`?
-You are most likely trying to configure the GTK or Gnome Terminal but the DBus session is not aware of the dconf service. The full error you might get is
+You are most likely trying to configure something that uses dconf
+but the DBus session is not aware of the dconf service.
+The full error you might get is
----
error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files
----
+or
+
+----
+error: GDBus.Error:org.freedesktop.systemd1.NoSuchUnit: Unit dconf.service not found.
+----
+
The solution on NixOS is to add
[source,nix]
diff --git a/infra/libkookie/home-manager/docs/nix-flakes.adoc b/infra/libkookie/home-manager/docs/nix-flakes.adoc
index a0e6aac7de0..2c1bb099cfe 100644
--- a/infra/libkookie/home-manager/docs/nix-flakes.adoc
+++ b/infra/libkookie/home-manager/docs/nix-flakes.adoc
@@ -18,10 +18,13 @@ Either set in `nix.conf`
[source,bash]
experimental-features = nix-command flakes
+
-or pass them to `nix` by
+or pass them to `nix` and `home-manager` by
+
[source,console]
-nix --experimental-features "nix-command flakes" your command
+----
+$ nix --extra-experimental-features "nix-command flakes"
+$ home-manager --extra-experimental-features "nix-command flakes"
+----
* Prepare your Home Manager configuration (`home.nix`).
+
@@ -96,9 +99,10 @@ Make sure to also update to the `stateVersion` option accordingly.
[source,console]
----
$ nix build --no-link #homeConfigurations.jdoe.activationPackage
-$ "$(nix path-info #homeConfigurations.jdoe.activationPackage)"/bin/activate
+$ "$(nix path-info #homeConfigurations.jdoe.activationPackage)"/activate
----
+
+Substitute `` with the flake URI of the configuration flake.
If `flake.nix` resides in `~/.config/nixpkgs`,
`` may be `~/.config/nixpkgs`
as a Git tree or `path:~/.config/nixpkgs` if not.
@@ -107,7 +111,7 @@ as a Git tree or `path:~/.config/nixpkgs` if not.
building a flake-based configuration is as simple as
+
[source,console]
-$ home-manager switch --flake 'flake-uri#jdoe'
+$ home-manager switch --flake '#jdoe'
+
once home-manager is installed.
+
diff --git a/infra/libkookie/home-manager/docs/release-notes/rl-2205.adoc b/infra/libkookie/home-manager/docs/release-notes/rl-2205.adoc
index ee4fc1fdf93..48482ddf5e1 100644
--- a/infra/libkookie/home-manager/docs/release-notes/rl-2205.adoc
+++ b/infra/libkookie/home-manager/docs/release-notes/rl-2205.adoc
@@ -21,6 +21,9 @@ such as the `home-manager` command line tool and the activation script.
If you would like to contribute to the translation effort
then you can do so through the {hm-weblate}[Home Manager Weblate project].
+* A new module, `launchd.agents` was added.
+Use this to enable services based on macOS LaunchAgents.
+
[[sec-release-22.05-state-version-changes]]
=== State Version Changes
diff --git a/infra/libkookie/home-manager/docs/usage.adoc b/infra/libkookie/home-manager/docs/usage.adoc
index 52584251ed7..26b9eee78ec 100644
--- a/infra/libkookie/home-manager/docs/usage.adoc
+++ b/infra/libkookie/home-manager/docs/usage.adoc
@@ -228,3 +228,18 @@ in your system configuration and
----
in your Home Manager configuration.
+
+[[sec-updating]]
+=== Updating
+
+If you have installed Home Manager using the Nix channel method
+then updating Home Manager is done by first updating the channel.
+You can then switch to the updated Home Manager environment.
+
+[source,console]
+----
+$ nix-channel --update
+…
+unpacking channels...
+$ home-manager switch
+----
diff --git a/infra/libkookie/home-manager/flake.nix b/infra/libkookie/home-manager/flake.nix
index 9382351e6d3..a5e073173a2 100644
--- a/infra/libkookie/home-manager/flake.nix
+++ b/infra/libkookie/home-manager/flake.nix
@@ -4,11 +4,10 @@
outputs = { self, nixpkgs }:
let
# List of systems supported by home-manager binary
- supportedSystems = nixpkgs.lib.platforms.unix;
+ supportedSystems = with nixpkgs.lib.platforms; linux ++ darwin;
# Function to generate a set based on supported systems
- forAllSystems = f:
- nixpkgs.lib.genAttrs supportedSystems (system: f system);
+ forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in rec {
@@ -25,10 +24,11 @@
docs-html = docs.manual.html;
docs-manpages = docs.manPages;
docs-json = docs.options.json;
+ default = self.packages.${system}.home-manager;
});
- defaultPackage =
- forAllSystems (system: self.packages.${system}.home-manager);
+ # defaultPackage is deprecated as of Nix 2.7.0
+ defaultPackage = forAllSystems (system: self.packages.${system}.default);
apps = forAllSystems (system: {
home-manager = {
@@ -44,11 +44,11 @@
homeManagerConfiguration = { configuration, system, homeDirectory
, username, extraModules ? [ ], extraSpecialArgs ? { }
, pkgs ? builtins.getAttr system nixpkgs.outputs.legacyPackages
- , check ? true, stateVersion ? "20.09" }@args:
+ , lib ? pkgs.lib, check ? true, stateVersion ? "20.09" }@args:
assert nixpkgs.lib.versionAtLeast stateVersion "20.09";
import ./modules {
- inherit pkgs check extraSpecialArgs;
+ inherit pkgs lib check extraSpecialArgs;
configuration = { ... }: {
imports = [ configuration ] ++ extraModules;
home = { inherit homeDirectory stateVersion username; };
diff --git a/infra/libkookie/home-manager/format b/infra/libkookie/home-manager/format
index 0fa620c1acf..8bf78064523 100755
--- a/infra/libkookie/home-manager/format
+++ b/infra/libkookie/home-manager/format
@@ -19,18 +19,14 @@ find . -name '*.nix' \
! -path ./modules/default.nix \
! -path ./modules/files.nix \
! -path ./modules/home-environment.nix \
+ ! -path ./modules/launchd/launchd.nix \
! -path ./modules/lib/default.nix \
! -path ./modules/lib/file-type.nix \
! -path ./modules/manual.nix \
! -path ./modules/misc/news.nix \
! -path ./modules/programs/bash.nix \
- ! -path ./modules/programs/gpg.nix \
! -path ./modules/programs/ssh.nix \
! -path ./modules/programs/zsh.nix \
- ! -path ./modules/services/gpg-agent.nix \
- ! -path ./modules/services/mpd.nix \
! -path ./nix-darwin/default.nix \
! -path ./tests/default.nix \
- ! -path ./tests/modules/home-environment/session-variables.nix \
- ! -path ./tests/modules/programs/gpg/override-defaults.nix \
-exec nixfmt $CHECK_ARG {} +
diff --git a/infra/libkookie/home-manager/home-manager/completion.bash b/infra/libkookie/home-manager/home-manager/completion.bash
index 7828224fccc..ec20bbc1b8a 100644
--- a/infra/libkookie/home-manager/home-manager/completion.bash
+++ b/infra/libkookie/home-manager/home-manager/completion.bash
@@ -293,7 +293,9 @@ _home-manager_completions ()
Options=( "-f" "--file" "-b" "-A" "-I" "-h" "--help" "-n" "--dry-run" "-v" \
"--verbose" "--cores" "--debug" "--impure" "--keep-failed" \
"--keep-going" "-j" "--max-jobs" "--no-substitute" "--no-out-link" \
- "--show-trace" "--substitute" "--builders" "--version")
+ "--show-trace" "--substitute" "--builders" "--version" \
+ "--update-input" "--override-input" "--experimental-features" \
+ "--extra-experimental-features" )
# ^ « home-manager »'s options.
diff --git a/infra/libkookie/home-manager/home-manager/completion.fish b/infra/libkookie/home-manager/home-manager/completion.fish
index cfffe821143..aca4943fe94 100644
--- a/infra/libkookie/home-manager/home-manager/completion.fish
+++ b/infra/libkookie/home-manager/home-manager/completion.fish
@@ -64,3 +64,7 @@ complete -c home-manager -f -l "show-trace" -d "Print stack trace of evaluation
complete -c home-manager -f -l "substitute"
complete -c home-manager -f -l "no-substitute"
complete -c home-manager -f -l "no-out-link"
+complete -c home-manager -f -l "update-input"
+complete -c home-manager -f -l "override-input"
+complete -c home-manager -f -l "experimental-features"
+complete -c home-manager -f -l "extra-experimental-features"
diff --git a/infra/libkookie/home-manager/home-manager/completion.zsh b/infra/libkookie/home-manager/home-manager/completion.zsh
index 5748ee835d0..6e20d17d07f 100644
--- a/infra/libkookie/home-manager/home-manager/completion.zsh
+++ b/infra/libkookie/home-manager/home-manager/completion.zsh
@@ -20,6 +20,10 @@ _arguments \
'--option[option]:NAME VALUE:()' \
'--builders[builders]:SPEC:()' \
'--show-trace[show trace]' \
+ '--override-input[override flake input]:NAME VALUE:()' \
+ '--update-input[update flake input]:NAME:()' \
+ '--experimental-features[set experimental Nix features]:VALUE:()' \
+ '--extra-experimental-features:[append to experimental Nix features]:VALUE:()' \
'1: :->cmds' \
'*:: :->args' && ret=0
@@ -57,7 +61,11 @@ case "$state" in
'--option[option]:NAME VALUE:()' \
'--show-trace[show trace]' \
'--substitute[substitute]' \
- '--builders[builders]:SPEC:()'
+ '--builders[builders]:SPEC:()' \
+ '--override-input[override flake input]:NAME VALUE:()' \
+ '--update-input[update flake input]:NAME:()' \
+ '--experimental-features[set experimental Nix features]:VALUE:()' \
+ '--extra-experimental-features:[append to experimental Nix features]:VALUE:()'
;;
esac
esac
diff --git a/infra/libkookie/home-manager/home-manager/home-manager b/infra/libkookie/home-manager/home-manager/home-manager
index 8bc58f85c23..6483c59f10c 100644
--- a/infra/libkookie/home-manager/home-manager/home-manager
+++ b/infra/libkookie/home-manager/home-manager/home-manager
@@ -11,6 +11,23 @@ export TEXTDOMAINDIR=@OUT@/share/locale
# shellcheck disable=1091
source @HOME_MANAGER_LIB@
+function removeByName() {
+ nix profile list \
+ | { grep "$1" || test $? = 1; } \
+ | cut -d ' ' -f 4 \
+ | xargs -t $DRY_RUN_CMD nix profile remove $VERBOSE_ARG
+}
+
+function setNixProfileCommands() {
+ if [[ -e ~/.nix-profile/manifest.json ]] ; then
+ LIST_OUTPATH_CMD="nix profile list"
+ REMOVE_CMD="removeByName"
+ else
+ LIST_OUTPATH_CMD="nix-env -q --out-path"
+ REMOVE_CMD="nix-env -q"
+ fi
+}
+
function setVerboseAndDryRun() {
if [[ -v VERBOSE ]]; then
export VERBOSE_ARG="--verbose"
@@ -370,8 +387,9 @@ function doExpireGenerations() {
}
function doListPackages() {
+ setNixProfileCommands
local outPath
- outPath="$(nix-env -q --out-path | grep -o '/.*home-manager-path$')"
+ outPath="$($LIST_OUTPATH_CMD | grep -o '/.*home-manager-path$')"
if [[ -n "$outPath" ]] ; then
nix-store -q --references "$outPath" | sed 's/[^-]*-//'
else
@@ -446,6 +464,7 @@ function doShowNews() {
function doUninstall() {
setVerboseAndDryRun
+ setNixProfileCommands
_i 'This will remove Home Manager from your system.'
@@ -463,7 +482,7 @@ function doUninstall() {
HOME_MANAGER_CONFIG="$(mktemp --tmpdir home-manager.XXXXXXXXXX)"
echo "{ lib, ... }: { home.file = lib.mkForce {}; }" > "$HOME_MANAGER_CONFIG"
doSwitch
- $DRY_RUN_CMD nix-env -e home-manager-path || true
+ $DRY_RUN_CMD $REMOVE_CMD home-manager-path || true
rm "$HOME_MANAGER_CONFIG"
$DRY_RUN_CMD rm $VERBOSE_ARG -r \
"${XDG_DATA_HOME:-$HOME/.local/share}/home-manager"
@@ -608,6 +627,14 @@ while [[ $# -gt 0 ]]; do
PASSTHROUGH_OPTS+=("$opt" "$1" "$2")
shift 2
;;
+ --experimental-features)
+ PASSTHROUGH_OPTS+=("$opt" "$1")
+ shift
+ ;;
+ --extra-experimental-features)
+ PASSTHROUGH_OPTS+=("$opt" "$1")
+ shift
+ ;;
--no-out-link)
NO_OUT_LINK=1
;;
diff --git a/infra/libkookie/home-manager/home-manager/po/de.po b/infra/libkookie/home-manager/home-manager/po/de.po
index caacabea43a..33a748fab52 100644
--- a/infra/libkookie/home-manager/home-manager/po/de.po
+++ b/infra/libkookie/home-manager/home-manager/po/de.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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-15 01:53+0000\n"
-"Last-Translator: mainrs \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-23 18:56+0000\n"
+"Last-Translator: Manu [tennox] \n"
"Language-Team: German \n"
"Language: de\n"
@@ -17,27 +17,26 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "Keine Konfigurationsdatei unter %s gefunden"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Keine Konfigurationsdatei gefunden. Bitte erstellen Sie eine unter %s"
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr ""
"Die Optionen einer Flake-Konfigurationen können nicht inspizieren werden"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Kann eine Flake-Konfiguration nicht instanziieren"
-#: home-manager/home-manager:220
-#, fuzzy
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -51,95 +50,95 @@ msgstr[1] ""
"Es gibt %d ungelesene und relevante Nachrichten.\n"
"Lesen Sie sie, indem Sie den Befehl \"%s news\" ausführen."
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Unbekannte \"news.display\" Einstellung \"%s\"."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Bitte legen Sie die $EDITOR Variable fest"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Build kann nicht im schreibgeschützten Ordner ausgeführt werden"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Keine Generation mit ID %s"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Die jetzige Generation %s kann nicht entfernt werden"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Entferne Generation %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Keine ablaufenden Generationen"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
-msgstr "Es scheint, als ob keine Home Manager Pakete installiert sind"
+msgstr "Es scheint, als ob keine Home Manager Pakete installiert sind."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Unbekannte Argumente %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Dies wird Home Manager von Ihrem System entfernen."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Dies ist ein Probelauf, es wird nichts vom System deinstalliert."
-#: home-manager/home-manager:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Möchten Sie wirklich Home Manager deinstallieren?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Wechsle zu einer leeren Home Manager Konfiguration..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
-msgstr "Yay!"
+msgstr "Juhu!"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Entferne alle Home Manager Generationen?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Alle Generationen kommen nun für die Garbage Collection in Frage."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
"Ignoriere Generationen, aber diese könnten immer noch mittels des Garbage "
"Collectors aufgeräumt werden."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Manager ist installiert, aber Ihre home.nix Datei bleibt unberührt."
-#: home-manager/home-manager:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: unbekannte Option '%s'"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Führe '%s --help' aus, um Hilfe zur Verwendung zu erhalten"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations erwartet ein Argument, hat aber %d erhalten."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Unbekannter Befehl: %s"
@@ -166,7 +165,7 @@ msgstr ""
" %s\n"
"\n"
"bearbeiten um Home Manager zu konfigurieren. Führen Sie\n"
-"'man home-configuration.nix'aus, um alle verfügbaren Optionen zu\n"
+"'man home-configuration.nix' aus, um alle verfügbaren Optionen zu\n"
"sehen."
#. translators: The "%s" specifier will be replaced by a URL.
diff --git a/infra/libkookie/home-manager/home-manager/po/es.po b/infra/libkookie/home-manager/home-manager/po/es.po
index 64a87416d31..95f2fea382d 100644
--- a/infra/libkookie/home-manager/home-manager/po/es.po
+++ b/infra/libkookie/home-manager/home-manager/po/es.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2022-01-11 21:45+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Spanish , 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: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-04-09 18:11+0000\n"
+"Last-Translator: Artin Mobasher \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 4.12-dev\n"
+
+#: home-manager/home-manager:60
+msgid "No configuration file found at %s"
+msgstr "هیچ فایل تنظیماتی در %s پیدا نشد"
+
+#: home-manager/home-manager:79
+msgid "No configuration file found. Please create one at %s"
+msgstr "هیچ فایل تنظیماتی پیدا نشد. لطفا یک فایل در %s بسازید"
+
+#: home-manager/home-manager:122
+msgid "Can't inspect options of a flake configuration"
+msgstr ""
+
+#: home-manager/home-manager:162
+msgid "Can't instantiate a flake configuration"
+msgstr ""
+
+#: home-manager/home-manager:237
+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:251
+msgid "Unknown \"news.display\" setting \"%s\"."
+msgstr ""
+
+#: home-manager/home-manager:258
+#, sh-format
+msgid "Please set the $EDITOR environment variable"
+msgstr ""
+
+#: home-manager/home-manager:273
+msgid "Cannot run build in read-only directory"
+msgstr ""
+
+#: home-manager/home-manager:355
+msgid "No generation with ID %s"
+msgstr ""
+
+#: home-manager/home-manager:357
+msgid "Cannot remove the current generation %s"
+msgstr ""
+
+#: home-manager/home-manager:359
+msgid "Removing generation %s"
+msgstr ""
+
+#: home-manager/home-manager:385
+msgid "No generations to expire"
+msgstr ""
+
+#: home-manager/home-manager:396
+msgid "No home-manager packages seem to be installed."
+msgstr ""
+
+#: home-manager/home-manager:453
+msgid "Unknown argument %s"
+msgstr ""
+
+#: home-manager/home-manager:469
+msgid "This will remove Home Manager from your system."
+msgstr ""
+
+#: home-manager/home-manager:472
+msgid "This is a dry run, nothing will actually be uninstalled."
+msgstr ""
+
+#: home-manager/home-manager:476
+msgid "Really uninstall Home Manager?"
+msgstr ""
+
+#: home-manager/home-manager:481
+msgid "Switching to empty Home Manager configuration..."
+msgstr ""
+
+#: home-manager/home-manager:493
+#, fuzzy
+msgid "Yay!"
+msgstr "آره!"
+
+#: home-manager/home-manager:500
+msgid "Remove all Home Manager generations?"
+msgstr ""
+
+#: home-manager/home-manager:507
+msgid "All generations are now eligible for garbage collection."
+msgstr ""
+
+#: home-manager/home-manager:510
+msgid "Leaving generations but they may still be garbage collected."
+msgstr ""
+
+#: home-manager/home-manager:514
+msgid "Home Manager is uninstalled but your home.nix is left untouched."
+msgstr ""
+
+#: home-manager/home-manager:673
+msgid "%s: unknown option '%s'"
+msgstr ""
+
+#: home-manager/home-manager:674
+msgid "Run '%s --help' for usage help"
+msgstr ""
+
+#: home-manager/home-manager:708
+msgid "expire-generations expects one argument, got %d."
+msgstr ""
+
+#: home-manager/home-manager:730
+msgid "Unknown command: %s"
+msgstr "دستور ناشناخته: %s"
+
+#: home-manager/install.nix:22
+msgid "Creating initial Home Manager configuration..."
+msgstr "ایجاد تنظیمات اولیه Home-Manager..."
+
+#: home-manager/install.nix:66
+msgid "Creating initial Home Manager generation..."
+msgstr ""
+
+#. translators: The "%s" specifier will be replaced by a file path.
+#: home-manager/install.nix:71
+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/install.nix:76
+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 ""
+
+#: home-manager/install.nix:83
+msgid "This derivation is not buildable, please run it using nix-shell."
+msgstr ""
diff --git a/infra/libkookie/home-manager/home-manager/po/fr.po b/infra/libkookie/home-manager/home-manager/po/fr.po
index 8a7db82d111..5a129e9d24f 100644
--- a/infra/libkookie/home-manager/home-manager/po/fr.po
+++ b/infra/libkookie/home-manager/home-manager/po/fr.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2021-12-19 16:51+0000\n"
"Last-Translator: TheBlackBeans \n"
"Language-Team: French 1;\n"
"X-Generator: Weblate 4.10\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "Aucun fichier de configuration trouvé à l'emplacement %s"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
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:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "Impossible d'inspecter les options d'une configuration en flocons"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Impossible d'instancier une configuration flake"
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -51,96 +51,96 @@ 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:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuration \"news.display\" iconnue \"%s\"."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Veuillez définir la variable d'environnement $EDITOR"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Impossible de lancer une compilation dans un dossier en écriture seule"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Aucune génération avec l'identifiant %s"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Impossible de supprimer la génération courante %s"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Suppression de la génération %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Aucune génération expirée"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Aucun paquet home-manager ne semble être installé."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Aucun argument %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Cela va supprimer Home Manager de votre système."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
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:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Voulez-vous vraiment désinstaller Home Manager ?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Changement vers une configuration vierge de Home Manager..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Yay !"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Supprimer toutes les générations de Home Manager ?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr ""
"Toutes les générations sont maintenant éligibles pour la collecte des "
"ordures."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
"Les générations sortantes mais elles peuvent encore être collectées par les "
"ordures."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
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:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s : option inconnue « %s »"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Exécuter « %s --help » pour de l'aide sur l'utilisation"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations attend un argument, a obtenu %d."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Commande inconnue : %s"
diff --git a/infra/libkookie/home-manager/home-manager/po/home-manager.pot b/infra/libkookie/home-manager/home-manager/po/home-manager.pot
index e37bd6851a9..003a344b0e9 100644
--- a/infra/libkookie/home-manager/home-manager/po/home-manager.pot
+++ b/infra/libkookie/home-manager/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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,23 +18,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr ""
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr ""
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr ""
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr ""
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -44,92 +44,92 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr ""
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr ""
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr ""
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr ""
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr ""
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr ""
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr ""
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr ""
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr ""
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
-#: home-manager/home-manager:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr ""
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr ""
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
msgstr ""
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr ""
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr ""
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
-#: home-manager/home-manager:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr ""
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr ""
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr ""
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr ""
diff --git a/infra/libkookie/home-manager/home-manager/po/it.po b/infra/libkookie/home-manager/home-manager/po/it.po
new file mode 100644
index 00000000000..610762624c1
--- /dev/null
+++ b/infra/libkookie/home-manager/home-manager/po/it.po
@@ -0,0 +1,185 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Home Manager contributors
+# This file is distributed under the same license as the Home Manager package.
+# FIRST AUTHOR , 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: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-04-20 18:18+0000\n"
+"Last-Translator: Frankie McEyes \n"
+"Language-Team: Italian \n"
+"Language: it\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 4.12-dev\n"
+
+#: home-manager/home-manager:60
+msgid "No configuration file found at %s"
+msgstr "Nessun file di configurazione trovato in %s"
+
+#: home-manager/home-manager:79
+msgid "No configuration file found. Please create one at %s"
+msgstr "Nessun file di configurazione trovato. Per favore crearne uno in %s"
+
+#: home-manager/home-manager:122
+msgid "Can't inspect options of a flake configuration"
+msgstr "Impossibile ispezionare le opzioni di configurazione flake"
+
+#: home-manager/home-manager:162
+msgid "Can't instantiate a flake configuration"
+msgstr "Impossibile istanziare una configurazione flake"
+
+#: home-manager/home-manager:237
+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] ""
+"C'è %d novità di elementi non letta.\n"
+"Leggila con il comando \"%s news\"."
+msgstr[1] ""
+"Ci sono %d novità di elementi non letti\n"
+"Leggile con il comando \"%s news\"."
+
+#: home-manager/home-manager:251
+msgid "Unknown \"news.display\" setting \"%s\"."
+msgstr "Opzione \"news.display\" sconosciuta \"%s\"."
+
+#: home-manager/home-manager:258
+#, sh-format
+msgid "Please set the $EDITOR environment variable"
+msgstr "Per favore impostare la variabile d'ambient $EDITOR"
+
+#: home-manager/home-manager:273
+msgid "Cannot run build in read-only directory"
+msgstr "Impossibile eseguire la build in una cartella in sola lettura"
+
+#: home-manager/home-manager:355
+msgid "No generation with ID %s"
+msgstr "Nessuna generazione con ID %s"
+
+#: home-manager/home-manager:357
+msgid "Cannot remove the current generation %s"
+msgstr "Impossibile rimuovere la generazione corrente %s"
+
+#: home-manager/home-manager:359
+msgid "Removing generation %s"
+msgstr "Rimuovo la generazione %s"
+
+#: home-manager/home-manager:385
+msgid "No generations to expire"
+msgstr "Nessuna generazione in scadenza"
+
+#: home-manager/home-manager:396
+msgid "No home-manager packages seem to be installed."
+msgstr "Nessun pacchetto home-manager sembra essere installato."
+
+#: home-manager/home-manager:453
+msgid "Unknown argument %s"
+msgstr "Argomento sconosciuto: %s"
+
+#: home-manager/home-manager:469
+msgid "This will remove Home Manager from your system."
+msgstr "Questo rimuoverà Home Manger dal tuo sistema."
+
+#: home-manager/home-manager:472
+msgid "This is a dry run, nothing will actually be uninstalled."
+msgstr "Questo è un avvio a secco, nulla verrà realmente disinstallato."
+
+#: home-manager/home-manager:476
+msgid "Really uninstall Home Manager?"
+msgstr "Vuoi davvero disinstallare Home Manager?"
+
+#: home-manager/home-manager:481
+msgid "Switching to empty Home Manager configuration..."
+msgstr "Cambio ad una configurazione Home Manager vuota..."
+
+#: home-manager/home-manager:493
+msgid "Yay!"
+msgstr "Urrà!"
+
+#: home-manager/home-manager:500
+msgid "Remove all Home Manager generations?"
+msgstr "Rimuovere tutte le generazioni Home Manager?"
+
+#: home-manager/home-manager:507
+msgid "All generations are now eligible for garbage collection."
+msgstr "Tutte le generazioni sono ora pronte per essere cestinate."
+
+#: home-manager/home-manager:510
+msgid "Leaving generations but they may still be garbage collected."
+msgstr "Abbandono le generazioni, ma possono essere ancora cestinate."
+
+#: home-manager/home-manager:514
+msgid "Home Manager is uninstalled but your home.nix is left untouched."
+msgstr "Home Manager è disinstallato ma la tua home.Nix non è stata toccata."
+
+#: home-manager/home-manager:673
+msgid "%s: unknown option '%s'"
+msgstr "%s: opzione sconosciuta '%s'"
+
+#: home-manager/home-manager:674
+msgid "Run '%s --help' for usage help"
+msgstr "Esegui '%s --help' per ottenere aiuto"
+
+#: home-manager/home-manager:708
+msgid "expire-generations expects one argument, got %d."
+msgstr "expire-generations si aspetta un solo argomento, invece di %d."
+
+#: home-manager/home-manager:730
+msgid "Unknown command: %s"
+msgstr "Comando sconosciuto: %s"
+
+#: home-manager/install.nix:22
+msgid "Creating initial Home Manager configuration..."
+msgstr "Creando la configurazione iniziale di Home Manager..."
+
+#: home-manager/install.nix:66
+msgid "Creating initial Home Manager generation..."
+msgstr "Creando la generazione iniziale di Home Manager..."
+
+#. translators: The "%s" specifier will be replaced by a file path.
+#: home-manager/install.nix:71
+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 ""
+"Tutto fatto! Home-manager dovrebbe essere installato e puoi modificare\n"
+"\n"
+"%s\n"
+"\n"
+"per configurare Home Manager. Esegui 'man home-configurazion.nix' per\n"
+"consultare tutte le opzioni disponibili."
+
+#. translators: The "%s" specifier will be replaced by a URL.
+#: home-manager/install.nix:76
+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 ""
+"Oh no, l'installazione non è andata a buon fine! Per favore aprire un ticket "
+"issue a\n"
+"\n"
+"%s\n"
+"\n"
+"se l'errore sembra essere causato da Home Manager."
+
+#: home-manager/install.nix:83
+msgid "This derivation is not buildable, please run it using nix-shell."
+msgstr ""
+"Questa derivazione non è compilabile, prova ad eseguila usando nix-shell."
diff --git a/infra/libkookie/home-manager/home-manager/po/ja.po b/infra/libkookie/home-manager/home-manager/po/ja.po
index 3a248fe5df4..42c50a278a9 100644
--- a/infra/libkookie/home-manager/home-manager/po/ja.po
+++ b/infra/libkookie/home-manager/home-manager/po/ja.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2022-02-10 04:55+0000\n"
"Last-Translator: Heman Gandhi \n"
"Language-Team: Japanese \n"
"Language-Team: Korean \n"
"Language-Team: Norwegian Bokmål \n"
"Language-Team: Polish =20) ? 1 : 2;\n"
"X-Generator: Weblate 4.10.1\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego %s"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego. Proszę utworzyć plik %s"
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "Nie mogę sprawdzić konfiguracji flake'a"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Nie mogę zinstancjować konfiguracji flake'a"
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -53,95 +53,95 @@ msgstr[2] ""
"Jest %d nieodczytanych wiadomości.\n"
"Możesz je odczytać uruchamiając „%s news”."
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Nieznane ustawienie „%s” „news.display”."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Proszę ustawić zmienną środowiskową $EDITOR"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Nie mogę uruchomić budowania w katalogu tylko-do-odczytu"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Brak generacji z ID %s"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Nie mogę usunąć bieżącej generacji %s"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Usuwanie generacji %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Brak wygasających generacji"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Pakiety home-manager nie wydają się być zainstalowane."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Nieznany argument %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "To usunie Home Managera z twojego systemu."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
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:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Jesteś pewien usunięcia Home Managera?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Przełączanie do pustej konfiguracji Home Managera..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Jej!"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Usunąć wszystkie generacje Home Managera?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr ""
"Wszystkie generacje są uwzględnione przy oczyszczaniu (garbage collection)."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
"Zostawiam generacje ale wciąż mogą zostać usunięte (garbage collection)."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
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:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: nieznana opcja „%s”"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Uruchom „%s --help” by otrzymać pomoc"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations oczekuje jednego argumentu, otrzymane %d."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Nieznana komenda: %s"
diff --git a/infra/libkookie/home-manager/home-manager/po/pt_BR.po b/infra/libkookie/home-manager/home-manager/po/pt_BR.po
index fc9ee862ba6..de2fb705676 100644
--- a/infra/libkookie/home-manager/home-manager/po/pt_BR.po
+++ b/infra/libkookie/home-manager/home-manager/po/pt_BR.po
@@ -7,33 +7,35 @@ msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
-"POT-Creation-Date: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-04-04 11:11+0000\n"
+"Last-Translator: Alex Miranda \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 4.12-dev\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
-msgstr ""
+msgstr "Nenhum arquivo de configuração encontrado no %s"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
-msgstr ""
+msgstr "Arquivo de configuração não encontrado. Por favor crie um em %s"
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
-msgstr ""
+msgstr "Não é possivel inspecionar a opção de configuração do flake"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
-msgstr ""
+msgstr "Não foi possível instanciar a configuração de flake"
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -41,104 +43,110 @@ msgid_plural ""
"There are %d unread and relevant news items.\n"
"Read them by running the command \"%s news\"."
msgstr[0] ""
+"Há %d novo item relevante não lido\n"
+"Leia executando o comando \"%s news\"."
msgstr[1] ""
+"Há %d novos itens relevants não lidos\n"
+"Leia executando o comando \"%s news\"."
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
-msgstr ""
+msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
-msgstr ""
+msgstr "Por favor defina a variável de ambiente $EDITOR"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
-msgstr ""
+msgstr "Não é possível fazer o build em um diretório somente leitura"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
-msgstr ""
+msgstr "Nenhuma geração com ID %s"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
-msgstr ""
+msgstr "Não foi possível remover a geração atual %s"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
-msgstr ""
+msgstr "Removendo geração %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
-msgstr ""
+msgstr "Nenhuma geração a expirar"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
-msgstr ""
+msgstr "Nenhum pacote parece instalado com home-manager."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
-msgstr ""
+msgstr "Argumento desconhecido %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
-msgstr ""
+msgstr "Isso irá remover o Home Manager do seu sistema."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
-msgstr ""
+msgstr "Essa é uma execução de teste, nada de fato será desinstalado."
-#: home-manager/home-manager:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
-msgstr ""
+msgstr "Confirma a desinstalação do Home Manager?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
-msgstr ""
+msgstr "Trocando para configuração vazia do Home Manager..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
-msgstr ""
+msgstr "Boa!"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
-msgstr ""
+msgstr "Remover todas as gerações do Home Manager?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
-msgstr ""
+msgstr "Todas gerações agora são elegíveis para coleta do garbage collector."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
+"Deixando gerações, entretanto elas ainda poderão ser limpas pelo garbage "
+"collector."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
msgid "Home Manager is uninstalled but your home.nix is left untouched."
-msgstr ""
+msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto."
-#: home-manager/home-manager:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
-msgstr ""
+msgstr "%s: opção não reconhecida '%s'"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
-msgstr ""
+msgstr "Execute '%s --help' para instruções de uso"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
-msgstr ""
+msgstr "expire-generations espera um argumento, recebeu %d."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
-msgstr ""
+msgstr "Comando não reconhecido: %s"
#: home-manager/install.nix:22
msgid "Creating initial Home Manager configuration..."
-msgstr ""
+msgstr "Criando a configuração inicial do Home Manager..."
#: home-manager/install.nix:66
msgid "Creating initial Home Manager generation..."
-msgstr ""
+msgstr "Criando a geração inicial do Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/install.nix:71
@@ -150,6 +158,13 @@ msgid ""
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
+"Pronto! O home-manager deve ser instalado agora e você poderá editar o "
+"arquivo\n"
+"\n"
+" %s\n"
+"\n"
+"para configurar o Home Manager. Execute 'man home-configuration.nix' para\n"
+"ver todas as opções disponíveis."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/install.nix:76
@@ -160,7 +175,14 @@ msgid ""
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
+"Ixi, a instalação falhou! Por favor crie um issue no\n"
+"\n"
+" %s\n"
+"\n"
+"se o erro lhe parecer ser um problema do Home Manager."
#: home-manager/install.nix:83
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
+"O build dessa derivation não pode ser feito, por favor rode usando o nix-"
+"shell."
diff --git a/infra/libkookie/home-manager/home-manager/po/ru.po b/infra/libkookie/home-manager/home-manager/po/ru.po
index 7ccb1c03a87..05378c0fe52 100644
--- a/infra/libkookie/home-manager/home-manager/po/ru.po
+++ b/infra/libkookie/home-manager/home-manager/po/ru.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2021-12-21 19:55+0000\n"
"Last-Translator: Mikhail Chekan \n"
"Language-Team: Russian =20) ? 1 : 2;\n"
"X-Generator: Weblate 4.10\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "Не найден файл конфигурации в %s"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Не найден файл конфигурации. Пожалуйста, создайте его в %s"
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "Не могу получить опции для flake-конфигурации"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Не могу создать экземляр для flake-конфигурации"
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -53,92 +53,92 @@ msgstr[2] ""
"У вас есть %d непрочитанных и релевантных новостей.\n"
"Прочтите их, выполнив команду \"%s news\"."
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Неизвестное значение \"news.display\": \"%s\"."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Пожалуйста, определите переменную среды $EDITOR"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Не могу начать сборку в директории, защищённой от записи"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Поколение под номером %s не существует"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Не могу удалить текущее поколение %s"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Удаляю поколение %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Нет поколений, которые можно просрочить"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Не обнаружено пакетов, установленных через home-manager."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Неизвестный аргумент %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Это удалит Home Manager из вашей системы."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Это пробный запуск, на самом деле ничего не удаляется."
-#: home-manager/home-manager:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Действительно хотите удалить Home Manager?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Переключаюсь на пустую конфигурацию Home Manager..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Ура!"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Удалить все поколения Home Manager?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Теперь все поколения готовы к удалению сборщиком мусора."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr "Поколения остаются, но их ещё можно удалить сборщиком мусора."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager удалён, но ваш home.nix остался нетронутым."
-#: home-manager/home-manager:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: неизвестная опция '%s'"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Выполните '%s --help', чтобы получить справку"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations требует один аргумент, но передано %d."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s"
diff --git a/infra/libkookie/home-manager/home-manager/po/sv.po b/infra/libkookie/home-manager/home-manager/po/sv.po
index 01ae51911b7..6ca1fc7f946 100644
--- a/infra/libkookie/home-manager/home-manager/po/sv.po
+++ b/infra/libkookie/home-manager/home-manager/po/sv.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2021-12-17 20:50+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Swedish \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Oğuz Ersen \n"
"Language-Team: Turkish \n"
"Language: tr\n"
@@ -17,25 +17,26 @@ 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.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: home-manager/home-manager:43
+#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "%s konumunda yapılandırma dosyası bulunamadı"
-#: home-manager/home-manager:62
+#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
-msgstr "Yapılandırma dosyası bulunamadı. Lütfen %s konumunda bir tane oluşturun"
+msgstr ""
+"Yapılandırma dosyası bulunamadı. Lütfen %s konumunda bir tane oluşturun"
-#: home-manager/home-manager:105
+#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
-msgstr "Flake konfigürasyonunun ayarları incelenemiyor"
+msgstr "Flake yapılandırmasının ayarları incelenemiyor"
-#: home-manager/home-manager:145
+#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
-msgstr "Flake konfigürasyonu örneklendirilemiyor"
+msgstr "Flake yapılandırması örneklendirilemiyor"
-#: home-manager/home-manager:220
+#: home-manager/home-manager:237
msgid ""
"There is %d unread and relevant news item.\n"
"Read it by running the command \"%s news\"."
@@ -49,98 +50,98 @@ msgstr[1] ""
"%d tane okunmamış ilgili haberler bulunmakta.\n"
"Okumak için \"%s news\"."
-#: home-manager/home-manager:234
+#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Bilinmeyen \"news.display\" seçeneği \"%s\"."
-#: home-manager/home-manager:241
+#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Lütfen $EDITOR ortam değişkenini tanımlayın"
-#: home-manager/home-manager:256
+#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "İnşa, sadece okunabilir bir klasörde çalıştırılamaz"
-#: home-manager/home-manager:338
+#: home-manager/home-manager:355
msgid "No generation with ID %s"
-msgstr "%S ID'sine sahip inşa bulunamadı"
+msgstr "%s ID'sine sahip inşa bulunamadı"
-#: home-manager/home-manager:340
+#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Kullanımda olan %s inşası silinemez"
-#: home-manager/home-manager:342
+#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "İnşa siliniyor %s"
-#: home-manager/home-manager:368
+#: home-manager/home-manager:385
msgid "No generations to expire"
-msgstr ""
+msgstr "Süresi dolacak inşa yok"
-#: home-manager/home-manager:378
+#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Galiba home-manager paketi kurulu değil."
-#: home-manager/home-manager:435
+#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Bilinmeyen argüman %s"
-#: home-manager/home-manager:450
+#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Bu, sisteminizden Home Manager'ı kaldıracak."
-#: home-manager/home-manager:453
+#: home-manager/home-manager:472
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:457
+#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
-msgstr "Home Manager'ı silmek istediğine emin misin?"
+msgstr "Home Manager'ı silmek istediğinize emin misiniz?"
-#: home-manager/home-manager:462
+#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
-msgstr "Boş Home Manager konfigürasyonuna geçiliyor..."
+msgstr "Boş Home Manager yapılandırmasına geçiliyor..."
-#: home-manager/home-manager:474
+#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Güzel!"
-#: home-manager/home-manager:481
+#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Tüm Home Manager inşaları kaldırılsın mı?"
-#: home-manager/home-manager:488
+#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Artık tüm inşalar çöp olarak toplanabilir."
-#: home-manager/home-manager:491
+#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
-msgstr "İnşalar gene de çöp olarak toplanabilir."
+msgstr "İnşalar yine de çöp olarak toplanabilir."
-#: home-manager/home-manager:495
+#: home-manager/home-manager:514
msgid "Home Manager is uninstalled but your home.nix is left untouched."
-msgstr "Home manager kaldırıldı ama home.nix dosyasına dokunulmadı."
+msgstr "Home Manager kaldırıldı ama home.nix dosyasına dokunulmadı."
-#: home-manager/home-manager:646
+#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: Bilinmeyen komut '%s'"
-#: home-manager/home-manager:647
+#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Yardım için '%s --help'"
-#: home-manager/home-manager:681
+#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations bir argüman istiyor, %d tane girildi."
-#: home-manager/home-manager:703
+#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s"
#: home-manager/install.nix:22
msgid "Creating initial Home Manager configuration..."
-msgstr "İlk Home Manager konfigürasyonu oluşturuluyor..."
+msgstr "İlk Home Manager yapılandırması oluşturuluyor..."
#: home-manager/install.nix:66
msgid "Creating initial Home Manager generation..."
@@ -156,10 +157,9 @@ msgid ""
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
-"Herşey tamam! home-manager aracı yüklendi. Home Manager'ı konfigüre etmek "
-"için\n"
+"Herşey tamam! home-manager aracı kuruldu. Home Manager'ı yapılandırmak için\n"
"\n"
-" %S\n"
+" %s\n"
"\n"
"dosyasını düzenleyin. Kullanılabilir seçenekleri görmek için:\n"
"'man home-configuration.nix'."
@@ -174,11 +174,11 @@ msgid ""
"if the error seems to be the fault of Home Manager."
msgstr ""
"Eyvah, kurulum başarısız! Eğer hatanın Home Manager'dan kaynaklandığını "
-"düşünüyorsan\n"
+"düşünüyorsanız\n"
"\n"
" %s\n"
"\n"
-"konumundan bildir."
+"adresinden bildirin."
#: home-manager/install.nix:83
msgid "This derivation is not buildable, please run it using nix-shell."
diff --git a/infra/libkookie/home-manager/home-manager/po/zh_Hans.po b/infra/libkookie/home-manager/home-manager/po/zh_Hans.po
index c8d913830bb..b3de7b2b73a 100644
--- a/infra/libkookie/home-manager/home-manager/po/zh_Hans.po
+++ b/infra/libkookie/home-manager/home-manager/po/zh_Hans.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2021-12-28 12:41+0000\n"
"Last-Translator: WhiredPlanck \n"
"Language-Team: Chinese (Simplified) \n"
"Language-Team: Chinese (Traditional) b.time) (
filter (a: a.condition) rawModule.config.news.entries
);
+
+ inherit (module._module.args) pkgs;
}
diff --git a/infra/libkookie/home-manager/modules/files.nix b/infra/libkookie/home-manager/modules/files.nix
index 50dc500184d..a7fd67f57a0 100644
--- a/infra/libkookie/home-manager/modules/files.nix
+++ b/infra/libkookie/home-manager/modules/files.nix
@@ -239,7 +239,7 @@ in
}
function cleanOldGen() {
- if [[ ! -v oldGenPath ]] ; then
+ if [[ ! -v oldGenPath || ! -e "$oldGenPath/home-files" ]] ; then
return
fi
@@ -259,8 +259,18 @@ in
cleanOldGen
if [[ ! -v oldGenPath || "$oldGenPath" != "$newGenPath" ]] ; then
- _i "Creating profile generation %s" "$newGenNum"
- $DRY_RUN_CMD nix-env $VERBOSE_ARG --profile "$genProfilePath" --set "$newGenPath"
+ _i "Creating profile generation %s" $newGenNum
+ if [[ -e "$genProfilePath"/manifest.json ]] ; then
+ # Remove all packages from "$genProfilePath"
+ # `nix profile remove '.*' --profile "$genProfilePath"` was not working, so here is a workaround:
+ nix profile list --profile "$genProfilePath" \
+ | cut -d ' ' -f 4 \
+ | xargs -t $DRY_RUN_CMD nix profile remove $VERBOSE_ARG --profile "$genProfilePath"
+ $DRY_RUN_CMD nix profile install $VERBOSE_ARG --profile "$genProfilePath" "$newGenPath"
+ else
+ $DRY_RUN_CMD nix-env $VERBOSE_ARG --profile "$genProfilePath" --set "$newGenPath"
+ fi
+
$DRY_RUN_CMD ln -Tsf $VERBOSE_ARG "$newGenPath" "$newGenGcPath"
else
_i "No change so reusing latest profile generation %s" "$oldGenNum"
diff --git a/infra/libkookie/home-manager/modules/home-environment.nix b/infra/libkookie/home-manager/modules/home-environment.nix
index af32cc50b47..b83cf1d1e31 100644
--- a/infra/libkookie/home-manager/modules/home-environment.nix
+++ b/infra/libkookie/home-manager/modules/home-environment.nix
@@ -578,17 +578,36 @@ in
if config.submoduleSupport.externalPackageInstall
then
''
- if nix-env -q | grep '^home-manager-path$'; then
- $DRY_RUN_CMD nix-env -e home-manager-path
+ if [[ -e "$nixProfilePath"/manifest.json ]] ; then
+ nix profile list \
+ | { grep 'home-manager-path$' || test $? = 1; } \
+ | awk -F ' ' '{ print $4 }' \
+ | cut -d ' ' -f 4 \
+ | xargs -t $DRY_RUN_CMD nix profile remove $VERBOSE_ARG
+ else
+ if nix-env -q | grep '^home-manager-path$'; then
+ $DRY_RUN_CMD nix-env -e home-manager-path
+ fi
fi
''
else
''
- if ! $DRY_RUN_CMD nix-env -i ${cfg.path} ; then
+ if [[ -e "$nixProfilePath"/manifest.json ]] ; then
+ INSTALL_CMD="nix profile install"
+ LIST_CMD="nix profile list"
+ REMOVE_CMD_SYNTAX='nix profile remove {number | store path}'
+ else
+ INSTALL_CMD="nix-env -i"
+ LIST_CMD="nix-env -q"
+ REMOVE_CMD_SYNTAX='nix-env -e {package name}'
+ fi
+
+ if ! $DRY_RUN_CMD $INSTALL_CMD ${cfg.path} ; then
echo
- _iError $'Oops, nix-env failed to install your new Home Manager profile!\n\nPerhaps there is a conflict with a package that was installed using\n"nix-env -i"? Try running\n\n nix-env -q\n\nand if there is a conflicting package you can remove it with\n\n nix-env -e {package name}\n\nThen try activating your Home Manager configuration again.'
+ _iError $'Oops, Nix failed to install your new Home Manager profile!\n\nPerhaps there is a conflict with a package that was installed using\n"%s"? Try running\n\n %s\n\nand if there is a conflicting package you can remove it with\n\n %s\n\nThen try activating your Home Manager configuration again.' "$INSTALL_CMD" "$LIST_CMD" "$REMOVE_CMD_SYNTAX"
exit 1
fi
+ unset INSTALL_CMD LIST_CMD REMOVE_CMD_SYNTAX
''
);
@@ -598,7 +617,7 @@ in
lib.bash.initHomeManagerLib =
let
domainDir = pkgs.runCommand "hm-modules-messages" {
- nativeBuildInputs = [ pkgs.gettext ];
+ nativeBuildInputs = [ pkgs.buildPackages.gettext ];
} ''
for path in ${./po}/*.po; do
lang="''${path##*/}"
diff --git a/infra/libkookie/home-manager/modules/launchd/default.nix b/infra/libkookie/home-manager/modules/launchd/default.nix
new file mode 100644
index 00000000000..17b36cdb954
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/launchd/default.nix
@@ -0,0 +1,213 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ inherit (pkgs.stdenv.hostPlatform) isDarwin;
+ inherit (lib.generators) toPlist;
+
+ cfg = config.launchd;
+ labelPrefix = "org.nix-community.home.";
+ dstDir = "${config.home.homeDirectory}/Library/LaunchAgents";
+
+ launchdConfig = { config, name, ... }: {
+ options = {
+ enable = mkEnableOption name;
+ config = mkOption {
+ type = types.submodule (import ./launchd.nix);
+ default = { };
+ example = literalExpression ''
+ {
+ ProgramArguments = [ "/usr/bin/say" "Good afternoon" ];
+ StartCalendarInterval = {
+ Hour = 12;
+ Minute = 0;
+ };
+ }
+ '';
+ description = ''
+ Define a launchd job. See
+ launchd.plist5
+ for details.
+ '';
+ };
+ };
+
+ config = { config.Label = mkDefault "${labelPrefix}${name}"; };
+ };
+
+ toAgent = config: pkgs.writeText "${config.Label}.plist" (toPlist { } config);
+
+ agentPlists =
+ mapAttrs' (n: v: nameValuePair "${v.config.Label}.plist" (toAgent v.config))
+ (filterAttrs (n: v: v.enable) cfg.agents);
+
+ agentsDrv = pkgs.runCommand "home-manager-agents" { } ''
+ mkdir -p "$out"
+
+ declare -A plists
+ plists=(${
+ concatStringsSep " "
+ (mapAttrsToList (name: value: "['${name}']='${value}'") agentPlists)
+ })
+
+ for dest in "''${!plists[@]}"; do
+ src="''${plists[$dest]}"
+ ln -s "$src" "$out/$dest"
+ done
+ '';
+in {
+ meta.maintainers = with maintainers; [ midchildan ];
+
+ options.launchd = {
+ enable = mkOption {
+ type = types.bool;
+ default = isDarwin;
+ defaultText = literalExpression "pkgs.stdenv.hostPlatform.isDarwin";
+ description = ''
+ Whether to enable Home Manager to define per-user daemons by making use
+ of launchd's LaunchAgents.
+ '';
+ };
+
+ agents = mkOption {
+ type = with types; attrsOf (submodule launchdConfig);
+ default = { };
+ description = "Define LaunchAgents.";
+ };
+ };
+
+ config = mkMerge [
+ {
+ assertions = [{
+ assertion = (cfg.enable && agentPlists != { }) -> isDarwin;
+ message = let names = lib.concatStringsSep ", " (attrNames agentPlists);
+ in "Must use Darwin for modules that require Launchd: " + names;
+ }];
+ }
+
+ (mkIf isDarwin {
+ home.extraBuilderCommands = ''
+ ln -s "${agentsDrv}" $out/LaunchAgents
+ '';
+
+ home.activation.checkLaunchAgents =
+ hm.dag.entryBefore [ "writeBoundary" ] ''
+ checkLaunchAgents() {
+ local oldDir newDir dstDir err
+ oldDir=""
+ err=0
+ if [[ -n "''${oldGenPath:-}" ]]; then
+ oldDir="$(readlink -m "$oldGenPath/LaunchAgents")" || err=$?
+ if (( err )); then
+ oldDir=""
+ fi
+ fi
+ newDir=${escapeShellArg agentsDrv}
+ dstDir=${escapeShellArg dstDir}
+
+ local oldSrcPath newSrcPath dstPath agentFile agentName
+
+ find -L "$newDir" -maxdepth 1 -name '*.plist' -type f -print0 \
+ | while IFS= read -rd "" newSrcPath; do
+ agentFile="''${newSrcPath##*/}"
+ agentName="''${agentFile%.plist}"
+ dstPath="$dstDir/$agentFile"
+ oldSrcPath="$oldDir/$agentFile"
+
+ if [[ ! -e "$dstPath" ]]; then
+ continue
+ fi
+
+ if ! cmp --quiet "$oldSrcPath" "$dstPath"; then
+ errorEcho "Existing file '$dstPath' is in the way of '$newSrcPath'"
+ exit 1
+ fi
+ done
+ }
+
+ checkLaunchAgents
+ '';
+
+ # NOTE: Launch Agent configurations can't be symlinked from the Nix store
+ # because it needs to be owned by the user running it.
+ home.activation.setupLaunchAgents =
+ hm.dag.entryAfter [ "writeBoundary" ] ''
+ setupLaunchAgents() {
+ local oldDir newDir dstDir domain err
+ oldDir=""
+ err=0
+ if [[ -n "''${oldGenPath:-}" ]]; then
+ oldDir="$(readlink -m "$oldGenPath/LaunchAgents")" || err=$?
+ if (( err )); then
+ oldDir=""
+ fi
+ fi
+ newDir="$(readlink -m "$newGenPath/LaunchAgents")"
+ dstDir=${escapeShellArg dstDir}
+ domain="gui/$UID"
+ err=0
+
+ local srcPath dstPath agentFile agentName i bootout_retries
+ bootout_retries=10
+
+ find -L "$newDir" -maxdepth 1 -name '*.plist' -type f -print0 \
+ | while IFS= read -rd "" srcPath; do
+ agentFile="''${srcPath##*/}"
+ agentName="''${agentFile%.plist}"
+ dstPath="$dstDir/$agentFile"
+
+ if cmp --quiet "$srcPath" "$dstPath"; then
+ continue
+ fi
+ if [[ -f "$dstPath" ]]; then
+ for (( i = 0; i < bootout_retries; i++ )); do
+ $DRY_RUN_CMD launchctl bootout "$domain/$agentName" || err=$?
+ if [[ -v DRY_RUN ]]; then
+ break
+ fi
+ if (( err != 9216 )) &&
+ ! launchctl print "$domain/$agentName" &> /dev/null; then
+ break
+ fi
+ sleep 1
+ done
+ if (( i == bootout_retries )); then
+ warnEcho "Failed to stop '$domain/$agentName'"
+ return 1
+ fi
+ fi
+ $DRY_RUN_CMD install -Dm444 -T "$srcPath" "$dstPath"
+ $DRY_RUN_CMD launchctl bootstrap "$domain" "$dstPath"
+ done
+
+ if [[ ! -e "$oldDir" ]]; then
+ return
+ fi
+
+ find -L "$oldDir" -maxdepth 1 -name '*.plist' -type f -print0 \
+ | while IFS= read -rd "" srcPath; do
+ agentFile="''${srcPath##*/}"
+ agentName="''${agentFile%.plist}"
+ dstPath="$dstDir/$agentFile"
+ if [[ -e "$newDir/$agentFile" ]]; then
+ continue
+ fi
+
+ $DRY_RUN_CMD launchctl bootout "$domain/$agentName" || :
+ if [[ ! -e "$dstPath" ]]; then
+ continue
+ fi
+ if ! cmp --quiet "$srcPath" "$dstPath"; then
+ warnEcho "Skipping deletion of '$dstPath', since its contents have diverged"
+ continue
+ fi
+ $DRY_RUN_CMD rm -f $VERBOSE_ARG "$dstPath"
+ done
+ }
+
+ setupLaunchAgents
+ '';
+ })
+ ];
+}
diff --git a/infra/libkookie/home-manager/modules/launchd/launchd.nix b/infra/libkookie/home-manager/modules/launchd/launchd.nix
new file mode 100644
index 00000000000..e25c005b29a
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/launchd/launchd.nix
@@ -0,0 +1,869 @@
+# launchd option type from nix-darwin
+#
+# Original Source:
+# https://github.com/LnL7/nix-darwin/blob/a34dea2/modules/launchd/launchd.nix
+
+# Copyright 2017 Daiderd Jordan
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+{ config, lib, ... }:
+
+with lib;
+
+{
+ options = {
+ Label = mkOption {
+ type = types.str;
+ description = "This required key uniquely identifies the job to launchd.";
+ };
+
+ Disabled = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key is used as a hint to launchctl(1) that it should not submit this job to launchd when
+ loading a job or jobs. The value of this key does NOT reflect the current state of the job on the run-ning running
+ ning system. If you wish to know whether a job is loaded in launchd, reading this key from a configura-tion configuration
+ tion file yourself is not a sufficient test. You should query launchd for the presence of the job using
+ the launchctl(1) list subcommand or use the ServiceManagement framework's
+ SMJobCopyDictionary() method.
+
+ Note that as of Mac OS X v10.6, this key's value in a configuration file conveys a default value, which
+ is changed with the [-w] option of the launchctl(1) load and unload subcommands. These subcommands no
+ longer modify the configuration file, so the value displayed in the configuration file is not necessar-ily necessarily
+ ily the value that launchctl(1) will apply. See launchctl(1) for more information.
+
+ Please also be mindful that you should only use this key if the provided on-demand and KeepAlive crite-ria criteria
+ ria are insufficient to describe the conditions under which your job needs to run. The cost to have a
+ job loaded in launchd is negligible, so there is no harm in loading a job which only runs once or very
+ rarely.
+ '';
+ };
+
+ UserName = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key specifies the user to run the job as. This key is only applicable when launchd is
+ running as root.
+ '';
+ };
+
+ GroupName = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key specifies the group to run the job as. This key is only applicable when launchd is
+ running as root. If UserName is set and GroupName is not, the the group will be set to the default
+ group of the user.
+ '';
+ };
+
+ inetdCompatibility = mkOption {
+ default = null;
+ example = { Wait = true; };
+ description = ''
+ The presence of this key specifies that the daemon expects to be run as if it were launched from inetd.
+ '';
+ type = types.nullOr (types.submodule {
+ options = {
+ Wait = mkOption {
+ type = types.nullOr (types.either types.bool types.str);
+ default = null;
+ description = ''
+ This flag corresponds to the "wait" or "nowait" option of inetd. If true, then the listening
+ socket is passed via the standard in/out/error file descriptors. If false, then accept(2) is
+ called on behalf of the job, and the result is passed via the standard in/out/error descriptors.
+ '';
+ };
+ };
+ });
+ };
+
+ LimitLoadToHosts = mkOption {
+ type = types.nullOr (types.listOf types.str);
+ default = null;
+ description = ''
+ This configuration file only applies to the hosts listed with this key. Note: One should set kern.host-name kern.hostname
+ name in sysctl.conf(5) for this feature to work reliably.
+ '';
+ };
+
+ LimitLoadFromHosts = mkOption {
+ type = types.nullOr (types.listOf types.str);
+ default = null;
+ description = ''
+ This configuration file only applies to hosts NOT listed with this key. Note: One should set kern.host-name kern.hostname
+ name in sysctl.conf(5) for this feature to work reliably.
+ '';
+ };
+
+ LimitLoadToSessionType = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This configuration file only applies to sessions of the type specified. This key is used in concert
+ with the -S flag to launchctl.
+ '';
+ };
+
+ Program = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = ''
+ This key maps to the first argument of execvp(3). If this key is missing, then the first element of
+ the array of strings provided to the ProgramArguments will be used instead. This key is required in
+ the absence of the ProgramArguments key.
+ '';
+ };
+
+ ProgramArguments = mkOption {
+ type = types.nullOr (types.listOf types.str);
+ default = null;
+ description = ''
+ This key maps to the second argument of execvp(3). This key is required in the absence of the Program
+ key. Please note: many people are confused by this key. Please read execvp(3) very carefully!
+ '';
+ };
+
+ EnableGlobbing = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This flag causes launchd to use the glob(3) mechanism to update the program arguments before invoca-tion. invocation.
+ tion.
+ '';
+ };
+
+ EnableTransactions = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This flag instructs launchd that the job promises to use vproc_transaction_begin(3) and
+ vproc_transaction_end(3) to track outstanding transactions that need to be reconciled before the
+ process can safely terminate. If no outstanding transactions are in progress, then launchd is free to
+ send the SIGKILL signal.
+ '';
+ };
+
+ OnDemand = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This key was used in Mac OS X 10.4 to control whether a job was kept alive or not. The default was
+ true. This key has been deprecated and replaced in Mac OS X 10.5 and later with the more powerful
+ KeepAlive option.
+ '';
+ };
+
+ KeepAlive = mkOption {
+ type = types.nullOr (types.either types.bool (types.submodule {
+ options = {
+
+ SuccessfulExit = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ If true, the job will be restarted as long as the program exits and with an exit status of zero.
+ If false, the job will be restarted in the inverse condition. This key implies that "RunAtLoad"
+ is set to true, since the job needs to run at least once before we can get an exit status.
+ '';
+ };
+
+ NetworkState = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ If true, the job will be kept alive as long as the network is up, where up is defined as at least
+ one non-loopback interface being up and having IPv4 or IPv6 addresses assigned to them. If
+ false, the job will be kept alive in the inverse condition.
+ '';
+ };
+
+ PathState = mkOption {
+ type = types.nullOr (types.attrsOf types.bool);
+ default = null;
+ description = ''
+ Each key in this dictionary is a file-system path. If the value of the key is true, then the job
+ will be kept alive as long as the path exists. If false, the job will be kept alive in the
+ inverse condition. The intent of this feature is that two or more jobs may create semaphores in
+ the file-system namespace.
+ '';
+ };
+
+ OtherJobEnabled = mkOption {
+ type = types.nullOr (types.attrsOf types.bool);
+ default = null;
+ description = ''
+ Each key in this dictionary is the label of another job. If the value of the key is true, then
+ this job is kept alive as long as that other job is enabled. Otherwise, if the value is false,
+ then this job is kept alive as long as the other job is disabled. This feature should not be
+ considered a substitute for the use of IPC.
+ '';
+ };
+
+ # NOTE: this was missing in the original source at the time of writing
+ Crashed = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ If true, the the job will be restarted as long as it exited due to a signal which is typically
+ associated with a crash (SIGILL, SIGSEGV, etc.). If false, the job will be restarted in the inverse
+ condition.
+ '';
+ };
+
+ };
+ }));
+ default = null;
+ description = ''
+ This optional key is used to control whether your job is to be kept continuously running or to let
+ demand and conditions control the invocation. The default is false and therefore only demand will start
+ the job. The value may be set to true to unconditionally keep the job alive. Alternatively, a dictio-nary dictionary
+ nary of conditions may be specified to selectively control whether launchd keeps a job alive or not. If
+ multiple keys are provided, launchd ORs them, thus providing maximum flexibility to the job to refine
+ the logic and stall if necessary. If launchd finds no reason to restart the job, it falls back on
+ demand based invocation. Jobs that exit quickly and frequently when configured to be kept alive will
+ be throttled to converve system resources.
+ '';
+ };
+
+ RunAtLoad = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key is used to control whether your job is launched once at the time the job is loaded.
+ The default is false.
+ '';
+ };
+
+ RootDirectory = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key is used to specify a directory to chroot(2) to before running the job.
+ '';
+ };
+
+ WorkingDirectory = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key is used to specify a directory to chdir(2) to before running the job.
+ '';
+ };
+
+ EnvironmentVariables = mkOption {
+ type = types.nullOr (types.attrsOf types.str);
+ default = null;
+ description = ''
+ This optional key is used to specify additional environment variables to be set before running the
+ job.
+ '';
+ };
+
+ Umask = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ This optional key specifies what value should be passed to umask(2) before running the job. Known bug:
+ Property lists don't support octal, so please convert the value to decimal.
+ '';
+ };
+
+ TimeOut = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time
+ out will be supplied by launchd for use by the job at check in time.
+ '';
+ };
+
+ ExitTimeOut = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The
+ value zero is interpreted as infinity.
+ '';
+ };
+
+ ThrottleInterval = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ This key lets one override the default throttling policy imposed on jobs by launchd. The value is in
+ seconds, and by default, jobs will not be spawned more than once every 10 seconds. The principle
+ behind this is that jobs should linger around just in case they are needed again in the near future.
+ This not only reduces the latency of responses, but it encourages developers to amortize the cost of
+ program invocation.
+ '';
+ };
+
+ InitGroups = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies whether initgroups(3) should be called before running the job. The default
+ is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set.
+ '';
+ };
+
+ WatchPaths = mkOption {
+ type = types.nullOr (types.listOf types.path);
+ default = null;
+ description = ''
+ This optional key causes the job to be started if any one of the listed paths are modified.
+ '';
+ };
+
+ QueueDirectories = mkOption {
+ type = types.nullOr (types.listOf types.str);
+ default = null;
+ description = ''
+ Much like the WatchPaths option, this key will watch the paths for modifications. The difference being
+ that the job will only be started if the path is a directory and the directory is not empty.
+ '';
+ };
+
+ StartOnMount = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key causes the job to be started every time a filesystem is mounted.
+ '';
+ };
+
+ StartInterval = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ This optional key causes the job to be started every N seconds. If the system is asleep, the job will
+ be started the next time the computer wakes up. If multiple intervals transpire before the computer is
+ woken, those events will be coalesced into one event upon wake from sleep.
+ '';
+ };
+
+ StartCalendarInterval = mkOption {
+ default = null;
+ example = { Hour = 2; Minute = 30; };
+ description = ''
+ This optional key causes the job to be started every calendar interval as specified. Missing arguments
+ are considered to be wildcard. The semantics are much like crontab(5). Unlike cron which skips job
+ invocations when the computer is asleep, launchd will start the job the next time the computer wakes
+ up. If multiple intervals transpire before the computer is woken, those events will be coalesced into
+ one event upon wake from sleep.
+ '';
+ type = types.nullOr (types.listOf (types.submodule {
+ options = {
+ Minute = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The minute on which this job will be run.
+ '';
+ };
+
+ Hour = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The hour on which this job will be run.
+ '';
+ };
+
+ Day = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The day on which this job will be run.
+ '';
+ };
+
+ Weekday = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The weekday on which this job will be run (0 and 7 are Sunday).
+ '';
+ };
+
+ Month = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The month on which this job will be run.
+ '';
+ };
+ };
+ }));
+ };
+
+ StandardInPath = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = ''
+ This optional key specifies what file should be used for data being supplied to stdin when using
+ stdio(3).
+ '';
+ };
+
+ StandardOutPath = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = ''
+ This optional key specifies what file should be used for data being sent to stdout when using stdio(3).
+ '';
+ };
+
+ StandardErrorPath = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = ''
+ This optional key specifies what file should be used for data being sent to stderr when using stdio(3).
+ '';
+ };
+
+ Debug = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies that launchd should adjust its log mask temporarily to LOG_DEBUG while
+ dealing with this job.
+ '';
+ };
+
+ WaitForDebugger = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies that launchd should instruct the kernel to have the job wait for a debugger
+ to attach before any code in the job is executed.
+ '';
+ };
+
+ SoftResourceLimits = mkOption {
+ default = null;
+ description = ''
+ Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following
+ keys apply:
+ '';
+ type = types.nullOr (types.submodule {
+ options = {
+ Core = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The largest size (in bytes) core file that may be created.
+ '';
+ };
+
+ CPU = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum amount of cpu time (in seconds) to be used by each process.
+ '';
+ };
+
+ Data = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) of the data segment for a process; this defines how far a program may
+ extend its break with the sbrk(2) system call.
+ '';
+ };
+
+ FileSize = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The largest size (in bytes) file that may be created.
+ '';
+ };
+
+ MemoryLock = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.
+ '';
+ };
+
+ NumberOfFiles = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum number of open files for this process. Setting this value in a system wide daemon
+ will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResource-Limits) (HardResourceLimits)
+ Limits) value in addition to the setrlimit(2) values.
+ '';
+ };
+
+ NumberOfProcesses = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum number of simultaneous processes for this user id. Setting this value in a system
+ wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid
+ (HardResourceLimits) value in addition to the setrlimit(2) values.
+ '';
+ };
+
+ ResidentSetSize = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) to which a process's resident set size may grow. This imposes a
+ limit on the amount of physical memory to be given to a process; if memory is tight, the system
+ will prefer to take memory from processes that are exceeding their declared resident set size.
+ '';
+ };
+
+ Stack = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) of the stack segment for a process; this defines how far a program's
+ stack segment may be extended. Stack extension is performed automatically by the system.
+ '';
+ };
+ };
+ });
+ };
+
+ HardResourceLimits = mkOption {
+ default = null;
+ example = { NumberOfFiles = 4096; };
+ description = ''
+ Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following
+ keys apply:
+ '';
+ type = types.nullOr (types.submodule {
+ options = {
+ Core = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The largest size (in bytes) core file that may be created.
+ '';
+ };
+
+ CPU = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum amount of cpu time (in seconds) to be used by each process.
+ '';
+ };
+
+ Data = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) of the data segment for a process; this defines how far a program may
+ extend its break with the sbrk(2) system call.
+ '';
+ };
+
+ FileSize = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The largest size (in bytes) file that may be created.
+ '';
+ };
+
+ MemoryLock = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.
+ '';
+ };
+
+ NumberOfFiles = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum number of open files for this process. Setting this value in a system wide daemon
+ will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResource-Limits) (HardResourceLimits)
+ Limits) value in addition to the setrlimit(2) values.
+ '';
+ };
+
+ NumberOfProcesses = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum number of simultaneous processes for this user id. Setting this value in a system
+ wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid
+ (HardResourceLimits) value in addition to the setrlimit(2) values.
+ '';
+ };
+
+ ResidentSetSize = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) to which a process's resident set size may grow. This imposes a
+ limit on the amount of physical memory to be given to a process; if memory is tight, the system
+ will prefer to take memory from processes that are exceeding their declared resident set size.
+ '';
+ };
+
+ Stack = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ The maximum size (in bytes) of the stack segment for a process; this defines how far a program's
+ stack segment may be extended. Stack extension is performed automatically by the system.
+ '';
+ };
+ };
+ });
+ };
+
+ Nice = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ This optional key specifies what nice(3) value should be applied to the daemon.
+ '';
+ };
+
+ ProcessType = mkOption {
+ type = types.nullOr (types.enum [ "Background" "Standard" "Adaptive" "Interactive" ]);
+ default = null;
+ example = "Background";
+ description = ''
+ This optional key describes, at a high level, the intended purpose of the job. The system will apply
+ resource limits based on what kind of job it is. If left unspecified, the system will apply light
+ resource limits to the job, throttling its CPU usage and I/O bandwidth. The following are valid values:
+
+ Background
+ Background jobs are generally processes that do work that was not directly requested by the user.
+ The resource limits applied to Background jobs are intended to prevent them from disrupting the
+ user experience.
+
+ Standard
+ Standard jobs are equivalent to no ProcessType being set.
+
+ Adaptive
+ Adaptive jobs move between the Background and Interactive classifications based on activity over
+ XPC connections. See xpc_transaction_begin(3) for details.
+
+ Interactive
+ Interactive jobs run with the same resource limitations as apps, that is to say, none. Interac-tive Interactive
+ tive jobs are critical to maintaining a responsive user experience, and this key should only be
+ used if an app's ability to be responsive depends on it, and cannot be made Adaptive.
+ '';
+ };
+
+ AbandonProcessGroup = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ When a job dies, launchd kills any remaining processes with the same process group ID as the job. Set-ting Setting
+ ting this key to true disables that behavior.
+ '';
+ };
+
+ LowPriorityIO = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies whether the kernel should consider this daemon to be low priority when
+ doing file system I/O.
+ '';
+ };
+
+ LaunchOnlyOnce = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies whether the job can only be run once and only once. In other words, if the
+ job cannot be safely respawned without a full machine reboot, then set this key to be true.
+ '';
+ };
+
+ MachServices = mkOption {
+ default = null;
+ example = { ResetAtClose = true; };
+ description = ''
+ This optional key is used to specify Mach services to be registered with the Mach bootstrap sub-system.
+ Each key in this dictionary should be the name of service to be advertised. The value of the key must
+ be a boolean and set to true. Alternatively, a dictionary can be used instead of a simple true value.
+
+ Finally, for the job itself, the values will be replaced with Mach ports at the time of check-in with
+ launchd.
+ '';
+ type = types.nullOr (types.submodule {
+ options = {
+ ResetAtClose = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ If this boolean is false, the port is recycled, thus leaving clients to remain oblivious to the
+ demand nature of job. If the value is set to true, clients receive port death notifications when
+ the job lets go of the receive right. The port will be recreated atomically with respect to boot-strap_look_up() bootstrap_look_up()
+ strap_look_up() calls, so that clients can trust that after receiving a port death notification,
+ the new port will have already been recreated. Setting the value to true should be done with
+ care. Not all clients may be able to handle this behavior. The default value is false.
+ '';
+ };
+
+ HideUntilCheckIn = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Reserve the name in the namespace, but cause bootstrap_look_up() to fail until the job has
+ checked in with launchd.
+ '';
+ };
+ };
+ });
+ };
+
+ Sockets = mkOption {
+ default = null;
+ description = ''
+ This optional key is used to specify launch on demand sockets that can be used to let launchd know when
+ to run the job. The job must check-in to get a copy of the file descriptors using APIs outlined in
+ launch(3). The keys of the top level Sockets dictionary can be anything. They are meant for the appli-cation application
+ cation developer to use to differentiate which descriptors correspond to which application level proto-cols protocols
+ cols (e.g. http vs. ftp vs. DNS...). At check-in time, the value of each Sockets dictionary key will
+ be an array of descriptors. Daemon/Agent writers should consider all descriptors of a given key to be
+ to be effectively equivalent, even though each file descriptor likely represents a different networking
+ protocol which conforms to the criteria specified in the job configuration file.
+
+ The parameters below are used as inputs to call getaddrinfo(3).
+ '';
+ type = types.nullOr (types.attrsOf (types.submodule {
+ options = {
+ SockType = mkOption {
+ type = types.nullOr (types.enum [ "stream" "dgram" "seqpacket" ]);
+ default = null;
+ description = ''
+ This optional key tells launchctl what type of socket to create. The default is "stream" and
+ other valid values for this key are "dgram" and "seqpacket" respectively.
+ '';
+ };
+
+ SockPassive = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ This optional key specifies whether listen(2) or connect(2) should be called on the created file
+ descriptor. The default is true ("to listen").
+ '';
+ };
+
+ SockNodeName = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key specifies the node to connect(2) or bind(2) to.
+ '';
+ };
+
+ SockServiceName = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key specifies the service on the node to connect(2) or bind(2) to.
+ '';
+ };
+
+ SockFamily = mkOption {
+ type = types.nullOr (types.enum [ "IPv4" "IPv6" ]);
+ default = null;
+ description = ''
+ This optional key can be used to specifically request that "IPv4" or "IPv6" socket(s) be created.
+ '';
+ };
+
+ SockProtocol = mkOption {
+ type = types.nullOr (types.enum [ "TCP" ]);
+ default = null;
+ description = ''
+ This optional key specifies the protocol to be passed to socket(2). The only value understood by
+ this key at the moment is "TCP".
+ '';
+ };
+
+ SockPathName = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = ''
+ This optional key implies SockFamily is set to "Unix". It specifies the path to connect(2) or
+ bind(2) to.
+ '';
+ };
+
+ SecureSocketWithKey = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key is a variant of SockPathName. Instead of binding to a known path, a securely
+ generated socket is created and the path is assigned to the environment variable that is inher-ited inherited
+ ited by all jobs spawned by launchd.
+ '';
+ };
+
+ SockPathMode = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ description = ''
+ This optional key specifies the mode of the socket. Known bug: Property lists don't support
+ octal, so please convert the value to decimal.
+ '';
+ };
+
+ Bonjour = mkOption {
+ type = types.nullOr (types.either types.bool (types.listOf types.str));
+ default = null;
+ description = ''
+ This optional key can be used to request that the service be registered with the
+ mDNSResponder(8). If the value is boolean, the service name is inferred from the SockService-Name. SockServiceName.
+ Name.
+ '';
+ };
+
+ MulticastGroup = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ This optional key can be used to request that the datagram socket join a multicast group. If the
+ value is a hostname, then getaddrinfo(3) will be used to join the correct multicast address for a
+ given socket family. If an explicit IPv4 or IPv6 address is given, it is required that the Sock-Family SockFamily
+ Family family also be set, otherwise the results are undefined.
+ '';
+ };
+ };
+ }));
+ };
+ };
+
+ config = {
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/lib-bash/activation-init.sh b/infra/libkookie/home-manager/modules/lib-bash/activation-init.sh
index 7a1be0f37c7..aadc88dd355 100755
--- a/infra/libkookie/home-manager/modules/lib-bash/activation-init.sh
+++ b/infra/libkookie/home-manager/modules/lib-bash/activation-init.sh
@@ -5,6 +5,7 @@ function setupVars() {
local profilesPath="$nixStateDir/profiles/per-user/$USER"
local gcPath="$nixStateDir/gcroots/per-user/$USER"
+ declare -gr nixProfilePath="$profilesPath/profile"
declare -gr genProfilePath="$profilesPath/home-manager"
declare -gr newGenPath="@GENERATION_DIR@";
declare -gr newGenGcPath="$gcPath/current-home"
diff --git a/infra/libkookie/home-manager/modules/lib/booleans.nix b/infra/libkookie/home-manager/modules/lib/booleans.nix
new file mode 100644
index 00000000000..f6c2af586e7
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/lib/booleans.nix
@@ -0,0 +1,5 @@
+{ lib }: {
+ # Converts a boolean to a yes/no string. This is used in lots of
+ # configuration formats.
+ yesNo = value: if value then "yes" else "no";
+}
diff --git a/infra/libkookie/home-manager/modules/lib/default.nix b/infra/libkookie/home-manager/modules/lib/default.nix
index c087c81097a..580316e099f 100644
--- a/infra/libkookie/home-manager/modules/lib/default.nix
+++ b/infra/libkookie/home-manager/modules/lib/default.nix
@@ -18,6 +18,7 @@ rec {
assertions = import ./assertions.nix { inherit lib; };
+ booleans = import ./booleans.nix { inherit lib; };
gvariant = import ./gvariant.nix { inherit lib; };
maintainers = import ./maintainers.nix;
strings = import ./strings.nix { inherit lib; };
diff --git a/infra/libkookie/home-manager/modules/lib/maintainers.nix b/infra/libkookie/home-manager/modules/lib/maintainers.nix
index 13bdb1e0f09..07acce2d51d 100644
--- a/infra/libkookie/home-manager/modules/lib/maintainers.nix
+++ b/infra/libkookie/home-manager/modules/lib/maintainers.nix
@@ -61,6 +61,12 @@
github = "olmokramer";
githubId = 3612514;
};
+ iosmanthus = {
+ name = "iosmanthus";
+ email = "myosmanthustree@gmail.com";
+ github = "iosmanthus";
+ githubId = 16307070;
+ };
kalhauge = {
name = "Christian Gram Kalhauge";
email = "kalhauge@users.noreply.github.com";
@@ -83,12 +89,24 @@
github = "kubukoz";
githubId = 894884;
};
+ loicreynier = {
+ name = "Loïc Reynier";
+ email = "loic@loireynier.fr";
+ github = "loicreynier";
+ githubId = 88983487;
+ };
matrss = {
name = "Matthias Riße";
email = "matrss@users.noreply.github.com";
github = "matrss";
githubId = 9308656;
};
+ mifom = {
+ name = "mifom";
+ email = "mifom@users.noreply.github.com";
+ github = "mifom";
+ githubId = 23462908;
+ };
seylerius = {
email = "sable@seyleri.us";
name = "Sable Seyler";
@@ -105,6 +123,18 @@
githubId = 46252070;
name = "Sara Johnsson";
};
+ florpe = {
+ email = "jens.krewald@gmail.com";
+ github = "florpe";
+ githubId = 53856373;
+ name = "Jens Krewald";
+ };
+ maximsmol = {
+ email = "maximsmol@gmail.com";
+ github = "maximsmol";
+ githubId = 1472826;
+ name = "Max Smolin";
+ };
msfjarvis = {
email = "me@msfjarvis.dev";
github = "msfjarvis";
@@ -205,4 +235,34 @@
github = "pinage404";
githubId = 6325757;
};
+ podocarp = {
+ name = "Jia Xiaodong";
+ email = "xdjiaxd@gmail.com";
+ github = "podocarp";
+ githubId = 10473184;
+ };
+ mainrs = {
+ name = "mainrs";
+ email = "5113257+mainrs@users.noreply.github.com";
+ github = "mainrs";
+ githubId = 5113257;
+ };
+ kmaasrud = {
+ name = "Knut Magnus Aasrud";
+ email = "km@aasrud.com";
+ github = "kmaasrud";
+ githubId = 54394333;
+ };
+ sebtm = {
+ name = "Sebastian Sellmeier";
+ email = "sebtm@users.noreply.github.com";
+ github = "sebtm";
+ githubId = 17243347;
+ };
+ rszamszur = {
+ name = "Radosław Szamszur";
+ email = "radoslawszamszur@gmail.com";
+ github = "rszamszur";
+ githubId = 10353018;
+ };
}
diff --git a/infra/libkookie/home-manager/modules/lib/types-dag.nix b/infra/libkookie/home-manager/modules/lib/types-dag.nix
index 68a5826fec1..366cc2bee70 100644
--- a/infra/libkookie/home-manager/modules/lib/types-dag.nix
+++ b/infra/libkookie/home-manager/modules/lib/types-dag.nix
@@ -8,17 +8,27 @@ let
isDagEntry = e: isAttrs e && (e ? data) && (e ? after) && (e ? before);
- dagContentType = elemType:
- types.submodule ({ name, ... }: {
- options = {
- data = mkOption { type = elemType; };
- after = mkOption { type = with types; uniq (listOf str); };
- before = mkOption { type = with types; uniq (listOf str); };
- };
- config = mkIf (elemType.name == "submodule") {
- data._module.args.dagName = name;
- };
- });
+ dagEntryOf = elemType:
+ let
+ submoduleType = types.submodule ({ name, ... }: {
+ options = {
+ data = mkOption { type = elemType; };
+ after = mkOption { type = with types; uniq (listOf str); };
+ before = mkOption { type = with types; uniq (listOf str); };
+ };
+ config = mkIf (elemType.name == "submodule") {
+ data._module.args.dagName = name;
+ };
+ });
+ maybeConvert = v: if isDagEntry v then v else dag.entryAnywhere v;
+ in mkOptionType {
+ name = "dagEntryOf";
+ description = "DAG entry of ${elemType.description}";
+ # leave the checking to the submodule type
+ merge = loc: defs:
+ submoduleType.merge loc
+ (map (def: def // { value = maybeConvert def.value; }) defs);
+ };
in rec {
# A directed acyclic graph of some inner type.
@@ -29,21 +39,16 @@ in rec {
# "actual" attribute name a new submodule argument is provided with
# the name `dagName`.
dagOf = elemType:
- let
- convertAllToDags = let
- maybeConvert = n: v: if isDagEntry v then v else dag.entryAnywhere v;
- in map (def: def // { value = mapAttrs maybeConvert def.value; });
-
- attrEquivalent = types.attrsOf (dagContentType elemType);
+ let attrEquivalent = types.attrsOf (dagEntryOf elemType);
in mkOptionType rec {
name = "dagOf";
description = "DAG of ${elemType.description}s";
- check = isAttrs;
- merge = loc: defs: attrEquivalent.merge loc (convertAllToDags defs);
+ inherit (attrEquivalent) check merge emptyValue;
getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "" ]);
getSubModules = elemType.getSubModules;
substSubModules = m: dagOf (elemType.substSubModules m);
functor = (defaultFunctor name) // { wrapped = elemType; };
+ nestedTypes.elemType = elemType;
};
# A directed acyclic graph of some inner type OR a list of that
diff --git a/infra/libkookie/home-manager/modules/misc/dconf.nix b/infra/libkookie/home-manager/modules/misc/dconf.nix
index fe51dcb0809..d731679c380 100644
--- a/infra/libkookie/home-manager/modules/misc/dconf.nix
+++ b/infra/libkookie/home-manager/modules/misc/dconf.nix
@@ -21,6 +21,11 @@ in {
visible = false;
description = ''
Whether to enable dconf settings.
+
+ Note, if you use NixOS then you must add
+ programs.dconf.enable = true
+ to your system configuration. Otherwise you will see a systemd error
+ message when your configuration is activated.
'';
};
diff --git a/infra/libkookie/home-manager/modules/misc/gtk.nix b/infra/libkookie/home-manager/modules/misc/gtk.nix
index 69ff34b28cf..6687a33be51 100644
--- a/infra/libkookie/home-manager/modules/misc/gtk.nix
+++ b/infra/libkookie/home-manager/modules/misc/gtk.nix
@@ -11,23 +11,19 @@ let
toGtk3Ini = generators.toINI {
mkKeyValue = key: value:
- let
- value' = if isBool value then
- (if value then "true" else "false")
- else
- toString value;
- in "${key}=${value'}";
+ let value' = if isBool value then boolToString value else toString value;
+ in "${escape [ "=" ] key}=${value'}";
};
formatGtk2Option = n: v:
let
v' = if isBool v then
- (if v then "true" else "false")
+ boolToString value
else if isString v then
''"${v}"''
else
toString v;
- in "${n} = ${v'}";
+ in "${escape [ "=" ] n} = ${v'}";
themeType = types.submodule {
options = {
@@ -50,6 +46,57 @@ let
};
};
+ iconThemeType = types.submodule {
+ options = {
+ package = mkOption {
+ type = types.nullOr types.package;
+ default = null;
+ example = literalExpression "pkgs.adwaita-icon-theme";
+ description = ''
+ Package providing the icon theme. This package will be installed
+ to your profile. If null then the theme
+ is assumed to already be available in your profile.
+ '';
+ };
+
+ name = mkOption {
+ type = types.str;
+ example = "Adwaita";
+ description = "The name of the icon theme within the package.";
+ };
+ };
+ };
+
+ cursorThemeType = types.submodule {
+ options = {
+ package = mkOption {
+ type = types.nullOr types.package;
+ default = null;
+ example = literalExpression "pkgs.vanilla-dmz";
+ description = ''
+ Package providing the cursor theme. This package will be installed
+ to your profile. If null then the theme
+ is assumed to already be available in your profile.
+ '';
+ };
+
+ name = mkOption {
+ type = types.str;
+ example = "Vanilla-DMZ";
+ description = "The name of the cursor theme within the package.";
+ };
+
+ size = mkOption {
+ type = types.nullOr types.int;
+ default = null;
+ example = 16;
+ description = ''
+ The size of the cursor.
+ '';
+ };
+ };
+ };
+
in {
meta.maintainers = [ maintainers.rycee ];
@@ -71,8 +118,14 @@ in {
'';
};
+ cursorTheme = mkOption {
+ type = types.nullOr cursorThemeType;
+ default = null;
+ description = "The cursor theme to use.";
+ };
+
iconTheme = mkOption {
- type = types.nullOr themeType;
+ type = types.nullOr iconThemeType;
default = null;
description = "The icon theme to use.";
};
@@ -116,7 +169,7 @@ in {
};
extraConfig = mkOption {
- type = with types; attrsOf (either bool (either int str));
+ type = with types; attrsOf (oneOf [ bool int str ]);
default = { };
example = {
gtk-cursor-blink = false;
@@ -156,7 +209,7 @@ in {
};
config = mkIf cfg.enable (let
- ini = optionalAttrs (cfg.font != null) {
+ gtkIni = optionalAttrs (cfg.font != null) {
gtk-font-name = let
fontSize =
optionalString (cfg.font.size != null) " ${toString cfg.font.size}";
@@ -164,6 +217,11 @@ in {
} // optionalAttrs (cfg.theme != null) { gtk-theme-name = cfg.theme.name; }
// optionalAttrs (cfg.iconTheme != null) {
gtk-icon-theme-name = cfg.iconTheme.name;
+ } // optionalAttrs (cfg.cursorTheme != null) {
+ gtk-cursor-theme-name = cfg.cursorTheme.name;
+ } // optionalAttrs
+ (cfg.cursorTheme != null && cfg.cursorTheme.size != null) {
+ gtk-cursor-theme-size = cfg.cursorTheme.size;
};
dconfIni = optionalAttrs (cfg.font != null) {
@@ -174,31 +232,41 @@ in {
} // optionalAttrs (cfg.theme != null) { gtk-theme = cfg.theme.name; }
// optionalAttrs (cfg.iconTheme != null) {
icon-theme = cfg.iconTheme.name;
+ } // optionalAttrs (cfg.cursorTheme != null) {
+ cursor-theme = cfg.cursorTheme.name;
+ } // optionalAttrs
+ (cfg.cursorTheme != null && cfg.cursorTheme.size != null) {
+ cursor-size = cfg.cursorTheme.size;
};
optionalPackage = opt:
optional (opt != null && opt.package != null) opt.package;
in {
- home.packages = optionalPackage cfg.font ++ optionalPackage cfg.theme
- ++ optionalPackage cfg.iconTheme;
+ home.packages = concatMap optionalPackage [
+ cfg.font
+ cfg.theme
+ cfg.iconTheme
+ cfg.cursorTheme
+ ];
home.file.${cfg2.configLocation}.text =
- concatMapStrings (l: l + "\n") (mapAttrsToList formatGtk2Option ini)
- + cfg2.extraConfig;
+ concatMapStrings (l: l + "\n") (mapAttrsToList formatGtk2Option gtkIni)
+ + cfg2.extraConfig + "\n";
home.sessionVariables.GTK2_RC_FILES = cfg2.configLocation;
xdg.configFile."gtk-3.0/settings.ini".text =
- toGtk3Ini { Settings = ini // cfg3.extraConfig; };
+ toGtk3Ini { Settings = gtkIni // cfg3.extraConfig; };
- xdg.configFile."gtk-3.0/gtk.css".text = cfg3.extraCss;
+ xdg.configFile."gtk-3.0/gtk.css" =
+ mkIf (cfg3.extraCss != "") { text = cfg3.extraCss; };
xdg.configFile."gtk-3.0/bookmarks" = mkIf (cfg3.bookmarks != [ ]) {
text = concatMapStrings (l: l + "\n") cfg3.bookmarks;
};
xdg.configFile."gtk-4.0/settings.ini".text =
- toGtk3Ini { Settings = ini // cfg4.extraConfig; };
+ toGtk3Ini { Settings = gtkIni // cfg4.extraConfig; };
dconf.settings."org/gnome/desktop/interface" = dconfIni;
});
diff --git a/infra/libkookie/home-manager/modules/misc/news.nix b/infra/libkookie/home-manager/modules/misc/news.nix
index 41fe07ceeac..44b09f01494 100644
--- a/infra/libkookie/home-manager/modules/misc/news.nix
+++ b/infra/libkookie/home-manager/modules/misc/news.nix
@@ -2403,6 +2403,67 @@ in
A new module is available: 'services.twmn'.
'';
}
+
+ {
+ time = "2022-02-16T23:50:35+00:00";
+ message = ''
+ A new module is available: 'programs.zellij'.
+ '';
+ }
+
+ {
+ time = "2022-02-17T17:12:46+00:00";
+ message = ''
+ A new module is available: 'programs.eww'.
+ '';
+ }
+
+ {
+ time = "2022-02-17T23:11:13+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.espanso'.
+ '';
+ }
+
+ {
+ time = "2022-02-24T22:35:22+00:00";
+ message = ''
+ A new module is available: 'programs.gitui'.
+ '';
+ }
+
+ {
+ time = "2022-02-26T09:28:57+00:00";
+ condition = hostPlatform.isDarwin;
+ message = ''
+ A new module is available: 'launchd.agents'
+
+ Use this to enable services based on macOS LaunchAgents.
+ '';
+ }
+
+ {
+ time = "2022-03-06T08:50:32+00:00";
+ message = ''
+ A new module is available: 'programs.just'.
+ '';
+ }
+
+ {
+ time = "2022-03-06T09:40:17+00:00";
+ message = ''
+ A new module is available: 'programs.pubs'.
+ '';
+ }
+
+ {
+ time = "2022-03-13T20:59:38+00:00";
+ condition = hostPlatform.isLinux;
+ message = ''
+ A new module is available: 'services.fusuma'.
+ '';
+ }
];
};
}
diff --git a/infra/libkookie/home-manager/modules/misc/nix.nix b/infra/libkookie/home-manager/modules/misc/nix.nix
index a044400facf..7214ac4b388 100644
--- a/infra/libkookie/home-manager/modules/misc/nix.nix
+++ b/infra/libkookie/home-manager/modules/misc/nix.nix
@@ -6,8 +6,98 @@ let
cfg = config.nix;
+ nixPackage = cfg.package;
+
+ isNixAtLeast = versionAtLeast (getVersion nixPackage);
+
+ nixConf = assert isNixAtLeast "2.2";
+ let
+
+ mkValueString = v:
+ if v == null then
+ ""
+ else if isInt v then
+ toString v
+ else if isBool v then
+ boolToString v
+ else if isFloat v then
+ floatToString v
+ else if isList v then
+ toString v
+ else if isDerivation v then
+ toString v
+ else if builtins.isPath v then
+ toString v
+ else if isString v then
+ v
+ else if isCoercibleToString v then
+ toString v
+ else
+ abort "The nix conf value: ${toPretty { } v} can not be encoded";
+
+ mkKeyValue = k: v: "${escape [ "=" ] k} = ${mkValueString v}";
+
+ mkKeyValuePairs = attrs:
+ concatStringsSep "\n" (mapAttrsToList mkKeyValue attrs);
+
+ in pkgs.writeTextFile {
+ name = "nix.conf";
+ text = ''
+ # WARNING: this file is generated from the nix.settings option in
+ # your Home Manager configuration at $XDG_CONFIG_HOME/nix/nix.conf.
+ # Do not edit it!
+ ${mkKeyValuePairs cfg.settings}
+ ${cfg.extraOptions}
+ '';
+ checkPhase =
+ if pkgs.stdenv.hostPlatform != pkgs.stdenv.buildPlatform then ''
+ echo "Ignoring validation for cross-compilation"
+ '' else ''
+ echo "Validating generated nix.conf"
+ ln -s $out ./nix.conf
+ set -e
+ set +o pipefail
+ NIX_CONF_DIR=$PWD \
+ ${cfg.package}/bin/nix show-config ${
+ optionalString (isNixAtLeast "2.3pre")
+ "--no-net --option experimental-features nix-command"
+ } \
+ |& sed -e 's/^warning:/error:/' \
+ | (! grep '${
+ if cfg.checkConfig then "^error:" else "^error: unknown setting"
+ }')
+ set -o pipefail
+ '';
+ };
+
+ semanticConfType = with types;
+ let
+ confAtom = nullOr (oneOf [ bool int float str path package ]) // {
+ description =
+ "Nix config atom (null, bool, int, float, str, path or package)";
+ };
+ in attrsOf (either confAtom (listOf confAtom));
+
+ jsonFormat = pkgs.formats.json { };
+
in {
options.nix = {
+ enable = mkEnableOption ''
+ the Nix configuration module
+ '' // {
+ default = true;
+ visible = false;
+ };
+
+ package = mkOption {
+ type = types.nullOr types.package;
+ default = null;
+ example = literalExpression "pkgs.nix";
+ description = ''
+ The Nix package that the configuration should be generated for.
+ '';
+ };
+
registry = mkOption {
type = types.attrsOf (types.submodule (let
inputAttrs = types.attrsOf
@@ -68,19 +158,83 @@ in {
User level flake registry.
'';
};
+
registryVersion = mkOption {
type = types.int;
default = 2;
internal = true;
description = "The flake registry format version.";
};
+
+ checkConfig = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ If enabled (the default), checks for data type mismatches and that Nix
+ can parse the generated nix.conf.
+ '';
+ };
+
+ extraOptions = mkOption {
+ type = types.lines;
+ default = "";
+ example = ''
+ keep-outputs = true
+ keep-derivations = true
+ '';
+ description =
+ "Additional text appended to nix.conf.";
+ };
+
+ settings = mkOption {
+ type = types.submodule { freeformType = semanticConfType; };
+ default = { };
+ example = literalExpression ''
+ {
+ use-sandbox = true;
+ show-trace = true;
+ system-features = [ "big-parallel" "kvm" "recursive-nix" ];
+ }
+ '';
+ description = ''
+ Configuration for Nix, see
+ or
+
+ nix.conf
+ 5
+ for avalaible options.
+ The value declared here will be translated directly to the key-value pairs Nix expects.
+
+
+ Configuration specified in which will be appended
+ verbatim to the resulting config file.
+ '';
+ };
};
- config = mkIf (cfg.registry != { }) {
- xdg.configFile."nix/registry.json".text = builtins.toJSON {
- version = cfg.registryVersion;
- flakes =
- mapAttrsToList (n: v: { inherit (v) from to exact; }) cfg.registry;
+ config = mkIf cfg.enable {
+ assertions = [{
+ assertion = cfg.settings == { } || cfg.package != null;
+ message = ''
+ A corresponding Nix package must be specified via `nix.package` for generating
+ nix.conf.
+ '';
+ }];
+
+ xdg.configFile = {
+ "nix/registry.json" = mkIf (cfg.registry != { }) {
+ source = jsonFormat.generate "registry.json" {
+ version = cfg.registryVersion;
+ flakes =
+ mapAttrsToList (n: v: { inherit (v) from to exact; }) cfg.registry;
+ };
+ };
+
+ "nix/nix.conf" = mkIf (cfg.settings != { } || cfg.extraOptions != "") {
+ source = nixConf;
+ };
};
};
+
+ meta.maintainers = [ maintainers.polykernel ];
}
diff --git a/infra/libkookie/home-manager/modules/misc/xdg-desktop-entries.nix b/infra/libkookie/home-manager/modules/misc/xdg-desktop-entries.nix
index c0b110facce..f563f49d871 100644
--- a/infra/libkookie/home-manager/modules/misc/xdg-desktop-entries.nix
+++ b/infra/libkookie/home-manager/modules/misc/xdg-desktop-entries.nix
@@ -4,8 +4,14 @@ with lib;
let
desktopEntry = {
+ imports = [
+ (mkRemovedOptionModule [ "extraConfig" ]
+ "The `extraConfig` option of `xdg.desktopEntries` has been removed following a change in Nixpkgs.")
+ (mkRemovedOptionModule [ "fileValidation" ]
+ "Validation of the desktop file is always enabled.")
+ ];
options = {
- # Since this module uses the nixpkgs/pkgs/build-support/make-desktopitem function,
+ # Since this module uses the nixpkgs/pkgs/build-support/make-desktopitem function,
# our options and defaults follow its parameters, with the following exceptions:
# `desktopName` on makeDesktopItem is controlled by `name`.
@@ -13,14 +19,10 @@ let
# `name` on makeDesktopItem is controlled by this module's key in the attrset.
# This is the file's filename excluding ".desktop".
- # `extraEntries` on makeDesktopItem is controlled by `extraConfig`,
- # and `extraDesktopEntries` by `settings`,
+ # `extraConfig` on makeDesktopItem is controlled by `settings`,
# to match what's commonly used by other home manager modules.
- # `mimeType` and `categories` on makeDesktopItem ask for a string in the format "one;two;three;",
- # for usability's sake we ask for a list of strings.
-
- # Descriptions are taken from the desktop entry spec:
+ # Descriptions are taken from the desktop entry spec:
# https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys
type = mkOption {
@@ -31,7 +33,7 @@ let
exec = mkOption {
description = "Program to execute, possibly with arguments.";
- type = types.str;
+ type = types.nullOr types.str;
};
icon = mkOption {
@@ -78,9 +80,9 @@ let
startupNotify = mkOption {
description = ''
- If true, it is KNOWN that the application will send a "remove"
- message when started with the DESKTOP_STARTUP_ID
- environment variable set. If false, it is KNOWN that the application
+ If true, it is KNOWN that the application will send a "remove"
+ message when started with the DESKTOP_STARTUP_ID
+ environment variable set. If false, it is KNOWN that the application
does not work with startup notification at all.'';
type = types.nullOr types.bool;
default = null;
@@ -103,19 +105,10 @@ let
default = null;
};
- extraConfig = mkOption {
- description = ''
- Extra configuration. Will be appended to the end of the file and
- may thus contain extra sections.
- '';
- type = types.lines;
- default = "";
- };
-
settings = mkOption {
type = types.attrsOf types.string;
description = ''
- Extra key-value pairs to add to the [Desktop Entry] section.
+ Extra key-value pairs to add to the [Desktop Entry] section.
This may override other values.
'';
default = { };
@@ -127,16 +120,49 @@ let
'';
};
- fileValidation = mkOption {
- type = types.bool;
- description = "Whether to validate the generated desktop file.";
- default = true;
+ actions = mkOption {
+ type = types.attrsOf (types.submodule ({ name, ... }: {
+ options.name = mkOption {
+ type = types.str;
+ default = name;
+ defaultText = literalExpression "";
+ description = "Name of the action.";
+ };
+ options.exec = mkOption {
+ type = types.nullOr types.str;
+ description = "Program to execute, possibly with arguments.";
+ };
+ options.icon = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = "Icon to display in file manager, menus, etc.";
+ };
+ }));
+ default = { };
+ defaultText = literalExpression "{ }";
+ example = literalExpression ''
+ {
+ "New Window" = {
+ exec = "''${pkgs.firefox}/bin/firefox --new-window %u";
+ };
+ }
+ '';
+ description =
+ "The set of actions made available to application launchers.";
+ };
+
+ # Required for the assertions
+ # TODO: Remove me once `mkRemovedOptionModule` works correctly with submodules
+ assertions = mkOption {
+ type = types.listOf types.unspecified;
+ default = [ ];
+ visible = false;
+ internal = true;
};
};
};
#formatting helpers
- ifNotNull = a: a': if a == null then null else a';
semicolonList = list:
(concatStringsSep ";" list) + ";"; # requires trailing semicolon
@@ -146,13 +172,11 @@ let
inherit name;
inherit (config)
type exec icon comment terminal genericName startupNotify noDisplay
- prefersNonDefaultGPU;
+ prefersNonDefaultGPU actions;
desktopName = config.name;
- mimeType = ifNotNull config.mimeType (semicolonList config.mimeType);
- categories =
- ifNotNull config.categories (semicolonList config.categories);
- extraEntries = config.extraConfig;
- extraDesktopEntries = config.settings;
+ mimeTypes = optionals (config.mimeType != null) config.mimeType;
+ categories = optionals (config.categories != null) config.categories;
+ extraConfig = config.settings;
};
in {
meta.maintainers = [ hm.maintainers.cwyc ];
@@ -182,7 +206,7 @@ in {
config = mkIf (config.xdg.desktopEntries != { }) {
assertions = [
(hm.assertions.assertPlatform "xdg.desktopEntries" pkgs platforms.linux)
- ];
+ ] ++ flatten (catAttrs "assertions" (attrValues config.xdg.desktopEntries));
home.packages = (map hiPrio # we need hiPrio to override existing entries
(attrsets.mapAttrsToList makeFile config.xdg.desktopEntries));
diff --git a/infra/libkookie/home-manager/modules/misc/xdg-mime-apps.nix b/infra/libkookie/home-manager/modules/misc/xdg-mime-apps.nix
index 5372c6259ff..cda9bd19b80 100644
--- a/infra/libkookie/home-manager/modules/misc/xdg-mime-apps.nix
+++ b/infra/libkookie/home-manager/modules/misc/xdg-mime-apps.nix
@@ -72,20 +72,50 @@ in {
};
};
- config = mkIf cfg.enable {
- assertions =
- [ (hm.assertions.assertPlatform "xdg.mimeApps" pkgs platforms.linux) ];
-
- # Deprecated but still used by some applications.
- xdg.dataFile."applications/mimeapps.list".source =
- config.xdg.configFile."mimeapps.list".source;
-
- xdg.configFile."mimeapps.list".text =
- let joinValues = mapAttrs (n: concatStringsSep ";");
- in generators.toINI { } {
- "Added Associations" = joinValues cfg.associations.added;
- "Removed Associations" = joinValues cfg.associations.removed;
- "Default Applications" = joinValues cfg.defaultApplications;
- };
- };
+ config = mkMerge [
+ {
+ # Given a package that installs .desktop files in the usual location,
+ # return a mapping from mime types to lists of desktop file names. This is
+ # suitable for use with `xdg.mimeApps.defaultApplications`.
+ lib.xdg.mimeAssociations = let
+ processLines = str:
+ zipAttrs
+ (filter (e: e != null) (map processLine (splitString "\n" str)));
+
+ processLine = str:
+ let
+ entry = splitString ";" str;
+ k = elemAt entry 0;
+ v = elemAt entry 1;
+ in if length entry == 2 then { ${k} = v; } else null;
+
+ associations = ps:
+ pkgs.runCommand "mime-assoc" { inherit ps; } ''
+ for p in $ps ; do
+ for path in "$p"/share/applications/*.desktop ; do
+ name="''${path##*/}"
+ sed -n "/^MimeType=/ { s/.*=//; s/;/;$name\n/g; p; }" "$path"
+ done
+ done > "$out"
+ '';
+ in p: processLines (builtins.readFile (associations p));
+ }
+
+ (mkIf cfg.enable {
+ assertions =
+ [ (hm.assertions.assertPlatform "xdg.mimeApps" pkgs platforms.linux) ];
+
+ # Deprecated but still used by some applications.
+ xdg.dataFile."applications/mimeapps.list".source =
+ config.xdg.configFile."mimeapps.list".source;
+
+ xdg.configFile."mimeapps.list".text =
+ let joinValues = mapAttrs (n: concatStringsSep ";");
+ in generators.toINI { } {
+ "Added Associations" = joinValues cfg.associations.added;
+ "Removed Associations" = joinValues cfg.associations.removed;
+ "Default Applications" = joinValues cfg.defaultApplications;
+ };
+ })
+ ];
}
diff --git a/infra/libkookie/home-manager/modules/misc/xdg-user-dirs.nix b/infra/libkookie/home-manager/modules/misc/xdg-user-dirs.nix
index 78d350cdec4..bac6b3c25c6 100644
--- a/infra/libkookie/home-manager/modules/misc/xdg-user-dirs.nix
+++ b/infra/libkookie/home-manager/modules/misc/xdg-user-dirs.nix
@@ -33,57 +33,62 @@ in {
# https://gitlab.freedesktop.org/xdg/xdg-user-dirs/blob/master/man/user-dirs.dirs.xml
desktop = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Desktop";
description = "The Desktop directory.";
};
documents = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Documents";
description = "The Documents directory.";
};
download = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Downloads";
description = "The Downloads directory.";
};
music = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Music";
description = "The Music directory.";
};
pictures = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Pictures";
description = "The Pictures directory.";
};
publicShare = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Public";
description = "The Public share directory.";
};
templates = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Templates";
description = "The Templates directory.";
};
videos = mkOption {
- type = types.str;
+ type = with types; coercedTo path toString str;
default = "$HOME/Videos";
description = "The Videos directory.";
};
extraConfig = mkOption {
- type = with types; attrsOf str;
+ type = with types; attrsOf (coercedTo path toString str);
default = { };
- example = { XDG_MISC_DIR = "$HOME/Misc"; };
+ defaultText = literalExpression "{ }";
+ example = literalExpression ''
+ {
+ XDG_MISC_DIR = "$HOME/Misc";
+ }
+ '';
description = "Other user directories.";
};
@@ -113,6 +118,8 @@ in {
xdg.configFile."user-dirs.conf".text = "enabled=False";
+ home.sessionVariables = directories;
+
home.activation = mkIf cfg.createDirectories {
createXdgUserDirectories = let
directoriesList = attrValues directories;
diff --git a/infra/libkookie/home-manager/modules/misc/xdg.nix b/infra/libkookie/home-manager/modules/misc/xdg.nix
index 5961cac3985..247e7319218 100644
--- a/infra/libkookie/home-manager/modules/misc/xdg.nix
+++ b/infra/libkookie/home-manager/modules/misc/xdg.nix
@@ -80,18 +80,22 @@ in {
};
config = mkMerge [
- (mkIf cfg.enable {
- xdg.cacheHome = mkDefault defaultCacheHome;
- xdg.configHome = mkDefault defaultConfigHome;
- xdg.dataHome = mkDefault defaultDataHome;
- xdg.stateHome = mkDefault defaultStateHome;
-
- home.sessionVariables = {
+ (let
+ variables = {
XDG_CACHE_HOME = cfg.cacheHome;
XDG_CONFIG_HOME = cfg.configHome;
XDG_DATA_HOME = cfg.dataHome;
XDG_STATE_HOME = cfg.stateHome;
};
+ in mkIf cfg.enable {
+ xdg.cacheHome = mkDefault defaultCacheHome;
+ xdg.configHome = mkDefault defaultConfigHome;
+ xdg.dataHome = mkDefault defaultDataHome;
+ xdg.stateHome = mkDefault defaultStateHome;
+
+ home.sessionVariables = variables;
+ systemd.user.sessionVariables =
+ mkIf pkgs.stdenv.hostPlatform.isLinux variables;
})
# Legacy non-deterministic setup.
diff --git a/infra/libkookie/home-manager/modules/modules.nix b/infra/libkookie/home-manager/modules/modules.nix
index 528734dc633..462575f471b 100644
--- a/infra/libkookie/home-manager/modules/modules.nix
+++ b/infra/libkookie/home-manager/modules/modules.nix
@@ -19,6 +19,7 @@ let
./files.nix
./home-environment.nix
./i18n/input-method/default.nix
+ ./launchd/default.nix
./manual.nix
./misc/dconf.nix
./misc/debug.nix
@@ -60,6 +61,7 @@ let
./programs/direnv.nix
./programs/eclipse.nix
./programs/emacs.nix
+ ./programs/eww.nix
./programs/exa.nix
./programs/feh.nix
./programs/firefox.nix
@@ -69,6 +71,7 @@ let
./programs/getmail.nix
./programs/gh.nix
./programs/git.nix
+ ./programs/gitui.nix
./programs/gnome-terminal.nix
./programs/go.nix
./programs/gpg.nix
@@ -84,6 +87,7 @@ let
./programs/irssi.nix
./programs/java.nix
./programs/jq.nix
+ ./programs/just.nix
./programs/kakoune.nix
./programs/keychain.nix
./programs/kitty.nix
@@ -126,6 +130,8 @@ let
./programs/pidgin.nix
./programs/piston-cli.nix
./programs/powerline-go.nix
+ ./programs/pubs.nix
+ ./programs/pylint.nix
./programs/qutebrowser.nix
./programs/rbw.nix
./programs/readline.nix
@@ -136,6 +142,7 @@ let
./programs/sbt.nix
./programs/scmpuff.nix
./programs/senpai.nix
+ ./programs/sioyek.nix
./programs/skim.nix
./programs/sm64ex.nix
./programs/sqls.nix
@@ -147,6 +154,7 @@ let
./programs/texlive.nix
./programs/timidity.nix
./programs/tint2.nix
+ ./programs/tiny.nix
./programs/tmux.nix
./programs/topgrade.nix
./programs/urxvt.nix
@@ -158,6 +166,7 @@ let
./programs/xmobar.nix
./programs/z-lua.nix
./programs/zathura.nix
+ ./programs/zellij.nix
./programs/zoxide.nix
./programs/zplug.nix
./programs/zsh.nix
@@ -176,9 +185,11 @@ let
./services/easyeffects.nix
./services/emacs.nix
./services/etesync-dav.nix
+ ./services/espanso.nix
./services/flameshot.nix
./services/fluidsynth.nix
./services/fnott.nix
+ ./services/fusuma.nix
./services/getmail.nix
./services/git-sync.nix
./services/gnome-keyring.nix
@@ -200,6 +211,7 @@ let
./services/mbsync.nix
./services/mpd.nix
./services/mpdris2.nix
+ ./services/mpd-discord-rpc.nix
./services/mpris-proxy.nix
./services/muchsync.nix
./services/network-manager-applet.nix
diff --git a/infra/libkookie/home-manager/modules/po/de.po b/infra/libkookie/home-manager/modules/po/de.po
index 165420134d8..c4f4c509c35 100644
--- a/infra/libkookie/home-manager/modules/po/de.po
+++ b/infra/libkookie/home-manager/modules/po/de.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-15 01:53+0000\n"
-"Last-Translator: mainrs \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: German \n"
"Language: de\n"
@@ -17,7 +17,7 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,48 +31,48 @@ msgstr "Bereinige verwaiste Links unter %s"
msgid "Creating profile generation %s"
msgstr "Erstelle Profilgeneration %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "Keine Änderungen. Benutze daher letzte Profilgeneration %s"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"Ups, nix-env konnte Ihr neues Home Manager Profil nicht installieren!\n"
+"Ups, Nix konnte Ihr neues Home Manager Profil nicht installieren!\n"
"\n"
-"Vielleicht gibt es einen Konflikt mit einem Paket, welches über \"nix-env -"
-"i\" installiert wurde? Versuchen Sie\n"
+"Vielleicht gibt es einen Konflikt mit einem Paket, welches über\n"
+"\"%s\" installiert wurde? Versuchen Sie\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
-"auszuführen und wenn es ein problematisches Paket gibt, entfernen Sie es "
+"auszuführen und wenn es ein problematisches Paket gibt, entfernen Sie es\n"
"mit\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Versuchen Sie dann, Ihre Home Manager Konfiguration erneut zu aktivieren."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Aktiviere %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "Überprüfe zur Sicherheit oldGenNum und oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -100,27 +100,54 @@ msgstr ""
"\n"
"Führen Sie danach 'home-manager switch' aus. Viel Glück!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Starte Home Manager Aktivierung"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Überprüfe zur Sicherheit Nix"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "Dies ist ein Probelauf"
-#: modules/lib-bash/activation-init.sh:63
-#, fuzzy
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
-msgstr "Dies ist ein Live-Lauf"
+msgstr "Dies ist eine Live-Ausführung"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Nutze Nix Version: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "Aktivierungsvariablen:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "Ups, nix-env konnte Ihr neues Home Manager Profil nicht installieren!\n"
+#~ "\n"
+#~ "Vielleicht gibt es einen Konflikt mit einem Paket, welches über \"nix-env "
+#~ "-i\" installiert wurde? Versuchen Sie\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "auszuführen und wenn es ein problematisches Paket gibt, entfernen Sie es "
+#~ "mit\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Versuchen Sie dann, Ihre Home Manager Konfiguration erneut zu aktivieren."
diff --git a/infra/libkookie/home-manager/modules/po/es.po b/infra/libkookie/home-manager/modules/po/es.po
index 3319f7a00b6..b5c0ee58a31 100644
--- a/infra/libkookie/home-manager/modules/po/es.po
+++ b/infra/libkookie/home-manager/modules/po/es.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-11 12:58+0000\n"
-"Last-Translator: Mauricio Scheffer \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: Spanish \n"
"Language: es\n"
@@ -17,7 +17,7 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,47 +31,47 @@ msgstr "Limpiando vínculos huérfanos de %s"
msgid "Creating profile generation %s"
msgstr "Creando generación de perfil %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "No hay cambios, reutilizando la generación más reciente del perfil: %s"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"nix-env no pudo instalar el nuevo perfil de Home Manager!\n"
+"Nix no pudo instalar el nuevo perfil de Home Manager!\n"
"\n"
-"Tal vez haya un conflicto con algún paquete instalado con \"nix-env -i\"? "
+"Tal vez haya un conflicto con algún paquete instalado con \"%s\"?\n"
"Intente ejecutar\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"y si hay algún paquete en conflicto bórrelo con:\n"
"\n"
-" nix-env -e {paquete}\n"
+" %s\n"
"\n"
"Y después reintente activar su configuración de Home Manager."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Activando %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "Chequeando oldGenNum y oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -99,26 +99,53 @@ msgstr ""
"\n"
"y luego reintente ejectuar \"home-manager switch\". Suerte!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Comenzando activación de Home Manager"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Chequeando Nix"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "Ejecución de simulacro"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "Ejecución en vivo"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Usando Nix versión %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "Variables de activación:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "nix-env no pudo instalar el nuevo perfil de Home Manager!\n"
+#~ "\n"
+#~ "Tal vez haya un conflicto con algún paquete instalado con \"nix-env -i\"? "
+#~ "Intente ejecutar\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "y si hay algún paquete en conflicto bórrelo con:\n"
+#~ "\n"
+#~ " nix-env -e {paquete}\n"
+#~ "\n"
+#~ "Y después reintente activar su configuración de Home Manager."
diff --git a/infra/libkookie/home-manager/modules/po/fa.po b/infra/libkookie/home-manager/modules/po/fa.po
new file mode 100644
index 00000000000..fe1713272ac
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/po/fa.po
@@ -0,0 +1,97 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Home Manager contributors
+# This file is distributed under the same license as the Home Manager Modules package.
+# FIRST AUTHOR , 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: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: modules/files.nix:233
+msgid "Creating home file links in %s"
+msgstr ""
+
+#: modules/files.nix:246
+msgid "Cleaning up orphan links from %s"
+msgstr ""
+
+#: modules/files.nix:262
+msgid "Creating profile generation %s"
+msgstr ""
+
+#: modules/files.nix:276
+msgid "No change so reusing latest profile generation %s"
+msgstr ""
+
+#: modules/home-environment.nix:607
+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:639
+msgid "Activating %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:31
+msgid "Sanity checking oldGenNum and oldGenPath"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:34
+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:51
+msgid "Starting Home Manager activation"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:55
+msgid "Sanity checking Nix"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:61
+msgid "This is a dry run"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:64
+msgid "This is a live run"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:69
+msgid "Using Nix version: %s"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:72
+msgid "Activation variables:"
+msgstr ""
diff --git a/infra/libkookie/home-manager/modules/po/fr.po b/infra/libkookie/home-manager/modules/po/fr.po
index a47bcd23f68..6195b2f4f97 100644
--- a/infra/libkookie/home-manager/modules/po/fr.po
+++ b/infra/libkookie/home-manager/modules/po/fr.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-12 22:55+0000\n"
-"Last-Translator: 6KHCPCPO \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: French \n"
"Language: fr\n"
@@ -17,7 +17,7 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,48 +31,47 @@ msgstr "Nettoyage des liens orphelins de %s"
msgid "Creating profile generation %s"
msgstr "Création de la génération de profil %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
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:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"Oups, nix-env n'a pas réussi à installer votre nouveau profil de Home "
-"Manager\n"
+"Oups, Nix n'a pas réussi à installer votre nouveau profil de Home Manager !\n"
"\n"
"Il y a peut-être un conflit avec un autre paquet qui a été installé avec\n"
-"« nix-env -i » ? Essayez d'éxecuter\n"
+"« %s » ? Essayez d'éxecuter\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"et s'il y a un paquet en conflict, vous pourrez le supprimer avec\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Après, essayez encore d'activer votre configuration de Home Manager."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Activation de %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "Vérification rationnelle de oldGenNum et oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -102,26 +101,54 @@ msgstr ""
"\n"
"et d'essayer encore home-manager switch. Bonne chance !"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Démarrage de l'activation de Home Manager"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Vérification rationnelle de Nix"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "Ceci est une course à sec"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "Ceci est une course réelle"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Usage de la version de Nix : %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "Variables d'activation :"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "Oups, nix-env n'a pas réussi à installer votre nouveau profil de Home "
+#~ "Manager\n"
+#~ "\n"
+#~ "Il y a peut-être un conflit avec un autre paquet qui a été installé avec\n"
+#~ "« nix-env -i » ? Essayez d'éxecuter\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "et s'il y a un paquet en conflict, vous pourrez le supprimer avec\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Après, essayez encore d'activer votre configuration de Home Manager."
diff --git a/infra/libkookie/home-manager/modules/po/hm-modules.pot b/infra/libkookie/home-manager/modules/po/hm-modules.pot
index c4ade9aaf97..7bff64af49a 100644
--- a/infra/libkookie/home-manager/modules/po/hm-modules.pot
+++ b/infra/libkookie/home-manager/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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -29,35 +29,35 @@ msgstr ""
msgid "Creating profile generation %s"
msgstr ""
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr ""
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr ""
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr ""
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -73,26 +73,26 @@ msgid ""
"and trying home-manager switch again. Good luck!"
msgstr ""
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr ""
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr ""
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr ""
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr ""
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr ""
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr ""
diff --git a/infra/libkookie/home-manager/modules/po/it.po b/infra/libkookie/home-manager/modules/po/it.po
new file mode 100644
index 00000000000..cec8b104291
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/po/it.po
@@ -0,0 +1,112 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Home Manager contributors
+# This file is distributed under the same license as the Home Manager Modules package.
+# FIRST AUTHOR , 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: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-04-20 18:18+0000\n"
+"Last-Translator: Frankie McEyes \n"
+"Language-Team: Italian \n"
+"Language: it\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 4.12-dev\n"
+
+#: modules/files.nix:233
+msgid "Creating home file links in %s"
+msgstr "Creo i collegamenti della home in %s"
+
+#: modules/files.nix:246
+msgid "Cleaning up orphan links from %s"
+msgstr "Pulisco i collegamenti rimasti orfani da %s"
+
+#: modules/files.nix:262
+msgid "Creating profile generation %s"
+msgstr "Creando profilo di generazione %s"
+
+#: modules/files.nix:276
+msgid "No change so reusing latest profile generation %s"
+msgstr "Nessuna modifica, verrà riutilizzata l'ultimo generazione di profilo %s"
+
+#: modules/home-environment.nix:607
+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:639
+msgid "Activating %s"
+msgstr "Attivando %s"
+
+#: modules/lib-bash/activation-init.sh:31
+msgid "Sanity checking oldGenNum and oldGenPath"
+msgstr ""
+
+#: modules/lib-bash/activation-init.sh:34
+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 ""
+"I precedenti numero di generazione e il percorso sono in conflitto!\n"
+"Devono essere entrambi vuoti o entrambi popolati ma ora sono impostati su\n"
+"\n"
+"'%s' e '%s'\n"
+"\n"
+"Se non ti dispiace perdere le generazioni di profili precedenti,\n"
+"allora la soluzione più semplice è probabilmente eseguire i comandi\n"
+"\n"
+"rm %s/home-manager*\n"
+"rm %s/current-home\n"
+"\n"
+"e provare a cambiare home-manager di nuovo. Buona fortuna!"
+
+#: modules/lib-bash/activation-init.sh:51
+msgid "Starting Home Manager activation"
+msgstr "Iniziando attivazione Home Manager"
+
+#: modules/lib-bash/activation-init.sh:55
+msgid "Sanity checking Nix"
+msgstr "Controllando Nix"
+
+#: modules/lib-bash/activation-init.sh:61
+msgid "This is a dry run"
+msgstr "Questo è un avvio secco"
+
+#: modules/lib-bash/activation-init.sh:64
+msgid "This is a live run"
+msgstr "Questa è una esecuzione live"
+
+#: modules/lib-bash/activation-init.sh:69
+msgid "Using Nix version: %s"
+msgstr "Versione di Nix in uso: %s"
+
+#: modules/lib-bash/activation-init.sh:72
+msgid "Activation variables:"
+msgstr "Variabili di attivazione:"
diff --git a/infra/libkookie/home-manager/modules/po/ja.po b/infra/libkookie/home-manager/modules/po/ja.po
index 6d913fc6fea..f5cec7ba210 100644
--- a/infra/libkookie/home-manager/modules/po/ja.po
+++ b/infra/libkookie/home-manager/modules/po/ja.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-02-12 15:54+0000\n"
-"Last-Translator: Narazaki Shuji \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: Japanese \n"
"Language: ja\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,47 +31,47 @@ msgstr "%s から無効なリンクを消去しています"
msgid "Creating profile generation %s"
msgstr "世代 %s のプロファイルを生成しています"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "変更されていないので最新の世代 %s のプロファイルを再利用します"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"nix-envはHome managerの新しいプロファイルをインストールできませんでした!\n"
+"NixはHome Managerの新しいプロファイルをインストールできませんでした!\n"
"\n"
-"おそらく\"nix-env -i\"を使ってインストールしたパッケージが矛盾しているのでは?\n"
+"おそらく\"%s\"を使ってインストールしたパッケージが矛盾しているのでは?\n"
"以下のコマンド\n"
"\n"
-"nix-env -q\n"
+" %s\n"
"\n"
"を試してみて、もし衝突しているパッケージがあれば、\n"
"\n"
-"nix-env -e {パッケージ名前}\n"
+" %s\n"
"\n"
"で削除し、再度Home Managerの設定の有効化を試してみてください。"
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "%s を有効化しています"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "oldGenNum と oldGenPath の健全性検査をしています"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -99,26 +99,55 @@ msgstr ""
"\n"
"を実行して、home-manager switch を再び実行してみることでしょう。幸運を!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Home Managerの有効化を開始しました"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Nixの健全性検査中です"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "これは予行練習(dry run)です"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "これは実際に実行します"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Nix バージョン %s を使用しています"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "有効化変数:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "nix-envはHome managerの新しいプロファイルをインストールできませんでし"
+#~ "た!\n"
+#~ "\n"
+#~ "おそらく\"nix-env -i\"を使ってインストールしたパッケージが矛盾しているので"
+#~ "は?\n"
+#~ "以下のコマンド\n"
+#~ "\n"
+#~ "nix-env -q\n"
+#~ "\n"
+#~ "を試してみて、もし衝突しているパッケージがあれば、\n"
+#~ "\n"
+#~ "nix-env -e {パッケージ名前}\n"
+#~ "\n"
+#~ "で削除し、再度Home Managerの設定の有効化を試してみてください。"
diff --git a/infra/libkookie/home-manager/modules/po/ko.po b/infra/libkookie/home-manager/modules/po/ko.po
index 28213a4c56b..7c97f64a3f0 100644
--- a/infra/libkookie/home-manager/modules/po/ko.po
+++ b/infra/libkookie/home-manager/modules/po/ko.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-30 21:50+0000\n"
-"Last-Translator: 박수원 \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: Korean \n"
"Language: ko\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,47 +31,49 @@ msgstr "%s에서 연결이 끊어진 링크 파일들을 지우는 중"
msgid "Creating profile generation %s"
msgstr "profile 세대 %s를 생성하는 중"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
-msgstr "바뀐 것이 없어서 가장 최근의 profile 세대 %s를 다시 사용하는 것으로 설정하는 중"
+msgstr ""
+"바뀐 것이 없어서 가장 최근의 profile 세대 %s를 다시 사용하는 것으로 설정하는 "
+"중"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"아이고, nix-env가 새로운 홈 매니저 profile을 설치하는데 실패했네요!\n"
+"아이고, Nix가 새로운 홈 매니저 profile을 설치하는데 실패했네요!\n"
"\n"
-"혹시나 \"nix-env -i\"를 이용해서 설치된 패키지와 충돌이 일어난 것 일까요?\n"
+"혹시나 \"%s\"를 이용해서 설치된 패키지와 충돌이 일어난 것 일까요?\n"
"다음의 명령어를 시도해보세요.\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"만약 충돌하는 패키지가 있다면 다음의 명령어로 제거할 수 있습니다.\n"
"\n"
-" nix-env -e {패키지 이름}\n"
+" %s\n"
"\n"
"그런 후, 다시 홈 매니저 설정을 활성화 해보세요."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "%s를 활성화 하는 중"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "oldGenNum과 oldGenPath가 정상인지 확인 중"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -99,26 +101,54 @@ msgstr ""
"\n"
"그런 후 'home-manager switch'를 다시 시도해 보십시오. 행운을 빕니다!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "홈 매니저 활성화를 시작하는 중"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Nix가 정상인지 확인 중"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "모의 실행 중 입니다"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "모의 실행이 아닌 실제 실행 중 입니다"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "사용 중인 Nix 버전: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "활성화 변수들:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "아이고, nix-env가 새로운 홈 매니저 profile을 설치하는데 실패했네요!\n"
+#~ "\n"
+#~ "혹시나 \"nix-env -i\"를 이용해서 설치된 패키지와 충돌이 일어난 것 일까"
+#~ "요?\n"
+#~ "다음의 명령어를 시도해보세요.\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "만약 충돌하는 패키지가 있다면 다음의 명령어로 제거할 수 있습니다.\n"
+#~ "\n"
+#~ " nix-env -e {패키지 이름}\n"
+#~ "\n"
+#~ "그런 후, 다시 홈 매니저 설정을 활성화 해보세요."
diff --git a/infra/libkookie/home-manager/modules/po/nb_NO.po b/infra/libkookie/home-manager/modules/po/nb_NO.po
index 85596c7a3a2..11bc04d9431 100644
--- a/infra/libkookie/home-manager/modules/po/nb_NO.po
+++ b/infra/libkookie/home-manager/modules/po/nb_NO.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-03 12:56+0000\n"
-"Last-Translator: Allan Nordhøy \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: Norwegian Bokmål \n"
"Language: nb_NO\n"
@@ -17,7 +17,7 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -32,47 +32,47 @@ msgstr "Tømmer overflødige lenker fra %s …"
msgid "Creating profile generation %s"
msgstr "Oppretter profil for generering %s …"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "Ingen endring. Gjenbruker siste profilgenerering %s …"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"nix-env kunne ikke installere din nye Home Manager-profil!\n"
+"Nix kunne ikke installere din nye Home Manager-profil!\n"
"\n"
"Kanskje det er en konflikt med en pakke som ble installert ved bruk av\n"
-"«nix-env -i«? Prøv å kjøre\n"
+"«%s«? Prøv å kjøre\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"og hvis det er en pakke i konflikt kan du fjerne den med\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"for så å aktivere ditt Home Manager-oppsett igjen."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Aktiverer %s …"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "Kontrollerer verdiene av oldGenNum og oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
#, fuzzy
msgid ""
"The previous generation number and path are in conflict! These\n"
@@ -101,26 +101,53 @@ msgstr ""
"\n"
"for så å prøve «home-manager»-bryteren igjen. Lykke til!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Starter aktivering av hjemmebehandler …"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Kontrollerer at Nix fungerer"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "Dette er en simulert kjøring"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "Dette er en virkelig kjøring"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Bruker Nix-versjon: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "Aktiveringsvariabler:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "nix-env kunne ikke installere din nye Home Manager-profil!\n"
+#~ "\n"
+#~ "Kanskje det er en konflikt med en pakke som ble installert ved bruk av\n"
+#~ "«nix-env -i«? Prøv å kjøre\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "og hvis det er en pakke i konflikt kan du fjerne den med\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "for så å aktivere ditt Home Manager-oppsett igjen."
diff --git a/infra/libkookie/home-manager/modules/po/pl.po b/infra/libkookie/home-manager/modules/po/pl.po
index 3b620ac4abd..e9262433797 100644
--- a/infra/libkookie/home-manager/modules/po/pl.po
+++ b/infra/libkookie/home-manager/modules/po/pl.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-02-03 13:58+0000\n"
-"Last-Translator: Tymoteusz Dolega \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-01 13:58+0000\n"
+"Last-Translator: Anon Ymous \n"
"Language-Team: Polish \n"
"Language: pl\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.11.1-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -32,35 +32,35 @@ msgstr "Czyszczenie osieroconych linków z %s"
msgid "Creating profile generation %s"
msgstr "Tworzenie profilu generacji %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "Brak zmian więc używam ostatniej generacji profilu %s"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Aktywowanie %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
-msgstr ""
+msgstr "Sprawdzanie poprawności oldGenNum i oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -76,26 +76,28 @@ msgid ""
"and trying home-manager switch again. Good luck!"
msgstr ""
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Rozpoczynam aktywację Home Managera"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "Sprawdzanie poprawności Nix"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
+#, fuzzy
msgid "This is a dry run"
-msgstr ""
+msgstr "To jest próbne wykonanie"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr ""
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Używając wersji Nix: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
+#, fuzzy
msgid "Activation variables:"
-msgstr ""
+msgstr "Zmienne aktywacyjne:"
diff --git a/infra/libkookie/home-manager/modules/po/pt_BR.po b/infra/libkookie/home-manager/modules/po/pt_BR.po
index 534326b91b5..3ca9977ce78 100644
--- a/infra/libkookie/home-manager/modules/po/pt_BR.po
+++ b/infra/libkookie/home-manager/modules/po/pt_BR.po
@@ -7,56 +7,71 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-04-04 11:11+0000\n"
+"Last-Translator: Alex Miranda \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 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
-msgstr ""
+msgstr "Criando links simbólicos em %s"
#: modules/files.nix:246
msgid "Cleaning up orphan links from %s"
-msgstr ""
+msgstr "Limpando links órfãos do directório %s"
#: modules/files.nix:262
msgid "Creating profile generation %s"
-msgstr ""
+msgstr "Criando geração %s para o perfil"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
-msgstr ""
+msgstr "Nenhuma mudança, portanto reusando a última geração %s para o perfil"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
+"Opa! O nix não conseguiu instalar seu novo perfil do Home Manager.\n"
+"\n"
+"Talvez haja um conflito com um pacote que foi instalado usando\n"
+"\"%s\"? Tente executar\n"
+"\n"
+" %s\n"
+"\n"
+"e se houver algum pacote com conflito, remova-o com\n"
+"\n"
+" %s\n"
+"\n"
+"E então tente novamente ativar a sua configuração do Home Manager."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
-msgstr ""
+msgstr "Ativando %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
-msgstr ""
+msgstr "Revalidando oldGenNum e oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -71,27 +86,39 @@ msgid ""
"\n"
"and trying home-manager switch again. Good luck!"
msgstr ""
+"O número da geração anterior e o caminho não batem! Ambos\n"
+"precisam estar ou vazios ou definidos, mas estão definidos como\n"
+"\n"
+" '%s' e '%s'\n"
+"\n"
+"Se você não se importa de perder gerações de perfis anteriores, então\n"
+"a solução mais rápida é provavelmente rodar\n"
+"\n"
+" rm %s/home-manager*\n"
+" rm %s/current-home\n"
+"\n"
+"e tentar rodar \"home-manager switch\" de novo. Boa sorte!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
-msgstr ""
+msgstr "Iniciando ativação do Home Manager"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "Revalidando Nix"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
-msgstr ""
+msgstr "Essa é uma execução de teste"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
-msgstr ""
+msgstr "Essa é uma execução de fato"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
-msgstr ""
+msgstr "Usando versão do Nix: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
-msgstr ""
+msgstr "Variáveis durante ativação:"
diff --git a/infra/libkookie/home-manager/modules/po/ru.po b/infra/libkookie/home-manager/modules/po/ru.po
index d31e5a6ac8b..feba1b94ab8 100644
--- a/infra/libkookie/home-manager/modules/po/ru.po
+++ b/infra/libkookie/home-manager/modules/po/ru.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2021-12-21 19:55+0000\n"
-"Last-Translator: Mikhail Chekan \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Robert Helgesson \n"
"Language-Team: Russian \n"
"Language: ru\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.10\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -32,35 +32,47 @@ msgstr "Удаляю устаревшие ссылки из %s"
msgid "Creating profile generation %s"
msgstr "Создаю профиль в поколении %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "Изменений нет, переиспользую профиль в последнем поколении %s"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
+"Ой, Nix не смог установить новый профиль Home Manager!\n"
+"\n"
+"Возможно, возник конфликт с пакетом, ранее установленным\n"
+"с помощью \"%s\". Попробуйте выполнить\n"
+"\n"
+" %s\n"
+"\n"
+"и если найдётся конфликтующий пакет, удалите его командой\n"
+"\n"
+" %s\n"
+"\n"
+"После попробуйте активировать конфигурацию снова."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Активирую %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
-msgstr ""
+msgstr "Сравниваю oldGenNum и oldGenPath на всякий"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -75,27 +87,66 @@ msgid ""
"\n"
"and trying home-manager switch again. Good luck!"
msgstr ""
+"Номер и путь прошлого поколения конфликтуют! Они должны быть\n"
+"одинаково пустыми или заполненными, но сейчас имеют значения\n"
+"\n"
+" '%s' и '%s'\n"
+"\n"
+"Если вы не против потерять предыдущие профили, тогда,\n"
+"вероятно, простейшим решением будет запустить\n"
+"\n"
+" rm %s/home-manager*\n"
+" rm %s/current-home\n"
+"\n"
+"и выполнить home-manager switch ещё раз. Удачи!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Начинаю активацию Home Manager"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "Проверяю Nix на всякий случай"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
-msgstr ""
+msgstr "Это пробный запуск"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
-msgstr ""
+msgstr "Это реальный запуск"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
-msgstr ""
+msgstr "Использую Nix версии: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
-msgstr ""
+msgstr "Переменные для активации:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "Ой, nix-env не смог установить новый профиль Home Manager!\n"
+#~ "\n"
+#~ "Возможно, возник конфликт с пакетом, ранее установленным\n"
+#~ "с помощью \"nix-env -i\". Попробуйте выполнить\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "и если найдётся конфликтующий пакет, удалите его командой\n"
+#~ "\n"
+#~ " nix-env -e {имя пакета}\n"
+#~ "\n"
+#~ "После попробуйте активировать конфигурацию снова."
diff --git a/infra/libkookie/home-manager/modules/po/sv.po b/infra/libkookie/home-manager/modules/po/sv.po
index 932ac1da996..09e8a9e99ad 100644
--- a/infra/libkookie/home-manager/modules/po/sv.po
+++ b/infra/libkookie/home-manager/modules/po/sv.po
@@ -7,8 +7,8 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-01-03 12:56+0000\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:56+0000\n"
"Last-Translator: Robert Helgesson \n"
"Language-Team: Swedish \n"
@@ -17,7 +17,7 @@ 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.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
@@ -31,47 +31,47 @@ msgstr "Rensar bort överflödiga länkar från %s"
msgid "Creating profile generation %s"
msgstr "Skapar profil för generation %s"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
msgstr "Ingen förändring, återanvänder därför profil-generation %s"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
-"Ajdå, nix-env lyckades inte installera din nya Home Manager-profil!\n"
+"Ajdå, Nix lyckades inte installera din nya Home Manager-profil!\n"
"\n"
"Kanske det finns en konflikt med ett paket som installerades genom\n"
-"\"nix-env -i\"? Prova att köra\n"
+"\"%s\"? Prova att köra\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"och om det finns ett paket som är i vägen så kan du ta bort det med\n"
"\n"
-" nix-env -e {paketnamn}\n"
+" %s\n"
"\n"
"Prova sedan att aktivera din Home Manager-konfiguration igen."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
msgstr "Aktiverar %s"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
msgstr "Kontrollerar värdena på oldGenNum och oldGenPath"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -99,26 +99,53 @@ msgstr ""
"\n"
"och prova 'home-manager switch' igen. Lycka till!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
msgstr "Startar Home Manager-aktivering"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
msgstr "Kontrollerar att Nix funkar"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
msgstr "Detta är en simulerad körning"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
msgstr "Detta är en verklig körning"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
msgstr "Använder Nix-version: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr "Aktiveringsvariabler:"
+
+#~ msgid ""
+#~ "Oops, nix-env failed to install your new Home Manager profile!\n"
+#~ "\n"
+#~ "Perhaps there is a conflict with a package that was installed using\n"
+#~ "\"nix-env -i\"? Try running\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "and if there is a conflicting package you can remove it with\n"
+#~ "\n"
+#~ " nix-env -e {package name}\n"
+#~ "\n"
+#~ "Then try activating your Home Manager configuration again."
+#~ msgstr ""
+#~ "Ajdå, nix-env lyckades inte installera din nya Home Manager-profil!\n"
+#~ "\n"
+#~ "Kanske det finns en konflikt med ett paket som installerades genom\n"
+#~ "\"nix-env -i\"? Prova att köra\n"
+#~ "\n"
+#~ " nix-env -q\n"
+#~ "\n"
+#~ "och om det finns ett paket som är i vägen så kan du ta bort det med\n"
+#~ "\n"
+#~ " nix-env -e {paketnamn}\n"
+#~ "\n"
+#~ "Prova sedan att aktivera din Home Manager-konfiguration igen."
diff --git a/infra/libkookie/home-manager/modules/po/tr.po b/infra/libkookie/home-manager/modules/po/tr.po
index 97a88b91154..5b7dad73962 100644
--- a/infra/libkookie/home-manager/modules/po/tr.po
+++ b/infra/libkookie/home-manager/modules/po/tr.po
@@ -7,9 +7,9 @@ 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: 2022-01-02 11:55+0100\n"
-"PO-Revision-Date: 2022-02-12 15:54+0000\n"
-"Last-Translator: Mustafa Çalışkan \n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
+"PO-Revision-Date: 2022-03-26 23:57+0000\n"
+"Last-Translator: Oğuz Ersen \n"
"Language-Team: Turkish \n"
"Language: tr\n"
@@ -17,49 +17,61 @@ 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.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: modules/files.nix:233
msgid "Creating home file links in %s"
-msgstr "%s konumunda ev dosya linkleri oluşturuluyor"
+msgstr "%s konumunda ev dosya bağlantıları oluşturuluyor"
#: modules/files.nix:246
msgid "Cleaning up orphan links from %s"
-msgstr "Geçersiz linkler temizleniyor %s"
+msgstr "Geçersiz bağlantılar temizleniyor %s"
#: modules/files.nix:262
msgid "Creating profile generation %s"
-msgstr ""
+msgstr "%s profil inşası oluşturuluyor"
-#: modules/files.nix:266
+#: modules/files.nix:276
msgid "No change so reusing latest profile generation %s"
-msgstr ""
+msgstr "Değişiklik yok, bu nedenle en son profil inşası %s yeniden kullanılıyor"
-#: modules/home-environment.nix:589
+#: modules/home-environment.nix:607
msgid ""
-"Oops, nix-env failed to install your new Home Manager profile!\n"
+"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"
-"\"nix-env -i\"? Try running\n"
+"\"%s\"? Try running\n"
"\n"
-" nix-env -q\n"
+" %s\n"
"\n"
"and if there is a conflicting package you can remove it with\n"
"\n"
-" nix-env -e {package name}\n"
+" %s\n"
"\n"
"Then try activating your Home Manager configuration again."
msgstr ""
+"Eyvah, Nix yeni Home Manager profilinizi kuramadı!\n"
+"\n"
+"Belki de \"%s\" kullanan kurulan paketlerin biriyle bir çakışma vardır?\n"
+"\n"
+" %s\n"
+"\n"
+"komutunu çalıştırın ve eğer çakışan bir paket varsa onu\n"
+"\n"
+" %s\n"
+"\n"
+"ile kaldırabilirsiniz. Sonra Home Manager yapılandırmanızı yeniden\n"
+"etkinleştirmeyi deneyin."
-#: modules/home-environment.nix:620
+#: modules/home-environment.nix:639
msgid "Activating %s"
-msgstr ""
+msgstr "%s etkinleştiriliyor"
-#: modules/lib-bash/activation-init.sh:30
+#: modules/lib-bash/activation-init.sh:31
msgid "Sanity checking oldGenNum and oldGenPath"
-msgstr ""
+msgstr "oldGenNum ve oldGenPath denetleniyor"
-#: modules/lib-bash/activation-init.sh:33
+#: modules/lib-bash/activation-init.sh:34
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"
@@ -74,27 +86,40 @@ msgid ""
"\n"
"and trying home-manager switch again. Good luck!"
msgstr ""
+"Önceki inşa numarası ve yolu çakışıyor! Bunların ikisi de boş olmalı\n"
+"veya ayarlanmalı ama şu anda\n"
+"\n"
+" '%s' ve '%s'\n"
+"\n"
+"olarak ayarlandı. Önceki profil inşalarını kaybetmeyi önemsemiyorsanız\n"
+"en kolay çözüm muhtemelen\n"
+"\n"
+" rm %s/home-manager*\n"
+" rm %s/current-home\n"
+"\n"
+"komutlarını çalıştırmak ve tekrar home-manager switch denemektir. İyi "
+"şanslar!"
-#: modules/lib-bash/activation-init.sh:50
+#: modules/lib-bash/activation-init.sh:51
msgid "Starting Home Manager activation"
-msgstr ""
+msgstr "Home Manager etkinleştirmesi başlatılıyor"
-#: modules/lib-bash/activation-init.sh:54
+#: modules/lib-bash/activation-init.sh:55
msgid "Sanity checking Nix"
-msgstr ""
+msgstr "Nix denetleniyor"
-#: modules/lib-bash/activation-init.sh:60
+#: modules/lib-bash/activation-init.sh:61
msgid "This is a dry run"
-msgstr ""
+msgstr "Bu bir deneme çalıştırmasıdır"
-#: modules/lib-bash/activation-init.sh:63
+#: modules/lib-bash/activation-init.sh:64
msgid "This is a live run"
-msgstr ""
+msgstr "Bu bir gerçek çalıştırmadır"
-#: modules/lib-bash/activation-init.sh:68
+#: modules/lib-bash/activation-init.sh:69
msgid "Using Nix version: %s"
-msgstr ""
+msgstr "Kullanılan Nix sürümü: %s"
-#: modules/lib-bash/activation-init.sh:71
+#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
-msgstr ""
+msgstr "Etkinleştirme değişkenleri:"
diff --git a/infra/libkookie/home-manager/modules/po/zh_Hans.po b/infra/libkookie/home-manager/modules/po/zh_Hans.po
index b7a476eddd6..4348f185bed 100644
--- a/infra/libkookie/home-manager/modules/po/zh_Hans.po
+++ b/infra/libkookie/home-manager/modules/po/zh_Hans.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: 2022-01-02 11:55+0100\n"
+"POT-Creation-Date: 2022-03-26 15:08+0100\n"
"PO-Revision-Date: 2022-01-05 00:56+0000\n"
"Last-Translator: ethinx \n"
"Language-Team: Chinese (Simplified) \n"
"Language-Team: Chinese (Traditional) $XDG_CONFIG_HOME/eww.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+ xdg.configFile."eww".source = cfg.configDir;
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/foot.nix b/infra/libkookie/home-manager/modules/programs/foot.nix
index e6c9dc52665..2b08f3acd72 100644
--- a/infra/libkookie/home-manager/modules/programs/foot.nix
+++ b/infra/libkookie/home-manager/modules/programs/foot.nix
@@ -71,6 +71,7 @@ in {
Service = {
ExecStart = "${cfg.package}/bin/foot --server";
Restart = "on-failure";
+ OOMPolicy = "continue";
};
Install = { WantedBy = [ "graphical-session.target" ]; };
diff --git a/infra/libkookie/home-manager/modules/programs/git.nix b/infra/libkookie/home-manager/modules/programs/git.nix
index cf6ef3bcf48..61792f866fa 100644
--- a/infra/libkookie/home-manager/modules/programs/git.nix
+++ b/infra/libkookie/home-manager/modules/programs/git.nix
@@ -239,6 +239,34 @@ in {
};
};
+ difftastic = {
+ enable = mkEnableOption "" // {
+ description = ''
+ Enable the difft syntax highlighter.
+ See .
+ '';
+ };
+
+ background = mkOption {
+ type = types.enum [ "light" "dark" ];
+ default = "light";
+ example = "dark";
+ description = ''
+ Determines whether difftastic should use the lighter or darker colors
+ for syntax highlithing.
+ '';
+ };
+
+ color = mkOption {
+ type = types.enum [ "always" "auto" "never" ];
+ default = "auto";
+ example = "always";
+ description = ''
+ Determines when difftastic should color its output.
+ '';
+ };
+ };
+
delta = {
enable = mkEnableOption "" // {
description = ''
@@ -274,6 +302,11 @@ in {
config = mkIf cfg.enable (mkMerge [
{
home.packages = [ cfg.package ];
+ assertions = [{
+ assertion = !(cfg.delta.enable && cfg.difftastic.enable);
+ message =
+ "Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' can be set to true at the same time.";
+ }];
programs.git.iniContent.user = {
name = mkIf (cfg.userName != null) cfg.userName;
@@ -377,6 +410,18 @@ in {
};
})
+ (mkIf cfg.difftastic.enable {
+ home.packages = [ pkgs.difftastic ];
+
+ programs.git.iniContent = let
+ difftCommand =
+ "${pkgs.difftastic}/bin/difft --color ${cfg.difftastic.color} --background ${cfg.difftastic.background}";
+ in {
+ diff.external = difftCommand;
+ core.pager = "${pkgs.less}/bin/less -XF";
+ };
+ })
+
(mkIf cfg.delta.enable {
home.packages = [ pkgs.delta ];
diff --git a/infra/libkookie/home-manager/modules/programs/gitui.nix b/infra/libkookie/home-manager/modules/programs/gitui.nix
new file mode 100644
index 00000000000..ee6572bcaf1
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/gitui.nix
@@ -0,0 +1,82 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.gitui;
+
+in {
+ meta.maintainers = [ hm.maintainers.mifom ];
+
+ options.programs.gitui = {
+ enable =
+ mkEnableOption "gitui, blazing fast terminal-ui for git written in rust";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.gitui;
+ defaultText = "pkgs.gitui";
+ description = "The package to use.";
+ };
+
+ keyConfig = mkOption {
+ type = types.either types.path types.lines;
+ default = "";
+ example = ''
+ exit: Some(( code: Char('c'), modifiers: ( bits: 2,),)),
+ quit: Some(( code: Char('q'), modifiers: ( bits: 0,),)),
+ exit_popup: Some(( code: Esc, modifiers: ( bits: 0,),)),
+ '';
+ description = ''
+ Key config in Ron file format. This is written to
+ $XDG_CONFIG_HOME/gitui/key_config.ron.
+ '';
+ };
+
+ theme = mkOption {
+ type = types.either types.path types.lines;
+ default = ''
+ (
+ selected_tab: Reset,
+ command_fg: White,
+ selection_bg: Blue,
+ cmdbar_extra_lines_bg: Blue,
+ disabled_fg: DarkGray,
+ diff_line_add: Green,
+ diff_line_delete: Red,
+ diff_file_added: LightGreen,
+ diff_file_removed: LightRed,
+ diff_file_moved: LightMagenta,
+ diff_file_modified: Yellow,
+ commit_hash: Magenta,
+ commit_time: LightCyan,
+ commit_author: Green,
+ danger_fg: Red,
+ push_gauge_bg: Blue,
+ push_gauge_fg: Reset,
+ )
+ '';
+ description = ''
+ Theme in Ron file format. This is written to
+ $XDG_CONFIG_HOME/gitui/theme.ron.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."gitui/theme.ron".source =
+ if builtins.isPath cfg.theme || lib.isStorePath cfg.theme then
+ cfg.theme
+ else
+ pkgs.writeText "gitui-theme.ron" cfg.theme;
+
+ xdg.configFile."gitui/key_bindings.ron".source =
+ if builtins.isPath cfg.keyConfig || lib.isStorePath cfg.keyConfig then
+ cfg.keyConfig
+ else
+ pkgs.writeText "gitui-key-config.ron" cfg.keyConfig;
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/gpg.nix b/infra/libkookie/home-manager/modules/programs/gpg.nix
index 6cb04292d70..4b233dc6b59 100644
--- a/infra/libkookie/home-manager/modules/programs/gpg.nix
+++ b/infra/libkookie/home-manager/modules/programs/gpg.nix
@@ -6,9 +6,7 @@ let
cfg = config.programs.gpg;
mkKeyValue = key: value:
- if isString value
- then "${key} ${value}"
- else optionalString value key;
+ if isString value then "${key} ${value}" else optionalString value key;
cfgText = generators.toKeyValue {
inherit mkKeyValue;
@@ -22,7 +20,7 @@ let
primitiveType = types.oneOf [ types.str types.bool ];
- publicKeyOpts = { config, ...}: {
+ publicKeyOpts = { config, ... }: {
options = {
text = mkOption {
type = types.nullOr types.str;
@@ -40,7 +38,18 @@ let
};
trust = mkOption {
- type = types.nullOr (types.enum ["unknown" 1 "never" 2 "marginal" 3 "full" 4 "ultimate" 5]);
+ type = types.nullOr (types.enum [
+ "unknown"
+ 1
+ "never"
+ 2
+ "marginal"
+ 3
+ "full"
+ 4
+ "ultimate"
+ 5
+ ]);
default = null;
apply = v:
if isString v then
@@ -51,7 +60,8 @@ let
full = 4;
ultimate = 5;
}.${v}
- else v;
+ else
+ v;
description = ''
The amount of trust you have in the key ownership and the care the
owner puts into signing other keys. The available levels are
@@ -85,58 +95,56 @@ let
};
config = {
- source = mkIf (config.text != null)
- (pkgs.writeText "gpg-pubkey" config.text);
+ source =
+ mkIf (config.text != null) (pkgs.writeText "gpg-pubkey" config.text);
};
};
- importTrustBashFunctions =
- let gpg = "${cfg.package}/bin/gpg";
- in ''
- function gpgKeyId() {
- ${gpg} --show-key --with-colons "$1" \
- | grep ^pub: \
- | cut -d: -f5
- }
-
- function importTrust() {
- local keyId trust
- keyId="$(gpgKeyId "$1")"
- trust="$2"
- if [[ -n $keyId ]] ; then
- { echo trust; echo "$trust"; (( trust == 5 )) && echo y; echo quit; } \
- | ${gpg} --no-tty --command-fd 0 --edit-key "$keyId"
- fi
- }
+ importTrustBashFunctions = let gpg = "${cfg.package}/bin/gpg";
+ in ''
+ function gpgKeyId() {
+ ${gpg} --show-key --with-colons "$1" \
+ | grep ^pub: \
+ | cut -d: -f5
+ }
+
+ function importTrust() {
+ local keyIds trust
+ IFS='\n' read -ra keyIds <<< "$(gpgKeyId "$1")"
+ trust="$2"
+ for id in "''${keyIds[@]}" ; do
+ { echo trust; echo "$trust"; (( trust == 5 )) && echo y; echo quit; } \
+ | ${gpg} --no-tty --command-fd 0 --edit-key "$id"
+ done
+ }
+
'';
- keyringFiles =
- let
- gpg = "${cfg.package}/bin/gpg";
+ keyringFiles = let
+ gpg = "${cfg.package}/bin/gpg";
- importKey = { source, trust, ... }: ''
- ${gpg} --import ${source}
- ${optionalString (trust != null) ''
- importTrust "${source}" ${toString trust}''}
- '';
+ importKey = { source, trust, ... }: ''
+ ${gpg} --import ${source}
+ ${optionalString (trust != null)
+ ''importTrust "${source}" ${toString trust}''}
+ '';
- importKeys = concatMapStringsSep "\n" importKey cfg.publicKeys;
- in pkgs.runCommand "gpg-pubring" { buildInputs = [ cfg.package ]; } ''
- export GNUPGHOME
- GNUPGHOME=$(mktemp -d)
+ importKeys = concatMapStringsSep "\n" importKey cfg.publicKeys;
+ in pkgs.runCommand "gpg-pubring" { buildInputs = [ cfg.package ]; } ''
+ export GNUPGHOME
+ GNUPGHOME=$(mktemp -d)
- ${importTrustBashFunctions}
- ${importKeys}
+ ${importTrustBashFunctions}
+ ${importKeys}
- mkdir $out
- cp $GNUPGHOME/pubring.kbx $out/pubring.kbx
- if [[ -e $GNUPGHOME/trustdb.gpg ]] ; then
- cp $GNUPGHOME/trustdb.gpg $out/trustdb.gpg
- fi
- '';
+ mkdir $out
+ cp $GNUPGHOME/pubring.kbx $out/pubring.kbx
+ if [[ -e $GNUPGHOME/trustdb.gpg ]] ; then
+ cp $GNUPGHOME/trustdb.gpg $out/trustdb.gpg
+ fi
+ '';
-in
-{
+in {
options.programs.gpg = {
enable = mkEnableOption "GnuPG";
@@ -145,11 +153,13 @@ in
default = pkgs.gnupg;
defaultText = literalExpression "pkgs.gnupg";
example = literalExpression "pkgs.gnupg23";
- description = "The Gnupg package to use (also used the gpg-agent service).";
+ description =
+ "The Gnupg package to use (also used the gpg-agent service).";
};
settings = mkOption {
- type = types.attrsOf (types.either primitiveType (types.listOf types.str));
+ type =
+ types.attrsOf (types.either primitiveType (types.listOf types.str));
example = literalExpression ''
{
no-comments = false;
@@ -167,7 +177,8 @@ in
};
scdaemonSettings = mkOption {
- type = types.attrsOf (types.either primitiveType (types.listOf types.str));
+ type =
+ types.attrsOf (types.either primitiveType (types.listOf types.str));
example = literalExpression ''
{
disable-ccid = true;
@@ -182,9 +193,10 @@ in
homedir = mkOption {
type = types.path;
- example = literalExpression "\"\${config.xdg.dataHome}/gnupg\"";
+ example = literalExpression ''"''${config.xdg.dataHome}/gnupg"'';
default = "${config.home.homeDirectory}/.gnupg";
- defaultText = literalExpression "\"\${config.home.homeDirectory}/.gnupg\"";
+ defaultText =
+ literalExpression ''"''${config.home.homeDirectory}/.gnupg"'';
description = "Directory to store keychains and configuration.";
};
@@ -236,7 +248,8 @@ in
personal-cipher-preferences = mkDefault "AES256 AES192 AES";
personal-digest-preferences = mkDefault "SHA512 SHA384 SHA256";
personal-compress-preferences = mkDefault "ZLIB BZIP2 ZIP Uncompressed";
- default-preference-list = mkDefault "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
+ default-preference-list = mkDefault
+ "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
cert-digest-algo = mkDefault "SHA512";
s2k-digest-algo = mkDefault "SHA512";
s2k-cipher-algo = mkDefault "AES256";
@@ -258,9 +271,7 @@ in
};
home.packages = [ cfg.package ];
- home.sessionVariables = {
- GNUPGHOME = cfg.homedir;
- };
+ home.sessionVariables = { GNUPGHOME = cfg.homedir; };
home.file."${cfg.homedir}/gpg.conf".text = cfgText;
@@ -268,45 +279,48 @@ in
# Link keyring if keys are not mutable
home.file."${cfg.homedir}/pubring.kbx" =
- mkIf (!cfg.mutableKeys && cfg.publicKeys != []) {
+ mkIf (!cfg.mutableKeys && cfg.publicKeys != [ ]) {
source = "${keyringFiles}/pubring.kbx";
};
- home.activation = mkIf (cfg.publicKeys != []) {
- importGpgKeys =
- let
- gpg = "${cfg.package}/bin/gpg";
-
- importKey = { source, trust, ... }:
- # Import mutable keys
- optional cfg.mutableKeys ''
- $DRY_RUN_CMD ${gpg} $QUIET_ARG --import ${source}''
-
- # Import mutable trust
- ++ optional (trust != null && cfg.mutableTrust) ''
- $DRY_RUN_CMD importTrust "${source}" ${toString trust}'';
-
- anyTrust = any (k: k.trust != null) cfg.publicKeys;
-
- importKeys = concatStringsSep "\n" (concatMap importKey cfg.publicKeys);
-
- # If any key/trust should be imported then create the block. Otherwise
- # leave it empty.
- block = concatStringsSep "\n" (
- optional (importKeys != "") ''
- export GNUPGHOME=${escapeShellArg cfg.homedir}
- if [[ ! -v VERBOSE ]]; then
- QUIET_ARG="--quiet"
- else
- QUIET_ARG=""
- fi
- ${importTrustBashFunctions}
- ${importKeys}
- unset GNUPGHOME QUIET_ARG keyId importTrust
- '' ++ optional (!cfg.mutableTrust && anyTrust) ''
- install -m 0700 ${keyringFiles}/trustdb.gpg "${cfg.homedir}/trustdb.gpg"''
- );
- in lib.hm.dag.entryAfter ["linkGeneration"] block;
+ home.activation = {
+ createGpgHomedir =
+ hm.dag.entryBetween [ "linkGeneration" ] [ "writeBoundary" ] ''
+ $DRY_RUN_CMD mkdir -m700 -p $VERBOSE_ARG ${escapeShellArg cfg.homedir}
+ '';
+
+ importGpgKeys = let
+ gpg = "${cfg.package}/bin/gpg";
+
+ importKey = { source, trust, ... }:
+ # Import mutable keys
+ optional cfg.mutableKeys
+ "$DRY_RUN_CMD ${gpg} $QUIET_ARG --import ${source}"
+
+ # Import mutable trust
+ ++ optional (trust != null && cfg.mutableTrust)
+ ''$DRY_RUN_CMD importTrust "${source}" ${toString trust}'';
+
+ anyTrust = any (k: k.trust != null) cfg.publicKeys;
+
+ importKeys = concatStringsSep "\n" (concatMap importKey cfg.publicKeys);
+
+ # If any key/trust should be imported then create the block. Otherwise
+ # leave it empty.
+ block = concatStringsSep "\n" (optional (importKeys != "") ''
+ export GNUPGHOME=${escapeShellArg cfg.homedir}
+ if [[ ! -v VERBOSE ]]; then
+ QUIET_ARG="--quiet"
+ else
+ QUIET_ARG=""
+ fi
+ ${importTrustBashFunctions}
+ ${importKeys}
+ unset GNUPGHOME QUIET_ARG keyId importTrust
+ '' ++ optional (!cfg.mutableTrust && anyTrust) ''
+ install -m 0700 ${keyringFiles}/trustdb.gpg "${cfg.homedir}/trustdb.gpg"'');
+ in mkIf (cfg.publicKeys != [ ])
+ (lib.hm.dag.entryAfter [ "linkGeneration" ] block);
};
};
}
diff --git a/infra/libkookie/home-manager/modules/programs/himalaya.nix b/infra/libkookie/home-manager/modules/programs/himalaya.nix
index f4a0ffb3fea..dd91e5976fa 100644
--- a/infra/libkookie/home-manager/modules/programs/himalaya.nix
+++ b/infra/libkookie/home-manager/modules/programs/himalaya.nix
@@ -14,6 +14,11 @@ let
name = account.realName;
default = account.primary;
+ inbox-folder = account.folders.inbox;
+ sent-folder = account.folders.sent;
+ draft-folder = account.folders.drafts;
+ # NOTE: himalaya does not support configuring the name of the trash folder
+
# FIXME: does not support disabling TLS altogether
# NOTE: does not accept sequence of strings for password commands
imap-login = account.userName;
@@ -26,7 +31,7 @@ let
smtp-passwd-cmd = lib.escapeShellArgs account.passwordCommand;
smtp-host = account.smtp.host;
smtp-port = account.smtp.port;
- smtp-starttls = account.imap.tls.useStartTls;
+ smtp-starttls = account.smtp.tls.useStartTls;
} // (lib.optionalAttrs (account.signature.showSignature == "append") {
# FIXME: signature cannot be attached
signature = account.signature.text;
diff --git a/infra/libkookie/home-manager/modules/programs/i3status-rust.nix b/infra/libkookie/home-manager/modules/programs/i3status-rust.nix
index 69785fea374..33f2b146dc8 100644
--- a/infra/libkookie/home-manager/modules/programs/i3status-rust.nix
+++ b/infra/libkookie/home-manager/modules/programs/i3status-rust.nix
@@ -144,8 +144,8 @@ in {
{
block = "memory";
display_type = "memory";
- format_mem = "{Mup}%";
- format_swap = "{SUp}%";
+ format_mem = "{mem_used_percents}";
+ format_swap = "{swap_used_percents}";
}
{
block = "cpu";
diff --git a/infra/libkookie/home-manager/modules/programs/irssi.nix b/infra/libkookie/home-manager/modules/programs/irssi.nix
index a8f8a22ff70..3d830a4f183 100644
--- a/infra/libkookie/home-manager/modules/programs/irssi.nix
+++ b/infra/libkookie/home-manager/modules/programs/irssi.nix
@@ -6,7 +6,6 @@ let
cfg = config.programs.irssi;
- boolStr = b: if b then "yes" else "no";
quoteStr = s: escape [ ''"'' ] s;
# Comma followed by newline.
@@ -33,9 +32,9 @@ let
chatnet = "${k}";
address = "${v.server.address}";
port = "${toString v.server.port}";
- use_ssl = "${boolStr v.server.ssl.enable}";
- ssl_verify = "${boolStr v.server.ssl.verify}";
- autoconnect = "${boolStr v.server.autoConnect}";
+ use_ssl = "${lib.hm.booleans.yesNo v.server.ssl.enable}";
+ ssl_verify = "${lib.hm.booleans.yesNo v.server.ssl.verify}";
+ autoconnect = "${lib.hm.booleans.yesNo v.server.autoConnect}";
${
lib.optionalString (v.server.ssl.certificateFile != null) ''
ssl_cert = "${v.server.ssl.certificateFile}";
@@ -44,14 +43,15 @@ let
}
''));
- channelString = concatStringsSep cnl (flip mapAttrsToList cfg.networks (k: v:
- concatStringsSep cnl (flip mapAttrsToList v.channels (c: cv: ''
- {
- chatnet = "${k}";
- name = "${c}";
- autojoin = "${boolStr cv.autoJoin}";
- }
- ''))));
+ channelString = concatStringsSep cnl (concatLists
+ (flip mapAttrsToList cfg.networks (k: v:
+ (flip mapAttrsToList v.channels (c: cv: ''
+ {
+ chatnet = "${k}";
+ name = "${c}";
+ autojoin = "${lib.hm.booleans.yesNo cv.autoJoin}";
+ }
+ '')))));
channelType = types.submodule {
options = {
@@ -154,7 +154,7 @@ in {
extraConfig = mkOption {
default = "";
description = "These lines are appended to the Irssi configuration.";
- type = types.str;
+ type = types.lines;
};
aliases = mkOption {
diff --git a/infra/libkookie/home-manager/modules/programs/just.nix b/infra/libkookie/home-manager/modules/programs/just.nix
new file mode 100644
index 00000000000..6d5447c31ef
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/just.nix
@@ -0,0 +1,52 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.just;
+
+in {
+ meta.maintainers = [ hm.maintainers.maximsmol ];
+
+ options.programs.just = {
+ enable = mkEnableOption
+ "just, a handy way to save and run project-specific commands";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.just;
+ defaultText = literalExpression "pkgs.just";
+ description = "Package providing the just tool.";
+ };
+
+ enableBashIntegration = mkEnableOption "Bash integration" // {
+ default = true;
+ };
+
+ enableZshIntegration = mkEnableOption "Zsh integration" // {
+ default = true;
+ };
+
+ enableFishIntegration = mkEnableOption "Fish integration" // {
+ default = true;
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
+ source ${cfg.package}/share/bash-completion/completions/just.bash
+ '';
+
+ programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
+ source ${cfg.package}/share/zsh/site-functions/_just
+ '';
+
+ programs.fish.shellInit = mkIf cfg.enableFishIntegration ''
+ source ${cfg.package}/share/fish/vendor_completions.d/just.fish
+ '';
+
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/keychain.nix b/infra/libkookie/home-manager/modules/programs/keychain.nix
index 9a25702f3f8..70b74c91df4 100644
--- a/infra/libkookie/home-manager/modules/programs/keychain.nix
+++ b/infra/libkookie/home-manager/modules/programs/keychain.nix
@@ -100,13 +100,13 @@ in {
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
- eval "$(${shellCommand})"
+ SHELL=bash eval "$(${shellCommand})"
'';
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
- eval (${shellCommand})
+ SHELL=fish eval (${shellCommand})
'';
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
- eval "$(${shellCommand})"
+ SHELL=zsh eval "$(${shellCommand})"
'';
xsession.initExtra = mkIf cfg.enableXsessionIntegration ''
eval "$(${shellCommand})"
diff --git a/infra/libkookie/home-manager/modules/programs/kitty.nix b/infra/libkookie/home-manager/modules/programs/kitty.nix
index 5ebdf05eadd..627cc61f6b4 100644
--- a/infra/libkookie/home-manager/modules/programs/kitty.nix
+++ b/infra/libkookie/home-manager/modules/programs/kitty.nix
@@ -14,10 +14,8 @@ let
toKittyConfig = generators.toKeyValue {
mkKeyValue = key: value:
let
- value' = if isBool value then
- (if value then "yes" else "no")
- else
- toString value;
+ value' =
+ (if isBool value then lib.hm.booleans.yesNo else toString) value;
in "${key} ${value'}";
};
diff --git a/infra/libkookie/home-manager/modules/programs/lf.nix b/infra/libkookie/home-manager/modules/programs/lf.nix
index a3cf7ec3d67..8f0a07cb8bb 100644
--- a/infra/libkookie/home-manager/modules/programs/lf.nix
+++ b/infra/libkookie/home-manager/modules/programs/lf.nix
@@ -58,6 +58,15 @@ in {
programs.lf = {
enable = mkEnableOption "lf";
+ package = mkOption {
+ type = types.package;
+ default = pkgs.lf;
+ defaultText = literalExpression "pkgs.lf";
+ description = ''
+ lf package to use.
+ '';
+ };
+
settings = mkOption {
type = lfSettingsType;
default = { };
@@ -169,7 +178,7 @@ in {
};
config = mkIf cfg.enable {
- home.packages = [ pkgs.lf ];
+ home.packages = [ cfg.package ];
xdg.configFile."lf/lfrc".text = let
fmtSetting = k: v:
diff --git a/infra/libkookie/home-manager/modules/programs/mbsync.nix b/infra/libkookie/home-manager/modules/programs/mbsync.nix
index c5d8f0da612..373828a0b24 100644
--- a/infra/libkookie/home-manager/modules/programs/mbsync.nix
+++ b/infra/libkookie/home-manager/modules/programs/mbsync.nix
@@ -63,7 +63,7 @@ let
if isList v then
concatMapStringsSep " " (genValue n) v
else if isBool v then
- (if v then "yes" else "no")
+ lib.hm.booleans.yesNo v
else if isInt v then
toString v
else if isString v && hasSpace v then
diff --git a/infra/libkookie/home-manager/modules/programs/mpv.nix b/infra/libkookie/home-manager/modules/programs/mpv.nix
index b37a2516a27..0d7668cfa7a 100644
--- a/infra/libkookie/home-manager/modules/programs/mpv.nix
+++ b/infra/libkookie/home-manager/modules/programs/mpv.nix
@@ -18,9 +18,7 @@ let
rec {
int = toString option;
float = int;
-
- bool = if option then "yes" else "no";
-
+ bool = lib.hm.booleans.yesNo option;
string = option;
}.${typeOf option};
diff --git a/infra/libkookie/home-manager/modules/programs/mu.nix b/infra/libkookie/home-manager/modules/programs/mu.nix
index 233624d14c8..58b8b3dff91 100644
--- a/infra/libkookie/home-manager/modules/programs/mu.nix
+++ b/infra/libkookie/home-manager/modules/programs/mu.nix
@@ -12,12 +12,14 @@ let
# Takes the list of accounts with mu.enable = true, and generates a
# command-line flag for initializing the mu database.
myAddresses = let
- # List of account sets where mu.enable = true.
+ # Set of email account sets where mu.enable = true.
muAccounts =
filter (a: a.mu.enable) (attrValues config.accounts.email.accounts);
addrs = map (a: a.address) muAccounts;
- # Prefix --my-address= to each account's address with mu.enable.
- addMyAddress = map (addr: "--my-address=" + addr) addrs;
+ # Construct list of lists containing email aliases, and flatten
+ aliases = flatten (map (a: a.aliases) muAccounts);
+ # Prefix --my-address= to each account's address AND all defined aliases
+ addMyAddress = map (addr: "--my-address=" + addr) (addrs ++ aliases);
in concatStringsSep " " addMyAddress;
in {
diff --git a/infra/libkookie/home-manager/modules/programs/ncmpcpp.nix b/infra/libkookie/home-manager/modules/programs/ncmpcpp.nix
index d1911818474..e3784951913 100644
--- a/infra/libkookie/home-manager/modules/programs/ncmpcpp.nix
+++ b/infra/libkookie/home-manager/modules/programs/ncmpcpp.nix
@@ -14,7 +14,7 @@ let
renderValue = option:
{
int = toString option;
- bool = if option then "yes" else "no";
+ bool = lib.hm.booleans.yesNo option;
string = option;
}.${builtins.typeOf option};
diff --git a/infra/libkookie/home-manager/modules/programs/neomutt.nix b/infra/libkookie/home-manager/modules/programs/neomutt.nix
index 2a2f79fae32..b3e92818396 100644
--- a/infra/libkookie/home-manager/modules/programs/neomutt.nix
+++ b/infra/libkookie/home-manager/modules/programs/neomutt.nix
@@ -89,7 +89,6 @@ let
};
};
- yesno = x: if x then "yes" else "no";
setOption = n: v: if v == null then "unset ${n}" else "set ${n}=${v}";
escape = replaceStrings [ "%" ] [ "%25" ];
@@ -167,7 +166,7 @@ let
sidebarSection = ''
# Sidebar
set sidebar_visible = yes
- set sidebar_short_path = ${yesno cfg.sidebar.shortPath}
+ set sidebar_short_path = ${lib.hm.booleans.yesNo cfg.sidebar.shortPath}
set sidebar_width = ${toString cfg.sidebar.width}
set sidebar_format = '${cfg.sidebar.format}'
'';
@@ -204,8 +203,10 @@ let
# GPG section
set crypt_use_gpgme = yes
- set crypt_autosign = ${yesno (gpg.signByDefault or false)}
- set crypt_opportunistic_encrypt = ${yesno (gpg.encryptByDefault or false)}
+ set crypt_autosign = ${lib.hm.booleans.yesNo (gpg.signByDefault or false)}
+ set crypt_opportunistic_encrypt = ${
+ lib.hm.booleans.yesNo (gpg.encryptByDefault or false)
+ }
set pgp_use_gpg_agent = yes
set mbox_type = ${if maildir != null then "Maildir" else "mbox"}
set sort = "${cfg.sort}"
@@ -222,9 +223,11 @@ let
# Extra configuration
${account.neomutt.extraConfig}
- '' + optionalString (account.signature.showSignature != "none") ''
+ '' + (if (account.signature.showSignature == "none") then ''
+ unset signature
+ '' else ''
set signature = ${pkgs.writeText "signature.txt" account.signature.text}
- '' + optionalString account.notmuch.enable (notmuchSection account);
+ '') + optionalString account.notmuch.enable (notmuchSection account);
in {
options = {
diff --git a/infra/libkookie/home-manager/modules/programs/neovim.nix b/infra/libkookie/home-manager/modules/programs/neovim.nix
index 97e84ba884c..a0e21476e49 100644
--- a/infra/libkookie/home-manager/modules/programs/neovim.nix
+++ b/infra/libkookie/home-manager/modules/programs/neovim.nix
@@ -16,6 +16,17 @@ let
merge = mergeOneOption;
};
+ # Currently, upstream Neovim is pinned on Lua 5.1 for LuaJIT support.
+ # This will need to be updated if Neovim ever migrates to a newer
+ # version of Lua.
+ extraLua51PackageType = mkOptionType {
+ name = "extra-lua51-packages";
+ description = "lua5.1 packages in lua5_1.withPackages format";
+ check = with types;
+ (x: if isFunction x then isList (x pkgs.lua51Packages) else false);
+ merge = mergeOneOption;
+ };
+
pluginWithConfigType = types.submodule {
options = {
config = mkOption {
@@ -53,20 +64,37 @@ let
'' else
"";
+ allPlugins = cfg.plugins ++ optional cfg.coc.enable {
+ type = "viml";
+ plugin = pkgs.vimPlugins.coc-nvim;
+ config = cfg.coc.pluginConfig;
+ optional = false;
+ };
+
moduleConfigure = {
packages.home-manager = {
start = remove null (map
(x: if x ? plugin && x.optional == true then null else (x.plugin or x))
- cfg.plugins);
+ allPlugins);
opt = remove null
(map (x: if x ? plugin && x.optional == true then x.plugin else null)
- cfg.plugins);
+ allPlugins);
};
beforePlugins = "";
};
extraMakeWrapperArgs = lib.optionalString (cfg.extraPackages != [ ])
''--suffix PATH : "${lib.makeBinPath cfg.extraPackages}"'';
+ extraMakeWrapperLuaCArgs = lib.optionalString (cfg.extraLuaPackages != [ ]) ''
+ --suffix LUA_CPATH ";" "${
+ lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaCPath
+ cfg.extraLuaPackages
+ }"'';
+ extraMakeWrapperLuaArgs = lib.optionalString (cfg.extraLuaPackages != [ ]) ''
+ --suffix LUA_PATH ";" "${
+ lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaPath
+ cfg.extraLuaPackages
+ }"'';
in {
imports = [
@@ -141,6 +169,17 @@ in {
'';
};
+ extraLuaPackages = mkOption {
+ type = with types; either extraLua51PackageType (listOf package);
+ default = [ ];
+ defaultText = "[]";
+ example = literalExpression "(ps: with ps; [ luautf8 ])";
+ description = ''
+ A function in lua5_1.withPackages format, which returns a
+ list of Lua packages required for your plugins to work.
+ '';
+ };
+
generatedConfigViml = mkOption {
type = types.lines;
visible = true;
@@ -296,6 +335,12 @@ in {
for options.
'';
};
+
+ pluginConfig = mkOption {
+ type = types.lines;
+ default = "";
+ description = "Script to configure CoC. Must be viml.";
+ };
};
};
};
@@ -310,16 +355,15 @@ in {
plugin = x;
config = "";
optional = false;
- }) cfg.plugins;
+ }) allPlugins;
suppressNotVimlConfig = p:
if p.type != "viml" then p // { config = ""; } else p;
neovimConfig = pkgs.neovimUtils.makeNeovimConfig {
- inherit (cfg)
- extraPython3Packages withPython3 withNodeJs withRuby viAlias vimAlias;
+ inherit (cfg) extraPython3Packages withPython3 withRuby viAlias vimAlias;
+ withNodeJs = cfg.withNodeJs or cfg.coc.enable;
configure = cfg.configure // moduleConfigure;
- plugins = (map suppressNotVimlConfig pluginsNormalized)
- ++ optionals cfg.coc.enable [{ plugin = pkgs.vimPlugins.coc-nvim; }];
+ plugins = map suppressNotVimlConfig pluginsNormalized;
customRC = cfg.extraConfig;
};
@@ -337,15 +381,23 @@ in {
programs.neovim.generatedConfigs = let
grouped = lib.lists.groupBy (x: x.type) pluginsNormalized;
- concatConfigs =
- lib.concatMapStrings (p: builtins.trace p.plugin.name p.config);
+ concatConfigs = lib.concatMapStrings (p: p.config);
in mapAttrs (name: vals: concatConfigs vals) grouped;
home.packages = [ cfg.finalPackage ];
xdg.configFile."nvim/init.vim" = mkIf (neovimConfig.neovimRcContent != "") {
- text = neovimConfig.neovimRcContent;
+ text = if hasAttr "lua" config.programs.neovim.generatedConfigs then
+ neovimConfig.neovimRcContent + ''
+
+ lua require('init-home-manager')''
+ else
+ neovimConfig.neovimRcContent;
};
+ xdg.configFile."nvim/lua/init-home-manager.lua" =
+ mkIf (hasAttr "lua" config.programs.neovim.generatedConfigs) {
+ text = config.programs.neovim.generatedConfigs.lua;
+ };
xdg.configFile."nvim/coc-settings.json" = mkIf cfg.coc.enable {
source = jsonFormat.generate "coc-settings.json" cfg.coc.settings;
};
@@ -353,7 +405,8 @@ in {
programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package
(neovimConfig // {
wrapperArgs = (lib.escapeShellArgs neovimConfig.wrapperArgs) + " "
- + extraMakeWrapperArgs;
+ + extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " "
+ + extraMakeWrapperLuaArgs;
wrapRc = false;
});
diff --git a/infra/libkookie/home-manager/modules/programs/newsboat.nix b/infra/libkookie/home-manager/modules/programs/newsboat.nix
index eac4cce8c0f..ba074a421a2 100644
--- a/infra/libkookie/home-manager/modules/programs/newsboat.nix
+++ b/infra/libkookie/home-manager/modules/programs/newsboat.nix
@@ -24,7 +24,7 @@ let
max-items ${toString cfg.maxItems}
browser ${cfg.browser}
reload-threads ${toString cfg.reloadThreads}
- auto-reload ${if cfg.autoReload then "yes" else "no"}
+ auto-reload ${lib.hm.booleans.yesNo cfg.autoReload}
${optionalString (cfg.reloadTime != null)
(toString "reload-time ${toString cfg.reloadTime}")}
prepopulate-query-feeds yes
diff --git a/infra/libkookie/home-manager/modules/programs/offlineimap.nix b/infra/libkookie/home-manager/modules/programs/offlineimap.nix
index 83a31dd2ba1..8817e2ba7e9 100644
--- a/infra/libkookie/home-manager/modules/programs/offlineimap.nix
+++ b/infra/libkookie/home-manager/modules/programs/offlineimap.nix
@@ -12,10 +12,8 @@ let
toIni = generators.toINI {
mkKeyValue = key: value:
let
- value' = if isBool value then
- (if value then "yes" else "no")
- else
- toString value;
+ value' =
+ (if isBool value then lib.hm.booleans.yesNo else toString) value;
in "${key} = ${value'}";
};
diff --git a/infra/libkookie/home-manager/modules/programs/pubs.nix b/infra/libkookie/home-manager/modules/programs/pubs.nix
new file mode 100644
index 00000000000..5a597deabce
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/pubs.nix
@@ -0,0 +1,60 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.pubs;
+
+in {
+ meta.maintainers = [ hm.maintainers.loicreynier ];
+
+ options.programs.pubs = {
+ enable = mkEnableOption "pubs";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.pubs;
+ defaultText = literalExpression "pkgs.pubs";
+ description = "The package to use for the pubs script.";
+ };
+
+ extraConfig = mkOption {
+ type = types.lines;
+ default = "";
+ example = literalExpression ''
+ '''
+ [main]
+ pubsdir = ''${config.home.homeDirectory}/.pubs
+ docsdir = ''${config.home.homeDirectory}/.pubs/doc
+ doc_add = link
+ open_cmd = xdg-open
+
+ [plugins]
+ active = git,alias
+
+ [[alias]]
+
+ [[[la]]]
+ command = list -a
+ description = lists papers in lexicographic order
+
+ [[git]]
+ quiet = True
+ manual = False
+ force_color = False
+ ''''';
+ description = ''
+ Configuration using syntax written to
+ $HOME/.pubsrc.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ home.file.".pubsrc" =
+ mkIf (cfg.extraConfig != "") { text = cfg.extraConfig; };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/pylint.nix b/infra/libkookie/home-manager/modules/programs/pylint.nix
new file mode 100644
index 00000000000..e6679b985b8
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/pylint.nix
@@ -0,0 +1,31 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.pylint;
+ listToValue = concatMapStringsSep ", " (generators.mkValueStringDefault { });
+ iniFormat = pkgs.formats.ini { inherit listToValue; };
+in {
+ meta.maintainers = [ hm.maintainers.florpe ];
+ options.programs.pylint = {
+ enable = mkEnableOption "the pylint Python linter";
+ package = mkOption {
+ type = types.package;
+ default = pkgs.python3Packages.pylint;
+ defaultText = literalExpression "pkgs.python3Packages.pylint";
+ description = "The pylint package to use.";
+ };
+ settings = mkOption {
+ type = iniFormat.type;
+ default = { };
+ defaultText = literalExpression "{}";
+ description = "The pylint configuration.";
+ };
+ };
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+ home.file.".pylintrc".source = iniFormat.generate "pylintrc" cfg.settings;
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/sioyek.nix b/infra/libkookie/home-manager/modules/programs/sioyek.nix
new file mode 100644
index 00000000000..9ef32746c1c
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/sioyek.nix
@@ -0,0 +1,70 @@
+{ config, lib, pkgs, ... }:
+with lib;
+let
+ cfg = config.programs.sioyek;
+
+ renderAttrs = attrs:
+ concatStringsSep "\n"
+ (mapAttrsToList (name: value: "${name} ${value}") attrs);
+in {
+ options = {
+ programs.sioyek = {
+ enable = mkEnableOption
+ "Sioyek is a PDF viewer designed for reading research papers and technical books.";
+
+ package = mkOption {
+ default = pkgs.sioyek;
+ defaultText = literalExpression "pkgs.sioyek";
+ type = types.package;
+ description = "Package providing the sioyek binary";
+ };
+
+ bindings = mkOption {
+ description = ''
+ Input configuration written to
+ $XDG_CONFIG_HOME/sioyek/keys_user.config.
+ See .
+ '';
+ type = types.attrsOf types.str;
+ default = { };
+ example = literalExpression ''
+ {
+ "move_up" = "k";
+ "move_down" = "j";
+ "move_left" = "h";
+ "move_right" = "l";
+ }
+ '';
+ };
+
+ config = mkOption {
+ description = ''
+ Input configuration written to
+ $XDG_CONFIG_HOME/sioyek/prefs_user.config.
+ See .
+ '';
+ type = types.attrsOf types.str;
+ default = { };
+ example = literalExpression ''
+ {
+ "background_color" = "1.0 1.0 1.0";
+ "text_highlight_color" = "1.0 0.0 0.0";
+ }
+ '';
+ };
+
+ };
+ };
+
+ config = mkIf cfg.enable (mkMerge [
+ { home.packages = [ cfg.package ]; }
+ (mkIf (cfg.config != { }) {
+ xdg.configFile."sioyek/prefs_user.config".text = renderAttrs cfg.config;
+ })
+ (mkIf (cfg.bindings != { }) {
+ xdg.configFile."sioyek/keys_user.config".text = renderAttrs cfg.bindings;
+ })
+ ]);
+
+ meta.maintainers = [ hm.maintainers.podocarp ];
+}
diff --git a/infra/libkookie/home-manager/modules/programs/ssh.nix b/infra/libkookie/home-manager/modules/programs/ssh.nix
index b51ecedf4b8..05d16a2c41b 100644
--- a/infra/libkookie/home-manager/modules/programs/ssh.nix
+++ b/infra/libkookie/home-manager/modules/programs/ssh.nix
@@ -13,8 +13,6 @@ let
then " ${entry.address}"
else " [${entry.address}]:${toString entry.port}";
- yn = flag: if flag then "yes" else "no";
-
unwords = builtins.concatStringsSep " ";
bindOptions = {
@@ -284,7 +282,7 @@ let
matchBlockStr = cf: concatStringsSep "\n" (
["Host ${cf.host}"]
++ optional (cf.port != null) " Port ${toString cf.port}"
- ++ optional (cf.forwardAgent != null) " ForwardAgent ${yn cf.forwardAgent}"
+ ++ optional (cf.forwardAgent != null) " ForwardAgent ${lib.hm.booleans.yesNo cf.forwardAgent}"
++ optional cf.forwardX11 " ForwardX11 yes"
++ optional cf.forwardX11Trusted " ForwardX11Trusted yes"
++ optional cf.identitiesOnly " IdentitiesOnly yes"
@@ -296,7 +294,7 @@ let
" ServerAliveInterval ${toString cf.serverAliveInterval}"
++ optional (cf.serverAliveCountMax != 3)
" ServerAliveCountMax ${toString cf.serverAliveCountMax}"
- ++ optional (cf.compression != null) " Compression ${yn cf.compression}"
+ ++ optional (cf.compression != null) " Compression ${lib.hm.booleans.yesNo cf.compression}"
++ optional (!cf.checkHostIP) " CheckHostIP no"
++ optional (cf.proxyCommand != null) " ProxyCommand ${cf.proxyCommand}"
++ optional (cf.proxyJump != null) " ProxyJump ${cf.proxyJump}"
@@ -498,11 +496,11 @@ in
)}
Host *
- ForwardAgent ${yn cfg.forwardAgent}
- Compression ${yn cfg.compression}
+ ForwardAgent ${lib.hm.booleans.yesNo cfg.forwardAgent}
+ Compression ${lib.hm.booleans.yesNo cfg.compression}
ServerAliveInterval ${toString cfg.serverAliveInterval}
ServerAliveCountMax ${toString cfg.serverAliveCountMax}
- HashKnownHosts ${yn cfg.hashKnownHosts}
+ HashKnownHosts ${lib.hm.booleans.yesNo cfg.hashKnownHosts}
UserKnownHostsFile ${cfg.userKnownHostsFile}
ControlMaster ${cfg.controlMaster}
ControlPath ${cfg.controlPath}
diff --git a/infra/libkookie/home-manager/modules/programs/starship.nix b/infra/libkookie/home-manager/modules/programs/starship.nix
index 9aac5354589..58ec518afee 100644
--- a/infra/libkookie/home-manager/modules/programs/starship.nix
+++ b/infra/libkookie/home-manager/modules/programs/starship.nix
@@ -100,7 +100,7 @@ in {
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
if [[ $TERM != "dumb" && (-z $INSIDE_EMACS || $INSIDE_EMACS == "vterm") ]]; then
- eval "$(${starshipCmd} init bash)"
+ eval "$(${starshipCmd} init bash --print-full-init)"
fi
'';
diff --git a/infra/libkookie/home-manager/modules/programs/taskwarrior.nix b/infra/libkookie/home-manager/modules/programs/taskwarrior.nix
index 441313252b5..3eb0013e303 100644
--- a/infra/libkookie/home-manager/modules/programs/taskwarrior.nix
+++ b/infra/libkookie/home-manager/modules/programs/taskwarrior.nix
@@ -24,6 +24,8 @@ let
formatPair = key: value:
if isAttrs value then formatSet key value else formatLine key value;
+ homeConf = "${config.xdg.configHome}/task/home-manager-taskrc";
+ userConf = "${config.xdg.configHome}/task/taskrc";
in {
options = {
programs.taskwarrior = {
@@ -88,7 +90,7 @@ in {
config = mkIf cfg.enable {
home.packages = [ pkgs.taskwarrior ];
- xdg.configFile."task/taskrc".text = ''
+ home.file."${homeConf}".text = ''
data.location=${cfg.dataLocation}
${optionalString (cfg.colorTheme != null) (if isString cfg.colorTheme then
"include ${cfg.colorTheme}.theme"
@@ -99,5 +101,21 @@ in {
${cfg.extraConfig}
'';
+
+ home.activation.regenDotTaskRc = hm.dag.entryAfter [ "writeBoundary" ] ''
+ $VERBOSE_ECHO "Ensuring generated taskwarrior config included in taskrc"
+
+ if [[ ! -s "${userConf}" ]]; then
+ # Ensure file's existence
+ if [[ -v DRY_RUN ]]; then
+ $DRY_RUN_CMD echo "include ${homeConf}" ">" "${userConf}"
+ else
+ echo "include ${homeConf}" > "${userConf}"
+ fi
+ elif ! grep -qF "include ${homeConf}" ${escapeShellArg userConf}; then
+ # Add include statement for Home Manager generated config.
+ $DRY_RUN_CMD sed -i '1i include ${homeConf}' ${escapeShellArg userConf}
+ fi
+ '';
};
}
diff --git a/infra/libkookie/home-manager/modules/programs/tiny.nix b/infra/libkookie/home-manager/modules/programs/tiny.nix
new file mode 100644
index 00000000000..d502801f92f
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/tiny.nix
@@ -0,0 +1,65 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+ cfg = config.programs.tiny;
+ format = pkgs.formats.yaml { };
+ configDir = if pkgs.stdenv.isDarwin then
+ "Library/Application Support/tiny"
+ else
+ "${config.xdg.configHome}/tiny";
+in {
+ meta.maintainers = [ hm.maintainers.kmaasrud ];
+
+ options = {
+ programs.tiny = {
+ enable = mkEnableOption "tiny, a TUI IRC client written in Rust";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.tiny;
+ defaultText = literalExpression "pkgs.tiny";
+ description = "The tiny package to install.";
+ };
+
+ settings = mkOption {
+ type = format.type;
+ default = { };
+ defaultText = literalExpression "{ }";
+ example = literalExpression ''
+ {
+ servers = [
+ {
+ addr = "irc.libera.chat";
+ port = 6697;
+ tls = true;
+ realname = "John Doe";
+ nicks = [ "tinyuser" ];
+ }
+ ];
+ defaults = {
+ nicks = [ "tinyuser" ];
+ realname = "John Doe";
+ join = [];
+ tls = true;
+ };
+ };
+ '';
+ description = ''
+ Configuration written to
+ $XDG_CONFIG_HOME/tiny/config.yml. See
+
+ for the default configuration.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ home.file."${configDir}/config.yml" = mkIf (cfg.settings != { }) {
+ source = format.generate "tiny-config" cfg.settings;
+ };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/tmux.nix b/infra/libkookie/home-manager/modules/programs/tmux.nix
index 4b5125966d0..bf98a3f37b2 100644
--- a/infra/libkookie/home-manager/modules/programs/tmux.nix
+++ b/infra/libkookie/home-manager/modules/programs/tmux.nix
@@ -49,8 +49,8 @@ let
${optionalString cfg.newSession "new-session"}
${optionalString cfg.reverseSplit ''
- bind v split-window -h
- bind s split-window -v
+ bind -N "Split the pane into two, left and right" v split-window -h
+ bind -N "Split the pane into two, top and bottom" s split-window -v
''}
set -g status-keys ${cfg.keyMode}
@@ -58,34 +58,40 @@ let
${optionalString
(cfg.keyMode == "vi" && cfg.customPaneNavigationAndResize) ''
- bind h select-pane -L
- bind j select-pane -D
- bind k select-pane -U
- bind l select-pane -R
-
- bind -r H resize-pane -L ${toString cfg.resizeAmount}
- bind -r J resize-pane -D ${toString cfg.resizeAmount}
- bind -r K resize-pane -U ${toString cfg.resizeAmount}
- bind -r L resize-pane -R ${toString cfg.resizeAmount}
+ bind -N "Select pane to the left of the active pane" h select-pane -L
+ bind -N "Select pane below the active pane" j select-pane -D
+ bind -N "Select pane above the active pane" k select-pane -U
+ bind -N "Select pane to the right of the active pane" l select-pane -R
+
+ bind -r -N "Resize the pane left by ${toString cfg.resizeAmount}" \
+ H resize-pane -L ${toString cfg.resizeAmount}
+ bind -r -N "Resize the pane down by ${toString cfg.resizeAmount}" \
+ J resize-pane -D ${toString cfg.resizeAmount}
+ bind -r -N "Resize the pane up by ${toString cfg.resizeAmount}" \
+ K resize-pane -U ${toString cfg.resizeAmount}
+ bind -r -N "Resize the pane right by ${toString cfg.resizeAmount}" \
+ L resize-pane -R ${toString cfg.resizeAmount}
''}
${if cfg.prefix != null then ''
# rebind main key: ${cfg.prefix}
unbind C-${defaultShortcut}
set -g prefix ${cfg.prefix}
- bind ${cfg.prefix} send-prefix
+ bind -N "Send the prefix key through to the application" \
+ ${cfg.prefix} send-prefix
'' else
optionalString (cfg.shortcut != defaultShortcut) ''
# rebind main key: C-${cfg.shortcut}
unbind C-${defaultShortcut}
set -g prefix C-${cfg.shortcut}
- bind ${cfg.shortcut} send-prefix
+ bind -N "Send the prefix key through to the application" \
+ ${cfg.shortcut} send-prefix
bind C-${cfg.shortcut} last-window
''}
${optionalString cfg.disableConfirmationPrompt ''
- bind-key & kill-window
- bind-key x kill-pane
+ bind-key -N "Kill the current window" & kill-window
+ bind-key -N "Kill the current pane" x kill-pane
''}
setw -g aggressive-resize ${boolToStr cfg.aggressiveResize}
diff --git a/infra/libkookie/home-manager/modules/programs/vscode.nix b/infra/libkookie/home-manager/modules/programs/vscode.nix
index 26bcce46386..df1dd237896 100644
--- a/infra/libkookie/home-manager/modules/programs/vscode.nix
+++ b/infra/libkookie/home-manager/modules/programs/vscode.nix
@@ -28,6 +28,7 @@ let
"${config.xdg.configHome}/${configDir}/User";
configFilePath = "${userDir}/settings.json";
+ tasksFilePath = "${userDir}/tasks.json";
keybindingsFilePath = "${userDir}/keybindings.json";
# TODO: On Darwin where are the extensions?
@@ -70,6 +71,27 @@ in {
'';
};
+ userTasks = mkOption {
+ type = jsonFormat.type;
+ default = { };
+ example = literalExpression ''
+ {
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "shell",
+ "label": "Hello task",
+ "command": "hello",
+ }
+ ]
+ }
+ '';
+ description = ''
+ Configuration written to Visual Studio Code's
+ tasks.json.
+ '';
+ };
+
keybindings = mkOption {
type = types.listOf (types.submodule {
options = {
@@ -120,7 +142,7 @@ in {
extensions = mkOption {
type = types.listOf types.package;
default = [ ];
- example = literalExpression "[ pkgs.vscode-extensions.bbenoist.Nix ]";
+ example = literalExpression "[ pkgs.vscode-extensions.bbenoist.nix ]";
description = ''
The extensions Visual Studio Code should be started with.
'';
@@ -146,6 +168,10 @@ in {
"${configFilePath}".source =
jsonFormat.generate "vscode-user-settings" cfg.userSettings;
})
+ (mkIf (cfg.userTasks != { }) {
+ "${tasksFilePath}".source =
+ jsonFormat.generate "vscode-user-tasks" cfg.userTasks;
+ })
(mkIf (cfg.keybindings != [ ])
(let dropNullFields = filterAttrs (_: v: v != null);
in {
diff --git a/infra/libkookie/home-manager/modules/programs/waybar.nix b/infra/libkookie/home-manager/modules/programs/waybar.nix
index faef644d3ab..12002d546d7 100644
--- a/infra/libkookie/home-manager/modules/programs/waybar.nix
+++ b/infra/libkookie/home-manager/modules/programs/waybar.nix
@@ -318,7 +318,7 @@ in {
Service = {
ExecStart = "${cfg.package}/bin/waybar";
- ExecReload = "kill -SIGUSR2 $MAINPID";
+ ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID";
Restart = "on-failure";
KillMode = "mixed";
};
diff --git a/infra/libkookie/home-manager/modules/programs/zellij.nix b/infra/libkookie/home-manager/modules/programs/zellij.nix
new file mode 100644
index 00000000000..2cfa625daab
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/programs/zellij.nix
@@ -0,0 +1,56 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.zellij;
+ yamlFormat = pkgs.formats.yaml { };
+
+ configDir = if pkgs.stdenv.isDarwin then
+ "Library/Application Support/org.Zellij-Contributors.Zellij"
+ else
+ "${config.xdg.configHome}/zellij";
+
+in {
+ meta.maintainers = [ hm.maintainers.mainrs ];
+
+ options.programs.zellij = {
+ enable = mkEnableOption "zellij";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.zellij;
+ defaultText = literalExpression "pkgs.zellij";
+ description = ''
+ The zellij package to install.
+ '';
+ };
+
+ settings = mkOption {
+ type = yamlFormat.type;
+ default = { };
+ example = literalExpression ''
+ {
+ theme = "custom";
+ themes.custom.fg = 5;
+ }
+ '';
+ description = ''
+ Configuration written to
+ $XDG_CONFIG_HOME/zellij/config.yaml.
+
+ See for the full
+ list of options.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ home.file."${configDir}/config.yaml" = mkIf (cfg.settings != { }) {
+ source = yamlFormat.generate "zellij.yaml" cfg.settings;
+ };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/programs/zsh.nix b/infra/libkookie/home-manager/modules/programs/zsh.nix
index 6cd880309fe..2d81698b6fe 100644
--- a/infra/libkookie/home-manager/modules/programs/zsh.nix
+++ b/infra/libkookie/home-manager/modules/programs/zsh.nix
@@ -442,6 +442,19 @@ in
'';
})
+ {
+ home.file."${relToDotDir ".zshenv"}".text = ''
+ # Environment variables
+ . "${config.home.profileDirectory}/etc/profile.d/hm-session-vars.sh"
+
+ # Only source this once
+ if [[ -z "$__HM_ZSH_SESS_VARS_SOURCED" ]]; then
+ export __HM_ZSH_SESS_VARS_SOURCED=1
+ ${envVarsStr}
+ fi
+ '';
+ }
+
{
home.packages = with pkgs; [ zsh ]
++ optional cfg.enableCompletion nix-zsh-completions
@@ -491,10 +504,6 @@ in
"source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
}
- # Environment variables
- . "${config.home.profileDirectory}/etc/profile.d/hm-session-vars.sh"
- ${envVarsStr}
-
${optionalString cfg.oh-my-zsh.enable ''
# oh-my-zsh extra settings for plugins
${cfg.oh-my-zsh.extraConfig}
diff --git a/infra/libkookie/home-manager/modules/programs/zsh/prezto.nix b/infra/libkookie/home-manager/modules/programs/zsh/prezto.nix
index 5c2853e7a6a..17680ff2598 100644
--- a/infra/libkookie/home-manager/modules/programs/zsh/prezto.nix
+++ b/infra/libkookie/home-manager/modules/programs/zsh/prezto.nix
@@ -365,11 +365,11 @@ in {
# Generated by Nix
${optionalString (cfg.caseSensitive != null) ''
zstyle ':prezto:*:*' case-sensitive '${
- if cfg.caseSensitive then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.caseSensitive
}'
''}
${optionalString (cfg.color != null) ''
- zstyle ':prezto:*:*' color '${if cfg.color then "yes" else "no"}'
+ zstyle ':prezto:*:*' color '${lib.hm.booleans.yesNo cfg.color}'
''}
${optionalString (cfg.pmoduleDirs != [ ]) ''
zstyle ':prezto:load' pmodule-dirs ${
@@ -410,12 +410,12 @@ in {
''}
${optionalString (cfg.editor.dotExpansion != null) ''
zstyle ':prezto:module:editor' dot-expansion '${
- if cfg.editor.dotExpansion then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.editor.dotExpansion
}'
''}
${optionalString (cfg.editor.promptContext != null) ''
zstyle ':prezto:module:editor' ps-context '${
- if cfg.editor.promptContext then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.editor.promptContext
}'
''}
${optionalString (cfg.git.submoduleIgnore != null) ''
@@ -447,27 +447,27 @@ in {
''}
${optionalString (cfg.python.virtualenvAutoSwitch != null) ''
zstyle ':prezto:module:python:virtualenv' auto-switch '${
- if cfg.python.virtualenvAutoSwitch then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.python.virtualenvAutoSwitch
}'
''}
${optionalString (cfg.python.virtualenvInitialize != null) ''
zstyle ':prezto:module:python:virtualenv' initialize '${
- if cfg.python.virtualenvInitialize then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.python.virtualenvInitialize
}'
''}
${optionalString (cfg.ruby.chrubyAutoSwitch != null) ''
zstyle ':prezto:module:ruby:chruby' auto-switch '${
- if cfg.ruby.chrubyAutoSwitch then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.ruby.chrubyAutoSwitch
}'
''}
${optionalString (cfg.screen.autoStartLocal != null) ''
zstyle ':prezto:module:screen:auto-start' local '${
- if cfg.screen.autoStartLocal then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.screen.autoStartLocal
}'
''}
${optionalString (cfg.screen.autoStartRemote != null) ''
zstyle ':prezto:module:screen:auto-start' remote '${
- if cfg.screen.autoStartRemote then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.screen.autoStartRemote
}'
''}
${optionalString (cfg.ssh.identities != [ ]) ''
@@ -502,7 +502,7 @@ in {
''}
${optionalString (cfg.terminal.autoTitle != null) ''
zstyle ':prezto:module:terminal' auto-title '${
- if cfg.terminal.autoTitle then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.terminal.autoTitle
}'
''}
${optionalString (cfg.terminal.windowTitleFormat != null) ''
@@ -516,17 +516,17 @@ in {
''}
${optionalString (cfg.tmux.autoStartLocal != null) ''
zstyle ':prezto:module:tmux:auto-start' local '${
- if cfg.tmux.autoStartLocal then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.tmux.autoStartLocal
}'
''}
${optionalString (cfg.tmux.autoStartRemote != null) ''
zstyle ':prezto:module:tmux:auto-start' remote '${
- if cfg.tmux.autoStartRemote then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.tmux.autoStartRemote
}'
''}
${optionalString (cfg.tmux.itermIntegration != null) ''
zstyle ':prezto:module:tmux:iterm' integrate '${
- if cfg.tmux.itermIntegration then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.tmux.itermIntegration
}'
''}
${optionalString (cfg.tmux.defaultSessionName != null) ''
@@ -534,7 +534,7 @@ in {
''}
${optionalString (cfg.utility.safeOps != null) ''
zstyle ':prezto:module:utility' safe-ops '${
- if cfg.utility.safeOps then "yes" else "no"
+ lib.hm.booleans.yesNo cfg.utility.safeOps
}'
''}
${cfg.extraConfig}
diff --git a/infra/libkookie/home-manager/modules/services/dunst.nix b/infra/libkookie/home-manager/modules/services/dunst.nix
index 238abc297e6..083ff2b3a4e 100644
--- a/infra/libkookie/home-manager/modules/services/dunst.nix
+++ b/infra/libkookie/home-manager/modules/services/dunst.nix
@@ -13,7 +13,7 @@ let
mkKeyValue = key: value:
let
value' = if isBool value then
- (if value then "yes" else "no")
+ (lib.hm.booleans.yesNo value)
else if isString value then
''"${value}"''
else
diff --git a/infra/libkookie/home-manager/modules/services/espanso.nix b/infra/libkookie/home-manager/modules/services/espanso.nix
new file mode 100644
index 00000000000..3d66a59874f
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/services/espanso.nix
@@ -0,0 +1,86 @@
+{ pkgs, config, lib, ... }:
+
+let
+
+ inherit (lib)
+ mkOption mkEnableOption mkIf maintainers literalExpression types platforms;
+
+ inherit (lib.hm.assertions) assertPlatform;
+
+ cfg = config.services.espanso;
+
+ yaml = pkgs.formats.yaml { };
+
+in {
+ meta.maintainers = with maintainers; [ lucasew ];
+
+ options = {
+ services.espanso = {
+ enable = mkEnableOption "Espanso: cross platform text expander in Rust";
+
+ package = mkOption {
+ type = types.package;
+ description = "Which espanso package to use";
+ default = pkgs.espanso;
+ defaultText = literalExpression "pkgs.espanso";
+ };
+
+ settings = mkOption {
+ type = yaml.type;
+ default = { matches = [ ]; };
+ example = literalExpression ''
+ {
+ matches = [
+ { # Simple text replacement
+ trigger = ":espanso";
+ replace = "Hi there!";
+ }
+ { # Dates
+ trigger = ":date";
+ replace = "{{mydate}}";
+ vars = [{
+ name = "mydate";
+ type = "date";
+ params = { format = "%m/%d/%Y"; };
+ }];
+ }
+ { # Shell commands
+ trigger = ":shell";
+ replace = "{{output}}";
+ vars = [{
+ name = "output";
+ type = "shell";
+ params = { cmd = "echo Hello from your shell"; };
+ }];
+ }
+ ];
+ }
+ '';
+ description = ''
+ The Espanso configuration to use. See
+
+ for a description of available options.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ assertions = [ (assertPlatform "services.espanso" pkgs platforms.linux) ];
+
+ home.packages = [ cfg.package ];
+
+ xdg.configFile."espanso/default.yml".source =
+ yaml.generate "espanso-default.yml" cfg.settings;
+
+ systemd.user.services.espanso = {
+ Unit = { Description = "Espanso: cross platform text expander in Rust"; };
+ Service = {
+ Type = "exec";
+ ExecStart = "${cfg.package}/bin/espanso daemon";
+ Restart = "on-failure";
+ };
+ Install = { WantedBy = [ "default.target" ]; };
+ };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/services/fusuma.nix b/infra/libkookie/home-manager/modules/services/fusuma.nix
new file mode 100644
index 00000000000..3a853b51381
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/services/fusuma.nix
@@ -0,0 +1,138 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.fusuma;
+
+ yamlFormat = pkgs.formats.yaml { };
+
+ configJson = pkgs.writeText "config.json" (builtins.toJSON cfg.settings);
+
+ configYamlRaw = pkgs.runCommand "config.yaml.raw" { } ''
+ ${pkgs.remarshal}/bin/json2yaml -i ${configJson} -o $out;
+ '';
+
+ # convert keys into literal numbers where necessary,
+ # fusuma does not support string type finger count.
+ strToInt = pkgs.writers.writePython3 "str2int" {
+ libraries = [ pkgs.python3Packages.pyyaml ];
+ } ''
+ import yaml
+ from yaml import FullLoader
+
+
+ def str2int(config):
+ if type(config) is not dict:
+ return
+
+ for key in list(config):
+ if type(config[key]) is dict and key.isdigit():
+ t = config[key]
+ del config[key]
+ config[int(key)] = t
+ else:
+ str2int(config[key])
+
+
+ if __name__ == '__main__':
+ path = "${configYamlRaw}"
+ with open(path) as f:
+ config = yaml.load(f, Loader=FullLoader)
+ str2int(config)
+ print(yaml.dump(config))
+ '';
+
+ configYaml = pkgs.stdenv.mkDerivation {
+ name = "config.yaml";
+ buildCommand = ''
+ ${strToInt} > $out
+ '';
+ };
+
+ makeBinPath = packages:
+ foldl (a: b: if a == "" then b else "${a}:${b}") ""
+ (map (pkg: "${pkg}/bin") packages);
+
+in {
+ meta.maintainers = [ hm.maintainers.iosmanthus ];
+
+ options.services.fusuma = {
+ enable = mkEnableOption
+ "the fusuma systemd service to automatically enable touchpad gesture";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.fusuma;
+ defaultText = literalExpression "pkgs.fusuma";
+ description = "Package providing fusuma.";
+ };
+
+ settings = mkOption {
+ type = yamlFormat.type;
+ example = literalExpression ''
+ {
+ enable = true;
+ extraPackages = with pkgs;[ xdotool ];
+ config = {
+ threshold = {
+ swipe = 0.1;
+ };
+ interval = {
+ swipe = 0.7;
+ };
+ swipe = {
+ "3" = {
+ left = {
+ # GNOME: Switch to left workspace
+ command = "xdotool key ctrl+alt+Right";
+ };
+ };
+ };
+ };
+ };
+ '';
+ description = ''
+ YAML config that will override the default fusuma configuration.
+ '';
+ };
+
+ extraPackages = mkOption {
+ type = types.listOf types.package;
+ default = with pkgs; [ coreutils ];
+ defaultText = literalExpression "pkgs.coreutils";
+ example = literalExpression ''
+ with pkgs; [ coreutils xdotool ];
+ '';
+ description = ''
+ Extra packages needs to bring to the scope of fusuma service.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ assertions = [
+ (lib.hm.assertions.assertPlatform "services.fusuma" pkgs
+ lib.platforms.linux)
+ ];
+
+ xdg.configFile."fusuma/config.yaml".source = configYaml;
+
+ systemd.user.services.fusuma = {
+ Unit = {
+ Description = "Fusuma services";
+ After = [ "graphical-session-pre.target" ];
+ PartOf = [ "graphical-session.target" ];
+ };
+
+ Service = {
+ Environment = with pkgs; "PATH=${makeBinPath cfg.extraPackages}";
+ ExecStart =
+ "${cfg.package}/bin/fusuma -c ${config.xdg.configHome}/fusuma/config.yaml";
+ };
+
+ Install = { WantedBy = [ "graphical-session.target" ]; };
+ };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/services/gpg-agent.nix b/infra/libkookie/home-manager/modules/services/gpg-agent.nix
index 175fba42f32..d4ccef3ec8f 100644
--- a/infra/libkookie/home-manager/modules/services/gpg-agent.nix
+++ b/infra/libkookie/home-manager/modules/services/gpg-agent.nix
@@ -12,9 +12,8 @@ let
gpgInitStr = ''
GPG_TTY="$(tty)"
export GPG_TTY
- ''
- + optionalString cfg.enableSshSupport
- "${gpgPkg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null";
+ '' + optionalString cfg.enableSshSupport
+ "${gpgPkg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null";
# mimic `gpgconf` output for use in `systemd` unit definitions.
# we cannot use `gpgconf` directly because it heavily depends on system
@@ -22,7 +21,8 @@ let
# https://github.com/gpg/gnupg/blob/c6702d77d936b3e9d91b34d8fdee9599ab94ee1b/common/homedir.c#L672-L681
gpgconf = dir:
let
- hash = substring 0 24 (hexStringToBase32 (builtins.hashString "sha1" homedir));
+ hash =
+ substring 0 24 (hexStringToBase32 (builtins.hashString "sha1" homedir));
in if homedir == options.programs.gpg.homedir.default then
"%t/gnupg/${dir}"
else
@@ -36,10 +36,18 @@ let
splitChars = s: init (tail (splitString "" s));
base32Alphabet = splitChars "ybndrfg8ejkmcpqxot1uwisza345h769";
- hexToIntTable = listToAttrs (genList (x: { name = toLower (toHexString x); value = x; }) 16);
-
- initState = { ret = ""; buf = 0; bufBits = 0; };
- go = { ret, buf, bufBits }: hex:
+ hexToIntTable = listToAttrs (genList (x: {
+ name = toLower (toHexString x);
+ value = x;
+ }) 16);
+
+ initState = {
+ ret = "";
+ buf = 0;
+ bufBits = 0;
+ };
+ go = { ret, buf, bufBits }:
+ hex:
let
buf' = buf * pow2 4 + hexToIntTable.${hex};
bufBits' = bufBits + 4;
@@ -55,9 +63,7 @@ let
};
in hexString: (foldl' go initState (splitChars hexString)).ret;
-in
-
-{
+in {
meta.maintainers = [ maintainers.rycee ];
options = {
@@ -196,30 +202,21 @@ in
config = mkIf cfg.enable (mkMerge [
{
- home.file."${homedir}/gpg-agent.conf".text = concatStringsSep "\n" (
- optional (cfg.enableSshSupport) "enable-ssh-support"
- ++
- optional (!cfg.grabKeyboardAndMouse) "no-grab"
- ++
- optional (!cfg.enableScDaemon) "disable-scdaemon"
- ++
- optional (cfg.defaultCacheTtl != null)
+ home.file."${homedir}/gpg-agent.conf".text = concatStringsSep "\n"
+ (optional (cfg.enableSshSupport) "enable-ssh-support"
+ ++ optional (!cfg.grabKeyboardAndMouse) "no-grab"
+ ++ optional (!cfg.enableScDaemon) "disable-scdaemon"
+ ++ optional (cfg.defaultCacheTtl != null)
"default-cache-ttl ${toString cfg.defaultCacheTtl}"
- ++
- optional (cfg.defaultCacheTtlSsh != null)
+ ++ optional (cfg.defaultCacheTtlSsh != null)
"default-cache-ttl-ssh ${toString cfg.defaultCacheTtlSsh}"
- ++
- optional (cfg.maxCacheTtl != null)
+ ++ optional (cfg.maxCacheTtl != null)
"max-cache-ttl ${toString cfg.maxCacheTtl}"
- ++
- optional (cfg.maxCacheTtlSsh != null)
+ ++ optional (cfg.maxCacheTtlSsh != null)
"max-cache-ttl-ssh ${toString cfg.maxCacheTtlSsh}"
- ++
- optional (cfg.pinentryFlavor != null)
+ ++ optional (cfg.pinentryFlavor != null)
"pinentry-program ${pkgs.pinentry.${cfg.pinentryFlavor}}/bin/pinentry"
- ++
- [ cfg.extraConfig ]
- );
+ ++ [ cfg.extraConfig ]);
home.sessionVariablesExtra = optionalString cfg.enableSshSupport ''
if [[ -z "$SSH_AUTH_SOCK" ]]; then
@@ -236,7 +233,9 @@ in
(mkIf (cfg.sshKeys != null) {
# Trailing newlines are important
- home.file."${homedir}/sshcontrol".text = concatMapStrings (s: "${s}\n") cfg.sshKeys;
+ home.file."${homedir}/sshcontrol".text = concatMapStrings (s: ''
+ ${s}
+ '') cfg.sshKeys;
})
# The systemd units below are direct translations of the
@@ -277,9 +276,7 @@ in
DirectoryMode = "0700";
};
- Install = {
- WantedBy = [ "sockets.target" ];
- };
+ Install = { WantedBy = [ "sockets.target" ]; };
};
}
@@ -287,7 +284,8 @@ in
systemd.user.sockets.gpg-agent-ssh = {
Unit = {
Description = "GnuPG cryptographic agent (ssh-agent emulation)";
- Documentation = "man:gpg-agent(1) man:ssh-add(1) man:ssh-agent(1) man:ssh(1)";
+ Documentation =
+ "man:gpg-agent(1) man:ssh-add(1) man:ssh-agent(1) man:ssh(1)";
};
Socket = {
@@ -298,16 +296,15 @@ in
DirectoryMode = "0700";
};
- Install = {
- WantedBy = [ "sockets.target" ];
- };
+ Install = { WantedBy = [ "sockets.target" ]; };
};
})
(mkIf cfg.enableExtraSocket {
systemd.user.sockets.gpg-agent-extra = {
Unit = {
- Description = "GnuPG cryptographic agent and passphrase cache (restricted)";
+ Description =
+ "GnuPG cryptographic agent and passphrase cache (restricted)";
Documentation = "man:gpg-agent(1) man:ssh(1)";
};
@@ -319,9 +316,7 @@ in
DirectoryMode = "0700";
};
- Install = {
- WantedBy = [ "sockets.target" ];
- };
+ Install = { WantedBy = [ "sockets.target" ]; };
};
})
]);
diff --git a/infra/libkookie/home-manager/modules/services/mpd-discord-rpc.nix b/infra/libkookie/home-manager/modules/services/mpd-discord-rpc.nix
new file mode 100644
index 00000000000..23cf1b5ec45
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/services/mpd-discord-rpc.nix
@@ -0,0 +1,55 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.mpd-discord-rpc;
+ tomlFormat = pkgs.formats.toml { };
+ configFile = tomlFormat.generate "config.toml" cfg.settings;
+in {
+ meta.maintainers = [ maintainers.kranzes ];
+
+ options.services.mpd-discord-rpc = {
+ enable = mkEnableOption "the mpd-discord-rpc service";
+
+ settings = mkOption {
+ type = tomlFormat.type;
+ default = { };
+ example = literalExpression ''
+ {
+ hosts = [ "localhost:6600" ];
+ format = {
+ details = "$title";
+ state = "On $album by $artist";
+ };
+ }
+ '';
+ description = ''
+ Configuration included in config.toml.
+ For available options see
+ '';
+ };
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.mpd-discord-rpc;
+ defaultText = literalExpression "pkgs.mpd-discord-rpc";
+ description = "mpd-discord-rpc package to use.";
+ };
+ };
+
+ config = mkIf cfg.enable {
+ xdg.configFile."discord-rpc/config.toml".source = configFile;
+
+ systemd.user.services.mpd-discord-rpc = {
+ Unit = {
+ Description = "Discord Rich Presence for MPD";
+ Documentation = "https://github.com/JakeStanger/mpd-discord-rpc";
+ After = [ "graphical-session-pre.target" ];
+ PartOf = [ "graphical-session.desktop" ];
+ };
+ Service.ExecStart = "${cfg.package}/bin/mpd-discord-rpc";
+ Install.WantedBy = [ "graphical-session.target" ];
+ };
+ };
+}
diff --git a/infra/libkookie/home-manager/modules/services/mpd.nix b/infra/libkookie/home-manager/modules/services/mpd.nix
index 5800a18c15b..f71d96a447b 100644
--- a/infra/libkookie/home-manager/modules/services/mpd.nix
+++ b/infra/libkookie/home-manager/modules/services/mpd.nix
@@ -18,9 +18,9 @@ let
sticker_file "${cfg.dataDir}/sticker.sql"
${optionalString (cfg.network.listenAddress != "any")
- ''bind_to_address "${cfg.network.listenAddress}"''}
+ ''bind_to_address "${cfg.network.listenAddress}"''}
${optionalString (cfg.network.port != 6600)
- ''port "${toString cfg.network.port}"''}
+ ''port "${toString cfg.network.port}"''}
${cfg.extraConfig}
'';
@@ -54,7 +54,7 @@ in {
type = with types; either path str;
default = "${config.home.homeDirectory}/music";
defaultText = "$HOME/music";
- apply = toString; # Prevent copies to Nix store.
+ apply = toString; # Prevent copies to Nix store.
description = ''
The directory where mpd reads music from.
'';
@@ -63,8 +63,8 @@ in {
playlistDirectory = mkOption {
type = types.path;
default = "${cfg.dataDir}/playlists";
- defaultText = ''''${dataDir}/playlists'';
- apply = toString; # Prevent copies to Nix store.
+ defaultText = "\${dataDir}/playlists";
+ apply = toString; # Prevent copies to Nix store.
description = ''
The directory where mpd stores playlists.
'';
@@ -89,7 +89,7 @@ in {
type = types.path;
default = "${config.xdg.dataHome}/${name}";
defaultText = "$XDG_DATA_HOME/mpd";
- apply = toString; # Prevent copies to Nix store.
+ apply = toString; # Prevent copies to Nix store.
description = ''
The directory where MPD stores its state, tag cache,
playlists etc.
@@ -101,7 +101,7 @@ in {
type = types.bool;
default = false;
description = ''
- Enable systemd socket activation.
+ Enable systemd socket activation.
'';
};
@@ -128,7 +128,7 @@ in {
dbFile = mkOption {
type = types.nullOr types.str;
default = "${cfg.dataDir}/tag_cache";
- defaultText = ''''${dataDir}/tag_cache'';
+ defaultText = "\${dataDir}/tag_cache";
description = ''
The path to MPD's database. If set to
null the parameter is omitted from the
@@ -139,13 +139,11 @@ in {
};
-
###### implementation
config = mkIf cfg.enable {
assertions = [
- (lib.hm.assertions.assertPlatform "services.mpd" pkgs
- lib.platforms.linux)
+ (lib.hm.assertions.assertPlatform "services.mpd" pkgs lib.platforms.linux)
];
systemd.user.services.mpd = {
@@ -162,25 +160,24 @@ in {
Environment = "PATH=${config.home.profileDirectory}/bin";
ExecStart = "${cfg.package}/bin/mpd --no-daemon ${mpdConf}";
Type = "notify";
- ExecStartPre = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/mkdir -p '${cfg.dataDir}' '${cfg.playlistDirectory}'"'';
+ ExecStartPre = ''
+ ${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/mkdir -p '${cfg.dataDir}' '${cfg.playlistDirectory}'"'';
};
};
systemd.user.sockets.mpd = mkIf cfg.network.startWhenNeeded {
Socket = {
ListenStream = let
- listen =
- if cfg.network.listenAddress == "any"
- then toString cfg.network.port
- else "${cfg.network.listenAddress}:${toString cfg.network.port}";
+ listen = if cfg.network.listenAddress == "any" then
+ toString cfg.network.port
+ else
+ "${cfg.network.listenAddress}:${toString cfg.network.port}";
in [ listen "%t/mpd/socket" ];
Backlog = 5;
KeepAlive = true;
};
- Install = {
- WantedBy = [ "sockets.target" ];
- };
+ Install = { WantedBy = [ "sockets.target" ]; };
};
};
diff --git a/infra/libkookie/home-manager/modules/services/picom.nix b/infra/libkookie/home-manager/modules/services/picom.nix
index 280a2a21ed2..9ea052ec0fc 100644
--- a/infra/libkookie/home-manager/modules/services/picom.nix
+++ b/infra/libkookie/home-manager/modules/services/picom.nix
@@ -1,13 +1,14 @@
{ config, lib, pkgs, ... }:
-with lib;
-with builtins;
-
let
+ inherit (builtins) toJSON toString;
+ inherit (lib)
+ concatStringsSep elemAt literalExpression mkEnableOption mkIf mkOption
+ mkRemovedOptionModule optional optionalAttrs optionalString types;
cfg = config.services.picom;
- configFile = pkgs.writeText "picom.conf" (optionalString cfg.fade ''
+ configFile = optionalString cfg.fade ''
# fading
fading = true;
fade-delta = ${toString cfg.fadeDelta};
@@ -46,8 +47,7 @@ let
# other options
backend = ${toJSON cfg.backend};
vsync = ${toJSON cfg.vSync};
- refresh-rate = ${toString cfg.refreshRate};
- '' + cfg.extraOptions);
+ '' + cfg.extraOptions;
in {
@@ -250,15 +250,6 @@ in {
'';
};
- refreshRate = mkOption {
- type = types.int;
- default = 0;
- example = 60;
- description = ''
- Screen refresh rate (0 = automatically detect).
- '';
- };
-
package = mkOption {
type = types.package;
default = pkgs.picom;
@@ -270,7 +261,7 @@ in {
};
extraOptions = mkOption {
- type = types.str;
+ type = types.lines;
default = "";
example = ''
unredir-if-possible = true;
@@ -282,6 +273,11 @@ in {
};
};
+ imports = [
+ (mkRemovedOptionModule [ "services" "picom" "refreshRate" ]
+ "The option `refresh-rate` has been deprecated by upstream.")
+ ];
+
config = mkIf cfg.enable {
assertions = [
(lib.hm.assertions.assertPlatform "services.picom" pkgs
@@ -290,6 +286,8 @@ in {
home.packages = [ cfg.package ];
+ xdg.configFile."picom/picom.conf".text = configFile;
+
systemd.user.services.picom = {
Unit = {
Description = "Picom X11 compositor";
@@ -299,17 +297,13 @@ in {
Install = { WantedBy = [ "graphical-session.target" ]; };
- Service = let
- experimentalBackendsFlag =
- if cfg.experimentalBackends then " --experimental-backends" else "";
- in {
- ExecStart = "${cfg.package}/bin/picom --config ${configFile}"
- + experimentalBackendsFlag;
+ Service = {
+ ExecStart = concatStringsSep " " ([
+ "${cfg.package}/bin/picom"
+ "--config ${config.xdg.configFile."picom/picom.conf".source}"
+ ] ++ optional cfg.experimentalBackends "--experimental-backends");
Restart = "always";
RestartSec = 3;
- } // optionalAttrs (cfg.backend == "glx") {
- # Temporarily fixes corrupt colours with Mesa 18.
- Environment = [ "allow_rgb10_configs=false" ];
};
};
};
diff --git a/infra/libkookie/home-manager/modules/services/screen-locker.nix b/infra/libkookie/home-manager/modules/services/screen-locker.nix
index 34794d1c142..3ea84ebedb7 100644
--- a/infra/libkookie/home-manager/modules/services/screen-locker.nix
+++ b/infra/libkookie/home-manager/modules/services/screen-locker.nix
@@ -94,6 +94,16 @@ in {
Extra command-line arguments to pass to xss-lock.
'';
};
+
+ screensaverCycle = mkOption {
+ type = types.int;
+ default = 600;
+ description = ''
+ X server's screensaver cycle value expresed as seconds.
+ This will be used with xset to configure
+ the cycle along with timeout.
+ '';
+ };
};
};
@@ -122,7 +132,9 @@ in {
}
(mkIf (!cfg.xautolock.enable) {
systemd.user.services.xss-lock.Service.ExecStartPre =
- "${pkgs.xorg.xset}/bin/xset s ${toString (cfg.inactiveInterval * 60)}";
+ "${pkgs.xorg.xset}/bin/xset s ${toString (cfg.inactiveInterval * 60)} ${
+ toString cfg.xss-lock.screensaverCycle
+ }";
})
(mkIf cfg.xautolock.enable {
systemd.user.services.xautolock-session = {
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/bspwm/default.nix b/infra/libkookie/home-manager/modules/services/window-managers/bspwm/default.nix
index b14ffccd948..f20c0122110 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/bspwm/default.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/bspwm/default.nix
@@ -10,7 +10,19 @@ let
builtins.replaceStrings upperChars (map (c: "_${c}") lowerChars);
formatMonitor = monitor: desktops:
- "bspc monitor ${escapeShellArg monitor} -d ${escapeShellArgs desktops}";
+ let
+ resetDesktops =
+ "bspc monitor ${escapeShellArg monitor} -d ${escapeShellArgs desktops}";
+ defaultDesktopName =
+ "Desktop"; # https://github.com/baskerville/bspwm/blob/master/src/desktop.h
+ in if cfg.alwaysResetDesktops then
+ resetDesktops
+ else ''
+ if [[ $(bspc query --desktops --names --monitor ${
+ escapeShellArg monitor
+ }) == ${defaultDesktopName} ]]; then
+ ${resetDesktops}
+ fi'';
formatValue = v:
if isList v then
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/bspwm/options.nix b/infra/libkookie/home-manager/modules/services/window-managers/bspwm/options.nix
index 60a06c5a05a..57a1d874ad4 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/bspwm/options.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/bspwm/options.nix
@@ -185,6 +185,19 @@ in {
example = { "HDMI-0" = [ "web" "terminal" "III" "IV" ]; };
};
+ alwaysResetDesktops = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ If set to true, desktops configured in will be reset
+ every time the config is run.
+
+ If set to false, desktops will only be configured the first time the config is run.
+ This is useful if you want to dynamically add desktops and you don't want them to be destroyed if you
+ re-run bspwmrc.
+ '';
+ };
+
rules = mkOption {
type = types.attrsOf rule;
default = { };
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/i3.nix b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/i3.nix
index 8d90c8fb853..16e82d1638d 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/i3.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/i3.nix
@@ -134,7 +134,7 @@ let
};
commonFunctions = import ./lib/functions.nix {
- inherit cfg lib;
+ inherit config cfg lib;
moduleName = "i3";
};
@@ -143,53 +143,49 @@ let
floatingCriteriaStr windowCommandsStr colorSetStr windowBorderString
fontConfigStr keybindingDefaultWorkspace keybindingsRest workspaceOutputStr;
- startupEntryStr = { command, always, notification, workspace, ... }: ''
- ${if always then "exec_always" else "exec"} ${
- if (notification && workspace == null) then "" else "--no-startup-id"
- } ${
- if (workspace == null) then
+ startupEntryStr = { command, always, notification, workspace, ... }:
+ concatStringsSep " " [
+ (if always then "exec_always" else "exec")
+ (if (notification && workspace == null) then "" else "--no-startup-id")
+ (if (workspace == null) then
command
else
- "i3-msg 'workspace ${workspace}; exec ${command}'"
- }
- '';
-
- configFile = pkgs.writeText "i3.conf" ((if cfg.config != null then
- with cfg.config; ''
- ${fontConfigStr fonts}
- floating_modifier ${floating.modifier}
- ${windowBorderString window floating}
- hide_edge_borders ${window.hideEdgeBorders}
- force_focus_wrapping ${if focus.forceWrapping then "yes" else "no"}
- focus_follows_mouse ${if focus.followMouse then "yes" else "no"}
- focus_on_window_activation ${focus.newWindow}
- mouse_warping ${if focus.mouseWarping then "output" else "none"}
- workspace_layout ${workspaceLayout}
- workspace_auto_back_and_forth ${
- if workspaceAutoBackAndForth then "yes" else "no"
- }
-
- 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; }}
- ${keybindingsStr { keybindings = keybindingsRest; }}
- ${keycodebindingsStr keycodebindings}
- ${concatStringsSep "\n" (mapAttrsToList (modeStr false) modes)}
- ${concatStringsSep "\n" (mapAttrsToList assignStr assigns)}
- ${concatStringsSep "\n" (map barStr bars)}
- ${optionalString (gaps != null) gapsStr}
- ${concatStringsSep "\n" (map floatingCriteriaStr floating.criteria)}
- ${concatStringsSep "\n" (map windowCommandsStr window.commands)}
- ${concatStringsSep "\n" (map startupEntryStr startup)}
- ${concatStringsSep "\n" (map workspaceOutputStr workspaceOutputAssign)}
- ''
- else
- "") + "\n" + cfg.extraConfig);
+ "i3-msg 'workspace ${workspace}; exec ${command}'")
+ ];
+
+ configFile = pkgs.writeText "i3.conf" (concatStringsSep "\n"
+ ((if cfg.config != null then
+ with cfg.config;
+ ([
+ (fontConfigStr fonts)
+ "floating_modifier ${floating.modifier}"
+ (windowBorderString window floating)
+ "hide_edge_borders ${window.hideEdgeBorders}"
+ "force_focus_wrapping ${lib.hm.booleans.yesNo focus.forceWrapping}"
+ "focus_follows_mouse ${lib.hm.booleans.yesNo focus.followMouse}"
+ "focus_on_window_activation ${focus.newWindow}"
+ "mouse_warping ${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; })
+ (keybindingsStr { keybindings = keybindingsRest; })
+ (keycodebindingsStr keycodebindings)
+ ] ++ mapAttrsToList (modeStr false) modes
+ ++ mapAttrsToList assignStr assigns ++ map barStr bars
+ ++ optional (gaps != null) gapsStr
+ ++ map floatingCriteriaStr floating.criteria
+ ++ map windowCommandsStr window.commands ++ map startupEntryStr startup
+ ++ map workspaceOutputStr workspaceOutputAssign)
+ else
+ [ ]) ++ [ cfg.extraConfig ]));
# Validates the i3 configuration
checkI3Config =
@@ -207,7 +203,7 @@ let
'';
in {
- meta.maintainers = with maintainers; [ sumnerevans ];
+ meta.maintainers = with maintainers; [ sumnerevans sebtm ];
options = {
xsession.windowManager.i3 = {
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/functions.nix b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/functions.nix
index 62d72638d90..c6a6ada1564 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/functions.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/functions.nix
@@ -1,4 +1,4 @@
-{ cfg, lib, moduleName }:
+{ cfg, config, lib, moduleName }:
with lib;
@@ -20,9 +20,9 @@ rec {
cfg.config.defaultWorkspace == null || v != cfg.config.defaultWorkspace)
cfg.config.keybindings;
- keybindingsStr = { keybindings, bindsymArgs ? "" }:
+ keybindingsStr = { keybindings, bindsymArgs ? "", indent ? "" }:
concatStringsSep "\n" (mapAttrsToList (keycomb: action:
- optionalString (action != null) "bindsym ${
+ optionalString (action != null) "${indent}bindsym ${
lib.optionalString (bindsymArgs != "") "${bindsymArgs} "
}${keycomb} ${action}") keybindings);
@@ -46,6 +46,7 @@ rec {
${keybindingsStr {
inherit keybindings;
bindsymArgs = lib.optionalString bindkeysToCode "--to-code";
+ indent = " ";
}}
}
'';
@@ -73,89 +74,76 @@ rec {
let colorsNotNull = lib.filterAttrs (n: v: v != null) colors != { };
in ''
bar {
- ${optionalString (id != null) "id ${id}"}
- ${fontConfigStr fonts}
- ${optionalString (mode != null) "mode ${mode}"}
- ${optionalString (hiddenState != null) "hidden_state ${hiddenState}"}
- ${optionalString (position != null) "position ${position}"}
${
- optionalString (statusCommand != null)
- "status_command ${statusCommand}"
+ concatStringsSep "\n" (indent (lists.subtractLists [ "" null ]
+ (flatten [
+ (optionalString (id != null) "id ${id}")
+ (fontConfigStr fonts)
+ (optionalString (mode != null) "mode ${mode}")
+ (optionalString (hiddenState != null)
+ "hidden_state ${hiddenState}")
+ (optionalString (position != null) "position ${position}")
+ (optionalString (statusCommand != null)
+ "status_command ${statusCommand}")
+ "${moduleName}bar_command ${command}"
+ (optionalString (workspaceButtons != null)
+ "workspace_buttons ${lib.hm.booleans.yesNo workspaceButtons}")
+ (optionalString (workspaceNumbers != null)
+ "strip_workspace_numbers ${
+ lib.hm.booleans.yesNo (!workspaceNumbers)
+ }")
+ (optionalString (trayOutput != null) "tray_output ${trayOutput}")
+ (optionals colorsNotNull (indent
+ (lists.subtractLists [ "" null ] [
+ "colors {"
+ (optionalString (colors.background != null)
+ "background ${colors.background}")
+ (optionalString (colors.statusline != null)
+ "statusline ${colors.statusline}")
+ (optionalString (colors.separator != null)
+ "separator ${colors.separator}")
+ (optionalString (colors.focusedBackground != null)
+ "focused_background ${colors.focusedBackground}")
+ (optionalString (colors.focusedStatusline != null)
+ "focused_statusline ${colors.focusedStatusline}")
+ (optionalString (colors.focusedSeparator != null)
+ "focused_separator ${colors.focusedSeparator}")
+ (optionalString (colors.focusedWorkspace != null)
+ "focused_workspace ${
+ barColorSetStr colors.focusedWorkspace
+ }")
+ (optionalString (colors.activeWorkspace != null)
+ "active_workspace ${barColorSetStr colors.activeWorkspace}")
+ (optionalString (colors.inactiveWorkspace != null)
+ "inactive_workspace ${
+ barColorSetStr colors.inactiveWorkspace
+ }")
+ (optionalString (colors.urgentWorkspace != null)
+ "urgent_workspace ${barColorSetStr colors.urgentWorkspace}")
+ (optionalString (colors.bindingMode != null)
+ "binding_mode ${barColorSetStr colors.bindingMode}")
+ "}"
+ ]) { }))
+ extraConfig
+ ])) { })
}
- ${moduleName}bar_command ${command}
- ${
- optionalString (workspaceButtons != null)
- "workspace_buttons ${if workspaceButtons then "yes" else "no"}"
- }
- ${
- optionalString (workspaceNumbers != null)
- "strip_workspace_numbers ${if !workspaceNumbers then "yes" else "no"}"
- }
- ${optionalString (trayOutput != null) "tray_output ${trayOutput}"}
- ${optionalString colorsNotNull "colors {"}
- ${
- optionalString (colors.background != null)
- "background ${colors.background}"
- }
- ${
- optionalString (colors.statusline != null)
- "statusline ${colors.statusline}"
- }
- ${
- optionalString (colors.separator != null)
- "separator ${colors.separator}"
- }
- ${
- optionalString (colors.focusedBackground != null)
- "focused_background ${colors.focusedBackground}"
- }
- ${
- optionalString (colors.focusedStatusline != null)
- "focused_statusline ${colors.focusedStatusline}"
- }
- ${
- optionalString (colors.focusedSeparator != null)
- "focused_separator ${colors.focusedSeparator}"
- }
- ${
- optionalString (colors.focusedWorkspace != null)
- "focused_workspace ${barColorSetStr colors.focusedWorkspace}"
- }
- ${
- optionalString (colors.activeWorkspace != null)
- "active_workspace ${barColorSetStr colors.activeWorkspace}"
- }
- ${
- optionalString (colors.inactiveWorkspace != null)
- "inactive_workspace ${barColorSetStr colors.inactiveWorkspace}"
- }
- ${
- optionalString (colors.urgentWorkspace != null)
- "urgent_workspace ${barColorSetStr colors.urgentWorkspace}"
- }
- ${
- optionalString (colors.bindingMode != null)
- "binding_mode ${barColorSetStr colors.bindingMode}"
- }
- ${optionalString colorsNotNull "}"}
- ${extraConfig}
}
'';
- gapsStr = with cfg.config.gaps; ''
- ${optionalString (inner != null) "gaps inner ${toString inner}"}
- ${optionalString (outer != null) "gaps outer ${toString outer}"}
- ${optionalString (horizontal != null)
- "gaps horizontal ${toString horizontal}"}
- ${optionalString (vertical != null) "gaps vertical ${toString vertical}"}
- ${optionalString (top != null) "gaps top ${toString top}"}
- ${optionalString (bottom != null) "gaps bottom ${toString bottom}"}
- ${optionalString (left != null) "gaps left ${toString left}"}
- ${optionalString (right != null) "gaps right ${toString right}"}
-
- ${optionalString smartGaps "smart_gaps on"}
- ${optionalString (smartBorders != "off") "smart_borders ${smartBorders}"}
- '';
+ gapsStr = with cfg.config.gaps;
+ concatStringsSep "\n" (lists.subtractLists [ "" null ] [
+ (optionalString (inner != null) "gaps inner ${toString inner}")
+ (optionalString (outer != null) "gaps outer ${toString outer}")
+ (optionalString (horizontal != null)
+ "gaps horizontal ${toString horizontal}")
+ (optionalString (vertical != null) "gaps vertical ${toString vertical}")
+ (optionalString (top != null) "gaps top ${toString top}")
+ (optionalString (bottom != null) "gaps bottom ${toString bottom}")
+ (optionalString (left != null) "gaps left ${toString left}")
+ (optionalString (right != null) "gaps right ${toString right}")
+ (optionalString smartGaps "smart_gaps on")
+ (optionalString (smartBorders != "off") "smart_borders ${smartBorders}")
+ ]);
windowBorderString = window: floating:
let
@@ -172,4 +160,14 @@ rec {
"for_window ${criteriaStr criteria} ${command}";
workspaceOutputStr = item:
''workspace "${item.workspace}" output ${item.output}'';
+
+ indent = list:
+ { includesWrapper ? true, level ? 1 }:
+ let prefix = concatStringsSep "" (lib.genList (x: " ") (level * 2));
+
+ in (lib.imap1 (i: v:
+ "${if includesWrapper && (i == 1 || i == (lib.length list)) then
+ v
+ else
+ "${prefix}${v}"}") list);
}
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/options.nix b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/options.nix
index c4d1535a7cd..7027e21d071 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/options.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/lib/options.nix
@@ -494,10 +494,7 @@ in {
default = if isSway then "yes" else true;
description = "Whether focus should follow the mouse.";
apply = val:
- if (isSway && isBool val) then
- (if val then "yes" else "no")
- else
- val;
+ if (isSway && isBool val) then (lib.hm.booleans.yesNo val) else val;
};
forceWrapping = mkOption {
diff --git a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/sway.nix b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/sway.nix
index 72995908f5e..178ceacd693 100644
--- a/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/sway.nix
+++ b/infra/libkookie/home-manager/modules/services/window-managers/i3-sway/sway.nix
@@ -239,7 +239,7 @@ let
};
commonFunctions = import ./lib/functions.nix {
- inherit cfg lib;
+ inherit config cfg lib;
moduleName = "sway";
};
@@ -262,42 +262,40 @@ let
outputStr = moduleStr "output";
seatStr = moduleStr "seat";
- configFile = pkgs.writeText "sway.conf" ((if cfg.config != null then
- with cfg.config; ''
- ${fontConfigStr fonts}
- floating_modifier ${floating.modifier}
- ${windowBorderString window floating}
- hide_edge_borders ${window.hideEdgeBorders}
- focus_wrapping ${if focus.forceWrapping then "yes" else "no"}
- focus_follows_mouse ${focus.followMouse}
- focus_on_window_activation ${focus.newWindow}
- mouse_warping ${if focus.mouseWarping then "output" else "none"}
- workspace_layout ${workspaceLayout}
- workspace_auto_back_and_forth ${
- if workspaceAutoBackAndForth then "yes" else "no"
- }
-
- 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}
- ${concatStringsSep "\n" (
- # Append all of the lists together to avoid unnecessary whitespace.
- mapAttrsToList inputStr input # inputs
+ configFile = pkgs.writeText "sway.conf" (concatStringsSep "\n"
+ ((if cfg.config != null then
+ with cfg.config;
+ ([
+ (fontConfigStr fonts)
+ "floating_modifier ${floating.modifier}"
+ (windowBorderString window floating)
+ "hide_edge_borders ${window.hideEdgeBorders}"
+ "focus_wrapping ${lib.hm.booleans.yesNo focus.forceWrapping}"
+ "focus_follows_mouse ${focus.followMouse}"
+ "focus_on_window_activation ${focus.newWindow}"
+ "mouse_warping ${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
@@ -308,13 +306,11 @@ let
++ map windowCommandsStr window.commands # window commands
++ map startupEntryStr startup # startup
++ map workspaceOutputStr workspaceOutputAssign # custom mapping
- )}
- ''
- else
- "") + (concatStringsSep "\n" ((optional cfg.systemdIntegration ''
- exec "systemctl --user import-environment; systemctl --user start sway-session.target"'')
- ++ (optional (!cfg.xwayland) "xwayland disable")
- ++ [ cfg.extraConfig ])));
+ )
+ else
+ [ ]) ++ (optional cfg.systemdIntegration ''
+ exec "systemctl --user import-environment; systemctl --user start sway-session.target"'')
+ ++ (optional (!cfg.xwayland) "xwayland disable") ++ [ cfg.extraConfig ]));
defaultSwayPackage = pkgs.sway.override {
extraSessionCommands = cfg.extraSessionCommands;
@@ -324,7 +320,7 @@ let
};
in {
- meta.maintainers = with maintainers; [ alexarice sumnerevans ];
+ meta.maintainers = with maintainers; [ alexarice sumnerevans sebtm ];
options.wayland.windowManager.sway = {
enable = mkEnableOption "sway wayland compositor";
@@ -438,8 +434,8 @@ in {
xdg.configFile."sway/config" = {
source = configFile;
onChange = ''
- swaySocket=''${XDG_RUNTIME_DIR:-/run/user/$UID}/sway-ipc.$UID.$(${pkgs.procps}/bin/pgrep -x sway || true).sock
- if [ -S $swaySocket ]; then
+ swaySocket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/sway-ipc.$UID.$(${pkgs.procps}/bin/pgrep --uid $UID -x sway || true).sock"
+ if [ -S "$swaySocket" ]; then
${pkgs.sway}/bin/swaymsg -s $swaySocket reload
fi
'';
@@ -454,6 +450,13 @@ in {
After = [ "graphical-session-pre.target" ];
};
};
+
+ systemd.user.targets.tray = {
+ Unit = {
+ Description = "Home Manager System Tray";
+ Requires = [ "graphical-session-pre.target" ];
+ };
+ };
}
]);
}
diff --git a/infra/libkookie/home-manager/modules/services/xscreensaver.nix b/infra/libkookie/home-manager/modules/services/xscreensaver.nix
index 3c0661e8983..3ae92658f03 100644
--- a/infra/libkookie/home-manager/modules/services/xscreensaver.nix
+++ b/infra/libkookie/home-manager/modules/services/xscreensaver.nix
@@ -53,6 +53,7 @@ in {
Service = {
ExecStart = "${pkgs.xscreensaver}/bin/xscreensaver -no-splash";
+ Environment = "PATH=${makeBinPath [ pkgs.xscreensaver ]}";
};
Install = { WantedBy = [ "graphical-session.target" ]; };
diff --git a/infra/libkookie/home-manager/modules/systemd.nix b/infra/libkookie/home-manager/modules/systemd.nix
index cd5b30ed49e..0be586d7c63 100644
--- a/infra/libkookie/home-manager/modules/systemd.nix
+++ b/infra/libkookie/home-manager/modules/systemd.nix
@@ -41,7 +41,7 @@ let
source = pkgs.writeTextFile {
name = pathSafeName;
text = toSystemdIni serviceCfg;
- destination = lib.escapeShellArg "/${filename}";
+ destination = "/${filename}";
} + "/${filename}";
wantedBy = target: {
diff --git a/infra/libkookie/home-manager/modules/targets/generic-linux.nix b/infra/libkookie/home-manager/modules/targets/generic-linux.nix
index 9132d8898b0..aad74afb6fb 100644
--- a/infra/libkookie/home-manager/modules/targets/generic-linux.nix
+++ b/infra/libkookie/home-manager/modules/targets/generic-linux.nix
@@ -43,6 +43,17 @@ in {
"/var/lib/snapd/desktop"
];
+ # We need to append system-wide FHS directories due to the default prefix
+ # resolving to the Nix store.
+ # https://github.com/nix-community/home-manager/pull/2891#issuecomment-1101064521
+ home.sessionVariables = {
+ XCURSOR_PATH = "$XCURSOR_PATH\${XCURSOR_PATH:+:}" + concatStringsSep ":" [
+ "${config.home.profileDirectory}/share/icons"
+ "/usr/share/icons"
+ "/usr/share/pixmaps"
+ ];
+ };
+
home.sessionVariablesExtra = ''
. "${pkgs.nix}/etc/profile.d/nix.sh"
diff --git a/infra/libkookie/home-manager/modules/xcursor.nix b/infra/libkookie/home-manager/modules/xcursor.nix
index 3ec2a354db7..a91f79ee5c9 100644
--- a/infra/libkookie/home-manager/modules/xcursor.nix
+++ b/infra/libkookie/home-manager/modules/xcursor.nix
@@ -36,6 +36,10 @@ let
};
};
+ cursorPath = "${cfg.package}/share/icons/${escapeShellArg cfg.name}/cursors/${
+ escapeShellArg cfg.defaultCursor
+ }";
+
in {
meta.maintainers = [ maintainers.league ];
@@ -63,9 +67,7 @@ in {
home.packages = [ cfg.package ];
xsession.initExtra = ''
- ${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cfg.package}/share/icons/${cfg.name}/cursors/${cfg.defaultCursor} ${
- toString cfg.size
- }
+ ${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cursorPath} ${toString cfg.size}
'';
xresources.properties = {
@@ -73,15 +75,7 @@ in {
"Xcursor.size" = cfg.size;
};
- gtk.gtk2.extraConfig = ''
- gtk-cursor-theme-name="${cfg.name}"
- gtk-cursor-theme-size=${toString cfg.size}
- '';
-
- gtk.gtk3.extraConfig = {
- "gtk-cursor-theme-name" = cfg.name;
- "gtk-cursor-theme-size" = cfg.size;
- };
+ gtk.cursorTheme = mkDefault { inherit (cfg) package name size; };
# Set name in icons theme, for compatibility with AwesomeWM etc. See:
# https://github.com/nix-community/home-manager/issues/2081
diff --git a/infra/libkookie/home-manager/nix-darwin/default.nix b/infra/libkookie/home-manager/nix-darwin/default.nix
index 010d4f574a9..57f7559a317 100644
--- a/infra/libkookie/home-manager/nix-darwin/default.nix
+++ b/infra/libkookie/home-manager/nix-darwin/default.nix
@@ -13,7 +13,7 @@ let
lib = extendedLib;
darwinConfig = config;
osConfig = config;
- modulesPath = ../modules;
+ modulesPath = builtins.toString ../modules;
} // cfg.extraSpecialArgs;
modules = [
({ name, ... }: {
@@ -134,7 +134,7 @@ in
system.activationScripts.postActivation.text =
concatStringsSep "\n" (mapAttrsToList (username: usercfg: ''
echo Activating home-manager configuration for ${username}
- sudo -u ${username} -i ${pkgs.writeShellScript "activation-${username}" ''
+ sudo -u ${username} -s --set-home ${pkgs.writeShellScript "activation-${username}" ''
${lib.optionalString (cfg.backupFileExtension != null)
"export HOME_MANAGER_BACKUP_EXT=${lib.escapeShellArg cfg.backupFileExtension}"}
${lib.optionalString cfg.verbose "export VERBOSE=1"}
diff --git a/infra/libkookie/home-manager/nixos/default.nix b/infra/libkookie/home-manager/nixos/default.nix
index a94ad1422bf..766ce76f9cf 100644
--- a/infra/libkookie/home-manager/nixos/default.nix
+++ b/infra/libkookie/home-manager/nixos/default.nix
@@ -13,7 +13,7 @@ let
lib = extendedLib;
nixosConfig = config;
osConfig = config;
- modulesPath = ../modules;
+ modulesPath = builtins.toString ../modules;
} // cfg.extraSpecialArgs;
modules = [
({ name, ... }: {
diff --git a/infra/libkookie/home-manager/overlay.nix b/infra/libkookie/home-manager/overlay.nix
index 35136cc8556..78fcb60ce3c 100644
--- a/infra/libkookie/home-manager/overlay.nix
+++ b/infra/libkookie/home-manager/overlay.nix
@@ -1,3 +1,3 @@
-self: super: {
- home-manager = super.callPackage ./home-manager { path = toString ./.; };
+final: prev: {
+ home-manager = prev.callPackage ./home-manager { path = toString ./.; };
}
diff --git a/infra/libkookie/home-manager/tests/default.nix b/infra/libkookie/home-manager/tests/default.nix
index 73e99639b3c..03a86aec768 100644
--- a/infra/libkookie/home-manager/tests/default.nix
+++ b/infra/libkookie/home-manager/tests/default.nix
@@ -7,8 +7,8 @@ let
nmt = pkgs.fetchFromGitLab {
owner = "rycee";
repo = "nmt";
- rev = "89924d8e6e0fcf866a11324d32c6bcaa89cda506";
- sha256 = "02wzrbmpdpgig58a1rhz8sb0p2rvbapnlcmhi4d4bi8w9md6pmdl";
+ rev = "d83601002c99b78c89ea80e5e6ba21addcfe12ae";
+ sha256 = "1xzwwxygzs1cmysg97hzd285r7n1g1lwx5y1ar68gwq07a1rczmv";
};
modules = import ../modules/modules.nix {
@@ -45,6 +45,7 @@ import nmt {
./modules/files
./modules/home-environment
./modules/misc/fontconfig
+ ./modules/misc/nix
./modules/programs/alacritty
./modules/programs/alot
./modules/programs/aria2
@@ -76,6 +77,7 @@ import nmt {
./modules/programs/man
./modules/programs/mbsync
./modules/programs/mpv
+ ./modules/programs/mu
./modules/programs/ncmpcpp
./modules/programs/ne
./modules/programs/neomutt
@@ -86,6 +88,7 @@ import nmt {
./modules/programs/pandoc
./modules/programs/pet
./modules/programs/powerline-go
+ ./modules/programs/pubs
./modules/programs/qutebrowser
./modules/programs/readline
./modules/programs/sagemath
@@ -104,6 +107,7 @@ import nmt {
./modules/programs/zsh
./modules/xresources
] ++ lib.optionals isDarwin [
+ ./modules/launchd
./modules/targets-darwin
] ++ lib.optionals isLinux [
./modules/config/i18n
@@ -137,17 +141,21 @@ import nmt {
./modules/services/devilspie2
./modules/services/dropbox
./modules/services/emacs
+ ./modules/services/espanso
./modules/services/flameshot
./modules/services/fluidsynth
./modules/services/fnott
+ ./modules/services/fusuma
./modules/services/git-sync
./modules/services/gpg-agent
./modules/services/gromit-mpx
./modules/services/home-manager-auto-upgrade
./modules/services/kanshi
./modules/services/lieer
+ ./modules/services/mpd
./modules/services/pantalaimon
./modules/services/pbgopy
+ ./modules/services/picom
./modules/services/playerctld
./modules/services/polybar
./modules/services/redshift-gammastep
diff --git a/infra/libkookie/home-manager/tests/lib/types/dag-merge.nix b/infra/libkookie/home-manager/tests/lib/types/dag-merge.nix
index 5e361cd7e7f..0b41ec8a0c4 100644
--- a/infra/libkookie/home-manager/tests/lib/types/dag-merge.nix
+++ b/infra/libkookie/home-manager/tests/lib/types/dag-merge.nix
@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
- inherit (lib) concatStringsSep hm mkMerge mkOption types;
+ inherit (lib) concatStringsSep hm mkIf mkMerge mkOption types;
dag = lib.hm.dag;
@@ -14,10 +14,14 @@ in {
options.tested.dag = mkOption { type = hm.types.dagOf types.str; };
config = {
- tested = mkMerge [
- { dag.after = "after"; }
- { dag.before = dag.entryBefore [ "after" ] "before"; }
- { dag.between = dag.entryBetween [ "after" ] [ "before" ] "between"; }
+ tested.dag = mkMerge [
+ { never = mkIf false "never"; }
+ { after = mkMerge [ "after" (mkIf false "neither") ]; }
+ { before = dag.entryBefore [ "after" ] (mkIf true "before"); }
+ {
+ between =
+ mkIf true (dag.entryBetween [ "after" ] [ "before" ] "between");
+ }
];
home.file."result.txt".text = result;
diff --git a/infra/libkookie/home-manager/tests/modules/home-environment/session-variables.nix b/infra/libkookie/home-manager/tests/modules/home-environment/session-variables.nix
index eae7830f355..08c988d2bbe 100644
--- a/infra/libkookie/home-manager/tests/modules/home-environment/session-variables.nix
+++ b/infra/libkookie/home-manager/tests/modules/home-environment/session-variables.nix
@@ -31,7 +31,8 @@ let
export XDG_STATE_HOME="/home/hm-user/.local/state"
'';
- expected = pkgs.writeText "expected" (if isDarwin then darwinExpected else linuxExpected);
+ expected = pkgs.writeText "expected"
+ (if isDarwin then darwinExpected else linuxExpected);
in {
config = {
diff --git a/infra/libkookie/home-manager/tests/modules/launchd/agents.nix b/infra/libkookie/home-manager/tests/modules/launchd/agents.nix
new file mode 100644
index 00000000000..cbcff6b5a27
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/launchd/agents.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ config = {
+ launchd.agents."test-service" = {
+ enable = true;
+ config = {
+ ProgramArguments = [ "/some/command" "--with-arguments" "foo" ];
+ KeepAlive = {
+ Crashed = true;
+ SuccessfulExit = false;
+ };
+ ProcessType = "Background";
+ };
+ };
+
+ nmt.script = ''
+ serviceFile=LaunchAgents/org.nix-community.home.test-service.plist
+ assertFileExists $serviceFile
+ assertFileContent $serviceFile ${./expected-agent.plist}
+ '';
+ };
+}
diff --git a/infra/libkookie/home-manager/tests/modules/launchd/default.nix b/infra/libkookie/home-manager/tests/modules/launchd/default.nix
new file mode 100644
index 00000000000..09549ee7b31
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/launchd/default.nix
@@ -0,0 +1 @@
+{ launchd-agents = ./agents.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/launchd/expected-agent.plist b/infra/libkookie/home-manager/tests/modules/launchd/expected-agent.plist
new file mode 100644
index 00000000000..c56ad4da44f
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/launchd/expected-agent.plist
@@ -0,0 +1,23 @@
+
+
+
+
+ KeepAlive
+
+ Crashed
+
+ SuccessfulExit
+
+
+ Label
+ org.nix-community.home.test-service
+ ProcessType
+ Background
+ ProgramArguments
+
+ /some/command
+ --with-arguments
+ foo
+
+
+
\ No newline at end of file
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/default.nix b/infra/libkookie/home-manager/tests/modules/misc/gtk/default.nix
index 0dbae61ebb4..a812d4ad32d 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/gtk/default.nix
+++ b/infra/libkookie/home-manager/tests/modules/misc/gtk/default.nix
@@ -1,5 +1,6 @@
{
gtk2-basic-config = ./gtk2-basic-config.nix;
gtk2-config-file-location = ./gtk2-config-file-location.nix;
+ gtk3-basic-settings = ./gtk3-basic-settings.nix;
}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk-basic-config-expected.conf b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk-basic-config-expected.conf
deleted file mode 100644
index 2e4c1c368e0..00000000000
--- a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk-basic-config-expected.conf
+++ /dev/null
@@ -1 +0,0 @@
-gtk-can-change-accels = 1
\ No newline at end of file
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config-expected.conf b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config-expected.conf
new file mode 100644
index 00000000000..4096a84775f
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config-expected.conf
@@ -0,0 +1,2 @@
+gtk-theme-name = "Adwaita"
+gtk-can-change-accels = 1
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config.nix b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config.nix
index a49cc44e7e9..5671ac93e68 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config.nix
+++ b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk2-basic-config.nix
@@ -6,6 +6,7 @@ with lib;
config = {
gtk = {
enable = true;
+ theme.name = "Adwaita";
gtk2.extraConfig = "gtk-can-change-accels = 1";
};
@@ -13,9 +14,10 @@ with lib;
nmt.script = ''
assertFileExists home-files/.gtkrc-2.0
- assertFileContent home-files/.gtkrc-2.0 ${
- ./gtk-basic-config-expected.conf
- }
+
+ assertFileContent home-files/.gtkrc-2.0 \
+ ${./gtk2-basic-config-expected.conf}
+
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'GTK2_RC_FILES=.*/.gtkrc-2.0'
'';
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings-expected.ini b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings-expected.ini
new file mode 100644
index 00000000000..f1218b06932
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings-expected.ini
@@ -0,0 +1,3 @@
+[Settings]
+gtk-cursor-blink=false
+gtk-recent-files-limit=20
diff --git a/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings.nix b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings.nix
new file mode 100644
index 00000000000..058dd85b29e
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/gtk/gtk3-basic-settings.nix
@@ -0,0 +1,24 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ config = {
+ gtk = {
+ enable = true;
+ gtk3.extraConfig = {
+ gtk-cursor-blink = false;
+ gtk-recent-files-limit = 20;
+ };
+ };
+
+ test.stubs.dconf = { };
+
+ nmt.script = ''
+ assertFileExists home-files/.config/gtk-3.0/settings.ini
+
+ assertFileContent home-files/.config/gtk-3.0/settings.ini \
+ ${./gtk3-basic-settings-expected.ini}
+ '';
+ };
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/default.nix b/infra/libkookie/home-manager/tests/modules/misc/nix/default.nix
new file mode 100644
index 00000000000..b0370c2e464
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/default.nix
@@ -0,0 +1,5 @@
+{
+ nix-empty-settings = ./empty-settings.nix;
+ nix-example-settings = ./example-settings.nix;
+ nix-example-registry = ./example-registry.nix;
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/empty-settings.nix b/infra/libkookie/home-manager/tests/modules/misc/nix/empty-settings.nix
new file mode 100644
index 00000000000..18f1ab4301d
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/empty-settings.nix
@@ -0,0 +1,13 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ config = {
+ nix = { package = config.lib.test.mkStubPackage { }; };
+
+ nmt.script = ''
+ assertPathNotExists home-files/.config/nix
+ '';
+ };
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry-expected.json b/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry-expected.json
new file mode 100644
index 00000000000..cf5cee2292b
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry-expected.json
@@ -0,0 +1,17 @@
+{
+ "flakes": [
+ {
+ "exact": true,
+ "from": {
+ "id": "nixpkgs",
+ "type": "indirect"
+ },
+ "to": {
+ "owner": "my-org",
+ "repo": "my-nixpkgs",
+ "type": "github"
+ }
+ }
+ ],
+ "version": 2
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry.nix b/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry.nix
new file mode 100644
index 00000000000..1875b34d3c4
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/example-registry.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ config = {
+ nix = {
+ registry = {
+ nixpkgs = {
+ to = {
+ type = "github";
+ owner = "my-org";
+ repo = "my-nixpkgs";
+ };
+ };
+ };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/nix/registry.json \
+ ${./example-registry-expected.json}
+ '';
+ };
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings-expected.conf b/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings-expected.conf
new file mode 100644
index 00000000000..2c2587fd697
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings-expected.conf
@@ -0,0 +1,7 @@
+# WARNING: this file is generated from the nix.settings option in
+# your Home Manager configuration at $XDG_CONFIG_HOME/nix/nix.conf.
+# Do not edit it!
+show-trace = true
+system-features = big-parallel kvm recursive-nix
+use-sandbox = true
+
diff --git a/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings.nix b/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings.nix
new file mode 100644
index 00000000000..6cbcd9dfa43
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/misc/nix/example-settings.nix
@@ -0,0 +1,33 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ config = {
+ nix = {
+ package = config.lib.test.mkStubPackage {
+ version = lib.getVersion pkgs.nixVersions.stable;
+ buildScript = ''
+ target=$out/bin/nix
+ mkdir -p "$(dirname "$target")"
+
+ echo -n "true" > "$target"
+
+ chmod +x "$target"
+ '';
+ };
+
+ settings = {
+ use-sandbox = true;
+ show-trace = true;
+ system-features = [ "big-parallel" "kvm" "recursive-nix" ];
+ };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/nix/nix.conf \
+ ${./example-settings-expected.conf}
+ '';
+ };
+}
diff --git a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-entries.nix b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-entries.nix
index adb6e31ee67..541a7cc53f8 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-entries.nix
+++ b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-entries.nix
@@ -18,20 +18,33 @@ with lib;
startupNotify = false;
noDisplay = false;
prefersNonDefaultGPU = false;
- extraConfig = ''
- [X-ExtraSection]
- Exec=foo -o
- '';
settings = {
Keywords = "calc;math";
DBusActivatable = "false";
};
- fileValidation = true;
+ actions = {
+ "New-Window" = {
+ name = "New Window";
+ exec = "test --new-window";
+ icon = "test";
+ };
+ "Default" = { exec = "test --default"; };
+ };
};
min = { # minimal definition
exec = "test --option";
name = "Test";
};
+ deprecated = {
+ exec = "test --option";
+ name = "Test";
+ # Deprecated options
+ fileValidation = true;
+ extraConfig = ''
+ [X-ExtraSection]
+ Exec=foo -o
+ '';
+ };
};
#testing that preexisting entries in the store are overridden
@@ -48,6 +61,19 @@ with lib;
})
];
+ test.asserts.assertions.expected =
+ let currentFile = toString ./desktop-entries.nix;
+ in [
+ ''
+ The option definition `fileValidation' in `${currentFile}' no longer has any effect; please remove it.
+ Validation of the desktop file is always enabled.
+ ''
+ ''
+ The option definition `extraConfig' in `${currentFile}' no longer has any effect; please remove it.
+ The `extraConfig` option of `xdg.desktopEntries` has been removed following a change in Nixpkgs.
+ ''
+ ];
+
nmt.script = ''
assertFileExists home-path/share/applications/full.desktop
assertFileExists home-path/share/applications/min.desktop
diff --git a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-full-expected.desktop b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-full-expected.desktop
index 7776e8b7725..b40f96c21f4 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-full-expected.desktop
+++ b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-full-expected.desktop
@@ -1,18 +1,26 @@
[Desktop Entry]
-Categories=Network;WebBrowser;
+Actions=Default;New-Window
+Categories=Network;WebBrowser
Comment=My Application
DBusActivatable=false
Exec=test --option
GenericName=Web Browser
Icon=test
Keywords=calc;math
-MimeType=text/html;text/xml;
+MimeType=text/html;text/xml
Name=Test
NoDisplay=false
PrefersNonDefaultGPU=false
StartupNotify=false
Terminal=true
Type=Application
-[X-ExtraSection]
-Exec=foo -o
+Version=1.4
+[Desktop Action Default]
+Exec=test --default
+Name=Default
+
+[Desktop Action New-Window]
+Exec=test --new-window
+Icon=test
+Name=New Window
diff --git a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-min-expected.desktop b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-min-expected.desktop
index 9475024ae99..1b36b57c679 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-min-expected.desktop
+++ b/infra/libkookie/home-manager/tests/modules/misc/xdg/desktop-min-expected.desktop
@@ -3,3 +3,4 @@ Exec=test --option
Name=Test
Terminal=false
Type=Application
+Version=1.4
diff --git a/infra/libkookie/home-manager/tests/modules/misc/xdg/system-dirs.nix b/infra/libkookie/home-manager/tests/modules/misc/xdg/system-dirs.nix
index 9bfa2ae4464..fa34ae0b5f5 100644
--- a/infra/libkookie/home-manager/tests/modules/misc/xdg/system-dirs.nix
+++ b/infra/libkookie/home-manager/tests/modules/misc/xdg/system-dirs.nix
@@ -11,8 +11,12 @@
assertFileContent $envFile ${
pkgs.writeText "expected" ''
LOCALE_ARCHIVE_2_27=${pkgs.glibcLocales}/lib/locale/locale-archive
+ XDG_CACHE_HOME=/home/hm-user/.cache
XDG_CONFIG_DIRS=/etc/xdg:/foo/bar''${XDG_CONFIG_DIRS:+:$XDG_CONFIG_DIRS}
+ XDG_CONFIG_HOME=/home/hm-user/.config
XDG_DATA_DIRS=/usr/local/share:/usr/share:/baz/quux''${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}
+ XDG_DATA_HOME=/home/hm-user/.local/share
+ XDG_STATE_HOME=/home/hm-user/.local/state
''
}
diff --git a/infra/libkookie/home-manager/tests/modules/programs/autorandr/basic-configuration.nix b/infra/libkookie/home-manager/tests/modules/programs/autorandr/basic-configuration.nix
index c28edaa2af1..e650f6005a5 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/autorandr/basic-configuration.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/autorandr/basic-configuration.nix
@@ -17,6 +17,7 @@
primary = true;
position = "0x0";
mode = "1920x1080";
+ filter = "nearest";
transform = [
[ 0.6 0.0 0.0 ] # a b c
[ 0.0 0.6 0.0 ] # d e f
@@ -50,6 +51,7 @@
crtc 0
primary
mode 1920x1080
+ filter nearest
transform 0.600000,0.000000,0.000000,0.000000,0.600000,0.000000,0.000000,0.000000,1.000000''
}
'';
diff --git a/infra/libkookie/home-manager/tests/modules/programs/browserpass/browserpass.nix b/infra/libkookie/home-manager/tests/modules/programs/browserpass/browserpass.nix
index 9189a445ac0..2e1ca65e894 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/browserpass/browserpass.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/browserpass/browserpass.nix
@@ -6,11 +6,11 @@ with lib;
config = {
programs.browserpass = {
enable = true;
- browsers = [ "chrome" "chromium" "firefox" "vivaldi" ];
+ browsers = [ "brave" "chrome" "chromium" "firefox" "vivaldi" ];
};
nmt.script = if pkgs.stdenv.hostPlatform.isDarwin then ''
- for dir in "Google/Chrome" "Chromium" "Mozilla" "Vivaldi"; do
+ for dir in "BraveSoftware/Brave-Browser" "Google/Chrome" "Chromium" "Mozilla" "Vivaldi"; do
assertFileExists "home-files/Library/Application Support/$dir/NativeMessagingHosts/com.github.browserpass.native.json"
done
@@ -18,8 +18,11 @@ with lib;
assertFileExists "home-files/Library/Application Support/$dir/policies/managed/com.github.browserpass.native.json"
done
'' else ''
- for dir in "google-chrome" "chromium" "vivaldi"; do
+ for dir in "BraveSoftware/Brave-Browser" "google-chrome" "chromium" "vivaldi"; do
assertFileExists "home-files/.config/$dir/NativeMessagingHosts/com.github.browserpass.native.json"
+ done
+
+ for dir in "google-chrome" "chromium" "vivaldi"; do
assertFileExists "home-files/.config/$dir/policies/managed/com.github.browserpass.native.json"
done
diff --git a/infra/libkookie/home-manager/tests/modules/programs/foot/systemd-user-service-expected.service b/infra/libkookie/home-manager/tests/modules/programs/foot/systemd-user-service-expected.service
index ff0f8a61b43..517344e531d 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/foot/systemd-user-service-expected.service
+++ b/infra/libkookie/home-manager/tests/modules/programs/foot/systemd-user-service-expected.service
@@ -3,6 +3,7 @@ WantedBy=graphical-session.target
[Service]
ExecStart=@foot@/bin/foot --server
+OOMPolicy=continue
Restart=on-failure
[Unit]
diff --git a/infra/libkookie/home-manager/tests/modules/programs/gpg/override-defaults.nix b/infra/libkookie/home-manager/tests/modules/programs/gpg/override-defaults.nix
index 62fe50dc2ad..e410433956f 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/gpg/override-defaults.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/gpg/override-defaults.nix
@@ -11,10 +11,7 @@ with lib;
no-comments = false;
s2k-cipher-algo = "AES128";
throw-keyids = true;
- trusted-key = [
- "0xXXXXXXXXXXXXX"
- "0xYYYYYYYYYYYYY"
- ];
+ trusted-key = [ "0xXXXXXXXXXXXXX" "0xYYYYYYYYYYYYY" ];
};
homedir = "${config.home.homeDirectory}/bar/foopg";
@@ -22,7 +19,9 @@ with lib;
nmt.script = ''
assertFileExists home-files/bar/foopg/gpg.conf
- assertFileContent home-files/bar/foopg/gpg.conf ${./override-defaults-expected.conf}
+ assertFileContent home-files/bar/foopg/gpg.conf ${
+ ./override-defaults-expected.conf
+ }
assertFileNotRegex activate "^unset GNUPGHOME keyId importTrust$"
'';
diff --git a/infra/libkookie/home-manager/tests/modules/programs/helix/settings-expected.toml b/infra/libkookie/home-manager/tests/modules/programs/helix/settings-expected.toml
index 2d575aa63a6..772bcf52534 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/helix/settings-expected.toml
+++ b/infra/libkookie/home-manager/tests/modules/programs/helix/settings-expected.toml
@@ -1,7 +1,5 @@
theme = "base16"
-[keys]
-[keys.normal]
[keys.normal.space]
q = ":q"
space = "file_picker"
diff --git a/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya-expected.toml b/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya-expected.toml
index db94d42a8a2..6d27107ec7f 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya-expected.toml
+++ b/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya-expected.toml
@@ -4,13 +4,16 @@ name = ""
["hm@example.com"]
default = true
default-page-size = 50
+draft-folder = "Drafts"
email = "hm@example.com"
imap-host = "imap.example.com"
imap-login = "home.manager"
imap-passwd-cmd = "'password-command'"
imap-port = 995
imap-starttls = false
+inbox-folder = "In"
name = "H. M. Test"
+sent-folder = "Out"
smtp-host = "smtp.example.com"
smtp-login = "home.manager"
smtp-passwd-cmd = "'password-command'"
diff --git a/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya.nix b/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya.nix
index 827a09bef1a..13872d158fb 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/himalaya/himalaya.nix
@@ -13,6 +13,12 @@ with lib;
settings = { default-page-size = 50; };
};
+ folders = {
+ inbox = "In";
+ sent = "Out";
+ drafts = "Drafts";
+ };
+
imap.port = 995;
smtp.port = 465;
};
diff --git a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-custom.nix b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-custom.nix
index b53963ddba8..d89e2ddcb82 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-custom.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-custom.nix
@@ -175,7 +175,7 @@ with lib;
[[block]]
block = "battery"
- ''
+ ''
}
'';
};
diff --git a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-default.nix b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-default.nix
index 4a0d4a4c4d2..3da74ac02c3 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-default.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-default.nix
@@ -28,8 +28,8 @@ with lib;
[[block]]
block = "memory"
display_type = "memory"
- format_mem = "{Mup}%"
- format_swap = "{SUp}%"
+ format_mem = "{mem_used_percents}"
+ format_swap = "{swap_used_percents}"
[[block]]
block = "cpu"
@@ -47,7 +47,7 @@ with lib;
block = "time"
format = "%a %d/%m %R"
interval = 60
- ''
+ ''
}
'';
};
diff --git a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-extra-settings.nix b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-extra-settings.nix
index 4a0442732bc..114edb99309 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-extra-settings.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/i3status-rust/with-extra-settings.nix
@@ -191,7 +191,7 @@ with lib;
[theme.overrides]
idle_bg = "#123456"
idle_fg = "#abcdef"
- ''
+ ''
}
'';
};
diff --git a/infra/libkookie/home-manager/tests/modules/programs/mu/basic-configuration.nix b/infra/libkookie/home-manager/tests/modules/programs/mu/basic-configuration.nix
new file mode 100644
index 00000000000..1e1deeead35
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/programs/mu/basic-configuration.nix
@@ -0,0 +1,24 @@
+{ ... }:
+
+{
+ imports = [ ../../accounts/email-test-accounts.nix ];
+
+ accounts.email.accounts = {
+ "hm@example.com" = {
+ mu.enable = true;
+ aliases = [ "foo@example.com" ];
+ };
+ };
+
+ programs.mu.enable = true;
+
+ test.stubs.mu = { };
+
+ nmt.script = ''
+ assertFileContains activate \
+ 'if [[ ! -d "/home/hm-user/.cache/mu" ]]; then'
+
+ assertFileContains activate \
+ '$DRY_RUN_CMD mu init --maildir=/home/hm-user/Mail --my-address=hm@example.com --my-address=foo@example.com $VERBOSE_ARG;'
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/programs/mu/default.nix b/infra/libkookie/home-manager/tests/modules/programs/mu/default.nix
new file mode 100644
index 00000000000..bdd8b15605b
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/programs/mu/default.nix
@@ -0,0 +1 @@
+{ mu-basic-configuration = ./basic-configuration.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-expected b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-expected
index 6c96f61f41c..74fbf6b1ae6 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-expected
+++ b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-expected
@@ -31,6 +31,7 @@ set trash='+Trash'
# Extra configuration
color status cyan default
+unset signature
# notmuch section
set nm_default_uri = "notmuch:///home/hm-user/Mail"
virtual-mailboxes "My INBOX" "notmuch://?query=tag:inbox"
diff --git a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-gpg-expected.conf b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-gpg-expected.conf
index f7763dbe663..8c5c10439e6 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-gpg-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-gpg-expected.conf
@@ -30,3 +30,4 @@ set trash='+Trash'
# Extra configuration
+unset signature
diff --git a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-msmtp-expected.conf b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-msmtp-expected.conf
index d2e2f3eeec2..8ccd3629ab0 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-msmtp-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-msmtp-expected.conf
@@ -30,3 +30,4 @@ set trash='+Trash'
# Extra configuration
color status cyan default
+unset signature
diff --git a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-no-folder-change-expected.conf b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-no-folder-change-expected.conf
index 03ea3b31af3..22fcf7884bf 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-no-folder-change-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/neomutt/hm-example.com-no-folder-change-expected.conf
@@ -28,3 +28,4 @@ set trash='+Trash'
# Extra configuration
+unset signature
diff --git a/infra/libkookie/home-manager/tests/modules/programs/neovim/plugin-config.nix b/infra/libkookie/home-manager/tests/modules/programs/neovim/plugin-config.nix
index f4f81d8d32b..5c26abe883d 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/neovim/plugin-config.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/neovim/plugin-config.nix
@@ -20,6 +20,7 @@ with lib;
'';
}
];
+ extraLuaPackages = [ pkgs.lua51Packages.luautf8 ];
};
nmt.script = ''
diff --git a/infra/libkookie/home-manager/tests/modules/programs/nnn/nnn.nix b/infra/libkookie/home-manager/tests/modules/programs/nnn/nnn.nix
index aeb7d3fc513..7a01fd8540f 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/nnn/nnn.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/nnn/nnn.nix
@@ -24,6 +24,8 @@
test.stubs = {
nnnDummy.buildScript = ''
+ runHook preInstall
+
mkdir -p "$out/bin"
touch "$out/bin/nnn"
chmod +x "$out/bin/nnn"
@@ -40,17 +42,13 @@
script = ''
assertDirectoryExists home-files/.config/nnn/plugins
- assertFileRegex \
- home-path/bin/nnn \
- "^export NNN_BMS='D:~/Downloads;d:~/Documents;p:~/Pictures;v:~/Videos'\''${NNN_BMS:+':'}\$NNN_BMS$"
-
- assertFileRegex \
- home-path/bin/nnn \
- "^export NNN_PLUG='c:fzcd;f:finder;v:imgview'\''${NNN_PLUG:+':'}\$NNN_PLUG$"
+ for bookmark in 'export NNN_BMS' '~/Downloads' '~/Documents' '~/Pictures' '~/Videos'; do
+ assertFileRegex home-path/bin/nnn "$bookmark"
+ done
- assertFileRegex \
- home-path/bin/nnn \
- "/nix/store/.*-"{foo,bar}"/bin"
+ for plugin in 'export NNN_PLUG' 'fzcd' 'finder' 'imgview'; do
+ assertFileRegex home-path/bin/nnn "$plugin"
+ done
'';
};
};
diff --git a/infra/libkookie/home-manager/tests/modules/programs/pandoc/output-expected b/infra/libkookie/home-manager/tests/modules/programs/pandoc/output-expected
index ef1a5e4c1ea..390e82099c8 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/pandoc/output-expected
+++ b/infra/libkookie/home-manager/tests/modules/programs/pandoc/output-expected
@@ -1,2 +1,5 @@
-Pandoc (Meta {unMeta = fromList [("author",MetaString "John Doe")]})
-[]
+Pandoc
+ Meta
+ { unMeta = fromList [ ( "author" , MetaString "John Doe" ) ]
+ }
+ []
diff --git a/infra/libkookie/home-manager/tests/modules/programs/pubs/default.nix b/infra/libkookie/home-manager/tests/modules/programs/pubs/default.nix
new file mode 100644
index 00000000000..db68bb1180d
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/programs/pubs/default.nix
@@ -0,0 +1 @@
+{ pubs-example-settings = ./pubs-example-settings.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc b/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc
new file mode 100644
index 00000000000..ba1fa88ff7f
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc
@@ -0,0 +1,19 @@
+[main]
+pubsdir = ~/.pubs
+docsdir = ~/.pubs/doc
+doc_add = link
+open_cmd = xdg-open
+
+[plugins]
+active = git,alias
+
+[[alias]]
+
+[[[la]]]
+command = list -a
+description = lists papers in lexicographic order
+
+[[git]]
+quiet = True
+manual = False
+force_color = False
diff --git a/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings.nix b/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings.nix
new file mode 100644
index 00000000000..59f2280093f
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/programs/pubs/pubs-example-settings.nix
@@ -0,0 +1,36 @@
+{ config, lib, pkgs, ... }:
+
+{
+ programs.pubs = {
+ enable = true;
+
+ extraConfig = ''
+ [main]
+ pubsdir = ~/.pubs
+ docsdir = ~/.pubs/doc
+ doc_add = link
+ open_cmd = xdg-open
+
+ [plugins]
+ active = git,alias
+
+ [[alias]]
+
+ [[[la]]]
+ command = list -a
+ description = lists papers in lexicographic order
+
+ [[git]]
+ quiet = True
+ manual = False
+ force_color = False
+ '';
+ };
+
+ test.stubs.pubs = { };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.pubsrc ${./pubs-example-settings-expected-pubsrc}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/programs/taskwarrior/taskwarrior.nix b/infra/libkookie/home-manager/tests/modules/programs/taskwarrior/taskwarrior.nix
index 98d0a35448f..f21198f5732 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/taskwarrior/taskwarrior.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/taskwarrior/taskwarrior.nix
@@ -21,9 +21,9 @@ with lib;
test.stubs.taskwarrior = { };
nmt.script = ''
- assertFileExists home-files/.config/task/taskrc
- assertFileContent home-files/.config/task/taskrc ${
- pkgs.writeText "taskwarrior.expected" ''
+ assertFileExists home-files/.config/task/home-manager-taskrc
+ assertFileContent home-files/.config/task/home-manager-taskrc ${
+ pkgs.writeText "taskwarrior.home-conf.expected" ''
data.location=/some/data/location
include dark-violets-256.theme
diff --git a/infra/libkookie/home-manager/tests/modules/programs/tmux/disable-confirmation-prompt.conf b/infra/libkookie/home-manager/tests/modules/programs/tmux/disable-confirmation-prompt.conf
index 222f733d5f3..e97a94d192a 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/tmux/disable-confirmation-prompt.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/tmux/disable-confirmation-prompt.conf
@@ -19,8 +19,8 @@ set -g mode-keys emacs
-bind-key & kill-window
-bind-key x kill-pane
+bind-key -N "Kill the current window" & kill-window
+bind-key -N "Kill the current pane" x kill-pane
setw -g aggressive-resize off
diff --git a/infra/libkookie/home-manager/tests/modules/programs/tmux/emacs-with-plugins.conf b/infra/libkookie/home-manager/tests/modules/programs/tmux/emacs-with-plugins.conf
index 97e226316f4..d0150192524 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/tmux/emacs-with-plugins.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/tmux/emacs-with-plugins.conf
@@ -10,8 +10,8 @@ setw -g pane-base-index 0
new-session
-bind v split-window -h
-bind s split-window -v
+bind -N "Split the pane into two, left and right" v split-window -h
+bind -N "Split the pane into two, top and bottom" s split-window -v
set -g status-keys emacs
diff --git a/infra/libkookie/home-manager/tests/modules/programs/tmux/prefix.conf b/infra/libkookie/home-manager/tests/modules/programs/tmux/prefix.conf
index 31880300236..831ec3b0ecd 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/tmux/prefix.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/tmux/prefix.conf
@@ -20,7 +20,8 @@ set -g mode-keys emacs
# rebind main key: C-a
unbind C-b
set -g prefix C-a
-bind C-a send-prefix
+bind -N "Send the prefix key through to the application" \
+ C-a send-prefix
diff --git a/infra/libkookie/home-manager/tests/modules/programs/tmux/shortcut-without-prefix.conf b/infra/libkookie/home-manager/tests/modules/programs/tmux/shortcut-without-prefix.conf
index a8bc59cbb83..4fd89ad242a 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/tmux/shortcut-without-prefix.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/tmux/shortcut-without-prefix.conf
@@ -20,7 +20,8 @@ set -g mode-keys emacs
# rebind main key: C-a
unbind C-b
set -g prefix C-a
-bind a send-prefix
+bind -N "Send the prefix key through to the application" \
+ a send-prefix
bind C-a last-window
diff --git a/infra/libkookie/home-manager/tests/modules/programs/tmux/vi-all-true.conf b/infra/libkookie/home-manager/tests/modules/programs/tmux/vi-all-true.conf
index de1cbe06ebc..6a6fd611475 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/tmux/vi-all-true.conf
+++ b/infra/libkookie/home-manager/tests/modules/programs/tmux/vi-all-true.conf
@@ -10,8 +10,8 @@ setw -g pane-base-index 0
new-session
-bind v split-window -h
-bind s split-window -v
+bind -N "Split the pane into two, left and right" v split-window -h
+bind -N "Split the pane into two, top and bottom" s split-window -v
set -g status-keys vi
diff --git a/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.nix b/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.nix
index 624ab5039bd..dc7a620fab3 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.nix
@@ -17,9 +17,10 @@ with lib;
assertPathNotExists home-files/.config/waybar/config
assertPathNotExists home-files/.config/waybar/style.css
- assertFileContent \
- home-files/.config/systemd/user/waybar.service \
- ${./systemd-with-graphical-session-target.service}
+ serviceFile=$(normalizeStorePaths home-files/.config/systemd/user/waybar.service)
+ assertFileContent "$serviceFile" ${
+ ./systemd-with-graphical-session-target.service
+ }
'';
};
}
diff --git a/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.service b/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.service
index a954207d3c1..e1343da8a81 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.service
+++ b/infra/libkookie/home-manager/tests/modules/programs/waybar/systemd-with-graphical-session-target.service
@@ -2,7 +2,7 @@
WantedBy=sway-session.target
[Service]
-ExecReload=kill -SIGUSR2 $MAINPID
+ExecReload=/nix/store/00000000000000000000000000000000-coreutils/bin/kill -SIGUSR2 $MAINPID
ExecStart=@waybar@/bin/waybar
KillMode=mixed
Restart=on-failure
diff --git a/infra/libkookie/home-manager/tests/modules/programs/zsh/session-variables.nix b/infra/libkookie/home-manager/tests/modules/programs/zsh/session-variables.nix
index 638b41c9f45..f6f795f79c8 100644
--- a/infra/libkookie/home-manager/tests/modules/programs/zsh/session-variables.nix
+++ b/infra/libkookie/home-manager/tests/modules/programs/zsh/session-variables.nix
@@ -16,9 +16,9 @@ with lib;
test.stubs.zsh = { };
nmt.script = ''
- assertFileExists home-files/.zshrc
- assertFileRegex home-files/.zshrc 'export V1="v1"'
- assertFileRegex home-files/.zshrc 'export V2="v2-v1"'
+ assertFileExists home-files/.zshenv
+ assertFileRegex home-files/.zshenv 'export V1="v1"'
+ assertFileRegex home-files/.zshenv 'export V2="v2-v1"'
'';
};
}
diff --git a/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.nix b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.nix
new file mode 100644
index 00000000000..34c6d533b8c
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.nix
@@ -0,0 +1,45 @@
+{ ... }:
+
+{
+ services.espanso = {
+ enable = true;
+ settings = {
+ matches = [
+ { # Simple text replacement
+ trigger = ":espanso";
+ replace = "Hi there!";
+ }
+ { # Dates
+ trigger = ":date";
+ replace = "{{mydate}}";
+ vars = [{
+ name = "mydate";
+ type = "date";
+ params = { format = "%m/%d/%Y"; };
+ }];
+ }
+ { # Shell commands
+ trigger = ":shell";
+ replace = "{{output}}";
+ vars = [{
+ name = "output";
+ type = "shell";
+ params = { cmd = "echo Hello from your shell"; };
+ }];
+ }
+ ];
+ };
+ };
+
+ test.stubs.espanso = { };
+
+ nmt.script = ''
+ serviceFile=home-files/.config/systemd/user/espanso.service
+ assertFileExists "$serviceFile"
+ assertFileContent "$serviceFile" ${./basic-configuration.service}
+
+ configFile=home-files/.config/espanso/default.yml
+ assertFileExists "$configFile"
+ assertFileContent "$configFile" ${./basic-configuration.yaml}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.service b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.service
new file mode 100644
index 00000000000..593196e5952
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.service
@@ -0,0 +1,10 @@
+[Install]
+WantedBy=default.target
+
+[Service]
+ExecStart=@espanso@/bin/espanso daemon
+Restart=on-failure
+Type=exec
+
+[Unit]
+Description=Espanso: cross platform text expander in Rust
diff --git a/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.yaml b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.yaml
new file mode 100644
index 00000000000..3789df04b0a
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/espanso/basic-configuration.yaml
@@ -0,0 +1,17 @@
+matches:
+- replace: Hi there!
+ trigger: :espanso
+- replace: '{{mydate}}'
+ trigger: :date
+ vars:
+ - name: mydate
+ params:
+ format: '%m/%d/%Y'
+ type: date
+- replace: '{{output}}'
+ trigger: :shell
+ vars:
+ - name: output
+ params:
+ cmd: echo Hello from your shell
+ type: shell
diff --git a/infra/libkookie/home-manager/tests/modules/services/espanso/default.nix b/infra/libkookie/home-manager/tests/modules/services/espanso/default.nix
new file mode 100644
index 00000000000..5df5fa3f1bd
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/espanso/default.nix
@@ -0,0 +1 @@
+{ espanso-basic-configuration = ./basic-configuration.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/services/fusuma/default.nix b/infra/libkookie/home-manager/tests/modules/services/fusuma/default.nix
new file mode 100644
index 00000000000..74024b8b914
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/fusuma/default.nix
@@ -0,0 +1,4 @@
+{
+ fusuma-example-settings = ./settings.nix;
+ fusuma-systemd-user-service = ./service.nix;
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-service.service b/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-service.service
new file mode 100644
index 00000000000..a86627f4c59
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-service.service
@@ -0,0 +1,11 @@
+[Install]
+WantedBy=graphical-session.target
+
+[Service]
+Environment=PATH=@coreutils@/bin:@xdotool@/bin
+ExecStart=@fusuma@/bin/fusuma -c /home/hm-user/.config/fusuma/config.yaml
+
+[Unit]
+After=graphical-session-pre.target
+Description=Fusuma services
+PartOf=graphical-session.target
diff --git a/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-settings.yaml b/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-settings.yaml
new file mode 100644
index 00000000000..b02be48adf9
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/fusuma/expected-settings.yaml
@@ -0,0 +1,12 @@
+interval:
+ swipe: 7
+swipe:
+ 3:
+ left:
+ command: xdotool key ctrl+alt+Right
+ 4:
+ left:
+ command: xdotool key ctrl+shift+alt+Right
+threshold:
+ swipe: 1
+
diff --git a/infra/libkookie/home-manager/tests/modules/services/fusuma/service.nix b/infra/libkookie/home-manager/tests/modules/services/fusuma/service.nix
new file mode 100644
index 00000000000..d02a75f52ee
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/fusuma/service.nix
@@ -0,0 +1,19 @@
+{ config, ... }:
+
+{
+ services.fusuma = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { outPath = "@fusuma@"; };
+ extraPackages = [
+ (config.lib.test.mkStubPackage { outPath = "@coreutils@"; })
+ (config.lib.test.mkStubPackage { outPath = "@xdotool@"; })
+ ];
+ settings = { };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/systemd/user/fusuma.service \
+ ${./expected-service.service}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/fusuma/settings.nix b/infra/libkookie/home-manager/tests/modules/services/fusuma/settings.nix
new file mode 100644
index 00000000000..303a132725e
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/fusuma/settings.nix
@@ -0,0 +1,24 @@
+{ config, ... }:
+
+{
+ services.fusuma = {
+ enable = true;
+ package = config.lib.test.mkStubPackage { outPath = "@fusuma@"; };
+ extraPackages = [ (config.lib.test.mkStubPackage { }) ];
+
+ settings = {
+ threshold = { swipe = 1; };
+ interval = { swipe = 7; };
+ swipe = {
+ "3" = { left = { command = "xdotool key ctrl+alt+Right"; }; };
+ "4" = { left = { command = "xdotool key ctrl+shift+alt+Right"; }; };
+ };
+ };
+ };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/fusuma/config.yaml \
+ ${./expected-settings.yaml}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.conf b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.conf
new file mode 100644
index 00000000000..54d6059fa80
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.conf
@@ -0,0 +1,11 @@
+music_directory "/home/hm-user/music"
+playlist_directory "/home/hm-user/.local/share/mpd/playlists"
+db_file "/home/hm-user/.local/share/mpd/tag_cache"
+
+state_file "/home/hm-user/.local/share/mpd/state"
+sticker_file "/home/hm-user/.local/share/mpd/sticker.sql"
+
+bind_to_address "127.0.0.1"
+
+
+
diff --git a/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.nix b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.nix
new file mode 100644
index 00000000000..c1f288980f0
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.nix
@@ -0,0 +1,19 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+ services.mpd.enable = true;
+
+ test.stubs.mpd = { };
+
+ nmt.script = ''
+ serviceFile=$(normalizeStorePaths home-files/.config/systemd/user/mpd.service)
+ assertFileContent "$serviceFile" ${./basic-configuration.service}
+
+ confFile=$(grep -o \
+ '/nix/store/.*-mpd.conf' \
+ $TESTED/home-files/.config/systemd/user/mpd.service)
+ assertFileContent "$confFile" ${./basic-configuration.conf}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.service b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.service
new file mode 100644
index 00000000000..fd44042a9b9
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/mpd/basic-configuration.service
@@ -0,0 +1,13 @@
+[Install]
+WantedBy=default.target
+
+[Service]
+Environment=PATH=/home/hm-user/.nix-profile/bin
+ExecStart=@mpd@/bin/mpd --no-daemon /nix/store/00000000000000000000000000000000-mpd.conf
+ExecStartPre=/nix/store/00000000000000000000000000000000-bash/bin/bash -c "/nix/store/00000000000000000000000000000000-coreutils/bin/mkdir -p '/home/hm-user/.local/share/mpd' '/home/hm-user/.local/share/mpd/playlists'"
+Type=notify
+
+[Unit]
+After=network.target
+After=sound.target
+Description=Music Player Daemon
diff --git a/infra/libkookie/home-manager/tests/modules/services/mpd/default.nix b/infra/libkookie/home-manager/tests/modules/services/mpd/default.nix
new file mode 100644
index 00000000000..22d1638e537
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/mpd/default.nix
@@ -0,0 +1 @@
+{ mpd-basic-configuration = ./basic-configuration.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/services/picom/default.nix b/infra/libkookie/home-manager/tests/modules/services/picom/default.nix
new file mode 100644
index 00000000000..6437013148e
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/picom/default.nix
@@ -0,0 +1 @@
+{ picom-basic-configuration = ./picom-basic-configuration.nix; }
diff --git a/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.conf b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.conf
new file mode 100644
index 00000000000..6a7ac09aa14
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.conf
@@ -0,0 +1,33 @@
+# fading
+fading = true;
+fade-delta = 5;
+fade-in-step = 0.04;
+fade-out-step = 0.04;
+fade-exclude = ["window_type *= 'menu'","name ~= 'Firefox$'","focused = 1"];
+
+# shadows
+shadow = true;
+shadow-offset-x = -10;
+shadow-offset-y = -15;
+shadow-opacity = 0.8;
+shadow-exclude = ["window_type *= 'menu'","name ~= 'Firefox$'","focused = 1"];
+
+# opacity
+active-opacity = 1.0;
+inactive-opacity = 1.0;
+inactive-dim = 0.0;
+opacity-rule = [];
+
+wintypes:
+{
+ dock = { shadow = false; };
+ dnd = { shadow = false; };
+ popup_menu = { opacity = 1.0; };
+ dropdown_menu = { opacity = 1.0; };
+};
+
+# other options
+backend = "xrender";
+vsync = true;
+unredir-if-possible = true;
+dbe = true;
diff --git a/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.service b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.service
new file mode 100644
index 00000000000..62620502cf2
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration-expected.service
@@ -0,0 +1,12 @@
+[Install]
+WantedBy=graphical-session.target
+
+[Service]
+ExecStart=@picom@/bin/picom --config /nix/store/00000000000000000000000000000000-hm_picompicom.conf --experimental-backends
+Restart=always
+RestartSec=3
+
+[Unit]
+After=graphical-session-pre.target
+Description=Picom X11 compositor
+PartOf=graphical-session.target
diff --git a/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration.nix b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration.nix
new file mode 100644
index 00000000000..41f1ba01f47
--- /dev/null
+++ b/infra/libkookie/home-manager/tests/modules/services/picom/picom-basic-configuration.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, ... }:
+
+{
+ services.picom = {
+ enable = true;
+ fade = true;
+ fadeDelta = 5;
+ fadeSteps = [ "0.04" "0.04" ];
+ fadeExclude =
+ [ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ];
+ shadow = true;
+ shadowOffsets = [ (-10) (-15) ];
+ shadowOpacity = "0.8";
+ shadowExclude =
+ [ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ];
+ backend = "xrender";
+ vSync = true;
+ extraOptions = ''
+ unredir-if-possible = true;
+ dbe = true;
+ '';
+ experimentalBackends = true;
+ };
+
+ test.stubs.picom = { };
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/.config/picom/picom.conf \
+ ${./picom-basic-configuration-expected.conf}
+
+ serviceFile=$(normalizeStorePaths home-files/.config/systemd/user/picom.service)
+ assertFileContent \
+ "$serviceFile" \
+ ${./picom-basic-configuration-expected.service}
+ '';
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/screen-locker/no-xautolock.nix b/infra/libkookie/home-manager/tests/modules/services/screen-locker/no-xautolock.nix
index 03ab0868cb9..7ec5152b0f9 100644
--- a/infra/libkookie/home-manager/tests/modules/services/screen-locker/no-xautolock.nix
+++ b/infra/libkookie/home-manager/tests/modules/services/screen-locker/no-xautolock.nix
@@ -6,7 +6,10 @@
enable = true;
inactiveInterval = 5;
lockCmd = "${pkgs.i3lock}/bin/i3lock -n -c AA0000";
- xss-lock = { extraOptions = [ "-test" ]; };
+ xss-lock = {
+ extraOptions = [ "-test" ];
+ screensaverCycle = 5;
+ };
xautolock = { enable = false; };
};
@@ -18,7 +21,7 @@
assertFileExists $xssService
assertFileRegex $xssService 'ExecStart=.*/bin/xss-lock.*-test.*i3lock -n -c AA0000'
- assertFileRegex $xssService 'ExecStartPre=.*/xset s 300'
+ assertFileRegex $xssService 'ExecStartPre=.*/xset s 300 5'
'';
};
}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/bspwmrc b/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/bspwmrc
index 7ebb64aca3b..ba0da830a0b 100755
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/bspwmrc
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/bspwmrc
@@ -1,4 +1,6 @@
-bspc monitor 'focused' -d 'desktop 1' 'd'\''esk top'
+if [[ $(bspc query --desktops --names --monitor 'focused') == Desktop ]]; then
+ bspc monitor 'focused' -d 'desktop 1' 'd'\''esk top'
+fi
bspc config 'border_width' '2'
bspc config 'external_rules_command' '/path/to/external rules command'
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/configuration.nix b/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/configuration.nix
index 8018a3ac186..e4aec0f6cb5 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/configuration.nix
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/bspwm/configuration.nix
@@ -8,6 +8,7 @@ with lib;
enable = true;
monitors.focused =
[ "desktop 1" "d'esk top" ]; # pathological desktop names
+ alwaysResetDesktops = false;
settings = {
border_width = 2;
split_ratio = 0.52;
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/herbstluftwm/autostart b/infra/libkookie/home-manager/tests/modules/services/window-managers/herbstluftwm/autostart
index bff4f16fc42..d59da4baec9 100755
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/herbstluftwm/autostart
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/herbstluftwm/autostart
@@ -1,4 +1,4 @@
-#!/nix/store/00000000000000000000000000000000-bash-5.1-p12/bin/bash
+#!/nix/store/00000000000000000000000000000000-bash/bin/bash
shopt -s expand_aliases
# shellcheck disable=SC2142
@@ -19,7 +19,7 @@ herbstclient set frame_bg_active_color '#000000'
herbstclient set frame_gap '12'
herbstclient set frame_padding '-12'
-if @herbstluftwm@/bin/herbstclient object_tree tags.by-name | /nix/store/00000000000000000000000000000000-gnugrep-3.7/bin/grep default; then
+if @herbstluftwm@/bin/herbstclient object_tree tags.by-name | /nix/store/00000000000000000000000000000000-gnugrep/bin/grep default; then
herbstclient rename default '1'
fi
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-bar-focused-colors-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-bar-focused-colors-expected.conf
index c50f317ad97..92f23a921de 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-bar-focused-colors-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-bar-focused-colors-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ 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
@@ -66,17 +64,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -98,13 +94,6 @@ bar {
inactive_workspace #333333 #222222 #888888
urgent_workspace #2f343a #900000 #ffffff
binding_mode #2f343a #900000 #ffffff
- }
-
}
-
-
-
-
-
-
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-followmouse-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-followmouse-expected.conf
index 3d8ad0d21de..27234b96db7 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-followmouse-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-followmouse-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ 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
@@ -66,17 +64,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -90,21 +86,11 @@ bar {
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
- }
-
}
-
-
-
-
-
-
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-fonts-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-fonts-expected.conf
index 8a565bc3fc0..d85d978e07d 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-fonts-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-fonts-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ 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
@@ -66,17 +64,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:FontAwesome, Iosevka 11.500000
mode dock
hidden_state hide
@@ -90,21 +86,11 @@ bar {
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
- }
-
}
-
-
-
-
-
-
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-keybindings-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-keybindings-expected.conf
index 6c310baac92..b3b4c33dea8 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-keybindings-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-keybindings-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ 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
@@ -67,17 +65,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -91,21 +87,11 @@ bar {
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
- }
-
}
-
-
-
-
-
-
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-null-config.nix b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-null-config.nix
index 1c221319b20..f321ad49a59 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-null-config.nix
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-null-config.nix
@@ -11,6 +11,6 @@
nmt.script = ''
assertFileExists home-files/.config/i3/config
assertFileContent home-files/.config/i3/config \
- ${pkgs.writeText "expected" "\n"}
+ ${pkgs.writeText "expected" ""}
'';
}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-default-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-default-expected.conf
index d214a96b48e..d7fe4b61043 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-default-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-default-expected.conf
@@ -9,14 +9,12 @@ 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+1 workspace number 1
bindsym Mod1+0 workspace number 10
bindsym Mod1+2 workspace number 2
@@ -65,17 +63,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -89,21 +85,11 @@ bar {
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
- }
-
}
-
-
-
-
-
-
+}
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-output-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-output-expected.conf
index 9166cf9bbea..dedad29e0b1 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-output-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/i3/i3-workspace-output-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ 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
@@ -66,17 +64,15 @@ bindsym Mod1+v split v
bindsym Mod1+w layout tabbed
mode "resize" {
-bindsym Down resize grow height 10 px or 10 ppt
-bindsym Escape mode default
-bindsym Left resize shrink width 10 px or 10 ppt
-bindsym Return mode default
-bindsym Right resize grow width 10 px or 10 ppt
-bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Escape mode default
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Return mode default
+ bindsym Right resize grow width 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
}
-
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -90,24 +86,15 @@ bar {
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
- }
-
}
-
-
-
-
+}
workspace "1" output eDP
workspace "ABC" output DP
workspace "3: Test" output HDMI
workspace "!"§$%&/(){}[]=?\*#<>-_.:,;²³" output DVI
-
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bar-focused-colors.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bar-focused-colors.conf
index d55c92003fa..f8e109aab64 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bar-focused-colors.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bar-focused-colors.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,20 +69,19 @@ 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
+ 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
@@ -106,8 +103,7 @@ bar {
inactive_workspace #333333 #222222 #888888
urgent_workspace #2f343a #900000 #ffffff
binding_mode #2f343a #900000 #ffffff
- }
-
+}
}
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bindkeys-to-code.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bindkeys-to-code.conf
index 97c7271040c..ce9fac65d1d 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bindkeys-to-code.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-bindkeys-to-code.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym --to-code Mod1+1 workspace number 1
bindsym --to-code Mod1+2 workspace number 2
bindsym --to-code Mod1+3 workspace number 3
@@ -71,20 +69,19 @@ bindsym --to-code Mod1+v splitv
bindsym --to-code Mod1+w layout tabbed
mode "resize" {
-bindsym --to-code Down resize grow height 10 px
-bindsym --to-code Escape mode default
-bindsym --to-code Left resize shrink width 10 px
-bindsym --to-code Return mode default
-bindsym --to-code Right resize grow width 10 px
-bindsym --to-code Up resize shrink height 10 px
-bindsym --to-code h resize shrink width 10 px
-bindsym --to-code j resize grow height 10 px
-bindsym --to-code k resize shrink height 10 px
-bindsym --to-code l resize grow width 10 px
+ bindsym --to-code Down resize grow height 10 px
+ bindsym --to-code Escape mode default
+ bindsym --to-code Left resize shrink width 10 px
+ bindsym --to-code Return mode default
+ bindsym --to-code Right resize grow width 10 px
+ bindsym --to-code Up resize shrink height 10 px
+ bindsym --to-code h resize shrink width 10 px
+ bindsym --to-code j resize grow height 10 px
+ bindsym --to-code k resize shrink height 10 px
+ bindsym --to-code l resize grow width 10 px
}
bar {
-
font pango:monospace 8.000000
mode dock
hidden_state hide
@@ -98,16 +95,12 @@ bar {
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 "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-default.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-default.conf
index 6ef61a7a639..82cf254e5e6 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-default.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-default.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,20 +69,19 @@ 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
+ 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
@@ -98,16 +95,12 @@ bar {
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 "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-expected.conf
index 7fa4da07690..287e0322580 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,16 +69,16 @@ 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
+ 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
}
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-legacy-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-legacy-expected.conf
index c470a7c4c51..e6f308c3d0d 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-legacy-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-followmouse-legacy-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,16 +69,16 @@ 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
+ 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
}
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-modules.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-modules.conf
index c0339d716f7..99e54c841c2 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-modules.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-modules.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -83,20 +81,19 @@ hide_cursor when-typing enable
}
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
+ 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
@@ -110,16 +107,12 @@ bar {
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 "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-null-package.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-null-package.conf
index 6ef61a7a639..82cf254e5e6 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-null-package.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-null-package.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,20 +69,19 @@ 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
+ 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
@@ -98,16 +95,12 @@ bar {
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 "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-default-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-default-expected.conf
index b5c92fa627e..233e567d9f5 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-default-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-default-expected.conf
@@ -9,14 +9,12 @@ 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+9 workspace number 9
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
@@ -70,20 +68,19 @@ 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
+ 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
@@ -97,16 +94,12 @@ bar {
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 "systemctl --user import-environment; systemctl --user start sway-session.target"
diff --git a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-output-expected.conf b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-output-expected.conf
index bacb27f858b..683298b6d8f 100644
--- a/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-output-expected.conf
+++ b/infra/libkookie/home-manager/tests/modules/services/window-managers/sway/sway-workspace-output-expected.conf
@@ -9,7 +9,6 @@ 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
@@ -17,7 +16,6 @@ client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
-
bindsym Mod1+1 workspace number 1
bindsym Mod1+2 workspace number 2
bindsym Mod1+3 workspace number 3
@@ -71,20 +69,19 @@ 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
+ 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
@@ -98,16 +95,12 @@ bar {
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
- }
-
+}
}
workspace "1" output eDP
diff --git a/infra/libkookie/home-manager/tests/modules/systemd/session-variables-expected.conf b/infra/libkookie/home-manager/tests/modules/systemd/session-variables-expected.conf
deleted file mode 100644
index 65ced43ea6e..00000000000
--- a/infra/libkookie/home-manager/tests/modules/systemd/session-variables-expected.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-LOCALE_ARCHIVE_2_27=@glibcLocales@/lib/locale/locale-archive
-V_int=1
-V_str=2
diff --git a/infra/libkookie/home-manager/tests/modules/systemd/session-variables.nix b/infra/libkookie/home-manager/tests/modules/systemd/session-variables.nix
index 8722a9ab3e6..cbc348c444e 100644
--- a/infra/libkookie/home-manager/tests/modules/systemd/session-variables.nix
+++ b/infra/libkookie/home-manager/tests/modules/systemd/session-variables.nix
@@ -15,6 +15,10 @@
LOCALE_ARCHIVE_2_27=${pkgs.glibcLocales}/lib/locale/locale-archive
V_int=1
V_str=2
+ XDG_CACHE_HOME=/home/hm-user/.cache
+ XDG_CONFIG_HOME=/home/hm-user/.config
+ XDG_DATA_HOME=/home/hm-user/.local/share
+ XDG_STATE_HOME=/home/hm-user/.local/state
''
}
'';