Merge commit '778af87a981eb2bfa3566dff8c3fb510856329ef'

main
Katharina Fey 2 years ago
commit 93dffde13b
Signed by: kookie
GPG Key ID: 90734A9E619C8A6C
  1. 44
      infra/libkookie/home-manager/.github/CODEOWNERS
  2. 2
      infra/libkookie/home-manager/.github/dependabot.yml
  3. 12
      infra/libkookie/home-manager/.github/stale.yml
  4. 4
      infra/libkookie/home-manager/.github/workflows/github_pages.yml
  5. 4
      infra/libkookie/home-manager/.github/workflows/test.yml
  6. 8
      infra/libkookie/home-manager/README.md
  7. 4
      infra/libkookie/home-manager/docs/default.nix
  8. 12
      infra/libkookie/home-manager/docs/faq.adoc
  9. 12
      infra/libkookie/home-manager/docs/nix-flakes.adoc
  10. 3
      infra/libkookie/home-manager/docs/release-notes/rl-2205.adoc
  11. 15
      infra/libkookie/home-manager/docs/usage.adoc
  12. 14
      infra/libkookie/home-manager/flake.nix
  13. 6
      infra/libkookie/home-manager/format
  14. 4
      infra/libkookie/home-manager/home-manager/completion.bash
  15. 4
      infra/libkookie/home-manager/home-manager/completion.fish
  16. 10
      infra/libkookie/home-manager/home-manager/completion.zsh
  17. 31
      infra/libkookie/home-manager/home-manager/home-manager
  18. 69
      infra/libkookie/home-manager/home-manager/po/de.po
  19. 56
      infra/libkookie/home-manager/home-manager/po/es.po
  20. 169
      infra/libkookie/home-manager/home-manager/po/fa.po
  21. 56
      infra/libkookie/home-manager/home-manager/po/fr.po
  22. 56
      infra/libkookie/home-manager/home-manager/po/home-manager.pot
  23. 185
      infra/libkookie/home-manager/home-manager/po/it.po
  24. 70
      infra/libkookie/home-manager/home-manager/po/ja.po
  25. 70
      infra/libkookie/home-manager/home-manager/po/ko.po
  26. 56
      infra/libkookie/home-manager/home-manager/po/nb_NO.po
  27. 56
      infra/libkookie/home-manager/home-manager/po/pl.po
  28. 138
      infra/libkookie/home-manager/home-manager/po/pt_BR.po
  29. 56
      infra/libkookie/home-manager/home-manager/po/ru.po
  30. 56
      infra/libkookie/home-manager/home-manager/po/sv.po
  31. 92
      infra/libkookie/home-manager/home-manager/po/tr.po
  32. 56
      infra/libkookie/home-manager/home-manager/po/zh_Hans.po
  33. 56
      infra/libkookie/home-manager/home-manager/po/zh_Hant.po
  34. 4
      infra/libkookie/home-manager/modules/default.nix
  35. 16
      infra/libkookie/home-manager/modules/files.nix
  36. 29
      infra/libkookie/home-manager/modules/home-environment.nix
  37. 213
      infra/libkookie/home-manager/modules/launchd/default.nix
  38. 869
      infra/libkookie/home-manager/modules/launchd/launchd.nix
  39. 1
      infra/libkookie/home-manager/modules/lib-bash/activation-init.sh
  40. 5
      infra/libkookie/home-manager/modules/lib/booleans.nix
  41. 1
      infra/libkookie/home-manager/modules/lib/default.nix
  42. 60
      infra/libkookie/home-manager/modules/lib/maintainers.nix
  43. 43
      infra/libkookie/home-manager/modules/lib/types-dag.nix
  44. 5
      infra/libkookie/home-manager/modules/misc/dconf.nix
  45. 104
      infra/libkookie/home-manager/modules/misc/gtk.nix
  46. 61
      infra/libkookie/home-manager/modules/misc/news.nix
  47. 164
      infra/libkookie/home-manager/modules/misc/nix.nix
  48. 90
      infra/libkookie/home-manager/modules/misc/xdg-desktop-entries.nix
  49. 62
      infra/libkookie/home-manager/modules/misc/xdg-mime-apps.nix
  50. 27
      infra/libkookie/home-manager/modules/misc/xdg-user-dirs.nix
  51. 18
      infra/libkookie/home-manager/modules/misc/xdg.nix
  52. 12
      infra/libkookie/home-manager/modules/modules.nix
  53. 81
      infra/libkookie/home-manager/modules/po/de.po
  54. 73
      infra/libkookie/home-manager/modules/po/es.po
  55. 97
      infra/libkookie/home-manager/modules/po/fa.po
  56. 75
      infra/libkookie/home-manager/modules/po/fr.po
  57. 32
      infra/libkookie/home-manager/modules/po/hm-modules.pot
  58. 112
      infra/libkookie/home-manager/modules/po/it.po
  59. 75
      infra/libkookie/home-manager/modules/po/ja.po
  60. 78
      infra/libkookie/home-manager/modules/po/ko.po
  61. 73
      infra/libkookie/home-manager/modules/po/nb_NO.po
  62. 48
      infra/libkookie/home-manager/modules/po/pl.po
  63. 89
      infra/libkookie/home-manager/modules/po/pt_BR.po
  64. 101
      infra/libkookie/home-manager/modules/po/ru.po
  65. 71
      infra/libkookie/home-manager/modules/po/sv.po
  66. 87
      infra/libkookie/home-manager/modules/po/tr.po
  67. 32
      infra/libkookie/home-manager/modules/po/zh_Hans.po
  68. 32
      infra/libkookie/home-manager/modules/po/zh_Hant.po
  69. 10
      infra/libkookie/home-manager/modules/programs/atuin.nix
  70. 8
      infra/libkookie/home-manager/modules/programs/autorandr.nix
  71. 22
      infra/libkookie/home-manager/modules/programs/browserpass.nix
  72. 2
      infra/libkookie/home-manager/modules/programs/chromium.nix
  73. 39
      infra/libkookie/home-manager/modules/programs/eww.nix
  74. 1
      infra/libkookie/home-manager/modules/programs/foot.nix
  75. 45
      infra/libkookie/home-manager/modules/programs/git.nix
  76. 82
      infra/libkookie/home-manager/modules/programs/gitui.nix
  77. 200
      infra/libkookie/home-manager/modules/programs/gpg.nix
  78. 7
      infra/libkookie/home-manager/modules/programs/himalaya.nix
  79. 4
      infra/libkookie/home-manager/modules/programs/i3status-rust.nix
  80. 26
      infra/libkookie/home-manager/modules/programs/irssi.nix
  81. 52
      infra/libkookie/home-manager/modules/programs/just.nix
  82. 6
      infra/libkookie/home-manager/modules/programs/keychain.nix
  83. 6
      infra/libkookie/home-manager/modules/programs/kitty.nix
  84. 11
      infra/libkookie/home-manager/modules/programs/lf.nix
  85. 2
      infra/libkookie/home-manager/modules/programs/mbsync.nix
  86. 4
      infra/libkookie/home-manager/modules/programs/mpv.nix
  87. 8
      infra/libkookie/home-manager/modules/programs/mu.nix
  88. 2
      infra/libkookie/home-manager/modules/programs/ncmpcpp.nix
  89. 15
      infra/libkookie/home-manager/modules/programs/neomutt.nix
  90. 75
      infra/libkookie/home-manager/modules/programs/neovim.nix
  91. 2
      infra/libkookie/home-manager/modules/programs/newsboat.nix
  92. 6
      infra/libkookie/home-manager/modules/programs/offlineimap.nix
  93. 60
      infra/libkookie/home-manager/modules/programs/pubs.nix
  94. 31
      infra/libkookie/home-manager/modules/programs/pylint.nix
  95. 70
      infra/libkookie/home-manager/modules/programs/sioyek.nix
  96. 12
      infra/libkookie/home-manager/modules/programs/ssh.nix
  97. 2
      infra/libkookie/home-manager/modules/programs/starship.nix
  98. 20
      infra/libkookie/home-manager/modules/programs/taskwarrior.nix
  99. 65
      infra/libkookie/home-manager/modules/programs/tiny.nix
  100. 36
      infra/libkookie/home-manager/modules/programs/tmux.nix
  101. Some files were not shown because too many files have changed in this diff Show More

@ -7,6 +7,8 @@
/modules/i18n/input-method @Kranzes
/tests/modules/i18n/input-method @Kranzes
/modules/launchd @midchildan
/modules/misc/dconf.nix @rycee
/modules/misc/fontconfig.nix @rycee
@ -19,6 +21,9 @@
/modules/misc/news.nix @rycee
/modules/misc/nix.nix @polykernel
/tests/modules/misc/nix @polykernel
/modules/misc/nixpkgs-disabled.nix @thiagokokada
/modules/misc/numlock.nix @evanjs
@ -76,6 +81,8 @@
/modules/programs/emacs.nix @rycee
/modules/programs/eww.nix @mainrs
/modules/programs/exa.nix @kalhauge
/modules/programs/firefox.nix @rycee
@ -83,11 +90,17 @@
/modules/programs/foot.nix @plabadens
/tests/modules/programs/foot @plabadens
/modules/services/fusuma.nix @iosmanthus
/tests/modules/services/fusuma @iosmanthus
/modules/programs/gh.nix @Gerschtli @berbiche
/tests/modules/programs/gh @Gerschtli @berbiche
/modules/programs/git.nix @rycee
/modules/programs/gitui/gitui.nix @mifom
/modules/programs/gitui/default_key_config.ron @mifom
/modules/programs/gnome-terminal.nix @kamadorueda @rycee
/modules/programs/go.nix @rvolosatovs
@ -112,6 +125,8 @@
/modules/programs/java.nix @ShamrockLee
/modules/programs/just.nix @maximsmol
/modules/programs/keychain.nix @marsam
/modules/programs/kodi.nix @dwagenk
@ -192,6 +207,11 @@
/modules/programs/powerline-go.nix @DamienCassou
/modules/programs/pubs.nix @loicreynier
/tests/modules/programs/pubs @loicreynier
/modules/programs/pylint.nix @florpe
/modules/programs/rbw.nix @ambroisie
/tests/modules/programs/rbw @ambroisie
@ -214,6 +234,8 @@
/modules/programs/senpai.nix @malte-v
/modules/programs/sioyek.nix @podocarp
/modules/programs/sm64ex.nix @ivarwithoutbones
/tests/modules/programs/sm64ex @ivarwithoutbones
@ -229,6 +251,8 @@
/modules/programs/timidity.nix @amesgen
/modules/programs/tiny.nix @kmaasrud
/modules/programs/topgrade.nix @msfjarvis
/tests/modules/programs/topgrade @msfjarvis
@ -245,6 +269,8 @@
/modules/programs/zathura.nix @rprospero
/modules/programs/zellij.nix @mainrs
/modules/programs/zoxide.nix @marsam
/modules/programs/zsh/prezto.nix @NickHu
@ -274,6 +300,8 @@
/modules/services/etesync-dav.nix @Valodim
/modules/services/espanso.nix @lucasew
/modules/services/flameshot.nix @moredhel
/modules/services/fluidsynth.nix @Valodim
@ -316,6 +344,8 @@
/modules/services/mpdris2.nix @pjones
/modules/services/mpd-discord-rpc.nix @Kranzes
/modules/services/mpris-proxy.nix @ThibautMarty
/modules/services/muchsync.nix @pacien
@ -354,8 +384,8 @@
/modules/services/redshift-gammastep @rycee @petabyteboy @thiagokokada
/tests/modules/redshift-gammastep @thiagokokada
/modules/services/screen-locker.nix @jrobsonchase
/tests/modules/services/screen-locker @jrobsonchase
/modules/services/screen-locker.nix @jrobsonchase @rszamszur
/tests/modules/services/screen-locker @jrobsonchase @rszamszur
/modules/services/status-notifier-watcher.nix @pltanton
@ -383,13 +413,13 @@
/modules/services/window-managers/herbstluftwm @olmokramer
/tests/modules/services/window-managers/herbstluftwm @olmokramer
/modules/services/window-managers/i3-sway/i3.nix @sumnerevans
/tests/modules/services/window-managers/i3 @sumnerevans
/modules/services/window-managers/i3-sway/i3.nix @sumnerevans @sebtm
/tests/modules/services/window-managers/i3 @sumnerevans @sebtm
/modules/services/window-managers/i3-sway/lib @sumnerevans
/modules/services/window-managers/i3-sway/lib @sumnerevans @sebtm
/modules/services/window-managers/i3-sway/sway.nix @alexarice @sumnerevans
/tests/modules/services/window-managers/sway @sumnerevans
/modules/services/window-managers/i3-sway/sway.nix @alexarice @sumnerevans @sebtm
/tests/modules/services/window-managers/sway @sumnerevans @sebtm
/modules/services/window-managers/i3-sway/swaynag.nix @polykernel

@ -10,7 +10,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "release-21.05"
target-branch: "release-21.11"
schedule:
interval: "weekly"
commit-message:

@ -1,14 +1,14 @@
# Configuration for probot-stale - https://github.com/probot/stale
daysUntilStale: 90
daysUntilClose: 7
daysUntilClose: false
staleLabel: "status: stale"
closeComment: false
issues:
markComment: |
<p>
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.
<b>Please read the relevant sections below before commenting.</b>
</p>
@ -36,10 +36,7 @@ issues:
<details>
<summary><b>Memorandum on closing issues</b></summary>
<p>
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.
</p>
<p>
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.
</p>
@ -49,7 +46,6 @@ pulls:
<p>
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.
<b>Please read the relevant sections below before commenting.</b>
</p>

@ -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

@ -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

@ -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

@ -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; };

@ -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]

@ -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" <sub-commands>
$ home-manager --extra-experimental-features "nix-command flakes" <sub-commands>
----
* 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 <flake-uri>#homeConfigurations.jdoe.activationPackage
$ "$(nix path-info <flake-uri>#homeConfigurations.jdoe.activationPackage)"/bin/activate
$ "$(nix path-info <flake-uri>#homeConfigurations.jdoe.activationPackage)"/activate
----
+
Substitute `<flake-uri>` with the flake URI of the configuration flake.
If `flake.nix` resides in `~/.config/nixpkgs`,
`<flake-uri>` 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 '<flake-uri>#jdoe'
+
once home-manager is installed.
+

@ -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

@ -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
----

@ -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; };

@ -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 {} +

@ -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.

@ -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"

@ -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

@ -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
;;

@ -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 <github619064@zerotask.net>\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] <tennox@posteo.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/home-manager/cli/"
"de/>\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.

@ -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 <robert@rycee.net>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/home-manager/cli/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\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 "Archivo de configuración no encontrado en %s"
#: home-manager/home-manager:62
#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Archivo de configuración no encontrado. Por favor cree uno en %s"
#: home-manager/home-manager:105
#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "No se pudo inspeccionar las opciones de la configuración flake"
#: home-manager/home-manager:145
#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "No se pudo instanciar una configuración 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\"."
@ -49,94 +49,94 @@ msgstr[1] ""
"Hay %d noticias relevantes no leídas.\n"
"Léalas ejecutando el comando \"%s news\"."
#: home-manager/home-manager:234
#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuración \"news.display\" no reconocida \"%s\"."
#: home-manager/home-manager:241
#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Defina la variable de ambiente $EDITOR"
#: home-manager/home-manager:256
#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "No se puede ejecutar en un directorio de sólo lectura"
#: home-manager/home-manager:338
#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "No existe la generación con ID %s"
#: home-manager/home-manager:340
#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "No se pudo borrar la generación actual %s"
#: home-manager/home-manager:342
#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Borrando generación %s"
#: home-manager/home-manager:368
#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "No se encontraron generaciones para expirar"
#: home-manager/home-manager:378
#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "No se encontró ningún paquete home-manager instalado."
#: home-manager/home-manager:435
#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Argumento desconocido %s"
#: home-manager/home-manager:450
#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Home Manager será borrado del sistema."
#: home-manager/home-manager:453
#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Este es un simulacro, nada será realmente desinstalado."
#: home-manager/home-manager:457
#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Desinstalar Home Manager?"
#: home-manager/home-manager:462
#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Cambiando a configuración vacía de Home Manager..."
#: home-manager/home-manager:474
#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Bien!"
#: home-manager/home-manager:481
#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Borrar todas las generaciones de Home Manager?"
#: home-manager/home-manager:488
#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Ahora todas las generaciones son aptas para recolección de basura."
#: home-manager/home-manager:491
#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr ""
"Dejando generaciones aunque podrían aún ser borradas por el recolector de "
"basura."
#: 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 desinstalado pero no se ha modificado home.nix."
#: home-manager/home-manager:646
#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: opción desconocida '%s'"
#: home-manager/home-manager:647
#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Ejecute '%s --help' para ver ayuda"
#: home-manager/home-manager:681
#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera un argumento pero se dieron %d."
#: home-manager/home-manager:703
#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Comando desconocido %s"

@ -0,0 +1,169 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Home Manager contributors
# This file is distributed under the same license as the Home Manager package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 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 <mobasherartin.icm@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/home-manager/cli/"
"fa/>\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 ""

@ -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 <adrien.mathieu.net@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/home-manager/cli/"
@ -19,25 +19,25 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 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"

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

@ -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 <EMAIL@ADDRESS>, 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 <mceyes@protonmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/home-manager/cli/"
"it/>\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."

@ -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 <hemangandhi@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/home-manager/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11-dev\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\"."
@ -46,92 +46,96 @@ msgstr[0] ""
"未読の関連ニュースが%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 "読み込み専用ディレクトリ内ではbuild(作成)できません"
#: home-manager/home-manager:338
#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "ID %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 "これはdry run (予行練習)で、実際にはアンインストールは行われません。"
#: 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 "世代を残していますが、それらはガベージコレクションで回収されるかもしれません。"
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はそのまま残してあります。"
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"
@ -157,7 +161,8 @@ msgstr ""
"\n"
" %s\n"
"\n"
"でHome Managerの設定を編集することができます。利用可能なオプションを見るには\n"
"でHome Managerの設定を編集することができます。利用可能なオプションを見るに"
"は\n"
"'man home-configuration.nix' を実行してください。"
#. translators: The "%s" specifier will be replaced by a URL.
@ -169,7 +174,8 @@ msgid ""
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
"うあ、インストールに失敗しました!もしこのエラーがHome Managerの欠陥のせいで生じたようなら、\n"
"うあ、インストールに失敗しました!もしこのエラーがHome Managerの欠陥のせいで"
"生じたようなら、\n"
"\n"
" %s\n"
"\n"

@ -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-30 21:50+0000\n"
"Last-Translator: 박수원 <bboxone@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/home-manager/cli/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11-dev\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\"."
@ -46,92 +46,96 @@ msgstr[0] ""
"읽지 않은 관련된 뉴스 항목들이 %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 "ID %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: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: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 "세대들을 그대로 놔두지만 그들은 여전히 쓰레기 수집(가비지 컬렉션) 될 수 있습니다."
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.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 개가 입력되었습니다."
msgstr ""
"expire-generations 명령어는 매개변수가 한 개 필요한데, %d 개가 입력되었습니"
"다."
#: home-manager/home-manager:703
#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "알 수 없는 명령어: %s"
@ -157,7 +161,8 @@ msgstr ""
"\n"
" %s\n"
"\n"
"파일을 수정해서 홈 매니저를 설정할 수 있습니다. 'man home-configuration.nix'를\n"
"파일을 수정해서 홈 매니저를 설정할 수 있습니다. 'man home-configuration."
"nix'를\n"
"실행해서 가능한 모든 옵션을 살펴보십시오."
#. translators: The "%s" specifier will be replaced by a URL.
@ -177,4 +182,5 @@ msgstr ""
#: home-manager/install.nix:83
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "이 derivation은 빌드 할 수 없습니다. nix-shell을 이용해서 실행해 주십시오."
msgstr ""
"이 derivation은 빌드 할 수 없습니다. nix-shell을 이용해서 실행해 주십시오."

@ -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-13 20:50+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/home-"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10-dev\n"
#: home-manager/home-manager:43
#: home-manager/home-manager:60
msgid "No configuration file found at %s"
msgstr "Fant ingen oppsettsfil i %s"
#: home-manager/home-manager:62
#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Fant ikke noenoppsettsfil. Opprett en i %s"
#: home-manager/home-manager:105
#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "Kan ikke inspisere alternativer for et flake-oppsett"
#: home-manager/home-manager:145
#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Kan ikke igangsette flak-oppsett"
#: 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,92 +49,92 @@ msgstr[1] ""
"Det er %d uleste og relevant nyhetselementer.\n"
"Les det ved å kjøre kommandoen «%s news»."
#: home-manager/home-manager:234
#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Ukjent «news.display»-innstilling «%s»."
#: home-manager/home-manager:241
#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Sett «$EDITOR»-miljøvariabelen"
#: home-manager/home-manager:256
#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Kan ikke kjøre bygg i skrivebeskyttet mappe"
#: home-manager/home-manager:338
#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Ingen generering med ID-en %s"
#: home-manager/home-manager:340
#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Kan ikke fjerne nåværende generering %s"
#: home-manager/home-manager:342
#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Fjerner generering %s"
#: home-manager/home-manager:368
#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Ingen genereringer til utløp"
#: home-manager/home-manager:378
#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Ingen «home-manager»-pakker ser ut til å være installert."
#: home-manager/home-manager:435
#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Ukjent argument %s"
#: home-manager/home-manager:450
#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Dette vil fjerne Home Manager fra systemet ditt."
#: home-manager/home-manager:453
#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Dette er en testkjøring. Ingenting vil bli avinstallert."
#: home-manager/home-manager:457
#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Vil du avinstallere Home Manager?"
#: home-manager/home-manager:462
#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Bytter til tomt Home Manager-oppsett …"
#: home-manager/home-manager:474
#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Hurra."
#: home-manager/home-manager:481
#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Fjern alle Home Manager-genereringer?"
#: home-manager/home-manager:488
#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Alle genereringer kan nå hentes av søppelinnsamling."
#: home-manager/home-manager:491
#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr "Levner genereringer, men de kan fremdeles hentes av søppelinnsamling."
#: 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 er avinstallert, men din home.nix er levnet uforandret."
#: home-manager/home-manager:646
#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: ukjent alternativ «%s»"
#: home-manager/home-manager:647
#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Kjør «%s --help» for brukshjelp"
#: home-manager/home-manager:681
#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "«expire-generations» forventet ett argument, mottok %d."
#: home-manager/home-manager:703
#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Ukjent kommando: %s"

@ -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-29 08:48+0000\n"
"Last-Translator: Tomasz Czyż <tomasz.czyz@eskapizm.pl>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/home-manager/cli/"
@ -20,23 +20,23 @@ msgstr ""
"|| n%100>=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"

@ -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 <alexmirandamoraes@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"home-manager/cli/pt_BR/>\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."

@ -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 <chekoopa@mail.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/home-manager/cli/"
@ -20,23 +20,23 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=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"

@ -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 <robert@rycee.net>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/home-manager/cli/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 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 "Det finns ingen konfigurationsfil i %s"
#: home-manager/home-manager:62
#: home-manager/home-manager:79
msgid "No configuration file found. Please create one at %s"
msgstr "Hittade ingen konfigurationsfil. Skapa en i %s"
#: home-manager/home-manager:105
#: home-manager/home-manager:122
msgid "Can't inspect options of a flake configuration"
msgstr "Kan inte granska alternativ i en flake-konfiguration"
#: home-manager/home-manager:145
#: home-manager/home-manager:162
msgid "Can't instantiate a flake configuration"
msgstr "Kan inte instansera en flake-konfiguration"
#: 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,92 +49,92 @@ msgstr[1] ""
"Det finns %d olästa och relevanta nyheter.\n"
"Läs dem genom att köra kommandot \"%s news\"."
#: home-manager/home-manager:234
#: home-manager/home-manager:251
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Okänt \"news.display\"-värde \"%s\"."
#: home-manager/home-manager:241
#: home-manager/home-manager:258
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Vänligen tilldela miljövariablen $EDITOR"
#: home-manager/home-manager:256
#: home-manager/home-manager:273
msgid "Cannot run build in read-only directory"
msgstr "Kan inte bygga i katalog med bara läsrättigheter"
#: home-manager/home-manager:338
#: home-manager/home-manager:355
msgid "No generation with ID %s"
msgstr "Ingen generation med ID %s"
#: home-manager/home-manager:340
#: home-manager/home-manager:357
msgid "Cannot remove the current generation %s"
msgstr "Kan inte ta bort nuvarande generation %s"
#: home-manager/home-manager:342
#: home-manager/home-manager:359
msgid "Removing generation %s"
msgstr "Tar bort generation %s"
#: home-manager/home-manager:368
#: home-manager/home-manager:385
msgid "No generations to expire"
msgstr "Ingen generation att förfalla"
#: home-manager/home-manager:378
#: home-manager/home-manager:396
msgid "No home-manager packages seem to be installed."
msgstr "Paketet home-manager verkar inte vara installerat."
#: home-manager/home-manager:435
#: home-manager/home-manager:453
msgid "Unknown argument %s"
msgstr "Okänt argument %s"
#: home-manager/home-manager:450
#: home-manager/home-manager:469
msgid "This will remove Home Manager from your system."
msgstr "Detta kommer att ta bort Home Manager från ditt system."
#: home-manager/home-manager:453
#: home-manager/home-manager:472
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Detta är en testkörning, inget kommer att bli avinstallerat."
#: home-manager/home-manager:457
#: home-manager/home-manager:476
msgid "Really uninstall Home Manager?"
msgstr "Verkligen avinstallera Home Manager?"
#: home-manager/home-manager:462
#: home-manager/home-manager:481
msgid "Switching to empty Home Manager configuration..."
msgstr "Byter till tom Home Manager-konfiguration..."
#: home-manager/home-manager:474
#: home-manager/home-manager:493
msgid "Yay!"
msgstr "Hurra!"
#: home-manager/home-manager:481
#: home-manager/home-manager:500
msgid "Remove all Home Manager generations?"
msgstr "Ta bort alla Home Manager-generationer?"
#: home-manager/home-manager:488
#: home-manager/home-manager:507
msgid "All generations are now eligible for garbage collection."
msgstr "Alla generationer kan nu skräpsamlas."
#: home-manager/home-manager:491
#: home-manager/home-manager:510
msgid "Leaving generations but they may still be garbage collected."
msgstr "Låter generationer vara kvar men de kan fortfarande skräpsamlas."
#: 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 är avinstallerad men din home.nix är orörd."
#: home-manager/home-manager:646
#: home-manager/home-manager:673
msgid "%s: unknown option '%s'"
msgstr "%s: okänt val '%s'"
#: home-manager/home-manager:647
#: home-manager/home-manager:674
msgid "Run '%s --help' for usage help"
msgstr "Kör '%s --help' för användarhjälp"
#: home-manager/home-manager:681
#: home-manager/home-manager:708
msgid "expire-generations expects one argument, got %d."
msgstr "expect-generations förväntar sig ett argument, fick %d."
#: home-manager/home-manager:703
#: home-manager/home-manager:730
msgid "Unknown command: %s"
msgstr "Okänt kommando: %s"

@ -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-02-12 15:54+0000\n"
"Last-Translator: Mustafa Çalışkan <muscaln@protonmail.com>\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 <oguz@ersen.moe>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/home-manager/cli/"
"tr/>\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."

@ -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 <fungdaat31@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\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 "未在 %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\"."
@ -46,92 +46,92 @@ msgstr[0] ""
"有 %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 "没有 ID 为 %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"

@ -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-29 08:48+0000\n"
"Last-Translator: WhiredPlanck <fungdaat31@outlook.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
@ -19,23 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\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 "未在 %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\"."
@ -46,92 +46,92 @@ msgstr[0] ""
"有 %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 "沒有 ID 為 %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"

@ -21,7 +21,7 @@ let
in
fold f res res.config.warnings;
extendedLib = import ./lib/stdlib-extended.nix pkgs.lib;
extendedLib = import ./lib/stdlib-extended.nix lib;
hmModules =
import ./modules.nix {
@ -61,4 +61,6 @@ in
sort (a: b: a.time > b.time) (
filter (a: a.condition) rawModule.config.news.entries
);
inherit (module._module.args) pkgs;
}

@ -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"

@ -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##*/}"

@ -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 <citerefentry>
<refentrytitle>launchd.plist</refentrytitle><manvolnum>5</manvolnum>
</citerefentry> 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
'';
})
];
}

@ -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 <literal>launchctl(1)</literal> 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 <literal>launchctl(1)</literal> list subcommand or use the ServiceManagement framework's
<literal>SMJobCopyDictionary()</literal> 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 <literal>launchctl(1)</literal> 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 <literal>launchctl(1)</literal> will apply. See <literal>launchctl(1)</literal> 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 <literal>accept(2)</literal> 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 <literal>sysctl.conf(5)</literal> 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 <literal>sysctl.conf(5)</literal> 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 <command>launchctl</command>.
'';
};
Program = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
This key maps to the first argument of <literal>execvp(3)</literal>. 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 <literal>execvp(3)</literal>. This key is required in the absence of the Program
key. Please note: many people are confused by this key. Please read <literal>execvp(3)</literal> very carefully!
'';
};
EnableGlobbing = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
This flag causes launchd to use the <literal>glob(3)</literal> 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 <literal>vproc_transaction_begin(3)</literal> and
<literal>vproc_transaction_end(3)</literal> 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 <literal>chroot(2)</literal> 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 <literal>chdir(2)</literal> 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 <literal>umask(2)</literal> 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 <literal>initgroups(3)</literal> 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 <literal>crontab(5)</literal>. 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
<literal>stdio(3)</literal>.
'';
};
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 <literal>stdio(3)</literal>.
'';
};
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 <literal>stdio(3)</literal>.
'';
};
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 <literal>setrlimit(2)</literal>. 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 <literal>sbrk(2)</literal> 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 <literal>sysctl(3)</literal> kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResource-Limits) (HardResourceLimits)
Limits) value in addition to the <literal>setrlimit(2)</literal> 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 <literal>sysctl(3)</literal> kern.maxproc (SoftResourceLimits) or kern.maxprocperuid
(HardResourceLimits) value in addition to the <literal>setrlimit(2)</literal> 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 <literal>setrlimit(2)</literal>. 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 <literal>sbrk(2)</literal> 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 <literal>mlock(2)</literal> 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 <literal>sysctl(3)</literal> kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResource-Limits) (HardResourceLimits)
Limits) value in addition to the <literal>setrlimit(2)</literal> 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 <literal>sysctl(3)</literal> kern.maxproc (SoftResourceLimits) or kern.maxprocperuid
(HardResourceLimits) value in addition to the <literal>setrlimit(2)</literal> 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 <literal>xpc_transaction_begin(3)</literal> 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 <literal>getaddrinfo(3)</literal>.
'';
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 <literal>listen(2)</literal> or <literal>connect(2)</literal> 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 <literal>connect(2)</literal> or <literal>bind(2)</literal> to.
'';
};
SockServiceName = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
This optional key specifies the service on the node to <literal>connect(2)</literal> or <literal>bind(2)</literal> 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 <literal>socket(2)</literal>. 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 <literal>connect(2)</literal> or
<literal>bind(2)</literal> 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
<literal>mDNSResponder(8)</literal>. 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 <literal>getaddrinfo(3)</literal> 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 = {
};
}

@ -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"

@ -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";
}

@ -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; };

@ -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;
};
}

@ -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 ++ [ "<name>" ]);
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

@ -21,6 +21,11 @@ in {
visible = false;
description = ''
Whether to enable dconf settings.
</para><para>
Note, if you use NixOS then you must add
<code>programs.dconf.enable = true</code>
to your system configuration. Otherwise you will see a systemd error
message when your configuration is activated.
'';
};

@ -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 <literal>null</literal> 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 <literal>null</literal> 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;
});

@ -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'.
'';
}
];
};
}

@ -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 <filename>nix.conf</filename>.";
};
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
<link xlink:href="https://nixos.org/manual/nix/stable/#sec-conf-file"/> or
<citerefentry>
<refentrytitle>nix.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry> for avalaible options.
The value declared here will be translated directly to the key-value pairs Nix expects.
</para>
<para>
Configuration specified in <option>nix.extraOptions</option> 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 ];
}

@ -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 <literal>DESKTOP_STARTUP_ID</literal>
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 <literal>DESKTOP_STARTUP_ID</literal>
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 <literal>[Desktop Entry]</literal> section.
Extra key-value pairs to add to the <literal>[Desktop Entry]</literal> 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 "<name>";
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));

@ -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;
};
})
];
}

@ -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;

@ -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.

@ -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

@ -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 <github619064@zerotask.net>\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 <robert@rycee.net>\n"
"Language-Team: German <https://hosted.weblate.org/projects/home-manager/"
"modules/de/>\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."

@ -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 <mauricioscheffer@gmail.com>\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 <robert@rycee.net>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/home-manager/"
"modules/es/>\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."

@ -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 <EMAIL@ADDRESS>, 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 ""

@ -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 <lxh43qf2b@relay.firefox.com>\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 <robert@rycee.net>\n"
"Language-Team: French <https://hosted.weblate.org/projects/home-manager/"
"modules/fr/>\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."

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

@ -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 <EMAIL@ADDRESS>, 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 <mceyes@protonmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/home-manager/"
"modules/it/>\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:"

@ -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 <shujinarazaki@protonmail.com>\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 <robert@rycee.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/home-manager/"
"modules/ja/>\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の設定の有効化を試してみてください。"

@ -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: 박수원 <bboxone@gmail.com>\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 <robert@rycee.net>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/home-manager/"
"modules/ko/>\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"
#~ "그런 후, 다시 홈 매니저 설정을 활성화 해보세요."

@ -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 <epost@anotheragency.no>\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 <robert@rycee.net>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
"home-manager/modules/nb_NO/>\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."

@ -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 <tymoteuszdolega@gmail.com>\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 <mivon27841@shackvine.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/home-manager/"
"modules/pl/>\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:"

@ -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 <alexmirandamoraes@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"home-manager/modules/pt_BR/>\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:"

@ -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 <chekoopa@mail.ru>\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 <robert@rycee.net>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/home-manager/"
"modules/ru/>\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"
#~ "После попробуйте активировать конфигурацию снова."

@ -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 <robert@rycee.net>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/home-manager/"
"modules/sv/>\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."

@ -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 <muscaln@protonmail.com>\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 <oguz@ersen.moe>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/home-manager/"
"modules/tr/>\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:"

@ -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 <eth2net@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
@ -31,35 +31,35 @@ 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 ""
#: 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 ""
#: 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,26 +75,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 "正在启动 Home Manager 初始化程序"
#: 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 "正在使用的 Nix 版本: %s"
#: modules/lib-bash/activation-init.sh:71
#: modules/lib-bash/activation-init.sh:72
msgid "Activation variables:"
msgstr ""

@ -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: 2021-12-29 08:48+0000\n"
"Last-Translator: WhiredPlanck <fungdaat31@outlook.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
@ -31,35 +31,35 @@ 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 ""
#: 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 ""
#: 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,26 +75,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 "正在啟動 Home Manager 初始化程式"
#: 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 ""

@ -89,12 +89,16 @@ in {
};
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
source "${pkgs.bash-preexec}/share/bash/bash-preexec.sh"
eval "$(${cfg.package}/bin/atuin init bash)"
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
source "${pkgs.bash-preexec}/share/bash/bash-preexec.sh"
eval "$(${cfg.package}/bin/atuin init bash)"
fi
'';
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
eval "$(${cfg.package}/bin/atuin init zsh)"
if [[ $options[zle] = on ]]; then
eval "$(${cfg.package}/bin/atuin init zsh)"
fi
'';
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''

@ -176,6 +176,13 @@ let
}
'';
};
filter = mkOption {
type = types.nullOr (types.enum [ "bilinear" "nearest" ]);
description = "Interpolation method to be used for scaling the output.";
default = null;
example = "nearest";
};
};
};
@ -261,6 +268,7 @@ let
++ optional (config.mode != "") "mode ${config.mode}"
++ optional (config.rate != "") "rate ${config.rate}"
++ optional (config.rotate != null) "rotate ${config.rotate}"
++ optional (config.filter != null) "filter ${config.filter}"
++ optional (config.transform != null) ("transform "
+ concatMapStringsSep "," toString (flatten config.transform))
++ optional (config.scale != null)

@ -2,7 +2,9 @@
with lib;
let browsers = [ "chrome" "chromium" "firefox" "vivaldi" ];
let
cfg = config.programs.browserpass;
browsers = [ "brave" "chrome" "chromium" "firefox" "vivaldi" ];
in {
options = {
programs.browserpass = {
@ -17,10 +19,22 @@ in {
};
};
config = mkIf config.programs.browserpass.enable {
config = mkIf cfg.enable {
home.file = foldl' (a: b: a // b) { } (concatMap (x:
with pkgs.stdenv;
if x == "chrome" then
if x == "brave" then
let
dir = if isDarwin then
"Library/Application Support/BraveSoftware/Brave-Browser/NativeMessagingHosts"
else
".config/BraveSoftware/Brave-Browser/NativeMessagingHosts";
in [{
# Policies are read from `/etc/brave/policies` only
# https://github.com/brave/brave-browser/issues/19052
"${dir}/com.github.browserpass.native.json".source =
"${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json";
}]
else if x == "chrome" then
let
dir = if isDarwin then
"Library/Application Support/Google/Chrome/NativeMessagingHosts"
@ -71,6 +85,6 @@ in {
"${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json";
}]
else
throw "unknown browser ${x}") config.programs.browserpass.browsers);
throw "unknown browser ${x}") cfg.browsers);
};
}

@ -10,6 +10,7 @@ let
"google-chrome-beta"
"google-chrome-dev"
"brave"
"vivaldi"
];
browserModule = defaultPkg: name: visible:
@ -195,6 +196,7 @@ in {
google-chrome-dev =
browserModule browserPkgs.google-chrome-dev "Google Chrome Dev" false;
brave = browserModule browserPkgs.brave "Brave Browser" false;
vivaldi = browserModule browserPkgs.vivaldi "Vivaldi Browser" false;
};
config = mkMerge

@ -0,0 +1,39 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.eww;
in {
meta.maintainers = [ hm.maintainers.mainrs ];
options.programs.eww = {
enable = mkEnableOption "eww";
package = mkOption {
type = types.package;
default = pkgs.eww;
defaultText = literalExpression "pkgs.eww";
example = literalExpression "pkgs.eww";
description = ''
The eww package to install.
'';
};
configDir = mkOption {
type = types.path;
example = literalExpression "./eww-config-dir";
description = ''
The directory that gets symlinked to
<filename>$XDG_CONFIG_HOME/eww</filename>.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."eww".source = cfg.configDir;
};
}

@ -71,6 +71,7 @@ in {
Service = {
ExecStart = "${cfg.package}/bin/foot --server";
Restart = "on-failure";
OOMPolicy = "continue";
};
Install = { WantedBy = [ "graphical-session.target" ]; };

@ -239,6 +239,34 @@ in {
};
};
difftastic = {
enable = mkEnableOption "" // {
description = ''
Enable the <command>difft</command> syntax highlighter.
See <link xlink:href="https://github.com/Wilfred/difftastic" />.
'';
};
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 ];

@ -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
<filename>$XDG_CONFIG_HOME/gitui/key_config.ron</filename>.
'';
};
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
<filename>$XDG_CONFIG_HOME/gitui/theme.ron</filename>.
'';
};
};
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;
};
}

@ -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);
};
};
}

@ -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;

@ -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";

@ -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 {

@ -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 <command>just</command> 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
'';
};
}

@ -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})"

@ -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'}";
};

@ -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:

@ -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

@ -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};

@ -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 {

@ -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};

@ -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 = {

@ -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;
});

@ -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

@ -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'}";
};

@ -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
<filename>$HOME/.pubsrc</filename>.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
home.file.".pubsrc" =
mkIf (cfg.extraConfig != "") { text = cfg.extraConfig; };
};
}

@ -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;
};
}

@ -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
<filename>$XDG_CONFIG_HOME/sioyek/keys_user.config</filename>.
See <link xlink:href="https://github.com/ahrm/sioyek/blob/main/pdf_viewer/keys.config"/>.
'';
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
<filename>$XDG_CONFIG_HOME/sioyek/prefs_user.config</filename>.
See <link xlink:href="https://github.com/ahrm/sioyek/blob/main/pdf_viewer/prefs.config"/>.
'';
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 ];
}

@ -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}

@ -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
'';

@ -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
'';
};
}

@ -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 <command>tiny</command> 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
<filename>$XDG_CONFIG_HOME/tiny/config.yml</filename>. See
<link xlink:href="https://github.com/osa1/tiny/blob/master/crates/tiny/config.yml"/>
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;
};
};
}

@ -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}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save