Compare commits

..

1257 Commits

Author SHA1 Message Date
Sumner Evans
2790158226 i3status-rust: deprecate icons and theme options
Signed-off-by: Sumner Evans <me@sumnerevans.com>
2023-06-05 23:03:31 -06:00
Robert Helgesson
28614ed7a1 lib: add functions to create DAGs from lists 2023-06-05 23:08:30 +02:00
Robert Helgesson
79e03fbe24 lib: remove listOrDagOf type
It has been deprecated for a long time and should be safe to remove.
2023-06-05 23:08:29 +02:00
Olmo Kramer
24d590cc32 wezterm: add integrations for Bash and Zsh (#3934)
* wezterm: Add `enableBashIntegration` option

* wezterm: Add `enableZshIntegration` option
2023-06-05 22:46:18 +02:00
Naïm Favier
607d8fad96 i3-sway: quote output names (#4059)
They can contain spaces.
2023-06-04 15:23:23 +02:00
github-actions[bot]
57ed23cd29 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3005f20ce0aaa58169cdee57c8aa12e5f1b6e1b3' (2023-05-20)
  → 'github:nixos/nixpkgs/e635192892f5abbc2289eaac3a73cdb249abaefd' (2023-06-01)
2023-06-04 09:50:37 +02:00
Naïm Favier
221056c59f tests: fix getOutput on stubs
Setting `outputSpecified` prevents `getOutput` from descending into
outputs, which don't have an overridden `outPath`.

Additionally, use `__spliced` to permit derivations to use the dummy as
an input.
2023-06-04 09:15:14 +02:00
Nikita Pedorich
bffc49ffb2 ripgrep: remove configDir
Also minor formatting and news entry.
2023-06-04 01:12:05 +02:00
Nikita Pedorich
2951946183 ripgrep: add module (#4017)
* ripgrep: add module

* ripgrep: Apply suggestions from code review

Co-authored-by: Naïm Favier <n@monade.li>

* ripgrep: fix maintainers

Co-authored-by: Naïm Favier <n@monade.li>

* ripgrep: rename config into arguments

---------

Co-authored-by: Naïm Favier <n@monade.li>
2023-06-02 17:59:12 +02:00
Dan
3876cc613a Translate using Weblate (Ukrainian)
Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/uk/
Translation: Home Manager/Home Manager Modules
2023-06-01 00:44:11 +02:00
Mohammad Abdolirad
04f6c2925b Translate using Weblate (Persian)
Currently translated at 30.3% (10 of 33 strings)

Co-authored-by: Mohammad Abdolirad <m.abdolirad@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fa/
Translation: Home Manager/Home Manager CLI
2023-06-01 00:44:11 +02:00
gallegonovato
efed2ccd9f Translate using Weblate (Spanish)
Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/es/
Translation: Home Manager/Home Manager Modules
2023-06-01 00:44:11 +02:00
Robert Helgesson
4d8fedfd29 Translate using Weblate (Swedish)
Currently translated at 100.0% (18 of 18 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/sv/
Translation: Home Manager/Home Manager Modules
2023-06-01 00:44:11 +02:00
Hosted Weblate
76a816a896 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-06-01 00:44:11 +02:00
Naïm Favier
96078e4a93 Fix release notes (#4044) 2023-06-01 00:44:06 +02:00
Emily
53ccbe0170 fish: use babelfish for hm-session-vars.sh (#4012)
* home-environment: add `home.sessionVariablesPackage`

Allow the `hm-session-vars.sh` derivation to be referenced from other
modules, e.g. to translate it to fish with babelfish at build time.

* fish: use babelfish for `hm-session-vars.sh`

Translate `hm-session-vars.sh` to fish at system build time,
significantly decreasing shell startup time.

Based on https://github.com/NixOS/nixpkgs/pull/108947 by @kevingriffin.
2023-06-01 00:01:27 +02:00
Robert Helgesson
f1490b8caf Switch current unstable version to 23.11 2023-05-31 19:11:30 +02:00
Robert Helgesson
33ccc5c285 Switch stable branch to release-23.05 2023-05-31 19:11:29 +02:00
Robert Helgesson
b2a6cf7b59 docs: update copyright years 2023-05-31 18:36:26 +02:00
MaeIsBad
54a9d6456e waybar: merge multiple style definitions (#4038)
This is backwards compatible and allows for more flexibility(eg.
allows for defining custom waybar modules in separate nixos modules,
before merging them together)

Co-authored-by: mae <git@badat.dev>
2023-05-30 23:06:24 +02:00
Naïm Favier
9f82227b64 lib/file-type: convert executable to bool (#4036)
It doesn't make sense to pass `executable = null` to `writeTextFile`.
2023-05-30 11:21:14 +02:00
Christoph Heiss
43ed7048f6 Drop remaining CODEOWNERS reference from PR template (#4033)
The `.github/CODEOWNERS` file was dropped in #3990, so remove this
leftover.

Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2023-05-29 23:28:04 +02:00
Naïm Favier
2d963854ae ssh: don't install a client by default (#4016)
Make use of the recently added nullable `mkPackageOption` feature
to disable installing an SSH client by default: most people should use
the client provided by their system.
2023-05-27 14:11:50 +02:00
Robert Helgesson
6a19225683 home-manager: verify username and home directory
The generation activation script should be run by the user specified
in `home.username` and `home.homeDirectory`. If some other user runs
the activation script, then files may end up in the wrong place or
with the wrong owner.

This commits adds a check early in the activation script that verifies
that the running user match the user in the configuration.

Fixes #4019
2023-05-27 09:14:05 +02:00
百地 希留耶
bec196cd9b helix: improve warning message for languages option (#4023) 2023-05-26 15:35:29 +02:00
Dany Marcoux
d1f04b0f36 yt-dlp: generate config if settings or extraConfig are defined (#4018)
Previously, the config was generated only if settings were defined. In a
case where settings weren't defined, extraConfig was ignored.
2023-05-25 15:06:34 +02:00
github-actions[bot]
58eb968c21 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3e313808bd2e0a0669430787fb22e43b2f4bf8bf' (2023-05-05)
  → 'github:nixos/nixpkgs/3005f20ce0aaa58169cdee57c8aa12e5f1b6e1b3' (2023-05-20)
2023-05-23 08:43:09 +02:00
Naïm Favier
d9995d94f1 lib/file-type: fix xrefs (#4007)
Currently they all point to `home.file`.
2023-05-22 22:48:23 +02:00
Naïm Favier
ba006d7cca script-directory: fix news entry (#4010) 2023-05-22 09:53:19 +02:00
Robert Helgesson
13a74643d7 home-manager: fix error message in flake check
Before this commit, running the hasFlakeSupport function causes an
error message

    error: experimental Nix feature 'nix-command' is disabled; use
    '--extra-experimental-features nix-command' to override

when the Nix installation does not support the nix tool. The error
message should not be visible to the user since its just part of the
Flake support check.
2023-05-21 23:23:14 +02:00
Philipp Mildenberger
27ef11f021 helix: update languages.toml generation (support every option in languages.toml) (#4003)
Co-authored-by: Naïm Favier <n@monade.li>
2023-05-20 17:22:06 +02:00
Janik
b9a52ad20e script-directory: add module (#3995) 2023-05-19 10:29:27 +02:00
Maria
c10403a573 Update ssh.nix (#4000)
fix typo
2023-05-18 22:37:19 +02:00
Cynthia Fox
59659243cd PR_TEMPLATE: Note nix3 test method in checklist (#3972)
* PR_TEMPLATE: Note nix3 test method in checklist

Allows for running with the `nixpkgs` from the lock file, as well as
using a more familiar interface for users of the experimental CLI, which
would've avoided me opening #3971.

Also updates the corresponding note in `docs/contributing.adoc` to have
the correct invocation path.

* PR_TEMPLATE: `the experimental CLI` -> `Flakes`
2023-05-17 12:59:35 +02:00
Naïm Favier
e14e797041 neomutt: add missing stub in test (#3996)
Fixes tests on Darwin
2023-05-17 12:46:04 +02:00
Robert Helgesson
b7d814c574 tests: bump nmt to latest 2023-05-16 00:23:00 +02:00
Matthieu Coudron
c0deab0eff ci: autolabel PRs for aerc changes and some zsh files (#3992)
* ci: tag aerc changes with 'mail'

* ci: tag some files with 'shell' tag
2023-05-15 15:37:30 +02:00
Naïm Favier
e4272987f7 Drop CODEOWNERS 2023-05-14 12:46:21 +02:00
Naïm Favier
db3d440e26 kitty: improve error message when theme not found (#3989) 2023-05-14 12:05:10 +02:00
George Macon
6702b22b98 ssh: install an ssh client
Fixes #3667
2023-05-13 16:50:10 +02:00
Sefa Eyeoglu
e0026e16a5 fuzzel: add module 2023-05-13 15:54:34 +02:00
Markus Amano
9384997717 Translate using Weblate (Japanese)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Japanese)

Currently translated at 96.9% (32 of 33 strings)

Co-authored-by: Markus Amano <markus.a.amano@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-05-13 08:48:50 +02:00
Reiner Gerecke
130abb8dbd Translate using Weblate (German)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (German)

Currently translated at 100.0% (33 of 33 strings)

Co-authored-by: Reiner Gerecke <me@reinergerecke.de>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/de/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/de/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-05-13 08:48:50 +02:00
Robert Helgesson
eec2272999 tests: various minor cleanups 2023-05-13 00:09:52 +02:00
Robert Helgesson
19c509a6fa emacs: minor fixes 2023-05-12 23:52:19 +02:00
Robert Helgesson
1eac5febc4 translate-shell: add news entry 2023-05-12 23:49:30 +02:00
Robert Helgesson
caa47705f7 beets: minor fixes 2023-05-12 23:26:09 +02:00
Robert Helgesson
8345a3166d kitty: minor fixes 2023-05-12 23:26:06 +02:00
Erik Krieg
70c8bd08e6 zellij: disables shell integrations by default (#3981)
* zellij: disables shell integrations by default

* zellij: removes outdated comment from test
2023-05-12 13:54:26 +02:00
Sefa Eyeoglu
a835096fd2 kitty: add shellIntegration (#3759)
Kitty provides integrations for bash, fish and zsh. The new
programs.kitty.shellIntegration options allow the configuration of
these integrations.

See <https://sw.kovidgoyal.net/kitty/shell-integration> for more details.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-12 11:20:22 +02:00
Erik Krieg
cc9f65d104 zellij: adds options to integrate with zsh, bash and fish shells (#3926)
* zellij: adds options to integrate with zsh, bash and fish shells

* zellij: add tests for shell integration options

* zellij: eval setup auto start for fish integration

* zellij: use interactiveShellInit for fish integration

* zellij: fixes format issues

* zellij: enable shell integrations by default

* zellij: compresses shell integration test cases

* zellij: removes the disabled shell integration tests

* zellij: formats tests
2023-05-11 21:25:46 +02:00
Ramses
d97e8f8861 systemd: accept derivations as values for systemd options (#3974) 2023-05-11 15:50:37 +02:00
Gaétan Lepage
6be873663e ssh: add setEnv option (#3935) 2023-05-11 14:22:40 +02:00
Naïm Favier
2f6a917ade i3-sway: fix indentation of bar blocks (#3978)
The `indent` function unindents the first and last line by default, so
the `"bar {"` `"}"` wrapper should go inside the list.
2023-05-11 14:04:29 +02:00
Leix b
d991776527 taskwarrior: add package option (#3768) 2023-05-11 14:04:17 +02:00
Sefa Eyeoglu
622fa73725 beets: add mpdIntegration (#3755)
Allow configuration of mpdstats and mpdupdate plugins for Beets using
Home Manager.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-11 14:03:54 +02:00
Jian Lin
f714b17031 emacs: extend startWithUserSession to start after graphical session (#3010) 2023-05-11 13:58:37 +02:00
Mario Rodas
fa720861b5 translate-shell: add module (#3659) 2023-05-11 11:21:18 +02:00
Mario Rodas
b365342adb ledger: add structural settings option (#3661) 2023-05-11 11:20:49 +02:00
Christoph Heiss
010c269877 zsh: add package option (#3945)
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2023-05-10 17:54:34 -06:00
Nate Cox
983f8a1bb9 git-cliff: add module 2023-05-09 18:53:49 +02:00
Sefa Eyeoglu
3f3fa731ad gnome-keyring: fix pass-secret-service assertion (#3963)
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-08 13:04:12 +02:00
arcnmx
78ceec68f2 xsession: cleanup systemd variables (#3636) 2023-05-07 23:59:56 +02:00
Cynthia Fox
e34fbe1801 pass-secret-service: Add dbus file, assert (#3953)
* pass-secret-service: Add dbus file, assert

Add the dbus service file in the package folder to XDG_DATA_HOME, as
well as adding an assertion to ensure both it and `gnome-keyring` aren't
enabled at the same time.

* pass-secret-service: Add self to CODEOWNERS

* pass-secret-service: Call out conflicting module(s)

* pass-secret-service: Revert `storePath` change

Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>

* pass-secret-service: Add password-store module default changes info

* pass-secret-service: Fix default info, modularize conflict checks

Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>

* Revert "pass-secret-service: Fix default info, modularize conflict checks"

This reverts commit 851df4fe49.

* pass-secret-service: Fix default info

Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>

* pass-secret-service: Indent `storePath` description

---------

Signed-off-by: Cynthia Fox <cyntheticfox@gh0st.sh>
2023-05-07 23:44:48 +02:00
Anton Mosich
d12ca77844 atuin: Replace dead link in documentation (#3962) 2023-05-07 23:44:22 +02:00
Utkarsh Gupta
de8ba413c5 home-environment: honor use-xdg-base-directories 2023-05-07 22:43:49 +02:00
Naïm Favier
017302483c xfconf: fix type order (#3961)
Submodules must come after strings, otherwise strings are treated as
paths and implicitly imported.
2023-05-07 22:20:49 +02:00
amesgen
6fc82e5697 i3status-rust: revert #3938 (#3957)
* Revert "i3status-rust: satisfy new 0.31 TOML output requirements (#3938)"

This reverts commit 0e4c33d760.

* i3status-rust: assertion for unsupported versions
2023-05-07 13:42:55 +02:00
Robert Helgesson
990b82ecd3 docs, dconf: GVariant documentation improvements
PR #3956
2023-05-07 12:43:53 +02:00
Jan Tojnar
0b4ec66640 dconf: Warn about strict typing of options
This is a frequent surprise to users.
2023-05-07 12:25:32 +02:00
Jan Tojnar
ea29b1a8d1 docs: Add GVariant cross-references 2023-05-07 12:25:32 +02:00
Jan Tojnar
13d666dd68 docs: Mention GVariant format strings 2023-05-07 12:25:31 +02:00
Jan Tojnar
a0ddb8af40 docs: Mention GVariant auto-coercion at the top 2023-05-07 12:25:30 +02:00
Jan Tojnar
cfa5c2869b docs: GVariant dictionaries are already supported
The support for dictionaries were introduced in 864ff685fe.
2023-05-07 12:25:29 +02:00
Jan Tojnar
81d5b220cd docs: Fix broken GVariant docs link 2023-05-07 12:25:28 +02:00
Jan Tojnar
3e906060a8 docs: Add inline anchors for direct linking to GVariant types 2023-05-07 12:25:27 +02:00
github-actions[bot]
c752906800 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/645bc49f34fa8eff95479f0345ff57e55b53437e' (2023-04-19)
  → 'github:nixos/nixpkgs/3e313808bd2e0a0669430787fb22e43b2f4bf8bf' (2023-05-05)
2023-05-07 12:06:14 +02:00
Robert Helgesson
a834ddf88c flake: set source path in home-manager tool
This makes sure that a NIX_PATH entry is added for use by non-flake
commands, for example `home-manager uninstall`.

Fixes #3948
2023-05-07 11:26:13 +02:00
Eryk Michalak
669669fcb4 Translate using Weblate (Polish)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Polish)

Currently translated at 100.0% (33 of 33 strings)

Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pl/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pl/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-05-05 10:52:27 +02:00
Guangqing Chen
38271ead8e xfconf: support uint (#3946) 2023-05-05 10:52:22 +02:00
Nathan Henrie
f3824311a1 readline: Add support for keynames (#3947)
Kenames like `Control-n` or `meta-p` should not be quoted or they don't work.

Keyseqs like `\C-p` or `ab` must continue to be quoted.

See also: https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html

Fixes https://github.com/nix-community/home-manager/issues/3611
2023-05-04 19:39:46 +02:00
Naïm Favier
ae6d5466bf firefox: support bookmark tags (#3942) 2023-05-04 16:58:13 +02:00
Clément DOUIN
6abb775e75 himalaya: improve derivation for v0.7.X (#3664)
* himalaya: add soywod to maintainers

* himalaya: make the config safer

Also added two services and more tests.

* himalaya: fix doc + typos

* himalaya: use freeform

* himalaya: run ./format

* himalaya: make use of mkPackageOption
2023-05-04 12:28:08 +02:00
Matthias Jonen
514c0a71f4 helix: provide more detailed settings description (#3932)
Helix changed the definition of options. E.g. editor specific options
need to be prefixed with editor.
2023-05-04 00:42:04 +02:00
Yt
788777b536 nushell: add envVars attribute (#3930) 2023-05-04 00:12:21 +02:00
amesgen
0e4c33d760 i3status-rust: satisfy new 0.31 TOML output requirements (#3938) 2023-05-01 23:46:41 +02:00
Bernardo Meurer
3144311f31 zsh: allow multiple bindings to history-substring-search (#3929)
It's pretty common to need multiple bindings to
history-substring-search, since different terminals will send different
keys for up/down.

This does not break back-compatibility, and introduces a new test
2023-04-29 16:53:09 +02:00
Sinkerine
27d89b49e3 zplug: Update the path of init.zsh (#3922)
The current zplug nixpkgs puts everything under `$out/`. It pollutes the nix
profile dir.

This is a breaking change. It depends on an change of the output path in the
nixpkgs zplug package.
2023-04-29 11:08:16 +02:00
William Phetsinorath
c4f3a37071 jujutsu: add module 2023-04-28 22:14:13 +02:00
Naïm Favier
f2d6291150 README: move releases section higher 2023-04-28 19:18:56 +02:00
oxalica
43ba4489bd flake: unwrap devShells.*.tests
This reverts commit 6f9781b1b0 to fix
errors of `nix flake check` and `nix flake show`.

The `devShells` attribute is expected to be an attrset of derivations,
not nested attrsets.
2023-04-28 08:23:29 +02:00
ThinkChaos
d82c9af817 nixos: use lib argument instead of pkgs.lib (#3454)
This allows users to pass a lib with custom attributes and have those
available to custom HM modules.
2023-04-26 21:03:06 +02:00
Erwin Boskma
6142193635 atuin: Use flags option with nushell integration (#3917)
* atuin: Use flags option

* atuin: formatting

* atuin: Use flagsStr
2023-04-25 12:45:09 +02:00
Ryan Lahfa
0263da497e notmuch & neomutt: Control virtualboxes being set in NeoMutt for Notmuch integration (#3143)
Virtual mailboxes (described by Notmuch queries) can now configured for each account in NeoMutt.
Plus, it is possible to disable Notmuch section for a specific account.
2023-04-24 16:41:29 +02:00
Yuriy Taraday
6f9781b1b0 flake: Move tests back to devShells.*.tests (#3905)
I assume it was erroneously lost during flake-utils removal in
https://github.com/nix-community/home-manager/pull/3860
2023-04-24 12:46:10 +02:00
Bernardo Meurer
a5a294a622 sway: import NIXOS_OZONE_WL into systemd
Without this, even if you configure a preference for Electron apps to
use Ozone by setting `NIXOS_OZONE_WL=1`, GUI apps launched through
systemd user services use XWayland, since the variable is not set in
their environment.

This fixes that issue by importing it, like we do other variables.
2023-04-23 20:10:16 +02:00
Sebastian Estrella
e21ec3db17 git: add delta.package option
This makes it possible to conveniently customize the `delta` package.

PR #3897
2023-04-23 20:02:28 +02:00
github-actions[bot]
5904f12d7d flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f00994e78cd39e6fc966f0c4103f908e63284780' (2023-04-17)
  → 'github:nixos/nixpkgs/645bc49f34fa8eff95479f0345ff57e55b53437e' (2023-04-19)
2023-04-23 18:51:15 +02:00
Leix b
48ad7ade11 Translate using Weblate (Catalan)
Currently translated at 100.0% (33 of 33 strings)

Translate using Weblate (Catalan)

Currently translated at 100.0% (16 of 16 strings)

Co-authored-by: Leix b <abone9999@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ca/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ca/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-23 14:49:47 +02:00
Yuriy Taraday
32d3e39c49 neovim: enable tests on Darwin
Checked on Apple Silicon laptop with both `aarch64-darwin` and
`x86-64-darwin`. All tests succeeded on both.
2023-04-23 00:38:01 +02:00
winston
6169690ae3 zsh: add package option to oh-my-zsh
Allow setting a custom package for `programs.zsh.oh-my-zsh`.
2023-04-22 17:13:06 +02:00
Patrick Widmer
5cd5a1b585 aerc: add oauth params 2023-04-22 17:07:51 +02:00
Christoph Heiss
3895469036 fnott: add D-Bus service file
This is needed to make fnott bus-activatable. Otherwise it won't be
started when a bus request is made [0]. Done in the same way as e.g.
dunst sets that up [1,2].

[0] https://www.freedesktop.org/software/systemd/man/systemd.service.html#id-1.10.6
[1] https://github.com/nix-community/home-manager/blob/master/modules/services/dunst.nix#L139
[2] https://github.com/dunst-project/dunst/blob/master/org.knopwob.dunst.service.in
2023-04-22 16:49:26 +02:00
Olmo Kramer
64d1f75a1e herbstluftwm: fix default tag renaming
The previous implementation tried to rename the tag named "default" to
the first tag in `cfg.tags`. This was a wrong approach because if a
tag with the same name already existed, the renaming failed and the
default tag would continue to exist.

The looking up of the default tag also contained a bug because it
should have used `by-name` in the path.
2023-04-22 16:38:31 +02:00
Utkarsh Gupta
218503b691 zellij: use xdg.configHome on darwin 2023-04-22 16:35:31 +02:00
Robert Helgesson
47d6c3f652 home-manager: fix variable name 2023-04-21 12:23:36 +02:00
Stel Abrego
342fd40ccb home-manager: fix config file variable check (#3901) 2023-04-21 11:40:20 +02:00
Christoph Heiss
5160039edc wofi: add module (#3786)
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2023-04-20 00:11:30 -06:00
github-actions[bot]
571d0ed825 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/abe7316dd51a313ce528972b104f4f04f56eefc4' (2023-04-14)
  → 'github:nixos/nixpkgs/f00994e78cd39e6fc966f0c4103f908e63284780' (2023-04-17)
2023-04-19 22:16:50 +02:00
Paulo L F Casaretto
8506c69222 home-manager: quote username in init template
This helps when the username contains, for example, the '.' character.
2023-04-19 22:01:23 +02:00
Jon Seager
cc05d26326 avizo: don't write a config file if settings are empty
Before this change, the default config provided by this module wrote
an empty file to `$HOME/.config/avizo/config.ini`, which caused a
bunch of errors, as Avizo tries to read a 'group' from the ini file,
which fails.

This commit also adds associated test cases.

PR #3871
2023-04-19 21:17:56 +02:00
Suwon Park
ac4c5c6fd8 Translate using Weblate (Korean)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Korean)

Currently translated at 100.0% (33 of 33 strings)

Co-authored-by: Suwon Park <sepiabrown@naver.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ko/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ko/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-19 17:50:03 +02:00
Roberto Abdelkader Martínez Pérez
dfe7024f7e mr: add module 2023-04-19 17:36:41 +02:00
nat-418
5ae849d3c5 docs: add toolbar to firefox bookmarks example (#3889)
This commit adds a clear example of how to get bookmarks into the bookmarks toolbar.
2023-04-19 15:04:40 +02:00
Bernardo Meurer
aa03c8a429 bat: rebuild caches during activation
Without this, themes configured through Home Manager are not found at
runtime.
2023-04-18 23:13:11 +02:00
Naïm Favier
cd5723734a rofi: skip override if there are no plugins (#3885)
Avoid needless calls to `override` (also allows using `pkgs.rofi-unwrapped` with no plugins).
2023-04-18 12:33:44 +02:00
happysalada
2dcb61d396 atuin: enable nushell integration 2023-04-18 08:31:28 +02:00
Ilan Joselevich
fa980cc985 batsignal: add module 2023-04-18 08:28:46 +02:00
Mika Naylor
58b8685e47 nushell: add shellAliases option
This allows nushell users to define shell aliases that are inserted
into nushell's `config.nu`.
2023-04-17 22:59:32 +02:00
VwCSXg
6db559daa9 thunderbird: add extraConfig option
The added extraConfig option allowes users to insert custom text at
the end of the generated profile `user.js` file. This allows the users
to import templates as part of their configuration.
2023-04-17 22:42:32 +02:00
Utkarsh Gupta
e17e5e4f48 bottom: use xdg.configHome on Darwin
Both locations are supported, see

  https://clementtsang.github.io/bottom/nightly/configuration/config-file/default-config/
2023-04-17 21:57:35 +02:00
Utkarsh Gupta
cd690d2021 lazygit: use xdg.configHome on Darwin
If XDG_CONFIG_HOME is set then lazygit will use it. We therefore write
to that directory if Home Manager is managing the XDG directory
variables.
2023-04-17 21:32:48 +02:00
witcher
ae79840bc7 doc: replace invalid link (#3881)
The link to the Nix RFC 42 is invalid. Replace this with a valid link to the
upstream NixOS/rfcs repo, pinning it to the commit that introduced the RFC.
2023-04-17 17:53:44 +02:00
Stel Abrego
53bd74f786 copyq: fix typo in documentation 2023-04-16 17:14:24 -07:00
Basti
68eaf4b577 i3-sway: add option trayPadding (tray_padding) for bars (#3829) 2023-04-16 17:34:29 -06:00
Robert Helgesson
d1d0ee37c3 home-manager: ignore errors from notify-send
Fixes #3878
2023-04-17 00:46:17 +02:00
github-actions[bot]
21ca88f3a9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/53dad94e874c9586e71decf82d972dfb640ef044' (2023-04-03)
  → 'github:nixos/nixpkgs/abe7316dd51a313ce528972b104f4f04f56eefc4' (2023-04-14)
• Removed input 'utils'
2023-04-16 03:59:21 +00:00
Robert Helgesson
40ebb62101 swaylock: add platform assertion 2023-04-15 21:17:23 +02:00
Paul Meyer
2df3d5d39c swaylock: add enable and package option
Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
2023-04-15 21:17:23 +02:00
Robert Helgesson
75f4f362e1 git-sync: fix test 2023-04-15 21:17:22 +02:00
Anderson Torres
17198cf5ae flake.nix: get rid of flake-utils
The function `flake-utils.lib.eachDefaultSystem` is superfluous and can be
substituted by native `nixpkgs.lib` functionality.
2023-04-14 12:42:03 +02:00
Robert Helgesson
9f78c6de4f Merge translations from Weblate
PR #3845
2023-04-14 12:33:26 +02:00
Dan
5cdaa2982c Translate using Weblate (Ukrainian)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Ukrainian)

Currently translated at 100.0% (33 of 33 strings)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/uk/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/uk/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Hosted Weblate
48aa5429cc Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Turmoil Nailsis
d53b9b39b2 Translate using Weblate (Japanese)
Currently translated at 87.5% (14 of 16 strings)

Co-authored-by: Turmoil Nailsis <indianrunner@duck.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
gallegonovato
61f5c2196f Translate using Weblate (Spanish)
Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Spanish)

Currently translated at 100.0% (33 of 33 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/es/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Robert Helgesson
49a3eff146 Translate using Weblate (Italian)
Currently translated at 87.8% (29 of 33 strings)

Translate using Weblate (French)

Currently translated at 87.8% (29 of 33 strings)

Translate using Weblate (Swedish)

Currently translated at 100.0% (33 of 33 strings)

Translate using Weblate (Swedish)

Currently translated at 100.0% (16 of 16 strings)

Translate using Weblate (Swedish)

Currently translated at 96.9% (32 of 33 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fr/
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/it/
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/sv/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Hosted Weblate
9481677f34 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Pablo Bollansee
b10e3ee4ad Translate using Weblate (Dutch)
Currently translated at 100.0% (15 of 15 strings)

Translate using Weblate (Dutch)

Currently translated at 100.0% (31 of 31 strings)

Co-authored-by: Pablo Bollansee <pablo.bollansee@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nl/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nl/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-04-14 09:31:52 +02:00
Weblate
916b7a545d Add translation using Weblate (Romanian)
Co-authored-by: Weblate <noreply@weblate.org>
2023-04-14 09:31:52 +02:00
Viorel-Cătălin Răpițeanu
af8a80c4ce Add translation using Weblate (Romanian)
Co-authored-by: Viorel-Cătălin Răpițeanu <rapiteanu.catalin@gmail.com>
2023-04-14 09:31:52 +02:00
Robert Helgesson
8631c04416 home-manager: ignore errors when creating the profiles path
Fixes #3873
2023-04-14 09:29:06 +02:00
midchildan
fe1e2dee19 home-manager: make sure Nix profiles path exists
The Nix profiles path may not exist right after installing Nix. In
that case, it is created on demand by the Nix CLI tools. However, Home
Manager assumes it exists and fails if it doesn't.

This change makes sure to trigger the creation of the Nix profiles
path before attempting to access it.
2023-04-14 02:17:50 +02:00
Matthew_Cash
28698126bd thunderbird: add userChrome and userContent options
Add an option to the Thunderbird module that allows specifying CSS for
userChrome and userContent styling

PR #3808
2023-04-12 00:06:38 +02:00
Robert Helgesson
6e57fc4705 home-manager: add some i18n context 2023-04-11 22:45:41 +02:00
Gaétan Lepage
013948ddf6 home-cursor: follow xdg spec for icons folder (#3851) 2023-04-11 22:41:48 +02:00
dependabot[bot]
4e79c6a414 ci: bump DeterminateSystems/update-flake-lock from 18 to 19
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 18 to 19.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v18...v19)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 21:30:49 +00:00
Robert Helgesson
93f5cb2482 home-manager: migrate profiles to nix state directory
If the user runs a recent Nix version that places per-user profiles in
`$XDG_STATE_DIR/nix/profiles`, then migrate the home-manager profile
there.

Also clean up `setupVars` a bit.
2023-04-10 13:52:02 +02:00
github-actions[bot]
440faf5ae4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e3652e0735fbec227f342712f180f4f21f0594f2' (2023-03-30)
  → 'github:nixos/nixpkgs/53dad94e874c9586e71decf82d972dfb640ef044' (2023-04-03)
2023-04-05 03:59:22 +00:00
Naïm Favier
ec06f419af xdg-desktop-entries: make exec default to null (#3827)
The [specification](https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html)
does not require those keys to be set, and the type reflects that, so
they should default to null.
2023-04-04 10:41:46 +02:00
dependabot[bot]
eefb379386 ci: bump DeterminateSystems/update-flake-lock from 17 to 18
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 17 to 18.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v17...v18)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-04 00:53:46 +02:00
github-actions[bot]
24f60622a7 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3c5319ad3aa51551182ac82ea17ab1c6b0f0df89' (2023-03-04)
  → 'github:nixos/nixpkgs/e3652e0735fbec227f342712f180f4f21f0594f2' (2023-03-30)
• Updated input 'utils':
    'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
  → 'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
2023-04-03 23:07:11 +02:00
Turmoil Nailsis
a5fe7bf73c Translate using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)

Co-authored-by: Turmoil Nailsis <indianrunner@duck.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translation: Home Manager/Home Manager CLI
2023-04-03 21:18:51 +02:00
Robert Helgesson
ccf650bb5b man: use cfg when possible 2023-04-03 21:18:07 +02:00
Naïm Favier
6c76fb5b12 maintainers: rename houstdav000 → cyntheticfox (#3838)
https://github.com/NixOS/nixpkgs/pull/223976
2023-04-03 20:28:29 +02:00
Bernardo Meurer
ddd8866c03 dconf: disable on darwin
While technically dconf on darwin could work, our activation step
requires dbus, which only *lightly* supports Darwin in general, and not
at all in the way it's packaged in nixpkgs. Because of this, we just
disable dconf for darwin hosts by default.

In the future, if someone gets dbus working, this _could_ be re-enabled,
unclear whether there's actual value in it though.
2023-04-02 00:52:34 +02:00
Damien Cassou
67b97020b6 copyq: support xwayland
We do this by adding QT_QPA_PLATFORM=xcb to the service environment as
per the workaround given in

  https://copyq.readthedocs.io/en/latest/known-issues.html#known-issue-wayland

Fixes #3530
2023-03-31 10:05:41 +02:00
Robert Helgesson
d3fd3b9d69 docs: bump nmd
Makes code callouts unselectable.
2023-03-31 00:00:25 +02:00
Naïm Favier
0e065e1b6f Revert "programs.neovim: link packpath dir in XDG_DATA_HOME (#3717)" (#3817)
This reverts commit deb2f59b5c.
2023-03-29 20:25:04 +02:00
Tim
765e4007b6 nixpkgs: fix semicolon and list layout in docs (#3813) 2023-03-28 12:46:08 +02:00
Matthieu Coudron
deb2f59b5c programs.neovim: link packpath dir in XDG_DATA_HOME (#3717)
link the packpath in expected folder so that even unwrapped neovim can pick home-manager's plugins.

I sometimes need to run neovim not wrapped/configured by nix (when
developing neovim or when other projects bring their own neovim in
PATH). Currently they dont find plugins installed by home-manager in the
cases where packpath is not set to the generated nix packpath directory.
With this change, neovim can discover HM-installed plugins by itself.
2023-03-28 10:40:39 +02:00
Robert Helgesson
cf662b6c98 Merge PR #3799
Updates Darwin launchd options.
2023-03-26 00:13:59 +01:00
midchildan
da325265b7 launchd: sync option definition with nix-darwin 2023-03-25 23:59:58 +01:00
midchildan
2acea86583 launchd: make Launch Agents config a freeform setting
Because there probably are options we don't know about.
2023-03-25 23:59:58 +01:00
Robert Helgesson
d80bf24dab home-manager: error out when showing news in flake 2023-03-25 16:30:58 +01:00
Robert Helgesson
225d1fb77e hstr: fix sorting in CODEOWNERS 2023-03-25 16:03:16 +01:00
Denis Kaynar
99680311f1 hstr: add module 2023-03-25 15:54:19 +01:00
Nick Cao
3ace6a31dd im/fcitx: drop as fcitx 4 has been removed from nixpkgs (#3804)
Reference: https://github.com/NixOS/nixpkgs/pull/220776
2023-03-25 15:32:31 +01:00
midchildan
885a504f80 syncthing: add Darwin support 2023-03-25 13:09:55 +01:00
Adam Stephens
2f8d24b7f5 zoxide: enable nushell integration 2023-03-25 11:47:07 +01:00
Robert Helgesson
a34aaad2ae gpg: fix URL of key in test case
Fixes #3803
2023-03-25 09:57:33 +01:00
Robert Helgesson
db37c53760 docs: bump nmd 2023-03-24 20:01:16 +01:00
Pavel Borzenkov
363c46b248 programs/alot: make Sent and Drafts folder optional (#3798)
Some of the email providers (like GMail and Fastmail) save Sent messages
automatically, so make the folders optional in the configuration.

Make Drafts folder optional as well, to allow it to be configured
manually in the extraConf with location outside of the maildir.
2023-03-22 11:25:02 +01:00
Gaétan Lepage
c6a7bc90ca zathura: add documentation for mode-specific mappings (#3797) 2023-03-22 10:50:13 +01:00
Damien Cassou
486ba3de4e copyq: add module 2023-03-22 08:33:34 +01:00
Sefa Eyeoglu
e60080ddfb listenbrainz-mpd: add module 2023-03-22 08:21:11 +01:00
Chuang Zhu
e386ec640e mpv: add scriptOpts option, fix tests (#3491) 2023-03-21 11:33:36 +01:00
Damien Cassou
a8f5ca239f borgmatic: optionally exclude HM symlinks from backup
Co-authored-by: Naïm Favier <n@monade.li>
Co-authored-by: Robert Helgesson <robert@rycee.net>
2023-03-21 08:56:23 +01:00
Damien Cassou
2ddd4e151d borgmatic: change type of extraConfigOption
Switched to `yamlFormat.type` since the output file format is YAML.
2023-03-21 08:55:17 +01:00
Damien Cassou
2bf15d3835 docs: reference Stylix in 3rd-party extensions 2023-03-21 08:50:31 +01:00
Robert Helgesson
7720f200ea home-manager: make generated home.nix more helpful
This adds a few commented example configuration elements to help guide
the user to possible usages.
2023-03-21 08:41:28 +01:00
Dan
c509a7d5ff Translate using Weblate (Ukrainian)
Currently translated at 100.0% (31 of 31 strings)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/uk/
Translation: Home Manager/Home Manager CLI
2023-03-20 00:23:04 +01:00
gallegonovato
abc8378e21 Translate using Weblate (Spanish)
Currently translated at 100.0% (31 of 31 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translation: Home Manager/Home Manager CLI
2023-03-20 00:23:04 +01:00
Robert Helgesson
69bf0fedbe Translate using Weblate (Swedish)
Currently translated at 100.0% (31 of 31 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
Translation: Home Manager/Home Manager CLI
2023-03-20 00:23:04 +01:00
Hosted Weblate
7217ca165b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-03-20 00:23:04 +01:00
Robert Helgesson
1b8bf5c327 home-manager: avoid stray error message
Failure to create the global profiles directory is not actually an
error since we can recover. Therefore, avoid printing the mkdir error
message.
2023-03-19 23:32:23 +01:00
Alejandro Angulo
bcc417b80f exa: removed stale comment (#3789) 2023-03-19 18:14:05 +01:00
Naïm Favier
3239e0b40f Revert "starship: condition nushell integration on nushell 0.73+" (#3778)
This reverts commit c7231c06e9.
2023-03-17 16:31:35 +01:00
Naïm Favier
62cc5d815c .github: bump install-nix-action (#3723)
The new release addresses the issue with Nix 2.14.

https://github.com/cachix/install-nix-action/releases/tag/v20
2023-03-17 14:12:40 +01:00
Naïm Favier
c7231c06e9 starship: condition nushell integration on nushell 0.73+ (#3776)
Older versions are not supported: https://starship.rs/#nushell
2023-03-17 14:11:30 +01:00
Thiago Kenji Okada
b832390db3 i3status-rust: update it to handle 0.30.x releases (#3773)
* i3status-rust: update it to handle 0.30.x releases

0.30.0 is a major release that brings many breaking changes to the
configuration file. See:
https://github.com/greshake/i3status-rust/blob/master/NEWS.md#i3status-rust-0300

The only one that actually affects the module though is the change in
how the theme/icons are defined. Other changes are mostly on how to
specify formatting/blocks, and since we just generate the TOML as-is, it
needs changes in the user side.

So most changes in this commit are documentation updates, having
up-to-date examples from things that changed, e.g.: the new `click`
attribute that now can be applied to any block.

* i3status-rust: only use new format if i3status-rust >= 0.30.0

* news: document the i3status-rust changes

* i3status-rust: add thiagokokada as maintainer
2023-03-16 12:48:55 +01:00
polykernel
5e94669f8e home.pointerCursor: set common XCURSOR_* environment variables by default (#3663)
The `XCURSOR_*` environment variables specified in libxcursor
are used by many applications and libraries to load and configure
cursor settings. Setting these variables is a no-op if ignored but
is useful as a fallback when other sources of configuration are
unreliable.

This commit sets some commonly used `XCURSOR_*` environment variables
(i.e XCURSOR_THEME, XCURSOR_SIZE) by default when `home.pointerCursor`
is enabled.
2023-03-16 10:05:07 +01:00
Robert Helgesson
c8cb60b8a1 home-manager: add init command to main tool
The init command is essentially the old install script but integrated
into the home-manager tool. This simplifies things slightly since we
can use the existing code infrastructure.

The init command is Nix flake aware in the sense that, if we detect
that the user's Nix setup supports flakes, then we also create an
initial `flake.nix` file.

Finally, we update the installation instructions for the Nix flakes
standalone setup to use the new init command.

Zsh completion update provided by Anund <anundm@gmail.com>.
2023-03-15 22:47:04 +01:00
Kylie McClain
95201931f2 qutebrowser: allow for specifying multiple commands in bindings (#3322)
This command adds the ability to specify lists of qutebrowser
commands as values for key bindings, which avoids the need for
concatenating commands with ` ;; `.
2023-03-15 19:22:12 +01:00
dependabot[bot]
2bd74d92bc ci: bump DeterminateSystems/update-flake-lock from 16 to 17
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 16 to 17.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v16...v17)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:17:28 +00:00
gallegonovato
85196310e1 Translate using Weblate (Spanish)
Currently translated at 100.0% (30 of 30 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translation: Home Manager/Home Manager CLI
2023-03-15 12:53:38 +01:00
Luna Jernberg
5b798e2b99 Translate using Weblate (Swedish)
Currently translated at 100.0% (30 of 30 strings)

Co-authored-by: Luna Jernberg <droidbittin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
Translation: Home Manager/Home Manager CLI
2023-03-15 12:53:38 +01:00
Robert Helgesson
5eec450c75 Merge translation updates 2023-03-15 12:52:50 +01:00
Janik
215af6252d atuin: add disable key options (#3754)
Co-authored-by: Janik H <janik@aq0.de>
2023-03-15 11:52:48 +01:00
Hosted Weblate
af4e1af1ae Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-03-14 23:12:06 +01:00
Suwon Park
2fa7d28699 Translate using Weblate (Korean)
Currently translated at 100.0% (15 of 15 strings)

Co-authored-by: Suwon Park <sepiabrown@naver.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ko/
Translation: Home Manager/Home Manager Modules
2023-03-14 23:12:05 +01:00
Robert Helgesson
cae54dc45c home-manager: change default configuration home
This changes the default configuration location for Home Manager
configurations from

    $XDG_CONFIG_HOME/nixpkgs

to

    $XDG_CONFIG_HOME/home-manager

The old location is still supported but using it will trigger a
warning message.

Fixes #3640
2023-03-14 23:10:54 +01:00
Robert Helgesson
da15dd1f27 docs: minor typographic improvement in release note 2023-03-14 21:44:06 +01:00
Robert Helgesson
8d2b898532 docs: update description of uninstall command
The removal of Home Manager generations is now non-optional.
2023-03-13 22:50:48 +01:00
Felix Leitz
24c1a6335e vscode: add options for global and user snippets (#3765)
Co-authored-by: Felix Leitz <felix.leitz92@gmail.com>
2023-03-13 18:45:03 +01:00
Olli Helenius
7fe539dfbb Fix path to Kitty theme files (#3764)
The theme files were moved to `share/kitty-themes` in this nixpkgs
commit:

  3e29ae4159
2023-03-13 14:37:26 +01:00
Robert Helgesson
46f637bd80 Merge translation updates 2023-03-13 00:07:38 +01:00
Turmoil Nailsis
118a9f79fd Translate using Weblate (Japanese)
Currently translated at 100.0% (15 of 15 strings)

Co-authored-by: Turmoil Nailsis <indianrunner@duck.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Dan
dd6c5acd86 Translate using Weblate (Ukrainian)
Currently translated at 100.0% (15 of 15 strings)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/uk/
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Weblate
7783e1b949 Add translation using Weblate (Ukrainian)
Co-authored-by: Weblate <noreply@weblate.org>
2023-03-11 23:06:43 +01:00
gallegonovato
4bc153e9c8 Translate using Weblate (Spanish)
Currently translated at 100.0% (15 of 15 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/es/
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Robert Helgesson
609bc04c21 Translate using Weblate (Swedish)
Currently translated at 100.0% (15 of 15 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/sv/
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Dan
564aea1c43 Translate using Weblate (Ukrainian)
Currently translated at 100.0% (29 of 29 strings)

Add translation using Weblate (Ukrainian)

Co-authored-by: Dan <denqwerta@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/uk/
Translation: Home Manager/Home Manager CLI
2023-03-11 23:06:43 +01:00
Hosted Weblate
9a8e3ad21a Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Kim A. Ødegaard
a410f8d658 Translate using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Kim A. Ødegaard <kim@dyktig.no>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nb_NO/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2023-03-11 23:06:43 +01:00
Robert Helgesson
bf5712c586 home-manager: slightly expand option description 2023-03-11 22:44:26 +01:00
Gaetan Lepage
7224d7c54c zellij: fix typo 2023-03-10 17:15:39 +01:00
h7x4
c03d1e75a1 zellij: switch config lang from yaml to kdl for 0.32.0 2023-03-10 16:48:11 +01:00
h7x4
fce9dbfeb4 lib: add generator for KDL
Added a generator for the KDL document language.
This is in order for home-manager to natively generate
the new config format for zellij, as described in nix-community#3364.

There is not a one to one mapping between KDL and nix types,
but attrset translation is heavily based on KDLs JSON-IN-KDL microsyntax.
The exception here is the `_args` and `_props` arguments, which lets you
specify arguments and properties as described in the spec.

See more here:
- https://kdl.dev/
- https://github.com/kdl-org/kdl/blob/main/SPEC.md

The generator also conforms to the interface from the nixpkgs manual:
https://nixos.org/manual/nixpkgs/stable/#sec-generators

Co-authored-by: Gaetan Lepage <gaetan@glepage.com>
2023-03-10 16:48:10 +01:00
cbarrete
36999b8d19 docs: simplify flake-specific instructions in the documentation (#3737)
Install home-manager via `nix run` rather than `nix-build` then running
the activation script out of the store manually.

Co-authored-by: Cédric Barreteau <cbarrete@users.noreply.github.com>
2023-03-08 11:29:47 +01:00
Robert Helgesson
f69816489d home-manager: handle missing per-user profiles directory
Specifically, if the global per-user profiles path do not exist and we
cannot create it during the activation, then place our profile in the
Home Manager data directory. We prefer to use the global location,
though, since it makes it visible to `nix-collect-garbage`.

This is intended to improve compatibility with Nix version 2.14 and
later, which no longer creates the per-user directories.

Also, use the Home Manager data directory to manage the gcroot for the
current generation. It does not have to sit in the global per-user
gcroots directory since it should never be eligible for GC.
2023-03-07 23:53:06 +01:00
Robert Helgesson
0f3dfc16d0 home-manager: fix nix-env uninstall command 2023-03-07 23:53:05 +01:00
Turmoil Nailsis
defd16c5d5 Translate using Weblate (Japanese)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Turmoil Nailsis <indianrunner@duck.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translation: Home Manager/Home Manager CLI
2023-03-07 11:38:51 +01:00
home-manager-bot
04d6cad675 flake.lock: Update (#3654)
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2caf4ef5005ecc68141ecb4aac271079f7371c44' (2023-01-30)
  → 'github:nixos/nixpkgs/3c5319ad3aa51551182ac82ea17ab1c6b0f0df89' (2023-03-04)
• Updated input 'utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
  → 'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-06 14:28:31 +01:00
amesgen
e314f6cf21 broot: remove unnecessary IFD 2023-03-05 13:27:21 +01:00
Guangqing Chen
68ba595783 xfconf: fix dbus may not be started in the startup of NixOS. (#3707) 2023-03-05 09:47:06 +01:00
Naïm Favier
3c18113bd7 mpd: add extraArgs (#3735)
Allow passing arguments to the MPD command line. Currently the only
interesting one is `--verbose`.
2023-03-05 09:41:34 +01:00
Robert Helgesson
b9e3a29864 recoll: fix generation of string lists
The updated implementation will quote string lists as per the
description at

  https://www.lesbonscomptes.com/recoll/usermanual/#RCL.INSTALL.CONFIG

Fixes #3732
2023-03-02 20:01:51 +01:00
Sylvain Fankhauser
547a3bc8d4 git: allow tags to be unsigned when signing.signByDefault=true (#3479) 2023-03-02 12:27:57 +01:00
Rosario Pulella
db1c22626a mako: programs.mako -> services.mako (#3265) 2023-03-02 11:58:42 +01:00
Robert Helgesson
f807788035 docs: add chapter on 3rd-party extensions
Fixes #3459
2023-03-01 22:09:38 +01:00
Naïm Favier
ef7d316578 exa: always configure exa alias (#3721)
Otherwise the `icons`, `git` and `extraOptions` options have no effect
unless `enableAliases` is true.
2023-02-28 22:50:55 +01:00
Naïm Favier
ddcbf676ba specialization: fix name conflict inside NixOS module (#3718)
If used inside the NixOS/nix-darwin module, we get conflicting definitions
of `name` inside the specialization: one is the user name coming from the
NixOS module definition and the other is `configuration`, the name of this
option. Thus we need to explicitly wire the former into the module arguments.

See discussion at https://github.com/nix-community/home-manager/issues/3716
2023-02-28 22:22:22 +01:00
Naïm Favier
9438e56a7b .github: pin nix 2.13 in workflows (#3720)
2.14 has a bug related to profile locations that breaks nix-env, which
in turn breaks cachix. Pin to 2.13 for now.

More info at https://github.com/NixOS/nixpkgs/pull/218858#issuecomment-1448758169
2023-02-28 22:03:28 +01:00
Joel Höner
4bac341868 exa: add more options (#3505)
* exa: add more options

* exa: use `escapeShellArgs`

* exa: don't hardcode executable path in aliases

Prevents aliases from going stale in open terminals when the system is updated.

* exa: use `command` for self-referential alias

Otherwise fish complains about the recursive call.

Drop the aliases from ion shell since it doesn't implement the POSIX
`command` built-in.

* exa: re-add ion aliases

* exa: drop `command`

Fish doesn't complain about recursion if `exa` isn't escaped.

---------

Co-authored-by: Naïm Favier <n@monade.li>
2023-02-28 18:24:36 +01:00
patwid
305daba44a aerc: update auth mechanisms (#3714) 2023-02-27 22:32:12 +01:00
Maximilian Bosch
ab7c8f4a84 modules/redshift-gammastep: install package into the profile (#3710)
This is needed to make sure that the tray icon is actually found.
Otherwise an empty icon indicating that it wasn't found is shown.
2023-02-27 15:49:49 +01:00
Maximilian Bosch
635bbcdd6f modules/git: make options passed to less(1) for diff-so-fancy configurable (#3704)
The `-X` prevents that screen is cleared when showing a diff that's
larger than my screen.

I.e. when running `git diff` and press `q`, the last thing I want to see
is the prompt with `git diff` and *not* the part of the diff I browsed,
to be clear

    $ git diff
    $ <cursor>

Considering that this is somewhat opinionated, I decided to build an
option which allows you to pass arbitrary commands to the less
invocation.
2023-02-27 13:04:46 +01:00
siflfran
bf76afbb06 Set the SHELL environment variable for keychain in .xsession (#3695)
Xsession (and hence ~/.xsession) is executed in bash but does not set
SHELL to the full path to bash. In case the user's login shell is
something other than bash then SHELL is set to that shell. Keychain
inspects the SHELL variable to find out what shell it has to generate
code for, so in .xsession it generates code for the user's login shell
instead for bash.

This change forces SHELL to bash for keychain when invoked from
.xsession, the same way it's done when generating keychain's code for
bash integration.

Closes #3693
2023-02-26 19:55:27 +01:00
Robert Helgesson
fc3432bac2 home-manager: make --version report 23.05-pre
It is a bit misleading to report 22.11 when running from the master
branch.
2023-02-26 17:07:31 +01:00
Robert Helgesson
d68cd7f7df flake: avoid recursive set 2023-02-26 17:07:30 +01:00
Robert Helgesson
7b6e507151 docs: slight improvement of Flake documentation 2023-02-26 16:20:40 +01:00
Gabriel Arazas
693d76eeb8 programs.gpg: update references to respective manpages (#3648) 2023-02-26 09:30:45 +01:00
Lord-Valen
664945b3e0 starship: Use mkEnableOption (#3701) 2023-02-24 23:15:57 +01:00
Anton Plotnikov
4295fdfa6b avizo: add module
PR #3601
2023-02-22 23:26:41 +01:00
Kira Bruneau
564b82b354 firefox: fix search options without a default engine 2023-02-21 22:13:10 +01:00
Albert Peschar
c7c69ec405 launchd: fix example of StartCalendarInterval 2023-02-21 21:52:39 +01:00
Olmo Kramer
5e889b385c mpd-mpris: add module 2023-02-20 23:43:42 +01:00
Naïm Favier
72ce74d3ea qt: auto-detect style package from name (#3692)
* qt: auto-detect style package from name

* qt: test package auto-detection
2023-02-20 12:30:29 +01:00
Robert Helgesson
ebb21e1bf6 direnv: nushell integration should not be read only
Fixes #3689
2023-02-20 07:43:27 +01:00
dependabot[bot]
6ea501044b ci: bump cachix/install-nix-action from 18 to 19
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 18 to 19.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v18...v19)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-19 22:48:19 +00:00
ssantos
ae6f1895d5 Translate using Weblate (Portuguese)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pt/
Translation: Home Manager/Home Manager Modules
2023-02-19 23:45:20 +01:00
Weblate
bdcd1bde4e Add translation using Weblate (Portuguese)
Co-authored-by: Weblate <noreply@weblate.org>
2023-02-19 23:45:20 +01:00
ssantos
aa4c685096 Translate using Weblate (Portuguese)
Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Portuguese)

Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pt/
Translation: Home Manager/Home Manager CLI
2023-02-19 23:45:19 +01:00
Natsu Kagami
9e9a0e43fe owncloud-client: add package option 2023-02-19 23:33:03 +01:00
James Williams
81f16a1e3c prezto: add missing use of yesNo
Specifically, this fixes evaluation of prompt.showReturnVal.
2023-02-19 23:20:59 +01:00
Naïm Favier
5ffb0f1f81 tests: fix gnupg stub (#3685)
systemd now depends on `gnupg.override`, so we need a stub for systemd too.
2023-02-19 11:19:00 +01:00
Kiran Ostrolenk
da72e6fc6b keychain: add nushell integration 2023-02-14 09:41:45 +00:00
Sumner Evans
2dce7f1a55 tests: fix formatting (tab -> spaces) (#3660)
Signed-off-by: Sumner Evans <me@sumnerevans.com>
2023-02-09 10:37:26 +01:00
Naïm Favier
1232d0e133 Revert "mbsync: make passwordCommand escaping consistent" (#3657)
This reverts commit e2c1756e3a.
2023-02-08 21:39:10 +01:00
Nathan van Doorn
e631d78ddf vscode: fix erroneous application of lib.optional (#3655) 2023-02-08 12:18:28 +01:00
Nathan van Doorn
d7a5a28fc3 vscode: add extensions.json file in extensions dir (#3588)
* vscode: add extensions.json file in extensions dir

This change generates an 'extensions.json` file the same way that
nixpkgs' vscode-with-extensions does, and makes sure it is placed in the
directory with the extensions.

* vscode: remove leftover trace

Co-authored-by: Naïm Favier <n@monade.li>

* vscode: fix adding extensions.json with mutable extension dir

Co-authored-by: Naïm Favier <n@monade.li>

* vscode: let vscode regenerate the mutable extensions.json

* Remove nixpkgs duplication; only apply on vscodes new enough to need it

* Use lib.versionAtLeast

Co-authored-by: Naïm Favier <n@monade.li>

* Format vscode.nix

---------

Co-authored-by: Naïm Favier <n@monade.li>
2023-02-08 11:00:27 +01:00
Kylie McClain
6d95d98b6b xsuspender: fix typo that made debug option a noop (#3653) 2023-02-08 00:15:20 +01:00
Robert Helgesson
02ac667557 docs: bump nmd
Fixes cross-compilation.
2023-02-07 23:28:21 +01:00
Robert Helgesson
7529a2674a scmpuff: clean up tests
Stub the scmpuff package. Also remove unnecessary `config` wrapping.
2023-02-07 22:19:10 +01:00
midchildan
edb3645383 systemd: remove platform assertion
Allow modules to define systemd services on macOS. It won't actually
have any effect, but it would allow modules to define both systemd
services and launchd agents without boilerplate conditionals.

As a consequence of this change, each module would have to check for
compatibility with the OS target instead.
2023-02-07 21:54:25 +01:00
midchildan
17dc593930 modules: add platform assertions 2023-02-07 21:54:24 +01:00
Naïm Favier
d6b1d42682 activation-init.sh: remove shebang, execute bit
This is not a standalone script, it's only meant to be included from the
activation script.
2023-02-07 21:47:19 +01:00
Naïm Favier
b70362bf9b nix: fix package assertion
Sync it with the condition for generating nix.conf so that it triggers
if `extraOptions` is set but `package` isn't.
2023-02-07 11:35:12 +01:00
Robert Helgesson
c43d4a3d6d firefox: manage add-ons per-profile
Internally we already managed them per-profile but exposed a global
option to maintain backwards compatibility. The benefit to having
per-profile extensions is quite large though, so it is time to switch.

Users of the global extensions option will get an error message that
indicates how to edit their configuration to work again.
2023-02-05 23:54:56 +01:00
Guillaume Desforges
9621e9ab80 programs.neovim: add extraLuaConfig (#3639)
* programs.neovim: add extraLuaConfig

Add a configuration option to add custom lua configuration lines to
`lua.init`.

* apply review: formatting

* apply review: fix test
2023-02-05 12:09:26 +01:00
Kira Bruneau
9f4268e6b6 firefox: support passing any json value to settings (#3580)
Firefox internally only supports bool, int, and string types for
preferences, but often stores objects, arrays and floats as strings.

This change makes it nicer to specify those type of preferences in
Nix, and it also makes it possible to merge objects & arrays across
multiple modules.
2023-02-05 11:23:22 +01:00
Stanislav Asunkin
e3f28ddb0d tmux: fix secureSocket environment variable (#3593) 2023-02-05 11:22:41 +01:00
Bernardo Meurer
6d2ba4654d home-manager: pass --refresh to nix (#3624)
This flag is useful to force Nix to re-fetch cached flakes. Without it,
you cannot deploy from a non-local flake in quick succession, since the
caching causes the flake to not be re-fetched.
2023-02-05 11:14:03 +01:00
Damien Cassou
ca69be9335 borgmatic: Do not inhibit idle in service (#3637)
This reflects a systemd service sample file change made in borgmatic
1.7.6, commit 2e9f70d49647d47fb4ca05f428c592b0e4319544:

    When backing up a machine with a monitor using logind to control
    idle timeout and things like DPMS, borgmatic can block the screen
    from turning on/off with systemd-inhibit. This is because by
    default systemd-inhibit will block
    "idle:sleep:shutdown". Borgmatic does not need to care about idle,
    only about suspend and shutdown. So, add an explicit `--what` flag
    for what borgmatic should inhibit.

    For more information see systemd-inhibit(1).
2023-02-05 11:13:04 +01:00
Tomo
ffc022b6a7 vim-vint: add module (#3604)
* vim-vint: add module

* vim-vint: add tests

* maintainers: add tomodachi94

* vim-vint: fix tests

---------

Co-authored-by: Naïm Favier <n@monade.li>
2023-02-05 11:12:28 +01:00
Jacob Birkett
e716961d78 modules: java: fix setting JAVA_HOME (#3638)
Some JVMs pass through `home` as a derivation rather than as a string, as `openjdk` does. Since the module option for session variables expects a string, this is a type error. I suspect that this incorrect, and have changed the assignment here to coerce the `cfg.package.home` attribute to a string to be safe.

After discussing with @NobbZ, we have decided it is best to mitigate this problem in HM rather than to make potentially breaking changes to Nixpkgs.

Please do mention if you think we ought to propose a change to Nixpkgs instead.
2023-02-05 11:02:57 +01:00
Sleroq
2ffc6d6496 tmux: mouse support (#3642)
Co-authored-by: Sleroq <sleroq@sleroq.link>
2023-02-05 11:02:14 +01:00
Jarkad
e2c1756e3a mbsync: make passwordCommand escaping consistent (#3630)
* Fix mbsync passwordCommand escaping

* email: use lib.escapeShellArgs

Co-authored-by: Naïm Favier <n@monade.li>

* mbsync: update tests

---------

Co-authored-by: Naïm Favier <n@monade.li>
2023-02-03 23:22:11 +01:00
Gaetan Lepage
d1c7730bb7 services.autorandr: add module 2023-02-02 21:54:53 +01:00
home-manager-bot
4a95852490 flake.lock: Update (#3619)
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5ed481943351e9fd354aeb557679624224de38d5' (2023-01-20)
  → 'github:nixos/nixpkgs/2caf4ef5005ecc68141ecb4aac271079f7371c44' (2023-01-30)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-02 03:00:28 +01:00
Loïc Reynier
2f62da9837 git: unset pager while using difftastic (#3633) 2023-02-02 02:58:17 +01:00
Zack
782cb855b2 home-manager: edit homeManagerConfiguration err (#3632)
* home-manager: edit `homeManagerConfiguration` err

This adds https://nix-community.github.io/home-manager/release-notes.html#sec-release-22.11-highlights
to the homeManagerConfiguration arguments error.

* home-manager: `homeManagerConfiguration` indent

Moved URL of the release notes for 22.11 to the same line so that
./format doesn't add extra whitespace

---------

Co-authored-by: zaporter <opensource@zackporter.com>
2023-02-01 11:25:13 +01:00
David Houston
1d94de5604 pass-secret-service: various improvements
Allow setting the application package and storePath used by the
config. Since the `programs.password-store` Home Manager module sets
config values via global environment variables, the default behavior
of the module should continue to behave as before for the user.

Additionally,

- Adds a few tests.

- Use "escapeShellArg" function call to the path parameter call to
  ensure paths with spaces work.

- Allow not setting storePath, which will cause `pass_secret_service`
  to default to using `~/.password-store`.

- If `pass-secret-service` is enabled, set its store path to default
  to the one defined in our password-store environment settings.

- Add myself (houstdav000) as maintainer.
2023-01-31 23:19:09 +01:00
Mario Rodas
1c6f3054ca rbenv: add module 2023-01-31 23:09:53 +01:00
Sefa Eyeoglu
69696fe539 wlogout: add module (#3629) 2023-01-31 17:06:18 +01:00
Mario Rodas
08a778d803 papis: add module 2023-01-28 18:51:48 +01:00
Lin Jian
bb4b25b302 bash: format using nixfmt
PR #3609
2023-01-26 23:18:39 +01:00
dependabot[bot]
8f39c67c4c ci: bump DeterminateSystems/update-flake-lock from 15 to 16
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 15 to 16.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v15...v16)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 21:58:41 +00:00
Lars Mühmel
7efca2ca18 files: allow disabling creation of a file
PR #3622
2023-01-26 22:31:16 +01:00
Mario Rodas
c59f0eac51 treewide: fix typos (#3618) 2023-01-24 11:30:04 +01:00
Robert Helgesson
12d43fd40a docs: bump nmd
Fixes #3612
2023-01-23 23:07:09 +01:00
home-manager-bot
ab25abf9e5 flake.lock: Update (#3549)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-01-23 13:41:59 +01:00
Robert Helgesson
275ab72891 docs: bump nmd
Fixes #3605
2023-01-20 22:36:43 +01:00
Dixon Sean Low Yan Feng
7026e1a934 gpg-agent: fix SSH support for fish 2023-01-18 23:49:05 +01:00
Kira Bruneau
866a4ddcb3 firefox: refactor search.json.mozlz4 generation
The new setup should be easier to read.
2023-01-18 23:25:04 +01:00
Robert Helgesson
2c29ae48f9 docs: bump nmd 2023-01-18 12:26:16 +01:00
Robert Helgesson
6c5b08a0c1 docs: fetch nmd from sourcehut 2023-01-18 12:26:15 +01:00
Naïm Favier
bd3efacb82 docs: mention how to override the home-manager flake input (#3556) 2023-01-17 10:35:01 +01:00
Bikal Lem
3e42035fc0 opam: fix enableFishIntegration (#3597)
Fish shell doesn't require arguments to `eval` to be double quoted
like in a bash shell. At the moment doing so gives us the following
error:

~/.config/fish/config.fish (line 12): $(...) is not supported. In fish, please use '(/nix/store/8asq…)'.
eval "$(/nix/store/8asqgnhs89wzyjvs8p1n5hvxn7lkn9wa-opam-2.1.3/bin/opam env --shell=fish)"
      ^
from sourcing file ~/.config/fish/config.fish
	called during startup
source: Error while reading file “/home/user/.config/fish/config.fish”

This commit fixes the above error.
2023-01-15 13:48:02 -07:00
arcnmx
d633afe0d9 i3-sway: config.focus.wrapping deprecates forceWrapping (#3467)
Stop using the legacy syntax described in the i3 documentation:
https://i3wm.org/docs/userguide.html#_focus_wrapping
2023-01-15 19:20:13 +01:00
Robert Helgesson
2827b53064 docs: bump nmd
- Fix paragraphs in option field texts containing Markdown.

- Fix generation of documentation for options with Markdown in
  multiple fields.

- Support AsciiDoc in module option documentation.
2023-01-15 00:11:26 +01:00
Zhaofeng Li
176e455371 home-manager: Add home-manager search path to EXTRA_NIX_PATH (#3241) 2023-01-10 10:35:00 +01:00
stephaneyfx
950aace44e i3: Do not set i3 package (#3585)
Resolves https://github.com/nix-community/home-manager/issues/3584
2023-01-10 09:57:38 +01:00
Kornelijus Tvarijanavičius
b0a3689878 Translate using Weblate (Lithuanian)
Currently translated at 84.3% (27 of 32 strings)

Co-authored-by: Kornelijus Tvarijanavičius <kornelijus@tvaria.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/lt/
Translation: Home Manager/Home Manager CLI
2023-01-10 00:18:26 +01:00
Weblate
efb7b11974 Add translation using Weblate (Lithuanian)
Co-authored-by: Weblate <noreply@weblate.org>
2023-01-10 00:18:25 +01:00
Kornelijus Tvarijanavičius
6816934f41 Add translation using Weblate (Lithuanian)
Co-authored-by: Kornelijus Tvarijanavičius <kornelitvari@protonmail.com>
2023-01-10 00:18:24 +01:00
Eric Ho
19dccb46f4 Translate using Weblate (Chinese (Traditional))
Currently translated at 92.8% (13 of 14 strings)

Co-authored-by: Eric Ho <eric913@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hant/
Translation: Home Manager/Home Manager Modules
2023-01-10 00:18:23 +01:00
Petter K
5344183861 Translate using Weblate (Norwegian Bokmål)
Currently translated at 87.5% (28 of 32 strings)

Co-authored-by: Petter K <petterkarlsrud@me.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nb_NO/
Translation: Home Manager/Home Manager CLI
2023-01-10 00:18:23 +01:00
Robert Helgesson
f1b1594e7b docs: bump nmd
Fixes #3579
2023-01-09 23:06:21 +01:00
Naïm Favier
69806e9378 files: avoid surprises when linking files (#3018) 2023-01-09 13:00:21 +01:00
Yurii Matsiuk
4f0c1afba7 firefox: remove https-everywhere from example
See b70c44e857
2023-01-09 12:30:26 +01:00
Gaétan Lepage
684bdb386c i3: remove i3/i3-gaps distinction (#3563) 2023-01-08 22:05:36 +01:00
Robert Helgesson
9e565f0d9d docs: bump nmd
Fixes #3573
2023-01-07 12:08:34 +01:00
Olmo Kramer
2cff1c7642 ncmpcpp: Allow str type values for mpdMusicDir option (#3565)
The default value of `programs.ncmpcpp.mpdMusicDir` is taken from
`services.mpd.musicDirectory` if the mpd module is enabled, which has
type `either path str`. `programs.ncmpcpp.mpdMusicDir` did not accept
`str` values, though, so an error was raised when the default value was
used and `services.mpd.musicDirectory` was set to a value of type `str`.

This commit changes the type of `programs.ncmpcpp.mpdMusicDir` to also
accept `str` to reflect the type of `services.mpd.musicDirectory`.

Fixes #3560
2023-01-07 11:59:51 +01:00
Robert Helgesson
709a87fe33 docs: bump nmd
- Introduces support for Markdown documentation in modules.
2023-01-06 23:51:39 +01:00
Anton
1786883425 easyeffects: add package option (#3568) 2023-01-05 21:49:20 -07:00
Robert Helgesson
3ecd5305a4 docs: bump nmd
- Simplifies DocBook build by generation version DocBook 5 files
  directly.

- Make DocBook generate consistent anchor IDs.
2023-01-05 22:40:52 +01:00
polykernel
54245e1820 home.pointerCursor: use mkDefault to set XCURSOR_PATH (#3553)
fixes https://github.com/nix-community/home-manager/issues/3551
2023-01-03 22:21:40 +01:00
corbinallison
498c46ea5d fluxbox: fix a typo, windowMenu -> windowmenu (#3544) 2023-01-03 13:09:52 -07:00
Martin Weinelt
d01e7280ad i3-sway: Use foot as default terminal on sway (#3490) 2023-01-03 19:26:08 +01:00
Wiseh
c1a830c8fa feh: Add package option (#3552)
Co-authored-by: Naïm Favier <n@monade.li>
Co-authored-by: Sumner Evans <me@sumnerevans.com>
2023-01-02 20:36:23 +01:00
Naïm Favier
dd99675ee8 vim,neovim: add defaultEditor (#3496)
Also rename `vim_configurable` to `vim-full` per https://github.com/NixOS/nixpkgs/pull/204438
2022-12-29 22:36:05 +01:00
Naïm Favier
c8f6322303 home-environment: use lazyAttrsOf for home.sessionVariables (#3541)
* home-environment: use `lazyAttrsOf` for `home.sessionVariables`

`attrs` has unreasonable merge semantics and is deprecated. `attrsOf`
doesn't support variables depending on each other as is recommended in
the option's description.

* home-environment: restrict `sessionVariables` type

The consumer is `toString`, but we don't want to accept e.g. lists.
2022-12-29 22:33:15 +01:00
leifhelm
079a33a015 i3: Fix escaping in documentation
In nix `${` is escaped like this `''${` and not like this `\${`
2022-12-29 17:41:04 +01:00
Stanislav Asunkin
cbacdaba3c man: update database cache generation
Specifically, use the configured man-db package for generating the
database cache.
2022-12-29 13:52:46 +01:00
Loric Brevet
f97f191fe7 kakoune: update hooks (#3418)
Some hooks were removed in Kakoune, and some were added. This PR updates the list so they are aligned with the latest version of Kakoune.
Removed

mawww/kakoune@e4fb70e

    NormalBegin
    NormalEnd
    InsertBegin
    InsertEnd

mawww/kakoune@78419bc

    InsertCompletionSelect

Added

mawww/kakoune@c8839e7

    ClientCreate
    ClientClose

mawww/kakoune@47ba36c

    RegisterModified

mawww/kakoune@f2cc7bc

    User
2022-12-29 13:42:24 +01:00
Ramses
a993eac106 neovim: fix extraLuaPackages type. (#3533)
Assigning to `programs.neovim.extraLuaPackages` a function taking a lua package set as input
and returning a list of packages, as described in the documentation,
threw an error because the rest of the code assumed that the value was always a plain list.
Using `lib.types.coercedTo`, we can accept such functions, as per the documentation,
as well as plain lists, which we then convert to a function ignoring its input argument.
We print a warning when a plain list is assigned, since the function
form is preferred, as it ensures that the right lua package set is used.

For the lua packages, we also get the lua package set from the
finalPackage, to make sure that we are always using the same package set
as the actual unwrapped neovim package being built.

For `programs.neovim.extraPythonPackages` I did the same.

I updated the test case so that we test both ways of setting these options.
2022-12-29 01:48:45 +01:00
Robert Helgesson
fa1bc088ea gitui: update default theme to match upstream
Fixes #3506
2022-12-28 23:20:37 +01:00
Jarosław Wygoda
fb49fbc368 clipman: add module 2022-12-28 23:02:08 +01:00
Robert Helgesson
8745cc9a21 parcellite: add basic test case 2022-12-28 22:16:47 +01:00
Even Brenden
d38dbec809 parcellite: add extraOptions option
Even though `--no-icon` is currently the only viable option for both
parcellite and clipit, other options may be added to later releases.
2022-12-28 22:16:39 +01:00
mat ess
e70550577f fish: set tmp $HOME to silence errors 2022-12-28 21:27:34 +01:00
Mika Naylor
3ad22341a2 direnv: enable nushell integration
This enables nushell integration by default for direnv, similar to
bash/zsh/fish. The slightly verbose way of setting this is to ensure
that peoples' existing nushell configuration isn't overwritten, only
appended to, as would be the case if we just used the integration
example from the nushell docs:

  https://www.nushell.sh/cookbook/direnv.html

Closes #3520
2022-12-28 21:09:31 +01:00
github-actions[bot]
5a570962a9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/757b82211463dd5ba1475b6851d3731dfe14d377' (2022-12-16)
  → 'github:nixos/nixpkgs/fad51abd42ca17a60fc1d4cb9382e2d79ae31836' (2022-12-25)
2022-12-28 20:52:03 +01:00
Robert Helgesson
d7a3c26854 broot: simplify test slightly 2022-12-28 20:49:19 +01:00
Robert Helgesson
18b56e3f7d broot: update test to match upstream changes
Fixes #3527
2022-12-28 20:36:15 +01:00
Marcel Transier
a62e4c88d7 starship: re-add ion integration
which was apparently mistakenly removed in commit 7ae7250
2022-12-28 18:16:31 +01:00
Aidan Gauland
646ac0ad17 starship: fix nushell integration
Overwrite starship/init.nu if already exists, since this is a cache
file for sourcing in `init.nu`.
2022-12-28 17:37:42 +01:00
Anders Kaseorg
c55fa26ce0 home-manager: pass -L/--print-build-logs to nix build
When building from a flake, `nix build` hides the build output by
default, with a `-L`/`--print-build-logs` option to show it. Pass this
option along from `home-manager` if the user provides it.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2022-12-25 12:09:29 +01:00
Robert Helgesson
939731b8cb cachix-agent: add module 2022-12-25 09:54:43 +01:00
Robert Helgesson
d7eee202e5 home-environment: explicitly use coreutils
Before we used dirname and readlink from the ambient environment,
which caused problems when they don't behave as expected.

Fixes #3516
2022-12-23 22:40:33 +01:00
Robert Helgesson
eb9ff9556d bash: escape historyIgnore value
Since this option is very unlikely to contain a shell variable we
should be safe doing a full shell escaping.

Fixes #3249
2022-12-23 10:02:39 +01:00
Robert Helgesson
0f8bf4f92e herbstluftwm: merge improvements 2022-12-21 00:20:28 +01:00
David Armstrong Lewis
b44f56dfcd nushell: support darwin config file locations
Previously the nushell module did not differentiate between Linux and
Darwin when deciding where to place config files, whereas nushell
does. This commit fixes that.
2022-12-20 23:57:11 +01:00
Olmo Kramer
47bb9e7569 herbstluftwm: Reset mousebinds on (re)load
Keybinds and rules were already reset, but now also the mousebinds are.
2022-12-19 22:40:24 +01:00
Olmo Kramer
1a0a5f5037 herbstluftwm: Fix error when no tags set
The default value for `xsession.windowManager.herbstluftwm.tags` is an
empty list, but the config file uses `builtins.head` on it, which causes
an error upon evaluation. With this change the tags configuration is
skipped if the list is empty.
2022-12-19 22:40:24 +01:00
Kamal Al Marhubi
e7eba9cc46 home-manager: refine flake URI lookup
Depending on DHCP settings you might end up with different output from
running `hostname`. Eg, your local hostname is `mylaptop`, and your
home router is configured with a local domain of `.hoome.arpa`. In
this case:

    $ hostname
    mylaptop.home.arpa
    $ hostname -s
    mylaptop

If you then go to cafe which has its router configured with `.lan` as
its local domain. Then, if your DHCP settings accept the local domain
from the router,

    $ hostname
    myalaptop.lan
    $ hostname -s
    mylaptop

With the pre-existing behaviour, if you had a
`"me@mylaptop.home.arpa"` entry in `outputs.homeConfigurations`,
running `home-manager switch` would fail:

    $ home-manager switch
    error: flake 'git+file:///home/me/.config/nixpkgs' does not provide
    attribute 'packages.aarch64-darwin.homeConfigurations."me".activationPackage',
    'legacyPackages.aarch64-darwin.homeConfigurations."me".activationPackage'
    or 'homeConfigurations."me".activationPackage'

After this commit, you can put configuration in a `"me@mylaptop"`
entry in `outputs.homeConfigurations`, and everything will work on
either network.
2022-12-19 15:12:44 +01:00
github-actions[bot]
37713c6b04 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
  → 'github:nixos/nixpkgs/757b82211463dd5ba1475b6851d3731dfe14d377' (2022-12-16)
2022-12-18 03:59:28 +00:00
Marijan Petričević
7d55a72d4c lazygit: add package option (#3456) 2022-12-16 09:55:29 -07:00
Matthew Toohey
b7eb400d41 pistol: refactor
This pull requests refactors the pistol configuration options, since
the current options are deficient in a few ways.

Closes #3486
2022-12-16 17:05:30 +01:00
Walter Franzini
d744c2bb9b Translate using Weblate (Italian)
Currently translated at 92.8% (13 of 14 strings)

Co-authored-by: Walter Franzini <walter.franzini@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/it/
Translation: Home Manager/Home Manager Modules
2022-12-16 16:37:31 +01:00
1sixth
3f0d04aeca treewide: replace replaceChars with replaceStrings
replaceChars is a deprecated alias, see
05a2dfd674
for details.
2022-12-16 16:34:59 +01:00
Norbert Melzer
b3565b3447 java: remove IFD
The previous variant used IFD to generate the `JAVA_HOME` variable and relied on internal hooks of the `java` package, this failed for a user cross compiling their configuration.

This PR changes that and uses the `home` attribute, as documented in the very last sentence of the https://nixos.org/manual/nixpkgs/stable/#sec-language-java chapter.
2022-12-16 16:13:08 +01:00
Gaetan Lepage
0e9e86b179 megasync: add module 2022-12-16 16:01:49 +01:00
Matt Bryant
e412025fff borgmatic: allow lists in extraConfig
In particular, we should be able to specify `exclude_backups` in our
configuration.

Fixes #3489
2022-12-13 23:34:49 +01:00
Robert Helgesson
263f6e4523 i3status-rust: fix tests
Nix 2.12.0 slightly changed the JSON output format. This updates the
i3status-rust test cases to match.
2022-12-13 22:10:22 +01:00
Gaetan Lepage
054d9e3187 gpg: update hash in test 2022-12-08 16:36:10 +01:00
Robert Helgesson
2af0d07678 home-manager: use hostname from Nixpkgs
Before the home-manager tool got hostname from the system, which was
not declarative or reproducible.
2022-12-05 23:45:07 +01:00
mat ess
7e81e7ae2b fish: always run fish_indent 2022-12-05 23:16:39 +01:00
dependabot[bot]
747e36476f ci: bump DeterminateSystems/update-flake-lock from 14 to 15
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 14 to 15.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v14...v15)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 13:04:10 +00:00
Robert Helgesson
8faa86f134 ci: bump 22.05 to 22.11 in dependabot setup 2022-12-05 13:42:53 +01:00
Mario Rodas
b5c083300b treewide: fix typos 2022-12-05 12:58:02 +01:00
Robert Helgesson
c3060ab937 emacs: add note about inhibit-startup-message 2022-12-05 12:56:17 +01:00
Mario Rodas
6ce326cef9 treewide: use liberachat and OFTC in examples
Freenode was taken over by a wannabe bitcoin millionaire [1], which
prompted the migration of communities to Libera Chat and OFTC [2].

[1] https://blog.bofh.it/debian/id_461
[2] https://hackaday.com/2021/05/20/freenode-debacle-prompts-staff-exodus-new-network/
2022-12-05 10:38:54 +01:00
Mario Rodas
e3e2abaef5 yt-dlp: fix settings example
The yt-dlp settings should be an attribute set.
2022-12-03 04:20:00 +00:00
James Chen-Smith
90b0e5f440 flake: correct nix-darwin flake description
Corrects copy/paste mistake in the nix-darwin flake description.
2022-12-04 15:26:36 +01:00
anna
e56714a057 types: allow non-integer font sizes 2022-12-04 14:29:34 +01:00
David
2b02f8c7cb thunderbird: use account id for IMAP directory name
This allows users to have multiple accounts on the same domain within
the same profile.

Fixes #3448.
2022-12-04 13:49:29 +01:00
github-actions[bot]
17bbfcb824 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27)
  → 'github:nixos/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
2022-12-04 13:35:15 +01:00
Robert Helgesson
7bfe3cd9b0 firefox: fix expected bookmarks in test 2022-12-04 13:29:25 +01:00
Robert Helgesson
848ae0d6bb neovim: avoid aliased package 2022-12-04 13:13:19 +01:00
Loïc Reynier
15d94f3058 pet: don't create file without snippets 2022-12-04 12:28:03 +01:00
Robert Helgesson
65700a4fd1 polybar: fix restart trigger
The old trigger would actually never cause a restart since the path
doesn't change. With this change the trigger is now using the actual
configuration path in the Nix store, which depends on the content.
2022-12-04 12:12:32 +01:00
toastal
9fb1bb9794 himalaya: 0.6.x config updates
Some properties were renamed. Big changes however include `backend` and
`sender` enum options.
2022-12-04 09:34:47 +01:00
toastal
05d71f517b email: add signature delimiter
While this is created to match `himalaya`’s configuration API, this
could easly be reused for other programs that consume the email module
by concatination the strings.
2022-12-04 09:34:22 +01:00
toastal
9e266ca2a7 maintainers: add toastal
I wish there there were a contribution option outside of the proprietary
closed-source, Microsoft GitHub platform :(
2022-12-04 09:29:21 +01:00
mat ess
ca48fced83 fish: format user and generated .fish files
Adds a `fishIndent` wrapper to pass fish scripts to the built in
`fish_indent` function.
2022-12-04 09:07:54 +01:00
Kylie McClain
518dca61c0 mpd-discord-rpc: fix typo 2022-12-04 00:29:50 +01:00
maximsmol
eb3598cf44 just: deprecate module
The module is no longer necessary since completions work out of the
box now.
2022-12-03 10:13:47 +01:00
Robert Helgesson
71fa4cdf9c home-manager: update stable version to 22.11 2022-12-02 11:49:58 +01:00
Andrew Marshall
478610aa37 neovim: Source neovimRcContent directly from store (#3444)
The previous version linked the file into home, then sourced that. Since
nothing else expects that file to be there, this is unnecessary.
Additionally, doing so made it impossible to test a built config without
switching, e.g. using `XDG_CONFIG_HOME=… nvim` or `nvim -u`. This
remedies that, at least for this particular reference.

To test this, change from asserting contents of the config file to
actually starting nvim, outputting sentinel values, and then asserting
their values are present. This way it’s tested that nvim loaded the
config, rather than that some config is in a specific place.

This is all in one commit as the test, as written now, would not have
worked before since the previously hard-coded home path was not an
actual file in the test environment.
2022-11-30 17:19:31 +01:00
Mario Rodas
e38ce0ae16 direnv: fix direnv configuration path
Direnv >=2.21.0 uses [1] $XDG_CONFIG_HOME/direnv/config.toml as
configuration path.

[1] 54cb3c5a91
2022-11-30 11:45:39 +01:00
github-actions[bot]
724395e653 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/20fc948445a6c22d4e8d5178e9a6bc6e1f5417c8' (2022-11-21)
  → 'github:nixos/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27)
2022-11-30 03:59:14 +00:00
Matthieu Coudron
3b0a446bbf ci: autolabel more programs to 'mail'
More specifically Thunderbird and Himalaya.
2022-11-29 17:49:44 +01:00
li
63cef13e49 pueue: fix for empty settings
PR #3230
2022-11-29 17:39:24 +01:00
Robert Helgesson
cd2a826f33 ssh: make news item conditional 2022-11-29 13:25:48 +01:00
Nick Cao
02c0546033 dbus: fix dbus-run-session command
Specifically, inform the command about the absolute path of
dbus-daemon. Otherwise it will try running dbus-daemon from PATH,
which may not always work.

PR #3405
2022-11-29 13:23:42 +01:00
Nicholas Sielicki
50c9bccb6a bat: add extraPackages option
The bat program has a few additional packages in Nixpkgs, allow for
these to be specified via Home Manager.
2022-11-27 19:19:21 +01:00
Peter Kling
fa671f1795 programs.zsh: set ZPLUG_HOME before loading zplug (#2987)
ZPLUG_HOME must be set before loading zplug, since otherwise it is ignored.
2022-11-27 18:50:46 +01:00
Leix b
f7fed4dd3d picom: add egl backend to options (#3441)
Mirrors: 2beff9375c
2022-11-27 18:48:48 +01:00
Jakub Fišer
1bdbebc3f8 ssh: add generic Match support for matchBlocks (#2992)
* ssh: add generic Match support for matchBlocks

Introduce conservative support for actual `Match`
blocks in ssh config.

"Conservative" means this PR doesn'tt try to process
the `match` expression and simply uses it as a string
provided by the user.

If set, `match` has precedence over `host` meaning
if both are set, `match` is used and `host` is ignored.

* Add news entry
2022-11-27 16:15:32 +01:00
Philipp Mildenberger
7ae7250df8 starship: add nushell integration support 2022-11-27 09:13:20 +01:00
Philipp Mildenberger
4a12f304e0 nushell: add options 'extraConfig' and 'extraEnv' 2022-11-27 09:09:09 +01:00
Loric Brevet
e999dfe7cb kakoune: allow custom package (#3434) 2022-11-27 01:49:15 +01:00
Andrew Marshall
cc58d31953 flake: Expose tests to allow running purely (#3412)
* flake: Expose tests to allow running purely

The existing way to run tests with `nix-shell` relies on impure usage of
`<nixpkgs>`. This can lead to failures when the local nixpkgs is
incompatible with the locked one. I.e., where CI is passing but a
contributor may experience a failure.

So, expose tests as `devShells.tests` to use the locked nixpkgs and
allow easy invocation via `nix develop`.

* tests: Remove impure path

With Nix 2.10+ and pure evaluation mode e.g.

```
nix run nixpkgs/nixos-unstable#nixVersions.nix_2_10 -- develop -i .#tests.zplug-modules
```

this test would fail with:

> error: the path '~/.customZplugHome' can not be resolved in pure mode

Since the test only cares that it is a path, rather than anything about
its contents, use a dummy empty directory.
2022-11-27 01:37:24 +01:00
home-manager-bot
5c98a8d860 flake.lock: Update (#3403)
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3bacde6273b09a21a8ccfba15586fb165078fb62' (2022-11-05)
  → 'github:nixos/nixpkgs/20fc948445a6c22d4e8d5178e9a6bc6e1f5417c8' (2022-11-21)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-11-27 01:24:34 +01:00
h7x4
64f7a77517 polybar: don't generate config if no options are set (#3383)
* polybar: don't generate config if no options are set

* polybar: add h7x4 as maintainer
2022-11-27 01:17:28 +01:00
Nicholas Sielicki
bf99255fc9 kitty: silently drop darwin-specific options (#3394)
Rather than reject a configuration when this option is set, just
silently ignore it when the platform isn't darwin. The name makes it
obvious that it won't be applied outside of darwin, and this allows
people to use the same configuration between hosts without any special concern.

Co-authored-by: Nicholas Sielicki <git@opensource.nslick.com>
2022-11-27 01:16:33 +01:00
Robert Helgesson
62cb5bcf93 Switch master branch version to 23.05 2022-11-24 23:13:38 +01:00
Phillip Cloud
f7641a3ff3 scmpuff: add fish integration flag 2022-11-21 23:51:05 +01:00
Pablo Bollansee
3ce1c4787a Translate using Weblate (Dutch)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Dutch)

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Pablo Bollansee <pablo.bollansee@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nl/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nl/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-11-21 16:35:25 +01:00
Jakub Janczak
c3690701d1 Translate using Weblate (Polish)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: Jakub Janczak <kubek2k@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pl/
Translation: Home Manager/Home Manager Modules
2022-11-21 16:35:25 +01:00
Loïc Reynier
433e8de330 fzf: add colors option (#3206) 2022-11-21 08:35:18 -07:00
KFearsoff
c0f9cbcf93 newsboat: allow imperative "urls" management
This commit allows imperative management of "urls" file. It can be
useful if "urls" file is treated as a secret.

With this change, it's possible to provision "urls" via Syncthing,
agenix, sops-nix or other means, while still managing Newsboat
declaratively.
2022-11-20 00:26:42 +01:00
Matthieu Coudron
948d1f8a5c programs.zsh: generate a more compact config (#3170) 2022-11-18 09:27:43 -07:00
alois31
5589b28e66 opam: add fish integration (#3422) 2022-11-18 09:00:57 -07:00
Thiago Kenji Okada
c94c9c342f picom: remove experimentalBackends, add extraArgs (#3423)
`--experimental-backends` flag was removed in the recent released picom
v10. Using it now will result in the program exiting.

v10 also introduces its counter-part, `--legacy-backends`. However this
will be removed soon. Instead of adding this as an separate option, add
`extraArgs` option so for those that they want they can pass it manuall.
It is also more future proof.
2022-11-18 08:59:30 -07:00
Sumner Evans
fe85cc4c37 udiskie: add note about needing to enable system-wide config (#3424)
Closes #3153

Signed-off-by: Sumner Evans <me@sumnerevans.com>
2022-11-17 13:27:03 -07:00
Andrew Marshall
bc90de24d8 xdg-user-dirs: allow setting to null to skip setting
Previously, this module was all-or-nothing with its pre-defined user
dirs. This allows e.g. `xdg.userDirs.desktop = null;` to opt-out of
some configuration while still benefiting from the rest.
2022-11-13 10:38:54 +01:00
David
651db464dc thunderbird: allow using the module on Darwin
While the Nix packages for Thunderbird are not available for macOS,
the module can still be used to manage profiles and configuration.

Fixes #3407.
2022-11-13 10:06:36 +01:00
Xyz00777
6ce3493a3c kodi: fix syntax error in example 2022-11-09 09:16:50 +01:00
Robert Helgesson
d20e3d070c screen-locker: minor description fix 2022-11-08 10:15:54 +01:00
Eise Zimmerman
b0cf7245c4 Translate using Weblate (Dutch)
Currently translated at 40.6% (13 of 32 strings)

Co-authored-by: Eise Zimmerman <eiscomania@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nl/
Translation: Home Manager/Home Manager CLI
2022-11-07 18:06:30 +01:00
Robert Helgesson
886675991b home-environment: reset PATH in activation script
Starting with state version 22.11 we completely reset the PATH
variable in the activation script. This is to avoid impurities and
unexpected results if the activation script accidentally uses a
command found in the user's PATH.
2022-11-07 15:09:36 +01:00
Robert Helgesson
d67776563e systemd: fix systemctlPath default text 2022-11-07 15:09:35 +01:00
Robert Helgesson
5dd3ce3f1e mu: use absolute path to mu in activation block 2022-11-07 15:09:31 +01:00
github-actions[bot]
1ef0da3212 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/fdebb81f45a1ba2c4afca5fd9f526e1653ad0949' (2022-10-29)
  → 'github:nixos/nixpkgs/3bacde6273b09a21a8ccfba15586fb165078fb62' (2022-11-05)
• Updated input 'utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
2022-11-06 04:14:41 +00:00
Guillaume Girol
c5adf29545 i3: fix reloading when there are several sockets
This can happen after logout/login.

Fixes #527
2022-11-06 00:41:10 +01:00
David Arnold
989d4fa536 home-environment: remove no-op commands 2022-11-06 00:15:35 +01:00
Ronny Pfannschmidt
ccc9164b76 home-environment: fix activation on new style profiles
When using the new style profiles we get conflicts when trying to
replace the old `home-path` derivation. To avoid this conflict we
delete the old `home-path` before the install.

Unfortunately, `nix profile` does not yet have a equivalent for
`nix-env --set` and we have to do this hackish workaround. See

  https://github.com/NixOS/nix/issues/6349

for the associated issue in Nix.

Fixes #2848
2022-11-06 00:12:08 +01:00
midchildan
c728307482 darwin: use full path to commands in activation script 2022-11-05 12:14:08 +09:00
David
b764068a50 thunderbird: add module
Add a new Thunderbird module that uses the configuration in
`accounts.email.accounts` to setup SMTP and IMAP accounts.

Multiple profiles are not supported at this point.
2022-11-04 16:12:12 +01:00
natsukium
9333581075 vscode: add userTasks test 2022-11-03 10:36:21 +01:00
natsukium
39c1e6704a vscode: fix invalid examples 2022-11-03 09:24:25 +01:00
Marin
f520832a47 darwin: re-enable ~/Applications symlinks (#3139)
Tested-by: supermarin@users.noreply.github.com
2022-11-02 13:41:53 -04:00
Chuang Zhu
916811c8f9 xfconf: add module 2022-11-02 12:01:17 +01:00
Arjan Schrijver
04e844090e oh-my-posh: add module 2022-11-02 01:04:42 +01:00
David Arnold
183a62f356 targets/generic-linux: use the correct nix package 2022-11-02 00:45:56 +01:00
pogobanane
824202b4c4 readme: add inofficial option search 2022-11-02 00:42:57 +01:00
Anton Bulakh
8957d53199 awesome: fix luaModules using pkgs.lua instead of awesome.lua (#3258)
Mirroring my change to awesome module in nixos:
b79f9e9b8a
2022-11-01 19:43:20 +01:00
zimbatm
722e8d65d3 ci: use the cachix auth token 2022-10-31 17:36:04 +01:00
dependabot[bot]
25344cb808 ci: bump cachix/cachix-action from 11 to 12 (#3368)
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 11 to 12.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v11...v12)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-31 15:12:57 +00:00
polykernel
2464c21ab2 sway: import XDG_SESSION_TYPE in systemd user environment (#3328)
- The `XDG_SESSION_TYPE` environment variable is used by some applications and frameworks to
  detect wayland sessions (i.e qt5/6, electron/chromium). It is set by wlroots since version 0.13.0 [1].

- Propagating `XDG_SESSION_TYPE` to the systemd user environment is necessary when processes launched by
  services (e.g emacs) need to inherit the environment variable.

[1] - 90c8452959
2022-10-31 13:09:06 +01:00
github-actions[bot]
fad4e7c79c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5f326e2a403e1cebaec378e72ceaf5725983376d' (2022-09-12)
  → 'github:nixos/nixpkgs/fdebb81f45a1ba2c4afca5fd9f526e1653ad0949' (2022-10-29)
• Updated input 'utils':
    'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07)
  → 'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
2022-10-31 12:35:56 +01:00
David Morgan
160025ca46 irssi: add option for SASL external authentication 2022-10-31 09:28:49 +01:00
Robert Helgesson
423211401c home-environment: update hm-version generation
Instead of home-made script use the Nixpkgs library functions. This
will hopefully be more robust and give more accurate results.
2022-10-28 22:51:35 +02:00
Robert Helgesson
213a06295d ci: don't run tests in GitLab CI
It eats too many CI minutes.
2022-10-27 22:47:27 +02:00
Robert Helgesson
f67649307d home-environment: make getVersion more robust 2022-10-27 22:20:37 +02:00
Markus S. Wamser
d3f21617ac vscode: add options to disable update checks
Update notification popups are annoying when vscode/vscodium is
managed by Home Manager. However, as these settings also require the
configuration to be managed via `userSettings`, they are disabled by
default.
2022-10-27 18:16:03 +02:00
Robert Helgesson
32fe7d2ebb home-environment: add hm-version file
This commits adds a file `hm-version` to the generated generation
directory. This file will contain the release version, and if
available, the Git commit hash.
2022-10-27 14:51:48 +02:00
Paul Meyer
7dc4e4ebd7 k9s: add module 2022-10-25 00:05:50 +02:00
Damien Cassou
186d9399f9 borgmatic: specify where to find sleep (#3349)
Closes #3348.
2022-10-23 16:52:22 -04:00
Kira Bruneau
69d19b9839 firefox: support setting search engines
With this change, it's now possible to configure the default search
engine in Firefox with

  programs.firefox.profiles.<name>.search.default

and add custom engines with

  programs.firefox.profiles.<name>.search.engines.

It's also recommended to enable

  programs.firefox.profiles.<name>.search.force = true

since Firefox will replace the symlink for the search configuration on
every launch, but note that you'll loose any existing configuration by
enabling this.
2022-10-22 20:36:04 +02:00
David Warde-Farley
c485669ca5 i3status: add package attribute 2022-10-20 10:04:30 +02:00
Robert Helgesson
d1191c6d05 docs: bump nmd
Fixes #3342
2022-10-20 08:47:36 +02:00
j-brn
42f81ac107 looking-glass-client: add module 2022-10-18 10:12:15 +02:00
dependabot[bot]
e901c8d860 ci: bump cachix/cachix-action from 10 to 11
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 10 to 11.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v10...v11)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-17 07:28:06 +00:00
Robert Helgesson
a50c0c6fe0 dependabot: switch target from 21.11 to 22.05 2022-10-17 09:17:50 +02:00
dependabot[bot]
bc7432fbcc ci: bump cachix/install-nix-action from 17 to 18
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 17 to 18.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v17...v18)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-17 01:28:56 +00:00
Damien Cassou
04f5399978 borgmatic: add module 2022-10-16 21:51:52 +02:00
ElnuDev
da3b8049fd im/fcitx5: add GLFW_IM_MODULE session variable
This lets fcitx5 be used within the kitty terminal emulator. See
https://wiki.archlinux.org/title/Kitty#Enable_IME_support for more.
2022-10-16 21:42:32 +02:00
Robert Helgesson
86bc0e349f dconf: handle missing oldGenPath 2022-10-16 17:59:57 +02:00
Rohan Ferris
2ecb3ea990 firefox: rename chrome-gnome-shell suggestion to gnome.gnome-browser-connector (#3329)
gnome3.chrome-gnome-shell is now gnome.gnome-browser-connector
2022-10-15 15:49:11 -04:00
Robert Helgesson
8cbc6500df lib/bash: make call to tput more robust
Specifically, if `tput colors` fails with an error we treat that as if
the terminal does not support colors.

Fixes #423

Suggested-by: PhotonQuantum <self@lightquantum.me>
2022-10-13 11:56:47 +02:00
Robert Helgesson
8eaa3ba56e lib/bash: remove unused Bash library files
The color echo functions are provided by `lib/bash/home-manager.sh`.
2022-10-13 11:56:46 +02:00
Robert Helgesson
618ab0f882 discocss: fix attribute name 2022-10-13 11:52:24 +02:00
Ilan Joselevich
2d8e5a9934 discocss: add module
Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
2022-10-13 01:11:01 +02:00
ilkecan
5597b3a742 dconf: reset keys that become unmanaged on switch 2022-10-11 22:41:39 +02:00
Matthieu Coudron
b37a909508 ci: specify files that should be tagged "mail" 2022-10-11 10:22:19 +02:00
Robert Helgesson
ebe6d2c747 home-manager: set state version when uninstalling
Otherwise the switch exits with an error.

Fixes #3320
2022-10-11 09:31:29 +02:00
arcnmx
e1f1160284 redshift/gammastep: add enableVerboseLogging option
This option controls whether the `-v` command line argument is given.

Co-authored-by: Sumner Evans <me@sumnerevans.com>
2022-10-09 01:21:05 +02:00
Gabriel Arazas
bd87a34bb4 sioyek: enable multiple bindings for the same command 2022-10-08 22:11:55 +02:00
Matthieu Coudron
3b5a8d3dc7 ci: introduce labeler workflow
Automatically tag PRs depending on touched files.
2022-10-08 12:52:18 +02:00
ralismark
9fcae11ff2 systemd: name slice unit correctly 2022-10-07 16:07:53 +11:00
AndersonTorres
be2cade373 havoc: add module 2022-10-07 01:21:11 +02:00
Mario Rodas
8c297e1816 ledger: add module
Add module for https://www.ledger-cli.org/
2022-10-07 01:06:40 +02:00
Philippe Laflamme
7fee13eb4c sbt: cache passwordCommand output
This will cache the output of `passwordCommand` per authentication
realm.

Context: the `credentials` key in `sbt` is a `TaskKey[Seq[Credentials]]`.
In `sbt`, tasks are evaluated on-demand and their output is not cached.
This particular key is referenced by all submodules in a project. When
the command is relatively expensive (e.g.: `pass show foo`), this
results in several seconds of delay when doing basic things like
`compile` or `test` which makes this unusable without some kind of
caching.
2022-10-07 00:40:50 +02:00
Philippe Laflamme
599e22b1c7 sbt: allow managing the ~/.sbt/repositories file
sbt allows overriding the default repositories to use to resolve
dependencies. This is often used with proxies and/or private
repositories to host internal packages.

This change adds a `repositories` attribute to `sbt` to allow
specifying the values that will go in `~/.sbt/repositories` file.

To support the above change we also deprecate the `baseConfigPath`
option in favour of `baseUserConfigPath` which points one level higher
by default. This allows not using relative paths to refer to the
top-level configuration directory.

Also adds tests for the new option and the deprecation of the previous
one.
2022-10-07 00:23:29 +02:00
wuyoli
6427ae9578 swayidle: fix examples
The example did not work before, since the systemd service does not
have swaylock in its PATH.

PR #3298
2022-10-06 19:52:37 +02:00
Naïm Favier
1a8e35d2e5 mpd: add package to home path (#3303)
It's always useful to have the man pages available.
2022-10-05 11:22:12 -04:00
Tad Fisher
e4e639dd4d programs/lieer: use lieer package (#3262)
The gmailieer attribute was aliased to lieer in nixpkgs.
2022-10-03 09:50:40 +02:00
Judson Lester
a7f0cc2d7b lorri: add nixPackage and enableNotifications options 2022-09-30 23:30:42 +02:00
Robert Helgesson
7a3384c796 syncthing: add platform assertion 2022-09-30 22:27:35 +02:00
Vanilla
9727190b80 mangohud: fix moved link of config file
PR #3278
2022-09-30 20:47:00 +02:00
superherointj
5c5a5b9b45 urxvt: fix package name 2022-09-30 15:08:02 -03:00
Anderson Torres
a053da0f22 fluxbox: use mkPackageOption instead of mkOption (#3286) 2022-09-30 12:54:55 -04:00
arjan-s
e7be7c4688 pls: add module (#3285) 2022-09-30 12:53:39 -04:00
Liam Petrie
864ff685fe lib: add two new gvariant types
Add GVariant variant and dictionary entry types
2022-09-29 13:05:51 +02:00
mtths
9da6c0232e docs: explain how to enable flakes on NixOS
Since `nix.conf` is generated when using NixOS, it cannot be edited.

Instead we add the instructions described by Xe in
https://xeiaso.net/blog/nix-flakes-1-2022-02-21
2022-09-29 12:15:38 +02:00
Sumner Evans
68ea28d330 kdeconnect: change package
Specifically, use pkgs.kdeconnect instead of
pkgs.plasma5Packages.kdeconnect-kde.

Closes #3274

Signed-off-by: Sumner Evans <me@sumnerevans.com>
2022-09-29 12:06:52 +02:00
Naïm Favier
28334988db picom: use types.numbers.between
Mirrors 77307fcff8
2022-09-29 11:34:00 +02:00
aameen-tulip
6dc8a43f39 flake: list deprecated args in throw
The use of `throwIf` was retained on the off chance that someone
intentionally overrides it.
2022-09-27 15:50:32 +02:00
Chan Siu Man
1f5ef2bb41 broot: fix config file location (#3273)
At commit [5666e6b9](5666e6b9fb),
broot refactored the content of the file `/resources/default-conf.hjson`
into multiple files under the directory `/resources/default-conf`, using
[`imports`](5666e6b9fb/resources/default-conf/conf.hjson (L152-L165))
to refer to other configurations.

This refactoring is effective since version 1.14.0 of broot.

After this refactoring, in `xdg.configFile.broot` (which defaults to
`~/.config/broot`):
- we need to copy all potentially referenced files (all files under
  `resources/default-conf`),
- except we need to leave out `conf.hjson` which conflicts with the
  `conf.toml` generated by home-manager (because broot [accepts both conf.toml and conf.hjson](https://dystroy.org/broot/conf_file/))

To implement this, we use `symlinkJoin` to create the content of
`xdg.configFile.broot` by merging multiple sources.
2022-09-27 12:19:02 +02:00
Robin Stumm
65b65ce5ef broot: use upstream defaults, allow all config options (#2644)
* broot: use freeformType for config

* broot: use defaults from upstream

closes #2395

* broot: generate shell function

* broot: add @dermetfan to CODEOWNERS

* broot: rename `config` option to `settings`

* broot: make example more idiomatic

Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>

Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>
2022-09-26 20:36:06 +02:00
dependabot[bot]
9e7394523e ci: bump DeterminateSystems/update-flake-lock from 13 to 14
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 13 to 14.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v13...v14)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-25 23:02:18 +00:00
José Luis Lafuente
707cb75ed3 tmate: add module 2022-09-26 00:28:00 +02:00
Rosario Pulella
9b91709899 safeeyes: add module
This adds a basic module for Safe Eyes based off of the one in
Nixpkgs.
2022-09-25 23:01:25 +02:00
Rosario Pulella
3eaadd82b8 maintainers: add Rosuavio 2022-09-25 22:51:50 +02:00
Joosep Jääger
de3758e31a neovim: fix a typo in the generated init.lua (#3252)
neovim complains when having both an init.lua and an init.vim
2022-09-23 13:33:17 +02:00
Matthieu Coudron
bd83eab622 programs.neovim: default to init.lua (#3233)
We change the current logic: instead of writing an init.vim which loads
lua/init-home-manager.lua, we write an init.lua that sources init.vim

This commit also avoids writing any of these files if the plugins have
no config.
2022-09-22 10:39:55 +02:00
AndersonTorres
f17819f4f1 fluxbox: add module 2022-09-22 00:43:09 +02:00
Loïc Reynier
f5e4614c11 yt-dlp: add settings option 2022-09-22 00:09:35 +02:00
David Baynard
41790ba656 mbsync: extend config type with list of strings
Some configuration options can take space separated strings; for
example `SSLVersions` can be configured with multiple allowed
versions.

    SSLVersions TLSv1.3 TLSv1.2

This can now be represented in Home Manager.

    SSLVersions = [ “TLSv1.3” “TLSv1.2” ];

In implementing this change, it uses oneOf for config type, as it is a
cleaner way to represent the union than the nested eithers
formulation.

Also add SSLVersions to test lists of strings in
`account.extraConfig`.
2022-09-20 01:24:21 +02:00
cafkafk
df79df8be1 Translate using Weblate (Danish)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: cafkafk <christina@cafkafk.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/da/
Translation: Home Manager/Home Manager Modules
2022-09-19 22:24:39 +02:00
Weblate
22ef57a54c Add translation using Weblate (Danish)
Co-authored-by: Weblate <noreply@weblate.org>
2022-09-19 22:24:39 +02:00
cafkafk
b4bfe3b2d9 Translate using Weblate (Danish)
Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Danish)

Co-authored-by: cafkafk <christina@cafkafk.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/da/
Translation: Home Manager/Home Manager CLI
2022-09-19 22:24:39 +02:00
toonn
9555918151 nix-darwin: simplify activation script invocation
In #587, kalbasit introduce the `-i` flag so the sudo invocation would
run in an environment with `HOME` set to the correct value for the
target user. This was necessary to be able to set up multiple users
without interfering with the invoking user's `HOME`.

In #807, I switched to `-s` instead because I managed to get an
invalid shell set for my user by switching `useUserPackages` from
`true` to `false` which changes the location where packages are
installed and `~/.nix-profile/bin/<my-shell>` was no longer valid.
This was based on the assumption that `SHELL` would be set to some
sensible value by Home Manager at this point. This turned out to be
false as reported in #2900.

In 0ced6d6d (this commit's parent at this time), I explicitly set
`SHELL` to `${pkgs.bash}` so it is definitely set to a good shell when
invoking the activation script.

However, #807 broke activation for multiple users, the original
motivation for `-i`, as reported in #2856. I fixed this in #2857 by
additionally passing `--set-home`.

Further discussion with rycee in #3040 made me realize that the
activation script already has a good Nix store bash shebang. So all
the problems have been caused, not by the shell used for the
activation script but by sudo trying to use a different shell at all.
`-i` uses the shell set in the `passwd` file for the target user, but
this can become invalid as happened to me. `-s` uses either `SHELL` if
it's defined or the invoking user's shell as set in the `passwd` file.
By explicitly setting this to a shell provided by Nix we make sure
we're not trying to launch a non-existent shell. However, we're
clearly already running in an existing shell and because of
`--set-home` we can activate other users properly so there's not
actually any need to try to have sudo start a different shell first,
it just adds an extra process that then goes on to run the activation
script with a good bash because of the shebang.

Dropping `-s` altogether and keeping `--set-home` should avoid all of
these issues.
2022-09-19 22:02:58 +02:00
toonn
610b1d988c nix-darwin: improve invocation of activation script
In #807 I changed the flag passed to `sudo` from `-i` to `-s` so
`sudo` wouldn't use a non-existent shell defined in the `passwd` file.
kalbasit also reported in that PR that `-i` didn't work for them
anymore on an M1 Mac, presumably because Apple changed something in
newer versions of macOS.

Some users reported that this broke the behavior for them because
`SHELL` was set to a path that didn't even exist on their system. It's
unclear how this came to be but it shows that my assumption that
`SHELL` would be set to a reasonable shell by Home Manager at this
point in the activation is false.

As a way around this problem we can explicitly set `SHELL` when
running the activation script to a value that we know will be good,
like `${pkgs.bash}`.

One change in behavior this causes is that the activation script will
always be run by bash, not the user's shell. If the script is
generated by Home Manager this is fine since it can be generated
taking into account the supported set of functions and behaviors. If
the intent is for the activation script to possibly be run by non-bash
and even non-POSIX shells, like tcsh, ksh or Xonsh, then this fix will
not suffice. Turns out this is indeed an assumption made by Home
Manager, so this is the proper behavior.

Fixes #2900
2022-09-19 22:02:44 +02:00
Robert Helgesson
5427f3d1f0 mpd: use XDG music dir if XDG user dirs are enabled
If the user has enabled the XDG user directories module then we can
use the XDG music directory in the MPD module. Otherwise we'll leave
the option undefined so that the user is forced to define the
directory to use.

This applies to state version 22.11 and above.

Fixes #3225
2022-09-16 13:41:40 +02:00
Robert Helgesson
b0247ceedc xdg.userDirs: avoid using $HOME
Instead of referencing the `HOME` environment variable, use the
`home.homeDirectory` option. This allows other modules to reference an
XDG user directory without having to support shell syntax.
2022-09-16 13:41:39 +02:00
github-actions[bot]
5408e27961 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/90cd5459a1fd707819b9a3fb9c852beaaac3b79a' (2022-06-11)
  → 'github:nixos/nixpkgs/5f326e2a403e1cebaec378e72ceaf5725983376d' (2022-09-12)
• Updated input 'utils':
    'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30)
  → 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07)
2022-09-15 09:37:01 +02:00
AndersonTorres
6745da6dce rtorrent: change settings to extraConfig
Per NixOS RFC #42, settings should be reserved to structured settings,
whereas extraConfig is used for stringly configuration.
2022-09-15 09:25:46 +02:00
janabhumi
ebd7830814 exa: add package option 2022-09-15 09:15:09 +02:00
Kiran
60c6bfe322 zsh: add option for zsh-history-substring-search (#3156) 2022-09-13 16:06:52 -04:00
DrRuhe
9f7fe353b6 docs: replace use of # by $ sudo
The hope is that this makes it more obvious that these commands should
be run as the root user.
2022-09-09 23:34:29 +02:00
aab
b92826d0c4 codeowners: fix typo (#3215) 2022-09-09 09:16:35 -06:00
Mario Rodas
f9f4c8e1e7 gallery-dl: add module
gallery-dl [1] is a cli to download image galleries from several image
hosting sites.

[1] https://github.com/mikf/gallery-dl
2022-09-09 11:56:37 +02:00
Mario Rodas
4cfc0a1e02 yt-dlp: add module
yt-dlp is a cli to download videos from YouTube.com and other sites.
2022-09-08 19:51:24 +02:00
Gabriel Volpe
6ec6b2e362 nheko: add module 2022-09-08 19:09:30 +02:00
Charlie Moog
340ec22f6f git: add config helper for hooks 2022-09-08 11:05:07 +02:00
arcnmx
2e41a1bab3 systemd: handle Install.RequiredBy
Units with

    Install.RequiredBy = [ target ]

set will now be linked in the

    ${target}.requires

directory. Similar to how `Install.WantedBy` already causes a link in
the

    ${target}.wants

directory.
2022-09-08 10:39:57 +02:00
dependabot[bot]
22113a3ae3 ci: bump DeterminateSystems/update-flake-lock from 9 to 13 (#3188)
Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 9 to 13.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](https://github.com/DeterminateSystems/update-flake-lock/compare/v9...v13)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 16:50:28 -04:00
Loïc Reynier
de94878b6b editorconfig: add module (#3204)
Add a module to generate `~/.editorconfig` configuration file.

Co-authored-by: Robert Helgesson <robert@rycee.net>
Co-authored-by: Sumner Evans <me@sumnerevans.com>
2022-09-06 07:50:36 -06:00
Erik Rodriguez
583a99f016 swayidle: allow wayland targets other than sway-session.target (#3202)
Allow another Wayland targets, as river-session.target or
hyprland-session.target, to use swayidle.service which is hard-coded to
sway-session.target.
2022-09-05 10:56:10 -06:00
Lily Foster
140aaed3df git: gpg sign tags with signing.signByDefault set
The `tag.gpgSign` config option was added in Git 2.23.0 and seems like
it should be set in addition to `commit.gpgSign` when
`programs.git.signing.signByDefault` is enabled
2022-09-05 14:52:39 +02:00
Gaetan Lepage
de079ec371 btop: add module 2022-09-05 14:34:37 +02:00
Robert Helgesson
960c009ce0 git-sync: minor test cleanup 2022-09-05 13:51:03 +02:00
cab
66cc5c7ef9 git-sync: add ssh to path
This fixes automated pushing to repository.
2022-09-05 13:15:40 +02:00
Linus Heckemann
f9a35cacdc msmtp: allow sending email from aliased addresses 2022-09-05 12:50:09 +02:00
Jim Fowler
7b512c94ff gpg-agent: invert grab and no-grab behavior
The GNU Privacy Guard 2.3 man page for `gpg-agent` describes the
`--grab` and `--no-grab` options as follows:

> Tell the pinentry to grab the keyboard and mouse. This option should
> be used on X-Servers to avoid X-sniffing attacks. Any use of the
> option --grab overrides an used option --no-grab. The default is
> --no-grab.

Therefore Home Manager should explicitly output `grab` when
`cfg.grabKeyboardAndMouse` is true. Previously Home Manager emitted
`no-grab` when `cfg.grabKeyboardAndMouse` was false.

PR #3192
2022-09-05 12:12:48 +02:00
pleshevskiy
5bd66dc6cd email: fix the office365 smtp host (#3191) 2022-08-29 21:48:12 -04:00
Matthew Toohey
d89bdff445 sway, bspwm: add extraConfigEarly (#2847) 2022-08-27 00:09:46 -04:00
MaxCan-Code
8e4220e6c6 flake: add templates (#2892)
Add example flakes from `docs/nix-flakes.adoc` as templates.
2022-08-26 22:37:16 -04:00
Ryan Horiguchi
375631f35b firefox: support nested folders in bookmarks (#3112) 2022-08-26 21:28:57 -04:00
Matthieu Coudron
0884d6c6e4 programs.neovim: remove 'configure' setting (#3177)
everything is now covered by other settings that are more user friendly
than this big opaque attrset.

Also 'configure' wont do anything with nixpkgs-unstable the way HM
configures neovim. so no need to keep it, the deprecation warning is > 1
year old.
2022-08-26 22:11:34 +02:00
Ronny Pfannschmidt
5bb1f67568 git: add option to define store names for generated include files (#3171)
This allows to use gitconfig/gitconfig-some-intent
as store path suffixes for the texts.
2022-08-26 15:48:50 -04:00
Loïc Reynier
3d3bbdfe95 clipmenu: add launcher option
This adds an option to set the launcher command for Clipmenu
(which is set with the `CM_LAUNCHER` session variable).
2022-08-26 00:52:29 +02:00
Matthieu Coudron
4c8c1c9977 kitty: produce fewer empty lines
This generates a more compact configuration file.
2022-08-26 00:17:05 +02:00
Robert Helgesson
76fbb1b15e treewide: replace <link> by <xref> where appropriate 2022-08-26 00:07:08 +02:00
AndersonTorres
7bb4576f46 pueue: add module 2022-08-25 23:09:25 +02:00
Dmitriy Pleshevskiy
ae474885f7 email: add yandex and office365 email flavors 2022-08-25 21:17:42 +02:00
Pedro Lara Campos
c5b4177bda i3-sway: allow "container" and "output" in focus.mouseWarping (#3154)
Allow specifying which kind of mouseWarping to use since sway
supports `mouse_warping output|container|none`.
2022-08-25 15:02:04 -04:00
Filippo Berto
b382b59faf service.xidlehook: add detect-sleep option (#3165)
Add detect sleep configuration option. Allows to execute the specified commands with more accurate timings if the system wakes from a sleep state.
2022-08-24 15:56:45 -04:00
Robert Helgesson
1d81e6295c udiskie: add test path to CODEOWNERS 2022-08-24 08:50:22 +02:00
Matthieu Coudron
353d21e108 neovim runtime (#3168) 2022-08-23 22:02:05 +02:00
Lily Foster
8ea0e4d6d8 udiskie: fix configuration file path typo 2022-08-23 20:11:41 +02:00
Lily Foster
991ff35249 udiskie: add tests 2022-08-23 20:11:40 +02:00
Lily Foster
ee8e99add5 udiskie: make dependency on tray.target conditional
Specifically, it is unnecessary to have the dependency when the
udiskie tray applet is disabled.
2022-08-23 20:11:04 +02:00
Imran Hossain
0160a0cef0 Add flake.lock & workflow to update it (#1934) 2022-08-22 22:49:13 +02:00
Sumner Evans
688e5c85b7 neovim: fix tests (#3147)
https://github.com/NixOS/nixpkgs/pull/184364 broke the tests

Closes #3146

Signed-off-by: Sumner Evans <me@sumnerevans.com>
2022-08-15 08:41:57 -06:00
Gaetan Lepage
ff5133843c zathura: add mappings option 2022-08-14 21:27:06 +02:00
Chua Hou
44dcad5604 wezterm: support color schemes
Allows users to specify TOML color schemes using Nix.
2022-08-14 20:57:22 +02:00
amesgen
8675cfa549 gh: add extensions option 2022-08-12 20:49:50 +02:00
amesgen
78f964347c tests.stubs: set pname 2022-08-12 20:49:49 +02:00
Lukas Nagel
324fedcf9f Add module for aerc (#3070)
This adds support for configuring email accounts, with automatic smtp, imap,
sendmail (msmpt) and maildir (mbsync, offlineimap) setup in aerc,
via `accounts.email`.
2022-08-11 23:08:28 +02:00
Bernardo Meurer
c1addfdad3 gammastep: wait on geoclue-agent when configured 2022-08-08 19:08:04 +02:00
AndersonTorres
389f2b2037 bashmount: add module 2022-08-08 18:13:21 +02:00
Robert Helgesson
f5e9879e74 bash: support bash completion 2022-08-07 15:25:44 +02:00
Hemanth Bollamreddi
d9e03b7f8c wezterm: add module 2022-08-07 11:11:56 +02:00
Robert Helgesson
91f26e0b0e polybar: use add .ini suffix to configuration file
The old name is deprecated and causes a warning to be logged.
2022-08-07 10:51:38 +02:00
Sky Leite
d8d9ff0b2d tint2: correctly reference the provided package (#3125) 2022-08-02 20:01:13 -04:00
Lily Foster
77648a07e4 hyfetch: prevent writing config with default/empty settings (#3124) 2022-08-01 19:58:38 -04:00
Lily Foster
d1c677ac25 hyfetch: add module 2022-08-01 18:38:42 +02:00
Moïse Valvassori
7146638e9e Fix typo. (#3118) 2022-07-30 18:49:20 -07:00
Gabriel Arazas
0e2f7876d2 recoll: add module 2022-07-27 14:25:27 +02:00
hab25
b13946438f docs: improve contributing documentation
- Fix name of file generated by `$ nix-build -A docs.manPages`.

- Note "Capitalize the subject line" as an exception to the seven
  rules. Not even the example commit message (closely below this
  change) follows this rule.
2022-07-27 14:10:32 +02:00
Naïm Favier
119febc464 vscode: avoid unnecessary IFD (again)
Fixed in https://github.com/nix-community/home-manager/pull/2506 then
unfixed in https://github.com/nix-community/home-manager/pull/2613
2022-07-27 13:51:19 +02:00
Tom Wieczorek
0b7fd187e2 xdg-mime-apps: fix regex in mimeAssociations
The XDG Desktop Entry spec mentions that multiple values per key may be
optionally terminated by a semicolon. An example for this is the Firefox
desktop file, which has no trailing semicolon. This breaks the sed regex
used in `mimeAssociations`.

Fix the regex by matching the end of string, optionally preceded by a
semicolon, or any other semicolon. This makes it work with both
semicolon-terminated and non-semicolon-terminated desktop files.
2022-07-26 10:08:25 +02:00
Naïm Favier
dbed4c794d xdg-user-dirs: create directories after linkGeneration
In the scenario where some XDG user directory is a symlink defined by
`home.file`, we want the symlink to be created before we try to
`mkdir -p` that directory, as it will then silently succeed. On the
other hand, if we create the directory first, creating the symlink
will fail.

We lose nothing by doing this as `linkGeneration` creates the
directories it needs.
2022-07-25 14:18:36 +02:00
linj
8419dfd39d fish: enable manpage completion
This patch follows a similar patch[1] in nixpkgs. With this patch,
fish can complete manpages for programs installed through
home-manager, e.g., using home.packages.

[1]: https://github.com/NixOS/nixpkgs/pull/91794
2022-07-25 13:54:51 +02:00
Loïc Reynier
a3b778e672 spectrwm: add module
PR #3077
2022-07-25 13:42:06 +02:00
midchildan
572f348a10 darwin: add support for 'defaults -currentHost' options
Closes #2615
2022-07-24 15:17:21 +02:00
Noah Fontes
1d3380afba flake: fix self referential lib output
In https://github.com/nix-community/home-manager/pull/2859, the
library became self-referential, so we need to use the stdlib-extended
helper instead of importing directly.
2022-07-24 14:38:51 +02:00
Ryan Horiguchi
d86c189158 firefox: support showing bookmarks on toolbar 2022-07-23 15:28:14 +02:00
rcerc
218cb3aee2 firefox: fix empty check of bookmarks list 2022-07-23 15:22:31 +02:00
rcerc
f91fb470bc firefox: use coercedTo to convert bookmarks to a list 2022-07-23 15:22:23 +02:00
Robert Helgesson
f47611fb17 github: fix line wrapping 2022-07-23 15:16:19 +02:00
Naïm Favier
9cf40a43fc github: ensure using the right branch of Home Manager 2022-07-23 15:14:45 +02:00
Naïm Favier
70d5929885 integration-common: set hmModule's description directly
Removes the hack after https://github.com/NixOS/nixpkgs/pull/173621
landed.

(cherry picked from commit 0434f8e4ca)
2022-07-19 15:44:01 +02:00
rcerc
4a724cb84c lib: improve DAG library
Specifically,

- directly export `modules/lib/dag.nix` instead of renaming
  attributes,

- run through utilities to reuse code where possible,

- expose `lib.hm.dag.isEntry` and reuse it in
  `modules/lib/types-dag.nix`,

- reuse utilities through `lib` set instead of passing imports to
  functions, and

- eta reduction of `map`, `entryAnywhere`, `entryAfter` and
  `entryBefore`.
2022-07-18 15:32:48 +02:00
Robert Helgesson
30dda628bc home-manager: add ncurses to PATH
Fixes #3097
2022-07-18 15:18:05 +02:00
h7x4
64c745fe1c firefox: add support for nested bookmarks
Change type of `firefox.profile.<name>.bookmarks` to allow for nested
bookmarks with user defined order.
2022-07-18 14:55:54 +02:00
rcerc
4c5106ed0f firefox: reuse escapeXML from Nixpkgs 2022-07-15 14:11:50 +02:00
Weblate
8385408c65 Add translation using Weblate (Dutch)
Co-authored-by: Weblate <noreply@weblate.org>
2022-07-13 15:34:00 +02:00
Frederik Engels
3b5330c80f Translate using Weblate (Dutch)
Currently translated at 25.0% (8 of 32 strings)

Translate using Weblate (German)

Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Dutch)

Co-authored-by: Frederik Engels <frederik.engels92@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/de/
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nl/
Translation: Home Manager/Home Manager CLI
2022-07-13 15:34:00 +02:00
Jonas Heinrich
2c94b9801f librewolf: add module 2022-07-13 15:31:25 +02:00
ash
66d7007e43 mpv: prohibit string values in scripts
Strings as scripts don't currently work, and probably haven't worked
since b567d273 (mpv: use wrapMpv instead of mpv-with-scripts,
2020-05-31).
2022-07-13 14:52:46 +02:00
ash
241a375f49 keychain: set SHELL correctly in bash and zsh
bash and zsh apparently handle command substitution slightly differently
than fish. in bash/zsh:

$ export FOO=x
$ FOO=y echo $(sh -c 'echo $FOO')
x

whereas in fish:

$ export FOO=x
$ FOO=y echo $(sh -c 'echo $FOO')
y

so we have to assign $SHELL within the substitution for bash and zsh.
2022-07-13 14:35:52 +02:00
Robert Helgesson
602f2ce59c docs: note support for 2.4 or later for Flake 2022-07-12 23:35:46 +02:00
Fisher Sun
d6d600e76d docs: remove bit about Nix 2.4 not being supported
With #2840, Nix 2.4 is supported.
Resolves #3061.

Signed-off-by: Fisher Sun <fisher521.fs@gmail.com>
2022-07-12 23:32:47 +02:00
Sumner Evans
d4081057e5 codeowners: cleanup alphabetization
Signed-off-by: Sumner Evans <me@sumnerevans.com>
2022-07-12 22:43:24 +02:00
Bryton Hall
b8bb5f291a xdg-desktop-entries: allow icon path type 2022-07-12 22:13:34 +02:00
Sumner Evans
c5fc157554 picom: fix option name
The `services.picom.opacityRule` option was renamed to
`services.picom.opacityRules`.

This was missed in #2939

Signed-off-by: Sumner Evans <me@sumnerevans.com>
2022-07-12 21:26:31 +02:00
Nick Cao
1e66e035e1 gpg-agent: set Environment to a list 2022-07-12 12:26:36 +02:00
Robert Helgesson
45ef70cc73 swayidle: remove unnecessary config wrapper 2022-07-12 12:02:01 +02:00
Joe Neeman
43ea4c5123 swayidle: fix systemd service
swayidle executes commands using "sh -c" and so its PATH must contain
a shell. This adds such PATH entry to the environment of the systemd
service.

Fixes #2811.
2022-07-12 12:01:04 +02:00
Naïm Favier
6311f4adc3 lib/types: make DAG entries mergeable
Removes the `uniq` constraint on `after` and `before` so that we can
merge multiple definitions for the same DAG entry:

    {
      dag = mkMerge [
        {
          foo = lib.hm.dag.entryBefore [ "bar" ] {
            # definition 1
          };
        }
        {
          foo = lib.hm.dag.entryBefore [ "qux" ] {
            # definition 2
          };
        }
        {
          foo = {
            # definition 3
          };
        }
      ];
    }

In this example `foo` will come before `bar` and `qux`.
2022-07-12 11:47:38 +02:00
Thiago Kenji Okada
177f1887d4 compton: remove
This module was deprecated since release 20.03 according to the news, so
it can be removed.
2022-07-12 11:21:50 +02:00
Thiago Kenji Okada
b908e61dfa picom: sync module with the NixOS version
This brings a few advantages:

- Use of float instead of strings to represent float values,

- Use of structure settings, and

- Better type checking for some settings

Also add thiagokokada as codeowner of picom.
2022-07-12 11:21:49 +02:00
Congee
0639aa34f1 git: add option to set difftastic display setting 2022-07-12 10:48:26 +02:00
OKA, NETSURFER AND OBSERVER, FRONTEND, DEVELOPER (DOTFILES,OSINT,OSS), KEYBASE: (3B0E8E0895DAC8B8)
c645cc9f82 Translate using Weblate (Japanese)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: OKA, NETSURFER AND OBSERVER, FRONTEND, DEVELOPER (DOTFILES,OSINT,OSS), KEYBASE: (3B0E8E0895DAC8B8) <tetrapasta02@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translation: Home Manager/Home Manager CLI
2022-07-09 21:48:06 +02:00
Turmoil Nailsis
f2b216c320 Translate using Weblate (Japanese)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Turmoil Nailsis <indianrunner@duck.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translation: Home Manager/Home Manager CLI
2022-07-09 21:48:06 +02:00
Shamrock Lee
8d5b07fc83 tests: fix impurity of _module.args.pkgsPath 2022-07-09 16:30:17 +02:00
Maxime Brunet
8160b3b45b zsh: source zsh-syntax-highlighting at the end of .zshrc (#3068)
zsh-syntax-highlighting.zsh must be sourced at the end of the .zshrc file, otherwise widgets created after are not properly highlighted (e.g. from oh-my-zsh): https://github.com/zsh-users/zsh-syntax-highlighting#faq
2022-07-07 18:57:27 -06:00
oxalica
25a9948361 sway: import dbus env vars and explicitly specify them (#3031)
- Importing all environment variables is considered deprecated for
  `systemdctl import-environment`. The list of variables are picked
  from:
  https://github.com/swaywm/sway/wiki/Systemd-integration#managing-user-applications-with-systemd

  The `XDG_CURRENT_DESKTOP` is said to be required for portals, see:
  https://github.com/nix-community/home-manager/pull/2385#issuecomment-1026454162

- DBus activation environment should also be updated. Otherwise, DBus
  activated programs, without a coresponding systemd service, cannot get a
  correct environment and would fail, eg. `mako`.
2022-07-07 11:03:58 -06:00
Julio Borja Barra
12cfcc1b9d fusuma: fix settings example (#3067) 2022-07-07 00:55:01 -06:00
Philipp Mildenberger
ef990143b6 nushell: fix non-nullable configFile and envFile, fixes #3050 (#3060) 2022-07-07 00:49:50 -06:00
Naïm Camille Favier
face4094d4 bspwm: add missing rule setting rectangle (#2974)
Also add a `freeformType` so that we don't have to do this in the
future.
2022-07-06 23:36:20 -04:00
Robert Helgesson
f2445620d1 redshift: remove petabyteboy from maintainers 2022-07-04 11:39:38 +02:00
Philipp Mildenberger
3bf16c0fd1 udiskie: add option settings
Adds option settings, which writes settings to
.config/udiskie/config.yml.

Note, the option takes precedence against other options like notify,
automount or tray if they are configured in settings.program_options.
2022-06-28 00:12:57 +02:00
Robert Helgesson
be3adf9920 Revert "integration-common: set hmModule's description directly"
This reverts commit 0434f8e4ca.
2022-06-27 08:58:54 +02:00
Robert Helgesson
9550595502 docs,tests: fetch nmd and nmt using fetchTarball
This simplifies the code a bit and avoids using experimental Flake
functionality. If Flakes become stable before NixOS 22.11 then we can
consider having nmd and nmt as Flake inputs. Maybe could then also
avoid the need for flake-compat.
2022-06-26 22:22:46 +02:00
Naïm Favier
0434f8e4ca integration-common: set hmModule's description directly
Removes the hack after https://github.com/NixOS/nixpkgs/pull/173621
landed.
2022-06-26 21:39:20 +02:00
Kylie McClain
0ca0b91088 sctd: add module
This adds a module for enabling the `sctd` daemon, as well as setting
the preferred base temperature.
2022-06-26 21:29:50 +02:00
Pol Dellaiera
72a135b093 docs: fix homeManagerConfiguration documentation 2022-06-26 20:05:31 +02:00
Ilan Joselevich
1dbac84b84 mpd-discord-rpc: restart on failure 2022-06-26 01:24:29 +02:00
Naïm Favier
f26946858e flake: remove superfluous arguments
Remove `stateVersion`, `username`, and `homeDirectory` as they can be
set in the configuration directly. Together with the previous commit,
this makes setting `stateVersion` explicitly mandatory.

Also replace `configuration` by `modules`, which expects a list of
Home Manager modules.

Also remove `system` which was made useless by #3028.
2022-06-26 01:01:57 +02:00
Naïm Favier
e0baf8ee0c docs: disable _module.check for nixos/nix-darwin modules
Currently we're maintaining a "mock" module made of sink options,
which requires updating whenever the definitions in the
nixos/nix-darwin modules change.

Instead, set `_module.check` to false so that definitions in those
modules are simply ignored.
2022-06-25 11:47:47 +02:00
David Baynard
da55d18ba2 docs: fix typo in nix-darwin flake
The nix-darwin documentation uses `darwin` not `nix-darwin` to refer
to its own flake, and so this is now consistent (and correct) and uses
`darwin`.
2022-06-25 11:17:37 +02:00
Matthew Toohey
223b9deead pistol: add module 2022-06-25 01:00:32 +02:00
Michael Forster
65bcfaccc5 micro: add module
This adds initial bare-bones support for the `micro` editor.
2022-06-24 19:19:11 +02:00
Samuel Tschiedel
fd047c84f7 mcfly: add fuzzy search factor option
Per the [docs], MCFLY_FUZZY is no longer a boolean, taking now a
positive integer that controls the fuzziness factor.

[docs]: https://github.com/cantino/mcfly#fuzzy-searching

Co-authored-by: Robert Helgesson <robert@rycee.net>
2022-06-24 18:22:15 +02:00
Nick Bathum
e622bad163 neovim/coc: fix withNodeJs value when enabling coc (#3048) 2022-06-22 14:14:18 -06:00
Alex Martens
06bb67ab24 flake.lock: use SRI hash for nmd 2022-06-21 17:46:39 -07:00
Robert Helgesson
77f1c7636a docs: bump nmd 2022-06-22 01:15:25 +02:00
Eliza Velasquez
d059b9448a mujmap: add module
mujmap is a tool that synchronizes mail between a mail server and
notmuch via JMAP. It's very similar to lieer, so I heavily based the
implementation of the notmuch module on lieer's. I did not include an
equivalent to lieer's periodic synchronization service, however,
because I plan to soon introduce a daemon mode to mujmap.

https://github.com/elizagamedev/mujmap
2022-06-22 00:33:10 +02:00
Robert Helgesson
467617947d email: add support for JMAP
Co-authored-by: Eliza Velasquez <4576666+elizagamedev@users.noreply.github.com>
2022-06-22 00:13:22 +02:00
Kritnich
1ebbef8642 barrier: change enableCrypto behaviour
`--enable-crypto` is deprecated because crypto is now enabled by default.
`--disable-crypto` should be used instead.
Fixes https://github.com/nix-community/home-manager/issues/3001
2022-06-21 21:59:19 +02:00
Dominik Schrempf
206ded407e dunst: fix settings example 2022-06-21 21:41:32 +02:00
Lily Foster
ce563f5911 mopidy: add support for extraConfigFiles 2022-06-21 01:04:56 +02:00
Shamrock Lee
60b064249d treewide: remove trailing white spaces and tabs 2022-06-21 00:55:32 +02:00
Philipp Mildenberger
931e610552 nushell: update configuration management
Recent versions of nushell uses a different configuration setup. This
commit adjusts the module to match.

Fixes #2952
Fixes #2837
2022-06-21 00:39:00 +02:00
Robert Helgesson
3c710201d5 version: remove default value
The user should always explicitly set the state version they wish to
use. Indeed, the configuration generated by the Home Manager install
script has set this option for a long time. This removal should
therefore not affect many users.
2022-06-21 00:06:53 +02:00
Robert Helgesson
3d8265c5ef email: minor formatting fix 2022-06-20 00:56:57 +02:00
Naïm Camille Favier
ce8266dedc docs: revert to # prompt on NixOS 2022-06-20 00:35:04 +02:00
Robert Helgesson
5197e5df7d Bump .release file
Fixes #3033
2022-06-19 01:27:57 +02:00
Damien Cassou
931653b99f emacs: optionally start service with the session
Add services.emacs.startWithUserSession boolean to indicate that Emacs
must be started with the systemd user session. This is true by default
unless socket activation is also true.

In the past, the user had to choose between socket activation (to get
the Emacs service started when the user uses emacsclient) and
immediate start with the user session. When choosing immediate start
over socket activation and if the Emacs service is stopped at some
point, using emacsclient would start a new Emacs daemon but the
service would still be turned off. This situation would prevent
`home-manager switch` from completing successfully because it wouldn't
be able to start the Emacs service as Emacs is already running.

This new setting makes it possible to have both socket activation and
immediate start at the same time. In this scenario, Emacs is started
with the user session and, after the Emacs service is stopped, using
emacsclient starts the service again.

This new settings also makes it possible to have neither socket
activation nor immediate start.
2022-06-19 01:09:41 +02:00
Naïm Favier
586ac1fd58 Move integration-common.nix to nixos/common.nix 2022-06-19 00:45:18 +02:00
Naïm Favier
69e804839e flake: don't reinstantiate nixpkgs
See https://zimbatm.com/notes/1000-instances-of-nixpkgs for
motivation.
2022-06-19 00:45:09 +02:00
Naïm Favier
2ff38c646f flake: make pkgs required in homeManagerConfiguration
Prevents Home Manager from pinning Nixpkgs on behalf of users, see

  https://github.com/nix-community/home-manager/pull/2971#discussion_r898556798
2022-06-19 00:44:29 +02:00
Naïm Favier
a0e7ffe7aa docs: use $ prompts for nix-channel commands
Channels should be added for the normal user, not for root, because the
home-manager configuration is not supposed to be evaluated as root.

Fixes https://github.com/nix-community/home-manager/issues/2985
2022-06-18 20:59:51 +02:00
Naïm Camille Favier
1de492f6f8 format: update and remove exceptions (#3029)
Switches to nixfmt 0.5.0 and removes exceptions for files without open
PRs.
2022-06-16 14:13:06 +02:00
Nikolay Korotkiy
504d6de6a0 Add translation using Weblate (Finnish)
Co-authored-by: Nikolay Korotkiy <sikmir@gmail.com>
2022-06-15 23:44:58 +02:00
Leix b
a9b027b826 Translate using Weblate (Catalan)
Currently translated at 100.0% (32 of 32 strings)

Translate using Weblate (Catalan)

Currently translated at 12.5% (4 of 32 strings)

Co-authored-by: Leix b <abone9999@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ca/
Translation: Home Manager/Home Manager CLI
2022-06-15 23:44:58 +02:00
Weblate
68edbc7f28 Add translation using Weblate (Finnish)
Add translation using Weblate (Catalan)

Co-authored-by: Weblate <noreply@weblate.org>
2022-06-15 23:44:57 +02:00
Leix b
1342f4a07c Translate using Weblate (Catalan)
Currently translated at 100.0% (14 of 14 strings)

Add translation using Weblate (Catalan)

Co-authored-by: Leix b <abone9999@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ca/
Translation: Home Manager/Home Manager Modules
2022-06-15 23:44:57 +02:00
Matthieu Coudron
07dbd4c0dd pywal: fixed i3 config (#3002)
module was never imported and thus useless. This adds a neovim plugin too.
2022-06-15 23:44:52 +02:00
André Silva
87d30c1648 nixos: fix fontconfig mkDefault call (#3021) 2022-06-14 11:34:44 +02:00
Sandro
cd3dd2188c nixos: allow setting fonts.fontconfig.enable without mkForce (#3014) 2022-06-13 20:00:51 +02:00
Thiago Kenji Okada
935ecea67d neovim: add missing literalExpression in module docs (#3012) 2022-06-13 19:57:41 +02:00
rcerc
70824bb5c7 swaylock: Add module (#3003) 2022-06-07 21:01:14 +02:00
Naïm Camille Favier
64ab7d6e8d Prepare inclusion in nixos-search (#2971)
* Add flake.lock and clean up flake.nix

Add a lockfile to work around https://github.com/NixOS/nix/issues/6541
(and because it's a good idea anyway).

Also use flake-utils, and restrict ourselves to the five platforms
supported by nixpkgs. Otherwise, the IFD for nmd fails on weird
platforms. This fixes `nix flake check`.

Remove the redundant `apps` output, see https://github.com/nix-community/home-manager/pull/2442#issuecomment-1133670487

* nixos,nix-darwin: factor out into a common module

* nixos,nix-darwin: make `home-managers.users` shallowly visible

Make sure the option is included in the NixOS/nix-darwin manual (but the
HM submodule options aren't).

Also add a static description to the HM submodule type so that we don't need to
evaluate the submodules just to build the option manual. This makes
nixos-search able to index the home-manager flake.

Also clean up some TODOs.

* flake: add nmd and nmt

This avoids having to use `pkgs.fetchFromGitLab` in an IFD, which causes
issues when indexing packages with nixos-search because `pkgs` is
instantiated with every platform.
2022-06-07 20:45:06 +02:00
Kylie McClain
2070389247 htop: add missing fields (#2989)
These new fields were added in htop 3.0.3 (PERCENT_NORM_CPU) and
3.1.0 (ELAPSED).
2022-06-05 11:50:13 +02:00
Roman Joost
a3638db009 Use newer getmail6 over getmail package (#2982)
The `getmail` package will soon be removed from nixpkgs. The
`nixos-unstable` channel already has it removed and using the service
will result in:

    error: getmail has been removed from nixpkgs, migrate to getmail6

Upgrade to the getmail6 package which is already available and backwards
compatible.
2022-06-05 11:48:58 +02:00
Robert Helgesson
684e85d01d docs: set 22.11 as next version 2022-06-01 21:56:46 +02:00
Robert Helgesson
ac2287df5a docs: set 22.05 as stable version 2022-06-01 21:56:45 +02:00
Robert Helgesson
1808cb66aa news: remove a bunch of old (>1 year) entries 2022-06-01 21:56:45 +02:00
Robert Helgesson
acad715f78 docs: update copyright year 2022-06-01 21:42:55 +02:00
Jakub Kozłowski
8f3e267051 doc: make documentation links more visible 2022-05-30 22:48:07 +02:00
NomisIV
bda2c80b4c himalaya: fix account.folders to new config syntax 2022-05-30 21:06:52 +02:00
midchildan
64831f938b emacs: allow extraConfig to reference extraPackages
This fixes the issue described in

  https://github.com/nix-community/home-manager/pull/1758#issuecomment-1113706592
2022-05-26 00:34:17 +02:00
Kid
51ea4217f7 docs: fix README links 2022-05-25 21:49:42 +02:00
Robert Helgesson
2c8489e57a mpdris2: add basic test cases 2022-05-25 18:43:22 +02:00
Erwin Boskma
9042c756fa mpdris2: remove assertion on mpd module 2022-05-25 18:32:34 +02:00
Erwin Boskma
d73ba6a534 mpdris2: add password option 2022-05-25 18:32:33 +02:00
Robert Helgesson
e66f0ff69a docs: bump nmd 2022-05-23 23:09:24 +02:00
Sumner Evans
94780dd888 neovim/coc: add package option (#2972) 2022-05-21 11:12:29 -06:00
Naïm Camille Favier
02b15de8ad Translate using Weblate (French)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: Naïm Camille Favier <n@monade.li>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/fr/
Translation: Home Manager/Home Manager Modules
2022-05-19 23:44:42 +02:00
Yubo-Cao
97fac4f282 Translate using Weblate (Chinese (Simplified))
Currently translated at 92.8% (13 of 14 strings)

Co-authored-by: Yubo-Cao <Cao2006721@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hans/
Translation: Home Manager/Home Manager Modules
2022-05-19 23:44:42 +02:00
Roman Timushev
e6869735d2 htop: fix darwin defaults
M_SHARE is not a valid column on Darwin. It seems that previously htop
ignored unknown columns, but the current version does not display all
subsequent columns.
2022-05-19 23:33:20 +02:00
Gabriel Arazas
cb9f03d519 mopidy: add module
This is adapted from the `services.mopidy` NixOS module. The
difference is the setting can be configured with Nix language, taking
advantage of generators from nixpkgs. The module is also suited more
for user-specific configuration, removing the `extraConfigFiles` and
`dataDir` option.
2022-05-19 00:31:37 +02:00
Peng Guanwen
32a7da69dc Translate using Weblate (Chinese (Simplified))
Currently translated at 85.7% (12 of 14 strings)

Co-authored-by: Peng Guanwen <pg999w@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hans/
Translation: Home Manager/Home Manager Modules
2022-05-13 16:27:27 +02:00
Sumner Evans
273598f53e mako: add package option (#2955) 2022-05-13 08:27:23 -06:00
Matthieu Coudron
f735a8502b programs.pywal: init (#2949) 2022-05-10 22:24:19 +02:00
Markus Scherer
4293902b64 offlineimap: remove dependency on python2 (#2909) (#2951) 2022-05-10 09:30:40 +02:00
Aidan Gauland
882bd8118b gtk: Update example strings for gtk.theme.package (#2904)
- Change the example value of `gtk.theme.package` from
`pkgs.gnome.gnome_themes_standard` was an alias that was removed on 2022-01-13,
`pkgs.gnome-themes-extra`, which references the actual package.

- Change the example value of `gtk.icon.package` from `pkgs.adwaita-icon-theme` to
`pkgs.gnome.adwaita-icon-theme`, as this package is in the `gnome` package set.
2022-05-06 21:27:31 -04:00
mgurlitz
538343be86 Make sway onChange script use cfg.package if set (#2937) 2022-05-05 21:29:20 -04:00
Nicolas Berbiche
4036f1a751 home-cursor: fix x11 cursor path using invalid option (#2940) 2022-05-05 21:15:51 -04:00
Robert Helgesson
267462dfb3 cursor: fix coercion error
Fixes #2934
2022-05-04 10:16:32 +02:00
polykernel
c13ffa3ed4 home.pointerCursor: init (#2891)
* home.pointerCursor: init

The current architecture for cursor configurations is composed of individual
options for different backends. For example, X specific settings are managed under
`xsession.pointerCursor` and gtk specific settings are managed under `gtk.cursorTheme`.
While this architecture is modular, it causes duplication of similar structures for
each component. In theory, this provides flexibility because the components are independent
of each other which can be arranged in arbitrary ways to achieve the desired result.
However in practice, users wish to have one cursor theme applied to their entire system
The duplication of options correspond to duplication of settings on the user side and it
becomes a burden to keep track of all necessary settings.

This commit is an attempt to unify cursor configurations for different window systems and
GUI toolkits based on https://github.com/nix-community/home-manager/pull/2481#issuecomment-978917480.
`home.pointerCursor` is introduced as the interface for all cursor configurations.
It contain all options relevant to cursor themes with eneral options delcared under `home.pointerCursor.*`
and backend specific options declared under `home.pointerCursor.<backend>.*`. By default, a backend
independent configuration is generated. Backend specific configurations can be toggled via the
`home.pointerCursor.<backend>.enable` option for each backend. This was decided over using a
list of enums because it allows easy access to the state of the backend. Note generating different
cursor configurations for different backends is still possible by defining only `home.pointerCursor`
and managing the respective options manually.

* xcursor: migrate options to home.pointerCursor

- Removed `xession.pointerCursor` as x11 cursor configurations are now handled in `home.pointerCursor.x11`.
- Updated `meta.maintainer` field in `home.pointerCursor` and CODEOWNERS.
2022-05-03 18:29:17 -04:00
arjan-s
ac722cddf4 swayidle: Fix position of extraArgs (#2932) 2022-05-03 11:20:46 -06:00
Robert Helgesson
0304f0f58b specialization: add module
This module adds basic support for configuration specializations.
These allow the user to build multiple alternative configurations that
should be part of the same generation.
2022-05-03 00:42:23 +02:00
Theodore Ni
af828536ed fish: generate fish completions using python 3 2022-05-02 23:37:39 +02:00
Arjan Schrijver
5872aad1d0 git: add option to use diff-so-fancy as diff tool
Add the option to use diff-so-fancy as diff tool in git. This makes
the shown diffs human readable instead of machine readable.
2022-05-02 23:08:08 +02:00
Robert Helgesson
d7b97de51a tealdeer: add news entry 2022-05-02 22:56:40 +02:00
Mario Rodas
26858fc0db tealdeer: add module (#2928) 2022-05-01 08:27:04 -06:00
crazymanjinn
df6010551d gpg-agent: make shell integrations optional (#2927)
In esoteric setups, automatically setting GPG_TTY to current tty is not
desired on every shell startup. This change adds configuration options
to allow user to disable that if desired.
2022-04-30 18:38:36 -06:00
Sumner Evans
f8b51be714 neomutt: add support for signature command (#2899)
Neomutt will run the given command (which can be a string or a path)
and take the output from stdout and use it as the signature for your
email.

Co-authored-by: Nicolas Berbiche <nicolas@normie.dev>
2022-04-29 14:01:53 -06:00
Robert Helgesson
778af87a98 i3status-rust: fix formatting 2022-04-26 23:04:50 +02:00
afreakk
223a73c2ba xscreensaver: add xscreensaver to service PATH
Without this the journal will be filled by

  xscreensaver[468297]: sh: line 1: xscreensaver-command: command not found
  xscreensaver-systemd: 12:29:22: exec: "xscreensaver-command -quiet -deactivate" exited with status 127
2022-04-25 23:05:43 +02:00
Frankie McEyes
09f3e67950 Translate using Weblate (Italian)
Currently translated at 85.7% (12 of 14 strings)

Translate using Weblate (Italian)

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Frankie McEyes <mceyes@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/it/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/it/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-04-24 23:38:56 +02:00
Weblate
5997c43458 Add translation using Weblate (Persian)
Co-authored-by: Weblate <noreply@weblate.org>
2022-04-24 23:38:56 +02:00
Artin Mobasher
845aaaf4db Translate using Weblate (Persian)
Currently translated at 12.5% (4 of 32 strings)

Add translation using Weblate (Persian)

Co-authored-by: Artin Mobasher <mobasherartin.icm@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fa/
Translation: Home Manager/Home Manager CLI
2022-04-24 23:38:56 +02:00
Nathan Typanski
6f025b3825 i3-sway: only return current user's socket (#2914)
Constrain the pgrep command to only return results for the current user.
Additionally, quote the socket variables to prevent splitting.

Previously, if multiple users on a system were running `sway`, the
`pgrep` used in finding `swaySocket` would return multiple results. As a
result, reloads of sway would fail.

Fixes #2912.
2022-04-24 23:38:50 +02:00
Robert Helgesson
65a32578d9 helix: fix test 2022-04-24 09:17:04 +02:00
Sandro
93a69d0738 Simplify function (#2903) 2022-04-20 14:18:39 -04:00
polykernel
8ec13d33b1 targets.genericLinux: include additional directories in XCURSOR_PATH (#2902)
This commit appends system-wide icon and pixmap directory and the icon
directory in the home-manager profile to the XCURSOR_PATH session variable
for the generic linux target. This is necessary because the default prefix
for libXcursor resolves to the Nix store which excludes the aforementioned
directories from being searched for cursor themes. [1]

[1] - https://github.com/nix-community/home-manager/pull/2891#issuecomment-1101064521.
2022-04-19 20:04:10 -04:00
Robert Helgesson
8d38ca8868 xdg-mime-apps: add function mimeAssociations
This convenience function allows automatic assignment of a package's
associations to `xdg.mimeApps.defaultApplications`.

For example,

    xdg.mimeApps.defaultApplications =
      config.lib.xdg.mimeAssociations [ pkgs.gnome.evince ];

Co-authored-by: Ryan Trinkle <ryan@trinkle.org>
2022-04-18 19:09:46 +02:00
Roberto Di Remigio
742c6cb3e9 chromium: add vivaldi 2022-04-18 00:29:40 +02:00
ilkecan
c2726860a2 nix-darwin,nixos: convert modulesPath to string (#2714)
`modulesPath` is usually used with antiquotation
(`"${modulesPath}/some-module.nix"`). Since antiquoted paths are copied
to the Nix store, one must explicitly do `"${toString
modulesPath}/some-module.nix"` to avoid that. Ideally `modulesPath`
should be a string to avoid this. Note that `modulesPath` is already
defined as a string in <home-manager>/modules/default.nix and
<nixpkgs>/nixos/lib/eval-config.nix.
2022-04-17 18:23:18 -04:00
Luc Chabassier
5ac84ebeef Add lib argument to homeManagerConfiguration (#2753) 2022-04-17 18:14:41 -04:00
Nicolas Berbiche
f47001cec9 xdg-desktop-entries: add 'actions' option, deprecate fileValidation (#2778)
Validation is always enabled so it does not make sense to keep this option
2022-04-17 18:06:09 -04:00
Curtis Jiang
bb860e3e11 misc: fix nix.conf generation (#2824)
nix/nix.conf should generate if cfg.extraOptions is not empty.
2022-04-17 17:46:26 -04:00
Jia Xiaodong
c82b8ac5ad sioyek: add module (#2895) 2022-04-17 17:07:55 -04:00
Sam Willcocks
620ed197f3 gpg: fix handling of multiple public keys
When processing `publicKeys` entries, handle entries that contain
multiple public keys (i.e. gpg --show-key returns multiple `pub`
lines) properly, setting the trust level for each key.

PR #2897
2022-04-17 12:15:14 +02:00
Michael Hoang
8ab155c61f modules: Export pkgs to match NixOS (#2696)
This makes it a lot easier to access the `pkgs` that would be used to
build the home configuration, e.g.

    nix build ./dotfiles#homeConfigurations."user@host".pkgs.vim

This is useful as it allows access to a Nixpkgs that has been
instiantiated with config and overlays.
2022-04-16 18:36:37 -04:00
Sumner Evans
2e473a7b09 neomutt/signature: unset if disabled (#2877)
Closes #2876
2022-04-16 16:36:31 -06:00
Infinidoge
0586d2d42a keychain: set SHELL during initialization (#2880)
Explicitly sets the SHELL environment variable in the snippets put into
the shell init files.

Fixes #2256
2022-04-16 18:33:07 -04:00
Daniel Thwaites
a640dddc9a waybar: fix command not found when reloading (#2865) 2022-04-16 18:31:03 -04:00
Thiago Kenji Okada
7add9ce2e5 picom: remove refreshRate option
Removed by upstream since commit:

    bcbc410c92

This commit is included since v9 release:

    https://github.com/yshui/picom/releases/tag/v9
    https://github.com/yshui/picom/releases/tag/v9-rc1 (the actual changelog)

While this doesn't break the config per see, it results in the
following warning in the logs:

    [ DD/MM/YYYY HH:MM:SS.mmm parse_config_libconfig WARN ] The
      refresh-rate option has been deprecated. Please remove it from
      your configuration file. If you encounter any problems without
      this feature, please feel free to open a bug report

Beside the above change we also remove an old workaround and also
write the configuration file to a well-known location in the user's
home directory.
2022-04-15 23:49:51 +02:00
Kat Inskip
d49d68f419 home-manager: Fix cross-compiles, fixes #2675 (#2893) 2022-04-14 20:58:15 -04:00
dependabot[bot]
92f58b6728 ci: bump cachix/install-nix-action from 16 to 17
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 16 to 17.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v16...v17)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-13 22:12:01 +00:00
Tanish2002
7da4e6680f lf: add package option
PR #2883
2022-04-13 23:08:51 +02:00
florpe
e39a9d0103 pylint: add module (#2729) 2022-04-10 21:54:04 -04:00
Sumner Evans
f911ebbec9 lib.booleans: add yesNo function (#2818)
Closes #2772
2022-04-07 22:36:13 -06:00
Robert Helgesson
55779b20cd pandoc: fix test case 2022-04-08 00:06:23 +02:00
Robert Helgesson
47b3719f51 taskwarrior: minor script cleanup 2022-04-07 23:35:55 +02:00
Alex Miranda
8a046f36eb Translate using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Alex Miranda <alexmirandamoraes@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pt_BR/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-04-07 19:36:38 +02:00
Daniel Nagy
3071ea205d starship: skip one program invocation on each shell init (#2862)
The code that is being evaled without the `--print-full-init` flag is
this:

```sh
__main() {
    local major="${BASH_VERSINFO[0]}"
    local minor="${BASH_VERSINFO[1]}"

    if ((major > 4)) || { ((major == 4)) && ((minor >= 1)); }; then
        source <(/nix/store/...-starship-1.3.0/bin/starship init bash --print-full-init)
    else
        source /dev/stdin <<<"$(/nix/store/...-starship-1.3.0/bin/starship init bash --print-full-init)"
    fi
}
__main
unset -f __main
```

This code checks for bash version >= 4.1 , which has been released in
2009. Since this version is widely unavailable in nixpkgs, we can skip
one program invocation and directly call `starship init bash
--print-full-init`.
2022-04-07 13:36:34 -04:00
x10an14
e361373b5f taskwarrior: make .taskrc writable (#2761)
This is achieved by generating the Home Manager configuration
file as `~/.config/task/home-manager-taskrc`, and including that
file into ~/.config/task/taskrc.

Fixes #2360

Co-authored-by: mainrs <5113257+mainrs@users.noreply.github.com>
Co-authored-by: Nicolas Berbiche <nicolas@normie.dev>
2022-04-07 13:29:53 -04:00
Robert Helgesson
3604a20b67 docs: fix link to rollback instructions
Fixes #2872
2022-04-07 19:22:03 +02:00
André Silva
66ffa7a0a6 systemd: fix creation of user service unit files (#2867)
* systemd: fix creation of user service unit files

* helix: fix failing test due to file output format change

Co-authored-by: Nicolas Berbiche <nicolas@normie.dev>
2022-04-07 02:38:20 -04:00
Ilan Joselevich
07b941f0c4 mpd-discord-rpc: init service (#2728) 2022-04-04 23:48:13 -04:00
Naïm Favier
399a3dfeaf gpg: create homedir with 700 permissions (#2823)
It can happen in some cases that home-manager first runs before gpg
creates its homedir, and it creates it with 755 permissions which the
user then needs to change by hand.

Do this in the module instead: before linking files, make sure the
homedir exists, and if it doesn't, create it with the right permissions.
2022-04-04 23:40:15 -04:00
Radosław Szamszur
a985e711e8 screen-locker: Add option to configure x screensaver cycle (#2853)
Some screen lockers which will be used with xss-lock might require
to set x screensaver timeout with cycle.
2022-04-04 23:32:27 -04:00
ilkecan
3549f5d0f5 xdg-user-dirs: allow paths and define sessionVariables (#2757)
Changed option types to `either str path` to allow using path values.

The related session variable is defined for the default and the extra
user directories now.
2022-04-04 23:32:03 -04:00
Roch D'Amour
0382c5f75e git: Add option to use difftastic as diff tool (#2850)
Difftastic is a syntax-aware diff tool which can be used with git.
2022-04-04 08:53:29 -06:00
Otavio Salvador
cfab869fce flake: add packages.<system>.default (#2835) 2022-04-02 18:38:18 +02:00
pogobanane
38156bd4ed doc: Add link to configuration options.html (#2851) 2022-04-01 23:19:45 +02:00
toonn
e1fab012e8 nix-darwin: sudo --set-home for multiple user activation (#2857)
Changing from `sudo -i` to `sudo -s` messes up activation when multiple
users are managed. `--set-home` should have similar behavior to `-i` in
that the activation script is run from the user's home directory.

Fixes #2856
2022-04-01 11:33:07 -04:00
toonn
cf62e96bf7 Run sudo with -s in the darwin module (#807)
Currently activation is run with `sudo -i` this defaults to the user's
login shell. This can lead to problems if the user's shell isn't set
properly.

By passing `-s` rather than `-i`, `sudo` runs `activate` in `SHELL`
instead. We assume that at this point in the activation `SHELL`
contains the path to a bash in the nix store. This should always be a
valid shell to run the `activate` script with.

From the `sudo` manual it seems like this cannot be fixed if `SHELL`
isn't set at this point or by passing a command to `-s` because that
command is then passed to the user's shell.
2022-03-31 11:24:26 -07:00
Mario Rodas
9580f6c42a zellij: add configuration for darwin
Zellij uses a different path to hold its configuration on Darwin.
2022-03-30 23:56:01 +02:00
Naïm Favier
8db712a6a2 types: fix dagOf behaviour with mkIf
This makes definitions like

    home.activation.foo = mkIf false "bar"

work, where previously they would complain about
`home.activation.foobar.data` being used but not defined.

The crucial part is that we don't call `convertAllToDags` in
`dagOf.merge`, because we need to process `mkIf`/`mkMerge` properties
first. So we let `attrEquivalent.merge` do its job normally, but give
it a type `dagEntryOf` that does the conversion.

Ideally this shouldn't require so much boilerplate; I'd like to
implement something like

    types.changeInto dagContentType elemType dagEntryAnywhere

in Nixpkgs.
2022-03-30 23:29:09 +02:00
Oğuz Ersen
f5a44afa19 Translate using Weblate (Turkish)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Turkish)

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/tr/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/tr/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-03-27 09:44:00 +02:00
Robert Helgesson
80583677e7 Translate using Weblate (Japanese)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Korean)

Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (German)

Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Spanish)

Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Russian)

Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (French)

Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Norwegian Bokmål)

Currently translated at 85.7% (12 of 14 strings)

Translate using Weblate (Swedish)

Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/de/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/es/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/fr/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ko/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ru/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/sv/
Translation: Home Manager/Home Manager Modules
2022-03-27 09:44:00 +02:00
Hosted Weblate
c607ae8671 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-03-27 09:44:00 +02:00
Robert Helgesson
888eac32bd home-manager: fix command option
Fixes #2844
2022-03-27 09:43:19 +02:00
Yevhen Shymotiuk
d123fca83c browserpass: add brave support 2022-03-27 01:12:50 +01:00
lucasew
0520e387dc overlay: rename parameters to flake specification
Signed-off-by: lucasew <lucas59356@gmail.com>
2022-03-27 01:08:52 +01:00
Sandro
b23bb05890 flake: only support linux + darwin
This is to prevent errors with `flake check` because for example
cygwin can't even build bash.

Closes #2829
2022-03-27 00:53:49 +01:00
Moises Nessim
2f58d0a3de nix: add support for nix profile
PR #2833

Co-authored-by: David Arnold <dar@xoe.solutions>
Co-authored-by: Florian Franzen <Florian.Franzen@gmail.com>
2022-03-26 15:11:28 +01:00
Robert Helgesson
171702dd88 files: avoid cleanup if old home-files is missing 2022-03-26 15:05:43 +01:00
Farseen
8afee75d0d dconf: note that system dconf must be enabled
Before enabling dconf in Home Manager, dconf must be enabled in system
config.

Otherwise it will fail like this:

```
$ home-manager switch
Starting Home Manager activation
Activating checkFilesChanged
Activating checkLinkTargets
Activating writeBoundary
Activating installPackages
replacing old 'home-manager-path'
installing 'home-manager-path'
Activating dconfSettings
error: GDBus.Error:org.freedesktop.systemd1.NoSuchUnit: Unit dconf.service not found.
```
2022-03-26 09:33:10 +01:00
Robert Helgesson
ac94041153 docs: bump nmd
Fixes #2821
2022-03-24 00:41:16 +01:00
Robert Helgesson
b030278dc6 nix: fix attribute path of nix stable 2022-03-24 00:11:39 +01:00
Robert Helgesson
9970d23218 gtk: fix incorrect test assertion 2022-03-24 00:08:37 +01:00
Robert Helgesson
70c4696619 tests: bump nmt
Also updated golden files to match new store path normalization
output.
2022-03-23 23:57:20 +01:00
Naïm Favier
e2ebc3a3af picom: use types.lines for extraOptions 2022-03-23 23:10:24 +01:00
Naïm Favier
0cf9dadf5b irssi: use types.lines for extraConfig 2022-03-23 23:10:23 +01:00
Manu [tennox]
6c730bc054 Translate using Weblate (German)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (German)

Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Manu [tennox] <tennox@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/de/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/de/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-03-23 19:56:54 +01:00
stephaneyfx
48a1584d8b i3-sway: Empty set argument was passed to wrong function (#2819)
This would give the error "attempt to call something which is not a
function but a list" given that `optionals a b` returns a list. `indent`
is the one taking this empty set as second argument.
2022-03-22 14:04:28 -06:00
Basti
80b4360678 i3/sway: improve i3.nix to handle options as list like in sway, adjusted functions for less new-lines (#2314)
* i3/sway: Improve code to generate config to avoid new-line issues on code/config changes

* Maintainer: Add SebTM as maintainer
2022-03-21 16:52:57 -06:00
Nazarii Bardiuk
bbc5e0c1e1 tmux: fix broken vi bindings (#2817)
Keybindings have wrong order of arguments: the -N flag should go before
the binding key
2022-03-21 16:25:36 -06:00
Basti
64823066c2 herbstluftwm, mpd: fix bash version in tests (#2816)
* mpd: Fix bash-version in tests

* herbstluftwm: Fix bash-version in tests
2022-03-21 15:41:39 -06:00
polykernel
835797f3a4 xsession.pointerCursor: escape special characters in the cursor path (#2805)
- Escape special character in the cursor name and default cursor file name
  in the cursor path for the xsetroot command.
2022-03-20 18:12:03 -06:00
polykernel
46dc2e5d9f gtk: fix missing newline in formatted config (#2809)
The conversion from `concatMapStrings` to `concatStringsSep` introduced in https://github.com/nix-community/home-manager/pull/2481
creates an unintended behavior change where the formatted config does not end in a newline.[1]
This is problematic for manipulation at the Nix level. In particular, this cause a regression in
the generation of gtk2 settings due to concatenated of the formatted config and `gtk2.extraConfig`
without a newline in between.

This commit restores `concatMapStrings` to match the previous behavior and adds a newline to
the final string for the generated gtk2 config. The test case for gtk2-basic-config
was also updated to check behavior at concatenation boundaries.

[1] - https://github.com/nix-community/home-manager/pull/2481#discussion_r830648706
2022-03-20 16:22:56 -04:00
Naïm Favier
57476b5d28 xcursor: remove warning and use mkDefault for GTK options (#2808) 2022-03-20 13:32:34 -04:00
Sumner Evans
0fad959df8 stalebot: disable auto-closing of issues and pull requests (#2800) 2022-03-19 23:47:41 -06:00
Leon Vack
e96fc6d8f9 tmux: add notes to existing keybindings (#2540) (#2742)
Adds notes to the keybindings created in the tmux config making them
show up in C-b ? and tmux list-keys -N

Fixes #2540
2022-03-19 19:12:21 -04:00
mihnea-s
7cf15b19a9 vscode: add user tasks (#2804) 2022-03-18 18:54:24 -04:00
Naïm Favier
e2a85ac43f bspwm: add alwaysResetDesktops (#2785)
If set to true, desktops configured in `monitors` will be reset every time
the config is run.

If set to false, desktops will only be configured the first time the config is run.
This is useful if you want to dynamically add desktops and you don't want them
to be destroyed if you re-run `bspwmrc`.
2022-03-17 22:56:56 -04:00
polykernel
32e433d07d nix: add structural settings (#2718)
Nix permits user level configurations through ~/.config/nix/nix.conf that allow
customization of system-wide settings and behavior. This is beneficial in chroot
environments and for per-user configurations. System level Nix configurations in the
form of /etc/nix/nix.conf can be specified declaratively via the NixOS nix module but as
of currently no counter part exists in home-manager.

This PR is a port of the RFC42 implementation for the NixOS nix module[1]
to home-manager. Non-applicable options have been excluded and the config generation
backends have been tweaked to the backends offered by home-manager. A notable change
from the NixOS module is a mandatory option to specify the Nix binary corresponding
to the version "nix.conf" should be generated against. This is necessary because
the validation phase is dependent on the `nix show-config` subcommand on the host platform.
While it is possible to avoid validation entirely, the lack of type checking was deemed too significant.
In NixOs, the version information can be retrieved from the `package` option itself which
declares the Nix binary system-wide. However in home-manager, there is no pure way to
detect the system Nix version and what state version the "nix.conf" should be generated
against. Thus an option is used to overcome this limitation by forcing the user to
specify the Nix package. Note this interaction can still be automated by forwarding
the system-wide Nix package to the home-manager module if needed.

Three unit tests were added to test the module behavior for the empty settings, the example
settings and the example registry configurations respectively.

[1] - NixOS/nixpkgs#139075
2022-03-17 22:47:32 -04:00
Sumner Evans
590da80ceb neovim/coc: fix loading CoC plugin (#2801)
Specifically, refactored all places that use cfg.plugins to use a new
combined list that includes CoC if it's enabled.
2022-03-17 20:43:03 -06:00
Naïm Favier
a4b0a3faa4 xdg: add XDG_*_HOME variables to systemd.user.sessionVariables (#2790)
Make sure those variables are set in systemd user services.
This mirrors the situation for `XDG_*_DIRS` variables.
2022-03-17 22:22:53 -04:00
polykernel
e01facc340 gtk: add cursor theme configuration (#2481)
* gtk: add cursor theme configuration

- Added the `cursorTheme` under the gtk module.
- Added tests for the gtk3 settings file generation, and renamed
  the gtk2 unit test expected file for clarity.
- Added guard against generating a blank `gtk.css` when `cfg.extraCss`
  is empty.
- Replaced `concatMapStrings` calls with `concatStringsSep`. The library function
  `concatMapStrings` generates an intemediate list which is then passed to
  `concatStringsSep`, As we are not performing other transformation except
  the addition of newlines, a direct call to `concatStringsSep` is sufficient.
- Updated description of examples to be more general "~/.config" -> "$XDG_CONFIG_HOME".
- Update helper functions `toGtk3Ini` and `formatGtk2Option` to use the library
  function `boolToString` and escape the separator in the key name.

* xcursor: delegate GTK cursor settings to gtk.cursorTheme

- Added deprecation warning for GTK settings in the `xsession.cursorTheme` module.
- Modified config section to use `gtk.cursorTheme` for GTK cursor settings.
2022-03-17 15:30:48 -04:00
Kylie McClain
970b57fd3c autorandr: add filter option (#2795)
xrandr's filter option is useful for enabling integer scaling on
displays that don't have support for it at a graphics card level.
2022-03-17 13:45:04 +01:00
Robert Helgesson
8eb7c009f0 fusuma: avoid unnecessary dependency in test 2022-03-13 23:23:41 +01:00
NomisIV
472e67d1bb himalaya: add support for account.folders
Add support for `account.folders.(inbox|sent|draft)` in the himalaya
account configuration.

PR #2747
2022-03-13 23:20:41 +01:00
iosmanthus
8bdfa41b4e fusuma: add module
Fusuma is a tool supports multitouch gestures with libinput driver on
Linux.
2022-03-13 22:17:55 +01:00
Karl Hallsby
da92196a95 mu: allow aliases to be used by mu configuration file
This has no effect if the user does not have any aliases defined for
any accounts.

This will also only add `--my-address=` to only accounts that are
enabled to be tracked by mu.
2022-03-13 20:27:35 +01:00
ReplayCoding
5d4327cff4 irssi: fix syntax error when no channels are specified 2022-03-13 13:33:09 +01:00
Robert Helgesson
da1f6fab90 ci: bump stable version for dependabot 2022-03-13 12:00:24 +01:00
dependabot[bot]
e6e19ea5a8 ci: bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-07 01:19:37 +00:00
Loïc Reynier
afe96e7433 pubs: add module
Note, the pubs configuration file uses ConfigObj syntax, which is
similar to the INI files syntax but with extra functionalities like
nested sections. This prevents it from using Nix's INI format
generator. Here is an example of pubs configuration that cannot be
generated using Nix's INI format generator:

    [plugins]

    [[git]]
    manual=False

For this reason, we opted for a stringly-typed configuration since the
use of a structured `settings` option would require a custom parser.
2022-03-06 10:40:28 +01:00
Doğu Us
abd221c4b3 Translate using Weblate (Turkish)
Currently translated at 35.7% (5 of 14 strings)

Co-authored-by: Doğu Us <usdogu@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/tr/
Translation: Home Manager/Home Manager Modules
2022-03-06 10:08:57 +01:00
Anon Ymous
4e6856397e Translate using Weblate (Polish)
Currently translated at 64.2% (9 of 14 strings)

Co-authored-by: Anon Ymous <mivon27841@shackvine.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pl/
Translation: Home Manager/Home Manager Modules
2022-03-06 10:08:57 +01:00
maximsmol
87beebc7a2 just: add module 2022-03-06 09:50:52 +01:00
Yt
d119cea376 i3status-rust: change default to newer version (#2774) 2022-03-03 22:32:59 -05:00
Robert Helgesson
541874f55d mpd: add basic test case 2022-03-04 01:36:48 +01:00
Sebastian Sellmeier
e58a7cb13d xdg-desktop-entries: adjust to API changes
The `makeDesktopItem` function changed in a backwards incompatible way
in

    0c713dbed4

This commit updates the module accordingly.

Fixes #2767
2022-03-04 01:08:00 +01:00
sudosubin
ea85f4b1fd launchd: fix multiple agents 2022-02-27 14:58:54 +01:00
Robert Helgesson
2499b91692 treewide: apply nixfmt to a few more files 2022-02-27 02:19:44 +01:00
kmaasrud
1d90b6065a tiny: add module (#2735)
Added module for tiny, a TUI IRC client written in Rust. Thanks to @ratsclub for helping me write my first Nix module!
2022-02-26 17:42:01 -05:00
midchildan
ccd00e3c93 launchd: fix undefined variable in activation script (#2763) 2022-02-26 15:06:12 -05:00
midchildan
c7a13f76a7 launchd: initial support for LaunchAgents 2022-02-26 10:32:19 +01:00
Frank Moda
662350bee2 neovim: remove trace log of vim plugins (#2756) (#2760) 2022-02-25 14:35:13 +01:00
Markus Wamser
650cfe60f3 vscode: fix name of extension in example (#2759) 2022-02-24 18:45:41 -05:00
Mifom
8f7d925503 gitui: add module 2022-02-24 23:42:04 +01:00
Mikhail Chekan
1faefcded3 Translate using Weblate (Russian)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: Mikhail Chekan <chekoopa@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ru/
Translation: Home Manager/Home Manager Modules
2022-02-24 22:43:44 +01:00
Weblate
2248ea1831 Add translation using Weblate (Italian)
Co-authored-by: Weblate <noreply@weblate.org>
2022-02-24 22:43:43 +01:00
Marco Turchetto
1950eb878b Add translation using Weblate (Italian)
Co-authored-by: Marco Turchetto <marco.turchetto.mt@gmail.com>
2022-02-24 22:43:43 +01:00
Selene Hines
0b1745b4ef neovim: autogenerate config.lua file sourced to init.vim (#2716) 2022-02-23 15:53:31 +01:00
Josh Holland
838d40d61a foot: set OOMPolicy=continue for foot server (#2749)
Previously, if a process inside a foot client triggered the OOM killer,
systemd would also kill the parent unit, namely the foot server.
This is not ideal if a user has a lot of clients attached, and it's
usually not the terminal emulator's fault that a process inside it has
ended up using all the available memory.
2022-02-22 20:15:28 +01:00
NomisIV
69536af27e himalaya: fix smtp-starttls option (#2744)
The `smtp-starttls` option was previously to the value of `account.imap.tls.useStartTls`, when `account.smtp.tls.useStartTls` should be used instead
2022-02-21 14:32:32 -07:00
Thiago Kenji Okada
b3af91d293 tests/nnn: fix tests (#2746)
There seems to be some changes on how wrapped binaries are implemented
on nixpkgs. This broke the nnn tests since the tests were coupled with
the old implementation.

This commit fix the tests, and also make it less coupled by just testing
if the bookmarks/plugins/environment variables are available.
2022-02-21 14:17:22 -07:00
Mario Rodas
0232fe1b75 atuin: don't install widget on limited terminals
Otherwise we get the following warning for terminals with limited
capabilities:

    bash: bind: warning: line editing not enabled
2022-02-19 04:20:00 +00:00
lucasew
4f4165a8b9 espanso: add module
This commit adds a module to configure espanso, a program to do text
expansions that is configured using a YAML configuration file.
2022-02-18 00:35:57 +01:00
Daniel Siepmann
5b208b42b2 docs: section how to update system 2022-02-17 22:57:52 +01:00
Riley Inman
c859a5265a sway: add tray.target 2022-02-17 22:48:14 +01:00
Caleb Chase
30082a623a docs: fix standalone flake setup 2022-02-17 22:45:37 +01:00
Robert Helgesson
5375afb2fb eww: fix maintainer referencee 2022-02-17 22:34:21 +01:00
mainrs
498c188e62 eww: add module
Closes #2682
2022-02-17 18:41:05 +01:00
Jian Lin
2116fe6b50 zsh: move sessionVariables from .zshrc to .zshenv (#2708)
This patch moves both home.sessionVariables and
programs.zsh.sessionVariables from .zshrc to .zshenv. Additionally,
these two kinds of session variables will not be sourced more than
once to allow user-customized ones to take effect.

Before, session variables are in .zshrc, which causes non-interactive
shells to not be able to get those variables. For example, running a
command through SSH is in a non-interactive and non-login shell, which
suffers from this. With this patch, all kinds of shells can get
session variables.

The reason why these session variables are not moved to .zprofile is
that programs started by systemd user instances are not able to get
variables defined in that file. For example, GNOME
Terminal (gnome-terminal-server.service) is one of these programs and
doesn't get variables defined in .zprofile. As a result, the shells it
starts, which are interactive and non-login, do not get those
variables.

Fixes #2445

Related NixOS/nixpkgs#33219
Related NixOS/nixpkgs#45784

This file is not formatted before and is excluded by ./format, so I don't format it.
2022-02-17 10:20:56 +01:00
mainrs
810e5f3613 zellij: add module
Closes #2666
2022-02-17 00:55:28 +01:00
teu5us
2a7e247202 Translate using Weblate (Russian)
Currently translated at 64.2% (9 of 14 strings)

Co-authored-by: teu5us <paulkreuzmann@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ru/
Translation: Home Manager/Home Manager Modules
2022-02-16 16:38:15 +01:00
Artem Shinkarov
a3c18a60d5 neovim: add extraLuaPackages to neovim, fixes #1964. (#2617)
Similarly to extraPytonPackages, we add extraLuaPackages that make
lua libraries available at runtime.
2022-02-16 16:38:10 +01:00
Shamrock Lee
50204cea94 completion.*: add flake-related arguments 2022-02-15 22:47:41 +01:00
Shamrock Lee
23a9f9127c home-manager: add more pass-through options
Specifically, pass through --[extra-]experimental-features to Nix.
2022-02-15 22:45:59 +01:00
Shamrock Lee
03b7495183 docs: fix typo and clarify 2022-02-15 22:44:41 +01:00
Wout Mertens
7c2ae0bdd2 faq: explain how to let HM manage shell profiles 2022-02-13 00:02:53 +01:00
Robert Helgesson
44934a1a91 Merge latest translation updates 2022-02-12 23:47:11 +01:00
Mustafa Çalışkan
4160629af7 Translate using Weblate (Turkish)
Currently translated at 14.2% (2 of 14 strings)

Translation: Home Manager/Home Manager Modules
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/tr/
2022-02-12 16:54:30 +01:00
Mustafa Çalışkan
ae95406f86 Translate using Weblate (Turkish)
Currently translated at 96.8% (31 of 32 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/tr/
2022-02-12 16:54:29 +01:00
Narazaki Shuji
54c2cf7fb8 Translate using Weblate (Japanese)
Currently translated at 100.0% (14 of 14 strings)

Translation: Home Manager/Home Manager Modules
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
2022-02-12 16:54:28 +01:00
Weblate
37f0a161a0 Add translation using Weblate (Turkish) 2022-02-11 15:18:06 +01:00
Mustafa Çalışkan
be7f132a12 Add translation using Weblate (Turkish) 2022-02-11 15:18:01 +01:00
Heman Gandhi
b784f588ee Translate using Weblate (Japanese)
Currently translated at 92.8% (13 of 14 strings)

Translation: Home Manager/Home Manager Modules
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
2022-02-11 00:05:01 +01:00
Heman Gandhi
68cf4bef2e Translate using Weblate (Japanese)
Currently translated at 100.0% (32 of 32 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
2022-02-11 00:05:01 +01:00
Narazaki Shuji
ec5c5ae9a8 Translate using Weblate (Japanese)
Currently translated at 78.5% (11 of 14 strings)

Translate using Weblate (Japanese)

Currently translated at 100.0% (32 of 32 strings)

Translate using Weblate (Japanese)

Currently translated at 35.7% (5 of 14 strings)

Translate using Weblate (Japanese)

Currently translated at 84.3% (27 of 32 strings)

Translate using Weblate (Japanese)

Currently translated at 25.0% (8 of 32 strings)

Co-authored-by: Narazaki Shuji <shujinarazaki@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ja/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-02-11 00:05:01 +01:00
Weblate
e448c3c123 Add translation using Weblate (Japanese)
Co-authored-by: Weblate <noreply@weblate.org>
2022-02-11 00:05:01 +01:00
Heman Gandhi
a2363ceb1d Translate using Weblate (Japanese)
Currently translated at 25.0% (8 of 32 strings)

Translate using Weblate (Japanese)

Currently translated at 6.2% (2 of 32 strings)

Add translation using Weblate (Japanese)

Co-authored-by: Heman Gandhi <hemangandhi@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ja/
Translation: Home Manager/Home Manager CLI
2022-02-11 00:05:01 +01:00
Thibaut Marty
6d9d9294d0 notmuch: fix database creation when using hooks
When an hook is defined, a side effect was the creation of the
${notmuchIni.database.path}/.notmuch/ directory by home-manager. If
the Xapian database does not exist yet but this .notmuch directory
exists, Notmuch is confused and throws an error when `notmuch new` is
run (while this should create the database the first time).

This commit changes the hooks paths to $XDG_CONFIG_HOME where Notmuch
expects them (see notmuch-config(1)) instead of inside the maildir
database directory.

It also moves the configuration where Notmuch expects it, but the
$NOTMUCH_CONFIG environment variable is kept for backward
compatibility.
2022-02-11 00:04:40 +01:00
Shamrock Lee
85bbc6cc12 docs: move Nix Flakes documentation to manual
In the manual:
*   Add chapter Nix Flakes
*   Add links to sections of chapter "Using Home Manager"

In README.md:
*   Remove section "Nix Flakes"
*   Add manual reference at the buttom of section "Installation"
2022-02-10 22:15:03 +01:00
Nelson Alex Jeppesen
e2aa1f5986 kitty: add option theme (#2710)
Add Kitty option to install kitty-themes and configure Kitty to use
one of those themes
2022-02-08 11:54:24 -07:00
Naïm Favier
1ca6293c8f vscode: fix keybindings existence check (#2707)
... and flip immutableExtensionsDir to mutableExtensionsDir
2022-02-07 12:40:59 -05:00
Morgane Austreelis
63dccc4e60 twmn: add module
This module allows to configure and start the twmn daemon.
2022-02-04 01:05:04 +01:00
Tymoteusz Dolega
11c0e5d188 Translate using Weblate (Polish)
Currently translated at 50.0% (7 of 14 strings)

Co-authored-by: Tymoteusz Dolega <tymoteuszdolega@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pl/
Translation: Home Manager/Home Manager Modules
2022-02-03 23:14:10 +01:00
Nicolas Berbiche
1fa809f783 darwin: add Nix package to activation $PATH
The fix for https://github.com/nix-community/home-manager/issues/2178
did not apply the patch to nix-darwin too.

See: https://github.com/nix-community/home-manager/issues/2178#issuecomment-1029015498
2022-02-03 15:24:31 -05:00
mainrs
9d369c75ce man: add package option (#2688)
Closes #2634
2022-02-02 16:35:28 -05:00
Tristan
933b6d97b4 plex-mpv-shim: init service (#2655) 2022-02-02 16:34:19 -05:00
Michael Hoang
184b0154f2 vscode: Add immutable extensions dir option (#2613) 2022-02-02 15:57:11 -05:00
박수원
a52aed72c8 Translate using Weblate (Korean)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: 박수원 <bboxone@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ko/
Translation: Home Manager/Home Manager Modules
2022-01-30 22:50:27 +01:00
Weblate
d30f46934d Add translation using Weblate (Korean)
Co-authored-by: Weblate <noreply@weblate.org>
2022-01-30 22:50:26 +01:00
박수원
774d6e35a5 Translate using Weblate (Korean)
Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Korean)

Co-authored-by: 박수원 <bboxone@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ko/
Translation: Home Manager/Home Manager CLI
2022-01-30 22:50:26 +01:00
Naïm Favier
95d39e13a4 bash: use shellDryRun to check scripts
Allows using extglob in initialisation files.
See https://github.com/NixOS/nixpkgs/pull/151371
2022-01-30 19:30:33 +01:00
Jakub Kozłowski
acf824c9ed sbt: trim output of password command 2022-01-29 00:14:05 +01:00
pinage404
418ae217dd home-manager.autoUpgrade: add module
Home Manager upgrade service that periodically updates your Nix
channels before running `home-manager switch`.
2022-01-28 23:42:25 +01:00
Thibault Lemaire
fb939d1acf docs: note how to get status of activation service
Add a note explaining how to get the output of the Home Manager
activation script when it's used as a NixOS module.
2022-01-28 23:01:26 +01:00
Joakim Holm
4e92ec84f9 ion: Add module (#2625)
Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>
Co-authored-by: Matthieu Coudron <teto@users.noreply.github.com>
2022-01-27 19:15:45 +01:00
Michael Hoang
aa6261bb96 nix: add module (#2623) 2022-01-27 18:58:25 +01:00
Matthieu Coudron
8d3fe1366b neovim: support different configuration languages (#2637)
Plugins now accept a "type" element describing the language (viml, lua
, teal, fennel, ...) in which
they are configured.

The configuration of the different plugins is aggregated per language
and made available as a key in the attribute set `programs.neovim.generatedConfigs`

For instance if you want to configure a lua package:

```
programs.neovim.plugins = [
{
plugin = packer-nvim;
type = "lua";
config = ''
    require('packer').init({
    luarocks = {
	python_cmd = 'python' -- Set the python command to use for running hererocks
    },
    })
'';
}
]
```
and you can save the generated lua config to a file via

```
  xdg.configFile = {
    "nvim/init.generated.lua".text = config.programs.neovim.generatedConfigs.lua;
  };
```
2022-01-27 16:27:35 +01:00
Robert Helgesson
24ed6e6d4d syncthing: add cfg variable for convenience 2022-01-27 00:33:46 +01:00
Robert Helgesson
86248a2d5c syncthing: add option extraOptions
Fixes #2598
2022-01-27 00:33:45 +01:00
Daniel Wagenknecht
cbc176010b kodi: add module
Kodi is a media center software.
2022-01-26 23:56:25 +01:00
polykernel
93b52ce0bd chromium: add commandLineArgs option
- Add support for command line arguments, this allows arguments to be
  persistently set if needed (i.e workaround hardware bugs or enabling
  certain flags).
- Document setting a custom package will nullify the `commandLineArgs`
  option.
- Fix `mkRemovedOption` assertion from being apply even when the
  `extensions` option is unused for google chrome modules.
2022-01-26 22:34:19 +01:00
pacien
990ca662c4 unison: fix option example
Pairs are named attribute sets. One level was missing.

Fixes #2662
2022-01-25 23:54:40 +01:00
Robert Helgesson
f206f94ac5 tests: re-enable commented tests
The issue is now fixed in Nixpkgs.
2022-01-25 22:47:27 +01:00
Mr Hedgehog
462d4a7abd atuin: add fish integration 2022-01-25 00:21:31 +01:00
Robert Helgesson
192675b149 docs: fix a few stray periods 2022-01-25 00:10:25 +01:00
Kirill Elagin
c47c350f65 pandoc: add new module
Add a module for pandoc that provides the following:

1. Setting default configuration options.
2. Installing templates.
3. Installing citation styles.
2022-01-22 21:16:50 +01:00
Carlos Lobo
e622c5d836 tint2: add module 2022-01-22 18:09:15 +01:00
amesgen
54b8b13a9b timidity: add module 2022-01-22 16:46:16 +01:00
polykernel
d469b9bf8a watson: add module
Watson is a CLI for tracking your time.

Two unit tests were added to validate the module behavior for an empty
configuration and the example configuration.
2022-01-22 16:12:34 +01:00
Philipp Mildenberger
32da35f65b helix: add module 2022-01-22 15:42:49 +01:00
ash
e8a68de7ab github: copyedit stale bot's messages (#2658) 2022-01-22 06:25:13 -07:00
Nicolas Berbiche
7eb5106548 docs: fix README flake commands
The README is corrected to mention using `home-manager switch --flake`
with Nix Flakes.
2022-01-20 12:09:33 +01:00
mainrs
c491331718 Translate using Weblate (German)
Currently translated at 92.8% (13 of 14 strings)

Co-authored-by: mainrs <github619064@zerotask.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/de/
Translation: Home Manager/Home Manager Modules
2022-01-18 00:44:25 +01:00
Rodrigo Nascimento
5e4f439e0c Add translation using Weblate (Portuguese (Brazil))
Co-authored-by: Rodrigo Nascimento <rodrigocesarnascimento@gmail.com>
2022-01-18 00:44:25 +01:00
Weblate
eccd704756 Add translation using Weblate (Portuguese (Brazil))
Add translation using Weblate (German)

Co-authored-by: Weblate <noreply@weblate.org>
2022-01-18 00:44:25 +01:00
mainrs
4d4c1f343b Translate using Weblate (German)
Currently translated at 96.8% (31 of 32 strings)

Translate using Weblate (German)

Currently translated at 15.6% (5 of 32 strings)

Add translation using Weblate (German)

Co-authored-by: mainrs <github619064@zerotask.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/de/
Translation: Home Manager/Home Manager CLI
2022-01-18 00:44:25 +01:00
Naïm Favier
8cf13abffc bspwm: set _JAVA_AWT_WM_NONREPARENTING in xsession.profileExtra (#2645)
Otherwise the fix doesn't affect applications launched via sxhkd.
2022-01-17 18:44:20 -05:00
Nicolas Berbiche
b59752b9ff rofi: add finalPackage option (#2649)
This makes it possible to use the customized rofi binary in Sway keybindings for instance.
2022-01-17 18:21:40 -05:00
Nicolas Berbiche
9bceb8292e waybar: fix deprecated "modules" setting check (#2646)
- The check did not account the default value of `settings.modules` to be `{}`.
  The default value was changed to null.

- The `settings.modules` option is now hidden from the docs.
2022-01-17 16:38:22 -05:00
Hubert Jasudowicz
60d2c9660b rbw: Fix a typo (#2648) 2022-01-17 16:37:46 -05:00
Subin Kim
a69f3e9b03 kime: Fix kime systemd service broken (#2621)
* kime: Fix kime systemd service
* kime: Add test case
* kime: Add test stub package
2022-01-17 13:53:42 -05:00
Robin Stumm
f71d41ba36 kakoune: fix ui options (#2641)
These were renamed in v2021.08.28,
commit 7e66846172165eb1f860f26f51f7a20790b0af29.
2022-01-16 19:39:41 -05:00
Zsolt Szende
94281669fd Add programs.fish.interactiveShellInit to direnv (#2614) 2022-01-16 19:13:32 -05:00
Roch D'Amour
986cf41b3b kitty: Allow package to be configurable (#2640) 2022-01-16 18:19:32 -05:00
Florian Klink
46bba772f2 modules/misc/news.nix: fix instructions (#2643)
The gnome3.dconf alias doesn't exist anymore, it's now in pkgs.dconf
directly.
2022-01-16 17:31:04 -05:00
Robert Helgesson
46978d2047 docs: add link to contributing chapter in readme
Fixes #2638
2022-01-16 19:01:49 +01:00
Robert Helgesson
b2592ae67c docs: fix typo 2022-01-16 18:58:26 +01:00
Robert Helgesson
1477eb1555 docs: add link to Matrix room
Fixes #2639
2022-01-16 18:48:01 +01:00
rcerc
a5dd5d5f19 docs: clarify stand-alone installation instructions
Specifically,

- include system-wide Nixpkgs channel so `NIX_PATH` solution also
  works on multi-user installations;

- additionally link to Nix Discourse reply for more information on
  `NIX_PATH`; and

- remove note about relog on NixOS since all the channels in
  `~/.nix-defexpr/channels/` are included by default, so the Home
  Manager channel should be picked up automatically.
2022-01-14 00:49:04 +01:00
6KHCPCPO
85f13acb81 Translate using Weblate (French)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: 6KHCPCPO <lxh43qf2b@relay.firefox.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/fr/
Translation: Home Manager/Home Manager Modules
2022-01-12 23:55:19 +01:00
Robert Helgesson
d07df8d9a8 Translate using Weblate (Spanish)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translation: Home Manager/Home Manager CLI
2022-01-11 22:45:33 +01:00
Mauricio Scheffer
8a431023c0 Translate using Weblate (Spanish)
Currently translated at 100.0% (14 of 14 strings)

Translate using Weblate (Spanish)

Currently translated at 100.0% (32 of 32 strings)

Translate using Weblate (Spanish)

Currently translated at 57.1% (8 of 14 strings)

Co-authored-by: Mauricio Scheffer <mauricioscheffer@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/es/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-01-11 22:45:33 +01:00
Nicolas Berbiche
5209ea0d8c skim: use cfg.package in shell integrations 2022-01-11 16:44:57 +01:00
Kirill Elagin
204f9808d3 sagemath: add module 2022-01-11 14:38:02 +01:00
Robert Helgesson
5a8b29bc7a tests: disable a few tests due to broken notmuch
This disables a few tests that fail due to a broken notmuch in
Nixpkgs. See

    https://github.com/nix-community/home-manager/pull/2629

and

    https://github.com/NixOS/nixpkgs/pull/154309
2022-01-11 14:30:56 +01:00
Nicolas Berbiche
8a5550aea3 gh: remove git overlay in tests 2022-01-10 22:20:49 -05:00
rcerc
f3be3cda6a services/emacs: add option to set emacsclient as the default editor (#2545)
* services/emacs: add `defaultEditor` option

Sets `emacsclient` as the default editor using the `EDITOR` environment variable.
2022-01-10 02:17:13 -05:00
Naïm Favier
05d655146b rofi: allow extending themes (#2571)
Move @import and @theme directives to the top of custom theme
definitions so as to allow extending other themes.
2022-01-09 17:15:24 -05:00
Olli Helenius
a90ddcd627 skim: add package option (#2619)
Fixes #2618
2022-01-08 22:53:49 -05:00
Robert Helgesson
c751aeb19e Update translations 2022-01-06 09:57:17 +01:00
ethinx
2989c0f6b2 Translate using Weblate (Chinese (Simplified))
Currently translated at 50.0% (7 of 14 strings)

Co-authored-by: ethinx <eth2net@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hans/
Translation: Home Manager/Home Manager Modules
2022-01-06 09:29:33 +01:00
Allan Nordhøy
a2307ff6f3 Translate using Weblate (Norwegian Bokmål)
Currently translated at 85.7% (12 of 14 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nb_NO/
Translation: Home Manager/Home Manager Modules
2022-01-06 09:29:33 +01:00
Robert Helgesson
65434ef33c Translate using Weblate (Swedish)
Currently translated at 100.0% (14 of 14 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/sv/
Translation: Home Manager/Home Manager Modules
2022-01-06 09:29:33 +01:00
Hosted Weblate
95823b5639 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2022-01-06 09:29:33 +01:00
Weblate
a726f7e3e8 Add translation using Weblate (Spanish)
Co-authored-by: Weblate <noreply@weblate.org>
2022-01-06 09:29:33 +01:00
Mario Rodas
cf0fc744c2 Translate using Weblate (Spanish)
Currently translated at 15.6% (5 of 32 strings)

Add translation using Weblate (Spanish)

Co-authored-by: Mario Rodas <rodasmario2@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/es/
Translation: Home Manager/Home Manager CLI
2022-01-06 09:29:33 +01:00
Robert Helgesson
5fb55d51e2 swayidle: fix option documentation 2022-01-06 09:22:42 +01:00
cwyc
426ab2cf11 xdg-desktop-entries: reflect changes in makeDesktopItem API (#2496)
Based on nixpkgs commit c4b3aa62608d592d8a983be685f7e82000f4de30
stringBool is not needed because makeDesktopItem handles converting boolean parameters to string,
and noDisplay and prefersNonDefaultGPU parameters have been added.
2022-01-04 22:58:20 -05:00
Jos van Bakel
65e5b835a9 swayidle: add module (#2610)
Swayidle is an idle management daemon for Wayland. This modules adds support for
running swayidle as a SystemD user unit and makes it configurable through
home-manager.
2022-01-03 12:03:20 -07:00
Robert Helgesson
8e7a10602d treewide: make a few more strings translatable 2022-01-02 11:56:52 +01:00
Robert Helgesson
5f00024e75 tests: make enableBig an option
This makes it possible to identify the test as big in the test file
itself. It also seems like a more natural way to control the test
running.
2022-01-02 10:36:52 +01:00
Robert Helgesson
adaea605db home-manager: document the --version command option
Fixes #2604
2022-01-02 08:33:32 +01:00
polykernel
7c0dc519e1 bottom: fix empty-settings test on darwin (#2603)
The empty configuration test for the bottom module introduced as of https://github.com/nix-community/home-manager/pull/2323
is not cross platform. Specifically, it silently fails under a darwin environment due to
the configuration file not being generated at $XDG_CONFIG_HOME. This PR add cross platform support
by specifying the platform-dependent configuration directories to check. The expected unit test data
was also extracted to a separate file to differentiate between test data changes and
changes to the test itself.
2022-01-01 20:28:45 -07:00
Tobias Happ
c2f151258a bash: remove unnecessary shebang and executable bit for dotfiles (#2599) 2022-01-01 10:06:55 -07:00
Olmo Kramer
89bdef7994 herbstluftwm: init module 2021-12-31 10:44:08 +01:00
Tomasz Czyż
cc3b979893 Translate using Weblate (Polish)
Currently translated at 100.0% (6 of 6 strings)

Translate using Weblate (Polish)

Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Polish)

Co-authored-by: Tomasz Czyż <tomasz.czyz@eskapizm.pl>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/pl/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/pl/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2021-12-29 10:40:19 +01:00
WhiredPlanck
a5dcd2ac0a Translate using Weblate (Chinese (Traditional))
Currently translated at 100.0% (6 of 6 strings)

Translate using Weblate (Chinese (Traditional))

Currently translated at 100.0% (32 of 32 strings)

Translate using Weblate (Chinese (Simplified))

Currently translated at 100.0% (6 of 6 strings)

Translate using Weblate (Chinese (Simplified))

Currently translated at 100.0% (6 of 6 strings)

Co-authored-by: WhiredPlanck <fungdaat31@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hant/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2021-12-29 10:40:19 +01:00
Weblate
3d86640269 Add translation using Weblate (Polish)
Add translation using Weblate (Chinese (Traditional))

Add translation using Weblate (Chinese (Simplified))

Co-authored-by: Weblate <noreply@weblate.org>
2021-12-29 10:40:19 +01:00
WhiredPlanck
bc859aeed7 Add translation using Weblate (Chinese (Traditional))
Translate using Weblate (Chinese (Simplified))

Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Chinese (Simplified))

Co-authored-by: WhiredPlanck <fungdaat31@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/zh_Hans/
Translation: Home Manager/Home Manager CLI
2021-12-29 10:40:19 +01:00
Robert Helgesson
2f40cd05dc treewide: make sure meta.maintainers evaluate
This fixes all bad maintainer values and add a CI step to validate
that no bad values remain in the future.

Closes #2587
2021-12-29 10:38:10 +01:00
Robert Helgesson
a3457d3f85 ci: verify that meta.maintainers evaluate
Fixes #2588
2021-12-29 10:16:19 +01:00
Luna Nova
eeafec5103 wlsunset: fix maintainers entry for matrss 2021-12-29 09:51:00 +01:00
Luna Nova
04342bd7a2 trayer: fix maintainers entry for mager 2021-12-29 09:50:59 +01:00
Luna Nova
c24c494e69 playerctld: fix maintainers entry for fendse 2021-12-29 09:50:59 +01:00
Luna Nova
907e63250a pasystray, status-notifier-watcher: fix maintainers entry for pltanton 2021-12-29 09:50:58 +01:00
Luna Nova
eb4a1ad68f kanshi: fix maintainers entry for nurelin 2021-12-29 09:50:57 +01:00
Luna Nova
7a0a7d6427 xmobar: fix maintainers entry for t4ccer 2021-12-29 09:50:56 +01:00
Luna Nova
6b1f56407b ncmpcpp: fix maintainers entry for olmokramer 2021-12-29 09:50:55 +01:00
Luna Nova
87d0fed9bc htop: fix maintainers entry for bjpbakker 2021-12-29 09:50:54 +01:00
Luna Nova
a95fd897f2 hexchat: remove superherointj as maintainer
Mirroring https://github.com/NixOS/nixpkgs/pull/144319
2021-12-29 09:50:53 +01:00
Luna Nova
b1b55c983f lazygit: fix kalhuage maintainers reference 2021-12-29 09:50:52 +01:00
Luna Nova
5705ba1366 exa: fix kalhauge maintainers reference 2021-12-29 09:50:51 +01:00
Luna Nova
ec79a7d830 broot: fix aheaume entry in maintainers 2021-12-29 09:50:51 +01:00
Luna Nova
bad529983e xdg-desktop-entries: fix reference to maintainer cwyc 2021-12-29 09:50:50 +01:00
Tim Haering
c9dbe2847e alacritty: correct example config link
Since the repository was moved, the old link was pointing nowhere.
2021-12-29 09:39:42 +01:00
Robert Helgesson
0b197562ab treewide: use remove when possible
See https://github.com/nix-community/home-manager/pull/2566.
2021-12-27 09:03:18 +01:00
Luna Nova
48f2b381dd dconf: remove gnidorah from maintainers/CODEOWNERS (#2586)
gnidorah has been removed from the maintainers list in nixpkgs
https://github.com/NixOS/nixpkgs/pull/121119
2021-12-25 00:28:37 -07:00
Mikhail Chekan
3b5ebdefd8 Translate using Weblate (Russian)
Currently translated at 100.0% (6 of 6 strings)

Co-authored-by: Mikhail Chekan <chekoopa@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/ru/
Translation: Home Manager/Home Manager Modules
2021-12-23 23:00:35 +01:00
Weblate
76c50cecf8 Add translation using Weblate (Russian)
Co-authored-by: Weblate <noreply@weblate.org>
2021-12-23 23:00:35 +01:00
Mikhail Chekan
0fd86c66fe Translate using Weblate (Russian)
Currently translated at 100.0% (32 of 32 strings)

Add translation using Weblate (Russian)

Co-authored-by: Mikhail Chekan <chekoopa@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/ru/
Translation: Home Manager/Home Manager CLI
2021-12-23 23:00:35 +01:00
Nicolas Berbiche
f15b151ca1 waybar: configurable systemd WantedBy target (#2524)
Before this commit, a user needed to override the systemd target that
would start Waybar with `mkForce`, this is no longer necessary.
2021-12-23 17:00:31 -05:00
ckie
3b9c625b64 xsession: add xplugd service to accompany setxkbmap (#2450)
This fixes #1638; xplugd will restart setxkbmap if a new keyboard is
plugged in to ensure it is also configured correctly.
2021-12-23 15:38:44 -05:00
Jakob Leifhelm
1b03a8ab7a direnv: add troubleshooting to fish integration 2021-12-21 23:43:06 +01:00
Lorenzo Manacorda
02426bb52f systembus-notify: add module 2021-12-21 23:35:56 +01:00
Jonas Heinrich
7ec50b1f77 gtk: add support for GTK4 configuration 2021-12-21 20:44:55 +01:00
Robert Helgesson
aef97988da docs: add release note about translation support 2021-12-20 22:58:54 +01:00
TheBlackBeans
679e07e32e Translate using Weblate (French)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: TheBlackBeans <adrien.mathieu.net@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fr/
Translation: Home Manager/Home Manager CLI
2021-12-19 17:51:26 +01:00
Bruno Inec
3db6036775 waybar: allow using attrs for settings (#2547)
Co-authored-by: Bruno Inec <binec@scaleway.com>
2021-12-19 00:21:15 -05:00
Robert Helgesson
8b44e81978 Translate using Weblate (Swedish)
Currently translated at 100.0% (32 of 32 strings)

Co-authored-by: Robert Helgesson <robert@rycee.net>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
Translation: Home Manager/Home Manager CLI
2021-12-17 21:50:25 +01:00
Robert Helgesson
6c6f934f0b gitlab-ci: build HTML manual in a simpler way 2021-12-17 00:06:06 +01:00
Hosted Weblate
25e5a900de Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/
2021-12-16 20:45:31 +01:00
Vincent Haupert
d8f9dcfbd3 pam: add yubico option
Write YubiKey token IDs in the format yubico_pam expects. See
https://developers.yubico.com/yubico-pam/ for details. Also refer to
the NixOS option security.pam.services.<name>.yubicoAuth.

Closes #2502
2021-12-16 19:46:47 +01:00
Naïm Favier
78aa7cceff gpg: allow specifying trust levels by name 2021-12-16 19:06:39 +01:00
J. Lavoie
4108989d19 Translate using Weblate (French)
Currently translated at 100.0% (6 of 6 strings)

Translation: Home Manager/Home Manager Modules
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/fr/
2021-12-16 09:56:08 +01:00
J. Lavoie
fd7c5e9346 Translate using Weblate (French)
Currently translated at 100.0% (27 of 27 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fr/
2021-12-16 09:56:08 +01:00
Robert Helgesson
1acbc5ad8b Translate using Weblate (Swedish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
2021-12-16 09:56:08 +01:00
Guilloux Nicolas
f97e921c94 Translate using Weblate (French)
Currently translated at 66.6% (18 of 27 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/fr/
2021-12-16 09:56:08 +01:00
Sumner Evans
42ba7b6304 sway: add 'xwayland disable' to sway config if disabled (#2568)
Closes #2567
2021-12-16 01:56:02 -07:00
Nick Hu
c61fc1c288 xmonad: add support for v0.17.0 (#2522) 2021-12-14 13:23:07 -05:00
Robert Helgesson
3d9eb1cecd home-manager: support i18n of install script 2021-12-14 18:53:54 +01:00
Weblate
c1677de31a Add translation using Weblate (French) 2021-12-14 07:56:24 +01:00
Guilloux Nicolas
9b70b22948 Add translation using Weblate (French) 2021-12-14 07:56:23 +01:00
Allan Nordhøy
ea5591d225 Translate using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (27 of 27 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nb_NO/
2021-12-13 22:29:53 +01:00
Allan Nordhøy
0c6180c714 Translate using Weblate (Norwegian Bokmål)
Currently translated at 83.3% (5 of 6 strings)

Translation: Home Manager/Home Manager Modules
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/nb_NO/
2021-12-13 22:29:47 +01:00
Robert Helgesson
2ff170d91c Translate using Weblate (Swedish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Home Manager/Home Manager CLI
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/sv/
2021-12-13 22:29:39 +01:00
Allan Nordhøy
1fad70e995 Add translation using Weblate (Norwegian Bokmål) 2021-12-13 22:29:34 +01:00
Allan Nordhøy
0422d1f87f Add translation using Weblate (Norwegian Bokmål) 2021-12-13 22:29:12 +01:00
Robert Helgesson
9bcad20013 home-manager: add basic i18n support
The support for translated strings is, for now, limited to strings
generated in Bash code.
2021-12-13 21:47:28 +01:00
Jonas Heinrich
3d46c011d2 opensnitch-ui: add module 2021-12-12 18:10:10 +01:00
Mario Rodas
543484d298 navi: don't install widget on limited terminals
Otherwise we get the following warning for terminals with limited
capabilities:

    bash: bind: warning: line editing not enabled
2021-12-12 17:59:30 +01:00
Peter Jones
0ebed30a10 gromit-mpx: add module 2021-12-11 19:17:59 +01:00
Mario Rodas
6fe3b539e0 navi: add module 2021-12-11 12:55:29 +01:00
Mario Rodas
fa73c3167e sqls: add module
sqls is a SQL language server written in Go.
See: https://github.com/lighttiger2505/sqls
2021-12-11 00:21:49 +01:00
polykernel
c7592b747b treewide: prefer XDG variables over dot directories
Currently, dot directories and XDG base directories are used
inconsistently in the Home Manager option declarations. This creates
ambiguity for the user as to where the location of the file should be
albeit this is rarely encountered in practice as it is sufficient to
read upstream documentation. The rationale is to make declarations
consistent and make a clear distinction between hardcoded and modular
specifications.

References to ~/.config in relevant nixpkgs modules were untouched as
the location is hardcoded upstream[1]. Furthermore, modules of
programs which do not follow XDG specifications were also untouched.

Generalization of tilde(~) expansions to $HOME were also considered,
however there isn't sufficient rationale despite the use of $HOME
being more universal. The expansion is standardized in POSIX[2] and is
essentially portable across all shells, thus there is no pragmatic
value to introducing the change.

[1] https://github.com/nixos/nixpkgs/blob/master/pkgs/top-level/impure.nix
[2] https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01
2021-12-10 23:51:44 +01:00
Bruno BELANYI
829e89a16f less: store 'lesskey' under XDG_CONFIG_HOME
Less clutter in the $HOME.
2021-12-08 11:23:56 +01:00
oxalica
736581f113 gpg-agent: rewrite hash algo in Nix to avoid IFD 2021-12-08 00:01:29 +01:00
oxalica
78ff6b851c gpg-agent: fix and enable tests 2021-12-08 00:01:29 +01:00
Ryan Burns
781d25b315 Replace pkgs.hostPlatform by pkgs.stdenv.hostPlatform
We are attempting to deprecate these top-level attributes in upstream
Nixpkgs.

See also bc0acdad8c.
2021-12-03 23:36:50 +01:00
Nicolas Berbiche
1aaa1a033b docs: add note about Waybar modules 2021-12-03 18:57:59 +01:00
Nicolas Berbiche
290a188dad docs: change stable from 21.05 to 21.11 2021-12-03 18:50:22 +01:00
Benoit Louy
f46972e466 powerline-go: add support for -modules-right
Add modulesRight setting to instruct powerline-go to configure right
side prompt. Use eval mode when this setting is set.
2021-12-03 17:58:03 +01:00
midchildan
fbb80207f3 darwin: add midchildan to maintainers 2021-12-02 23:39:08 +01:00
midchildan
0d58582887 darwin: keep the options for the "defaults" system up-to-date
- update the option names for toggling Safari's developer menu
- deprecate com.apple.menuextra.battery.ShowPercent
2021-12-02 23:39:07 +01:00
Benjamin Orthen
de54d513c7 firefox: create user.js when only bookmarks are specified in config (issue #2492) (#2521)
Previously, home-manager would not create a user.js for a certain
profile if profile.bookmarks was not empty but
profile.settings was empty and profile.extraConfig was an
empty string.
2021-12-01 22:21:41 -05:00
Pamplemousse
f23073f1da less: allow customization
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
2021-11-30 23:28:32 +01:00
Nicolas Berbiche
7c320a5325 waybar: make module a freeform module, remove warnings
The `style` option now also accepts a path instead of a text
configuration.

Keeping up with new Waybar options is annoying, so make the module a
freeform module.

The `modules` option will be removed in release 22.05.

The logic to generate warnings for modules and everything was
removed. I don't want to maintain the code that generates these
warnings anymore.
2021-11-29 20:52:06 -05:00
polykernel
9de77227d7 home-manager: fix home-manager build error (#2514)
Two misplaced quotations were introduced in `doBuild` by https://github.com/nix-community/home-manager/pull/2501, which
caused the parameter expansion of DRY_RUN to include an extraneous tab. Since the flake uri is passed
later into the command, Nix assumes the whitespace sequence as the flake uri and returns that it is not
a valid flake reference.

This PR removes the misplaced quotations in `doBuild` and also places the flake uri as the first argument for
calls to `doBuildFlake` for consistency with `doBuildAttr`. Placing the uri first in the command line also guards
against possible security issues if arbitrary uris are expanded prior to the user given uri.
2021-11-28 20:48:21 -05:00
Lily Foster
3ec7f6fb43 rofi: fix theme definition in configuration for 1.7.0+ (#2513)
Since Rofi 1.7.1 (specifically davatorium/rofi@0e70d8a), the deprecated
`theme` option in the `configuration` section no longer works. For 1.7.0
and up, `@theme "name"` is supposed to be used *after* the
`configuration` block.
2021-11-28 15:07:46 -05:00
dependabot[bot]
a28cf79a78 ci: bump cachix/install-nix-action from 15 to 16
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 15 to 16.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v15...v16)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-26 08:28:15 +00:00
Miles Breslin
ea1794a798 gpg: support declarative trust and public keys
PR #810
2021-11-26 09:02:36 +01:00
Robert Helgesson
579f2e8beb Switch to 22.05 as current development release 2021-11-25 22:29:49 +01:00
Robert Helgesson
2889ee2363 mpv: temporarily disable tests 2021-11-25 22:29:47 +01:00
Robert Helgesson
dc2a4e4146 Switch to 21.11 as stable release 2021-11-25 22:22:26 +01:00
Robert Helgesson
c27c8f49c0 taskwarrior: clean up news entry 2021-11-25 08:32:19 +01:00
Robert Helgesson
18461b5dda firefox: fix tests 2021-11-25 08:21:54 +01:00
Robert Helgesson
81fc0c6fbf tests: disable Nixpkgs release check 2021-11-25 08:16:16 +01:00
Naïm Favier
e28185a2c0 vscode: avoid unnecessary IFD (#2506) 2021-11-24 20:55:38 -05:00
polykernel
609370699f home-manager: do not build news when using flake (#2501)
Currently, the `buildNews` and `doBuildAttrs` are always called
unconditionally even if a flake configuration is specified. This cause
it to always fail prior to the actual build performed by `doBuildAttrs`
because `setConfigFIle` can not find the home-manager configuration file.
As a result, an error message specifying no configuration file is shown.

Furthermore, if a user has remnant legacy configuration, the `doSwitch` and
`doBuild` functions will effectively build the activationPackage twice, with
the legacy configuration overriding the flake configuration.

A conditional check for FLAKE_CONFIG_URI was added to mitigate this by building
the legacy configuration when no flake configuration is present. There is one
exception which is when a flake configuration exists in the default location, where
the user can not build the legacy configuration as along as the file is present.
However, the tradeoff is acceptable as it matches current behavior when FLAKe_CONFIG_URI
is set for instantiation, and an user is unlikely to simulataneously switch
between the two mechanisms.

An abstract function for building flakes `doBuildFlake` was created to match
`doBuildAttrs` for  manageing options and build flags.

The --no-write-lock-file flag was removed from the --debug case as it is already
matched previously at the --recreate-lock-file case.
2021-11-24 19:09:53 -05:00
oxalica
df931a59a5 taskwarrior: change config file location and use relative theme paths (#2455)
After taskwarrior 2.6.0, its default config file now locates at
`$XDG_CONFIG_HOME/task/taskrc`, and builtin themes can be included
via relative paths.
2021-11-23 21:33:03 -05:00
contrun
c4c761ba55 add flake attribute apps to make it easier to run (#2442)
Home Manager can be ran with
`nix run --no-write-lock-file github:nix-community/home-manager`.

This is useful for people who want to try out Home Manager or,
want to bootstrap their home-environment.
2021-11-23 01:36:55 -05:00
Tobias Happ
c2aa831491 systemd: do not install systemd files when user is root (#2454)
For the user root, there are no user services provided by systemd.
Therefore, these files will never be used.
2021-11-23 01:06:43 -05:00
polykernel
15ae861e1b swaynag: add module
Swaynag is a replacement of i3-nag for sway. Swaynag is embedded in
Sway's build process albeit it is not an integral part of Sway,
therefore it has been added under `wayland.windowManager.sway` instead
of `programs`. It can be moved at a later time if necessary.

Two unit tests were added validate the module behavior for an empty
configuration and the example configuration.
2021-11-21 18:37:50 +01:00
polykernel
1abd311eef fnott: add polykernel as maintainer 2021-11-21 08:59:46 +01:00
oxalica
c82bc787b8 xdg: fix typo and add test 2021-11-20 09:47:27 +01:00
Robert Helgesson
a19f40d39d firefox: fix test case 2021-11-20 09:47:05 +01:00
Sebastian Sellmeier
8a16d62e95 flameshot: extend module with package-option 2021-11-20 09:37:34 +01:00
Robert Helgesson
8230decb3f home-environment: make home.profileDirectory public
This option has been stable for a long time and may be generally
useful.
2021-11-19 23:58:22 +01:00
Sandro Jäckel
398c0b36a3 home-manager: properly forward exit codes 2021-11-19 23:47:57 +01:00
Robert Helgesson
2452979efe docs: bump nmd 2021-11-18 16:32:15 +01:00
Mmequignon
d85bf67c48 pet: fix settings format issue
Before it was not possible to place setting values outside the
`General` section.
2021-11-17 23:42:21 +01:00
Tobias Happ
5559ef0023 ssh: add includes option (#2453) 2021-11-16 11:51:10 -07:00
arcnmx
42915b78af lieer: use configured package in service (#2480) 2021-11-16 10:38:36 -07:00
Damien Cassou
05a3116091 offlineimap: Fix for OfflineIMAP 8 (#2479)
Nixpkgs switched to OfflineIMAP version 8 which means that Python 3 is
now used instead of Python 2. As a result, get_pass() now returns a
byte array instead of a string and the argument to get_pass() must be
a byte array too. See
https://github.com/OfflineIMAP/offlineimap3/issues/103.
2021-11-16 10:31:01 -07:00
arcnmx
a7c5b00d44 polybar: use recursive config type (#2235)
Allow merging of lists and attrsets
2021-11-15 16:00:45 -05:00
Robert Helgesson
2dcd9eb021 docs: minor rewording in usage documentation 2021-11-15 20:52:15 +01:00
Robert Helgesson
c855cdde20 docs: make README refer to installation chapter
This gives a single source of truth of installation instructions and
we can also point to instructions for the NixOS and nix-darwin
modules.
2021-11-15 20:51:45 +01:00
Robert Helgesson
e785e67977 docs: make text more specific about Nix 2.4 support 2021-11-15 19:58:09 +01:00
dependabot[bot]
cbcb2976b6 ci: bump cachix/install-nix-action from 14 to 15
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 14 to 15.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v14...v15)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-15 12:23:16 +00:00
Sandro
3f12ce5f7d home-manager: forward --no-write-lock-file (#2471) 2021-11-14 23:00:26 -05:00
Robert Helgesson
accfbdf215 docs: add license section in readme 2021-11-14 00:59:24 +01:00
Robert Helgesson
0f5d93119c docs: move usage section to chapter in manual
Also expand the chapter in various ways.
2021-11-14 00:13:54 +01:00
Robert Helgesson
426830a174 home-manager: minor reorder of generated home.nix
It's a bit nicer to put the home options at the top, I think.
2021-11-14 00:13:53 +01:00
Jack McCown
f7a37ad0b6 email: add fastmail.com email flavor (#2457) 2021-11-14 00:07:23 +01:00
Sandro
520adafcb9 docs: add example how to use flakes on non-NixOS 2021-11-13 01:18:12 +01:00
Lorenzo Manacorda
39c5c7397e docs: improve description of extraSpecialArgs 2021-11-13 01:01:01 +01:00
Robert Helgesson
be1ad30503 Remove remaining allowSubstitutes = false
See, e.g., https://github.com/NixOS/nix/issues/4442 for wider
discussions.
2021-11-12 23:24:08 +01:00
Bernardo Meurer
1e5c8e9bff direnv.nix-direnv: remove enableFlakes (#2458)
Since https://github.com/NixOS/nixpkgs/pull/144197 flake support is
always available. The upstream `enableFlakes` option is scheduled to be
removed altogether in https://github.com/NixOS/nixpkgs/pull/145236
2021-11-09 23:59:40 -05:00
Robert Helgesson
2917ef23b3 kakoune: clean up tests
- Enable use-plugins test.

- Stub out `kakoune-unwrapped` to avoid unnecessary downloads.

- Unwrap unnecessary `config` attributes.
2021-11-07 09:43:42 +01:00
Robert Helgesson
c678162e20 ci: error out if code contains literalExample 2021-11-07 09:20:12 +01:00
Robert Helgesson
7f416c9e2f home: use literalExpression 2021-11-07 09:10:57 +01:00
oberblastmeister
f6f013f764 home: shell agnostic aliases (#2347) 2021-11-06 10:10:15 -06:00
oxalica
70c5b268e1 xdg: add option 'xdg.stateHome' (#2439)
It corresponds to the newly introduced `XDG_STATE_HOME`.
2021-11-04 17:42:44 +01:00
flexagoon
288faaa5a6 programs.zsh.zplug: add zplugHome option
Add an option to set custom `$ZPLUG_HOME`. Changing it with
`home.sessionVariables` doesnt work, since it has to be exported
before Zplug is initialised
2021-11-02 08:49:47 +01:00
Joscha
21590d40c1 home-environment: document escaping of home.sessionPath 2021-11-02 00:08:57 +01:00
Nicolas Berbiche
2e1a5b53ec xsession: don't reset the inherited keyboard options
If the keyboard configuration is an empty set, don't run the setxkbmap
service.

The default values for all keyboard options are null or empty so long
as the state version is set to 19.09 or higher (21.05 being the latest
version).
2021-11-01 22:42:47 +01:00
Bart Bakker
7523252f97 htop: fix order or header_columns setting (#2435)
When `header_columns` is in settings it must appear before any of the
`column_meters_*` options.

Fixes 2426.
2021-11-01 15:27:29 -04:00
Robert Helgesson
275f955db9 irssi: format using nixfmt 2021-10-31 10:32:58 +01:00
Robert Helgesson
34327e067f tmux: format using nixfmt 2021-10-31 10:24:01 +01:00
Thiago Kenji Okada
e377556818 home-manager: remove top-level with pkgs.lib 2021-10-31 08:50:55 +01:00
Thiago Kenji Okada
abe12a4bad Makefile: add test-install target 2021-10-31 08:50:54 +01:00
Thiago Kenji Okada
3ccddfc48d lib: remove top-level with lib 2021-10-31 08:50:53 +01:00
Sandro
71902bc913 home-manager: fix command line option for nix build 2021-10-30 23:30:46 +02:00
Robert Helgesson
134c5ccdd3 mbsync: stub test dependency 2021-10-30 20:44:21 +02:00
Robert Helgesson
e28a720ce9 irssi: fix test directory name
Also fix stub package name.
2021-10-30 20:40:49 +02:00
Robert Helgesson
78afc2fa74 git: stub test dependency on msmtp 2021-10-30 20:36:18 +02:00
Robert Helgesson
0f72441821 bspwm: stub test dependency 2021-10-30 20:36:14 +02:00
Thiago Kenji Okada
7e30aec282 hexchat: simplify theme example 2021-10-30 19:39:59 +02:00
Smaug123
bb72555852 files: quote cmp file arguments
Before this change, a warning would be printed to the console if you
tried to manage a file in a path containing a space. For example,
`vscodium`'s `userSettings` file on Darwin is at
`~/Library/Application Support/VSCodium/User/settings.json`.
2021-10-30 19:15:34 +02:00
Edmund Wu
bc0acdad8c modules/modules.nix: pkgs.system -> pkgs.stdenv.hostPlatform.system (#2419) 2021-10-29 09:50:50 -06:00
betaboon
cf4866d218 powerline-go: fix regression introduced by #2231 (#2421) 2021-10-28 22:09:20 -04:00
Nicolas Berbiche
158bc59398 vscode: allow argument for keybind to any json value (#2418) 2021-10-27 22:13:54 -06:00
Kid
9282dbc1fa fish: remove promptInit in favor of interactiveShellInit (#2231)
* fish: remove `promptInit` in favor of `interactiveShellInit`

* Oops

* starship: replace `promptInit` with `interactiveShellInit`

* autojump: replace `promptInit` with `interactiveShellInit`

* Add `mkRemovedOptionModule` for `programs.fish.promptInit`
2021-10-27 16:40:39 -06:00
polykernel
46a69810cb fnott: remove global properties generation
Rationale:

As of release 1.1.2[1], the configuration ini file supports
declaration of the `[main]` header as an alternative to global
properties by enumerating all sections and mapping each to the
respective parsing function. Global properties will still be parsed
correctly by fnott however generation adds unnecessary complexity to
the module. This commit removes the need for global properties
generation.

Changes:

- Fixed the FIXME at L118.

- Cleaned up unneeded let bindings.

- Changed the generation method to use the `pkgs.formats.ini` from
  pkgs-lib instead of the raw `generators` library. This was done for
  consistency and clarity as the `pkgs.formats.ini` is still required
  for type declaration and uses `generators` internally.

- Removed `global-properties` testcase.

- Updated `example-settings` testcase.

[1] - https://codeberg.org/dnkl/fnott/releases/tag/1.1.2
2021-10-27 00:01:57 +02:00
leifhelm
da8a78eec9 hexchat: Replace literalExample with literalExpression (#2410) 2021-10-24 20:59:22 -04:00
superherointj
406eeec0b9 hexchat: add module
Review and contributions from Thiago Kenji Okada
<thiagokokada@gmail.com>.

Co-authored-by: Thiago Kenji Okada <thiagokokada@gmail.com>
Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>
Co-authored-by: Sumner Evans <me@sumnerevans.com>
2021-10-23 21:31:54 +02:00
Bastien Rivière
8278c14f5f nixos: replace types.anything with submodule type (#2396)
As discussed in this issue:
https://github.com/NixOS/nixpkgs/issues/140879
`types.anything` was never meant to be used for arbitrary modules.

Co-authored-by: Silvan Mosberger <github@infinisil.com>
2021-10-22 17:52:19 -04:00
Anselm Schüler
cfe82d9f44 gh: support gh as git credential manager for github.com
Co-authored-by: Sumner Evans <me@sumnerevans.com>
2021-10-21 23:20:25 +02:00
Robert Helgesson
3e4fedc1d9 direnv: make fish enable flag read-only
We cannot disable direnv for Fish since the functionality is
automatically loaded when the package is installed.

Fixes #2357
2021-10-21 22:18:50 +02:00
Thiago Kenji Okada
91155a98ed htop: add package option (#2407) 2021-10-20 09:22:17 -06:00
Robert Helgesson
b5d738b5a3 ci: update install-nix-action to v14.1 2021-10-18 09:45:24 +02:00
Robert Helgesson
5961c64e03 imapnotify: add extraConfig account option 2021-10-18 09:45:23 +02:00
Robert Helgesson
0d110a0936 imapnotify: only write onNew* if a value is available 2021-10-18 09:45:22 +02:00
Robert Helgesson
d244ca125f Dependabot should act on release-21.05, not 20.09 2021-10-18 08:47:54 +02:00
Thiago Kenji Okada
309808afbc github: disable strategy.fail-fast
From https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast

macOS pipeline is broken for quite some time, and when it fails before the
Ubuntu pipeline it fails it too (even if the tests are passing).

Setting `strategy.fail-fast` to false should avoid this issue.
2021-10-14 13:47:15 -03:00
Arash Outadi
13e00b70a4 docs: remove $ prompts to make it easier to copy paste 2021-10-14 00:06:10 +02:00
Thiago Kenji Okada
223a4a17a4 nixpkgs-disabled: add module
This commit introduces the `nixpkgs-disabled` module, that is
basically a mock of `nixpkgs` module where any value different from
`null` will cause an assertion error.

This is to help debugging cases where `home-manager.useGlobalPkgs` is
set to `true` and `nixpkgs.*` options are being used.

Nowadays this returns the following error:

```
error: The option `home-manager.users.<user>.nixpkgs` does not exist.
```

This will change too:

```
error: `nixpkgs` options are disabled when `home-manager.useGlobalPkgs` is enabled.
```

That will direct the user to the correct solution (either removing
`nixpkgs` or disable `home-manager.useGlobalPkgs`).
2021-10-13 23:46:38 +02:00
Thiago Kenji Okada
b88c863b40 modules: remove myself from maintainers.nix
I was already on nixpkgs list, just forgot to remove it from here.
2021-10-13 12:33:52 -03:00
Thiago Kenji Okada
b22004bf1f rofi: add test case for config with deprecated options 2021-10-13 01:31:12 +02:00
Thiago Kenji Okada
b78b584368 tests: fix test.assert.assertions.enable not working
Co-authored-by: Robert Helgesson <robert@rycee.net>
2021-10-13 01:29:23 +02:00
Robert Helgesson
4fa1ba72a3 Merge branch 'literalExpression' [#2371] 2021-10-13 00:24:35 +02:00
Naïm Favier
bd11e2c5e6 Replace usage of literalExample
Instead use the new function `literalExpression`. See

  https://github.com/NixOS/nixpkgs/pull/136909
2021-10-13 00:16:10 +02:00
Naïm Favier
468c461139 lib: add fallback for literalExpression and literalDocBook 2021-10-13 00:16:09 +02:00
Robert Helgesson
a77a01d1f6 docs: bump nmd
This revision support the new `literalExpression` documentation type.
2021-10-12 23:42:17 +02:00
Robert Helgesson
83f5ce2aec mbsync: add missing literalExample 2021-10-12 23:41:55 +02:00
Robert Helgesson
0b47ded208 flameshot: add settings option 2021-10-11 21:47:05 +02:00
Thiago Kenji Okada
32285d8fe6 rofi: remove options removed from upstream in v1.7.0 2021-10-09 00:45:20 +02:00
Nicolas Berbiche
82c92a18ba gh: use structural settings (#2339) 2021-10-08 23:29:25 +02:00
Thiago Kenji Okada
fd2f746016 nix-darwin: add modulesPath to specialArgs (#2375)
Same as 099cbcf13e, however now for
nix-darwin instead of NixOS.

Tested with `disabledModules = [ "programs/alacritty.nix" ];` and having an
error.
2021-10-08 16:36:41 -04:00
Jonas Carpay
d9fe208f3c z-lua: Add shell aliases to fish (#2376)
z.lua shell aliases are currently only added to bash and zsh, this also
adds them to the fish config
2021-10-06 08:49:56 -06:00
Nicolas Berbiche
60ebc273c9 nix-darwin,nixos: add osConfig module argument (#2302)
Having either argument defined based on the OS is a problem when
trying to write generic Nix code.

The current workaround is to use accept both and specify a default
value for each argument:

```
{ config, lib, nixosConfig ? {}, darwinConfig ? {}, ... }:

let
  osConfig = nixosConfig // darwinConfig;
in
{
  # Do something with `osConfig`
}
```

With this commit, it becomes possible to do the following:

```
{ config, lib, osConfig, ... }:

{
  # Do something with `osConfig`
}
```
2021-10-06 16:32:13 +02:00
arcnmx
854406680b vim: add option to specify pkgs.vim_configurable (#2307) 2021-10-06 15:56:06 +02:00
Robert Helgesson
8bbade4b01 fontconfig: only remove directory if it exists 2021-10-06 15:02:34 +02:00
Thiago Kenji Okada
c100bd0c4b Makefile: improvements (#2374)
- Add NIXPKGS_REV, so we can pass arbitrary revisions for testing (for
  example, `release-21.05` so we can test backports).
- Add format target, that calls the format script.
2021-10-05 21:50:51 -06:00
Thiago Kenji Okada
592da767bd nnn: init (#2368)
nnn is a terminal file manager.

It is configured mostly using environment variables, so the way I
found it to avoid needing to write either shell specific code or
using `home.sessionVariables` (that would need to make the user
relogin at every configuration change) is to wrap the program using
`wrapProgram`.
2021-10-05 19:14:52 -04:00
Robert Helgesson
80d23ee06c fzf: do shell initialization a bit earlier
This is to better integrate with more advanced shell history managers
like McFly and Atuin. By initializing fzf first, we allow the history
managers to steal the C-r key binding from fzf.
2021-10-06 00:25:43 +02:00
Robert Helgesson
af2007bb77 atuin: add module
This commit adds a module for configuring atuin, a replacement shell
history program.

The module adds options for generating atuin's `config.toml` from Nix,
and options to enable atuin's integration for bash and zsh
(which will rebind history keys to open the atuin history).
2021-10-05 23:48:52 +02:00
Robert Helgesson
1719495bdf screen-locker: make news entry conditional 2021-10-05 22:31:41 +02:00
Josh Robson Chase
e4df31dcea screen-locker: Make xautolock optional, reorganize options (#2343)
* screen-locker: Make xautolock optional, reorganize options

xautolock isn't really needed to trigger xss-lock on the basis of time
since the built-in screensaver functionality of X serves as one of the
event sources for xss-lock. Keeping it around and defaulting to
"enabled" to avoid unexpected breakage.

Also shuffled around the options to submodules for xss-lock and
xautolock to get rid of prefixes in option names and to make
enableDetectSleep a bit clearer.

* screen-locker: update maintainership

* tests/screen-locker: Stub i3lock and xss-lock

* screen-locker: add package options for xss-lock and xautolock
2021-10-05 12:58:25 -04:00
Kid
88f9b33384 docs: update session variables suggestion for Fish 2021-10-04 20:30:22 +02:00
Kid
9b04ff5e3b fish: remove superfluous config guard 2021-10-04 20:21:23 +02:00
Robert Helgesson
81ec2aed8a kitty: make onChange Linux only
Since the `procps` package is Linux specific we have to limit the
`onChange` accordingly.

Fixes #2366
2021-10-04 18:20:04 +02:00
Naïm Favier
099cbcf13e nixos: add modulesPath to specialArgs
Fixes #1792
2021-10-03 23:27:24 +02:00
Robert Helgesson
179ce0aacf fontconfig: use a prettier "real directory" hack 2021-10-03 23:09:19 +02:00
Emil Karlson
e0a87d75e9 firefox: add bookmarks support
Generate bookmarks html file and hook it up in user.js.
2021-10-03 12:16:40 +02:00
Faye Duxovni
095f3e32ae kanshi: allow multiple exec statements per profile
kanshi configurations can have more than one exec statement in a
profile. This change allows services.kanshi.profiles.<name>.exec to be
a list of strings rather than a single string.
2021-10-03 09:47:22 +02:00
Naïm Favier
f15cd0f087 gtk: add final newline to bookmarks to avoid conflicts 2021-10-03 09:39:25 +02:00
schotts-fired
0f3dfc94ef services.emacs: add option extraOptions
This is to allow adding command-line arguments to the Emacs daemon.
Previously only the Emacs client could be started with custom
arguments.
2021-10-02 23:28:22 +02:00
Gabriel Fontes
d5151186ac waybar: add onChange configuration reload 2021-10-01 11:05:42 -03:00
Gabriel Fontes
8f1d8c2ef1 mako: add onChange configuration reload 2021-10-01 11:05:42 -03:00
Gabriel Fontes
ad05443e04 kitty: add onChange configuration reload 2021-10-01 11:05:16 -03:00
Thiago Kenji Okada
66d9dbfa36 Makefile: init (#2351)
The idea of this file is to make it easier to run tests. It will ensure
that the tests are running with the correct NIX_PATH (pointing it to
e.g.: unstable), and also allowing it to run either one or all tests.
2021-09-30 21:49:45 -06:00
Gabriel Fontes
52e84a040e xsettingsd: make configurable through module 2021-10-01 01:31:47 +02:00
Marin
959217e51d astroid: fix maildir paths (#2350)
By maildir spec, emails should be under mailbox/folder/[cur,tmp,new]

This commit changes the default maildir path to more closely match the example config:
https://github.com/astroidmail/astroid/wiki/Configuration-Reference#accountsaccountnamesave_sent_to
2021-09-28 08:16:13 -06:00
Robert Helgesson
cb09a968e9 tests: add option test.stubs
This option provides a more convenient way to overlay dummy packages.
It also adds a function `config.lib.test.mkStubPackage` that can,
e.g., be used for `package` options.
2021-09-26 23:26:38 +02:00
Naïm Favier
b0651cc217 nixos: import existing environment during activation
If the user has a running systemd session, source their environment
from the systemd manager and export a few variables in order to allow
activation scripts to reload applications on the fly.

The list of variables to export is arbitrary and could be extended in
the future.

Fixes #1399, fixes #2112.
2021-09-23 23:09:00 +02:00
Robert Helgesson
eee807560b dbus: improve recommended NixOS configuration
Specifically, instead of

    services.dbus.packages = with pkgs; [ gnome.dconf ];

we now recommend

    programs.dconf.enable = true;

which does the same and more.
2021-09-23 22:35:30 +02:00
Robert Helgesson
58aa667e28 starship: initialize using command in profile
Fixes #2316
2021-09-21 22:37:31 +02:00
Jakub Kozłowski
821299e90e sbt: run passwordCommand without trailing newline 2021-09-21 22:16:34 +02:00
Samuel Gräfenstein
4320399a3e flake: add docs to packages output 2021-09-21 22:12:55 +02:00
polykernel
7cb118c9d2 xdg: coerce XDG base directories settings to strings
Currently, when a custom path is set for any of the XDG base
directories (i.e XDG_DATA_HOME, XDG_CONFIG_HOME, ...), the path will
be coerced into a string when consumed by other options such as
xdg.configFile et al. This causes the the given path to be copied to
the nix store which in the case of xdg.configFile et al, translate to
the file being written there as it is a absolute path.

Interestingly, the default base directories all work as intended as
they are encoded as a string.

This commit converts the option to a string regardless of whether it
is a primitive path or a string encoded path. This allows downstream
consumers to use the base directories in arbitrary way without
accidentally copying the content of the directory to the store. It is
implemented in a similar manner as how home.homeDirectory undergoes
string conversion.

The existing file-attr-name test was modified to test also custom xdg
base directories, and the home.file generation test was removed as
there is a dedicated test for this case in the files module. The test
case was renamed to file-gen to better reflect the new scope.
2021-09-21 21:29:44 +02:00
Naïm Favier
371576cdc2 gpg-agent: remove unnecessary IFD
Make `gpgconf` only perform an import from derivation when the GPG
`homedir` is set to a non-default value, which probably isn't the case
for most users.
2021-09-15 23:09:02 +02:00
Samuel Ainsworth
562449b503 files: clarify "Please move the above files" message 2021-09-15 00:25:00 +02:00
Tad Fisher
514acaebb9 lieer: change settings to freeform type
Also add missing options.
2021-09-14 23:59:56 +02:00
polykernel
4b964d2f7b bottom: add module
Bottom is a cross-platform graphical process/system monitor with a
customizable interface and a multitude of features.

Two unit tests were added validate the module behavior for an empty
configuration and the example configuration.
2021-09-14 23:40:21 +02:00
Robert Helgesson
2cfea84e6f modules: fix list sorting 2021-09-14 23:14:41 +02:00
dependabot[bot]
5199bc841a ci: bump cachix/install-nix-action from 13 to 14
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 13 to 14.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v13...v14)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 01:12:40 +00:00
Renee Margaret McConahy
208e310e94 bash: allow unsetting shell options 2021-09-13 00:19:17 +02:00
polykernel
039f786e60 fnott: refactor module
- Change generation behavior to always generate a configuration file
  and pass it explicitly to fnott, it enforces the module to be
  hermetic instead of offloading the configuration selection to
  heuristics.
- Various style changes.
- Fix issue where fnott would abort due to an invalid config file when
  both the configFile and settings options are unset.
- Remove the empty-settings test as a configuration file is now
  already generated.

Suggested-by: Robert Helgesson <robert@rycee.net>
2021-09-08 22:48:44 +02:00
Colin Summers
275f39611d generic-linux: add system fpaths for zsh
PR #2013
2021-09-07 23:47:49 +02:00
Robert Helgesson
0dab813748 betterlockscreen: limit to platform linux 2021-09-07 07:55:17 +02:00
Basti
5e46262cb1 betterlockscreen: add module (#2292) 2021-09-05 19:00:28 -06:00
Romanos Skiadas
2952168ed5 docs: update session-vars info about fish shell
The docs implied that fish was not really supported, but if fish is
managed by Home Manager, the generated config does use fenv to source
the session-vars file. Update the installation instructions and FAQ to
mention that fish does work, and mention fenv in the README.
2021-09-04 23:12:17 +02:00
arcnmx
bd747c5a53 nixos: add timeout to hm-activate service
Oneshot services do not have a timeout by default, so a misbehaving
activation script can stall and prevent a system from ever booting.
2021-09-04 22:55:30 +02:00
Seth Etter
21a2ff4496 broot: expose modal option (#2300)
* broot: expose modal option

* broot: add basic test

* Use `mkEnableOption`
2021-08-31 10:52:20 -06:00
Mario Rodas
61ca2fc1c0 mcfly: switch to init command (#2301)
mcfly migrated its initialization method to a subcomand called `init`,
which available since mcfly 0.5.4 released on Feb 28, 2021.
2021-08-29 23:42:54 -04:00
Jason Felice
33db7cc6a6 kitty: add environment and darwinLaunchOptions options (#2280)
* kitty: add environment option

* kitty: add darwinLaunchOptions option

See https://sw.kovidgoyal.net/kitty/faq/#how-do-i-specify-command-line-options-for-kitty-on-macos

* kitty: only allow darwinLaunchOptions on darwin

* kitty: make expression shorter

* kitty: fix assertion message
2021-08-26 22:08:34 -04:00
Tanya Bouman
f637e145d7 docs/manual: describes -> describe 2021-08-26 09:04:20 +02:00
polykernel
521a03d8bf fnott: add module
Fnott is a keyboard driven and lightweight Wayland notification daemon
for wlroots-based compositors.

There are four unit test to validate behavior for an empty
configuration, the default configuration, global properties and
systemd service file generation.
2021-08-26 08:43:39 +02:00
Nicolas Berbiche
84d54402a5 format: update nixpkgs revision in format script (#2283) 2021-08-24 21:49:46 +02:00
Michael Adler
2cf19d1d98 neomutt: configurable package (#2294)
This makes it possible to easily use a different (e.g. more recent or
patched) neomutt package.

Co-authored-by: Michael Adler <therisen06@gmail.com>
2021-08-24 13:34:52 -06:00
Sandro
9029fd2b9d service/window-manager/awesome: replace not existing package (#2293)
See https://github.com/NixOS/nixpkgs/pull/135117
2021-08-23 08:39:42 -06:00
Connor Prussin
f6d1cad6ba [nixos] Fix race condition with user units (#2286)
One of the things managed by the `home-manager-<username>` unit is the systemd
user directory `.config/systemd/user`.  However, this directory needs to be in
place completely before systemd user sessions start up or the user sessions will
come up with an incomplete listing of enabled units, etc.

There was a race condition where nothing prevented
`systemd-user-sessions.service` from starting ahead of the systemd user
directory's initialization completing.  This commit makes
`home-manager-<username>` finishes _before_ we start
`systemd-user-sessions.service` to avoid such race condition.

This issue was probably not all that noticeable in most cases, but when using a
non-persistent root config (i.e. tmp on / or
https://grahamc.com/blog/erase-your-darlings) the race condition triggering
causes all kinds of issues on each reboot.
2021-08-21 22:14:40 -04:00
Nicolas Berbiche
c5b3069145 i3/sway: allow empty criterias using a value of 'true' (#2277)
Co-authored-by: Sumner Evans <me@sumnerevans.com>
2021-08-21 20:41:06 -04:00
John Ericson
4367119ca3 local gpg-agent acting as ssh-agent should yield (#667) (#2253)
* gpg-agent: local agent acting as ssh-agent should yield

This happens commonly if someone using home manager with gpg-agent
acting as ssh-agent on both machines.

@rycee brought up how gpg-itself has some support for agents on both
ends, but in that case one is forwarding the gpg-agent socket rather
than forwardning the gpg-agent-as-ssh-agent socket. There is no need to
forward both.

So I think this is a good default:

 - Forward just gpg-agent socket and this doesn't matter.

 - Forward just the ssh-agent socket and this does the right thing.

 - Forward both sockets and now the ssh one takes priority instead, but
   forwarding both was always a silly thing to do.

Fix #667

* Update modules/services/gpg-agent.nix

Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>

Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>
2021-08-21 01:43:41 -04:00
Jan van Brügge
bf6b85136b neomutt: Allow named mailboxes (#2212)
At the moment, only the inbox of each mail account is added to neomutt.
This inbox is always called "Inbox", so if you configure multiple
accounts, it is hard to know which one is which.

This change allows the user to specify a display name per account that
uses `named-mailboxes` under the hood.

Additionally this change now allows to add other folders than the inbox,
for example the Trash, Spam or Drafts folders to be added on a per-account
basis. Using extraOptions is not possible here, as those are lazily
loaded on mailbox open and thus would appear at the bottom and not sorted
by account.

This commit also changes the default sidebar format string to use %D
instead of %B because %B will ignore named mailboxes and show the folder
name instead.
2021-08-19 00:33:53 -04:00
c4605
1a6df903e3 home-manager: add command line argument --impure 2021-08-19 00:07:49 +02:00
Kid
49a03303e1 fish: provide different examples 2021-08-18 23:51:33 +02:00
Ivan Kovnatsky
a5c609b4b1 sway: workspaceLayout: stacked -> stacking (#2272) 2021-08-17 22:58:03 -04:00
Vonfry
ec260995e2 xsession: set default value of windowManager.command to handle display manager parameter (#2123)
Co-authored-by: Nicolas Berbiche <nicolas@normie.dev>
2021-08-17 21:44:23 -04:00
Nicholas Coltharp
72394f6d6b fluidsynth: add sound service option
Fluidsynth's systemd unit currently has a hard dependency on the
pulseaudio systemd service. Since fluidsynth can use other sound
services (e.g., pipewire-pulse), this should be configurable. This
commit adds the relevant option.

PR #2238
2021-08-18 00:38:29 +02:00
Timur Demin
d11afee973 home-manager: allow remote builders for nix-build (#2268)
This allows running home-manager with --builders option passed through
to nix-build, which will then pass build execution to remote builders on
other machines.

This may be useful with relatively complex home-manager configurations
where building on a local machine is not feasible.
2021-08-17 16:53:44 -04:00
Naïm Favier
5569770d1e files: move dry run logic out of onChange hooks
Fixes #751
2021-08-17 22:14:32 +02:00
Luka T. Korošec
8d68dbd144 doc: Add an example for a git includes section (#2275)
This adds an example for the `programs.git.includes.*.contents` section
since it was a bit ambiguous as to what kind of format it expects.
2021-08-17 16:12:00 -04:00
Robert Helgesson
7ef3db3730 docs: rename "doc" directory to "docs"
Also remove `CONTRIBUTING.adoc` and `FAQ.adoc` from project root since
GitHub knows to pick them up from the docs directory.

Fixes #2273
2021-08-17 19:35:11 +02:00
Ivan Malison
ad0fc085c7 git-sync: add module 2021-08-17 00:00:38 +02:00
Robert Helgesson
763b1a1c55 Merge PR #2245 2021-08-16 23:40:17 +02:00
Robert Helgesson
5ed3a41afa htop: use dummy package in tests 2021-08-16 23:31:59 +02:00
Bart Bakker
2c3a968f57 htop: make self code owner of tests too 2021-08-16 23:20:33 +02:00
Bart Bakker
e60dca7bb3 htop: fix htoprc when fields is not explicitly set
When the 'fields' setting is not set in htoprc, the htop program won't read any
of the settings. Provide a default value for fields in case it's not explicitly
set by the user.
2021-08-16 23:20:32 +02:00
Bart Bakker
447f80f676 htop: verify htoprc contents for example settings test
Fix ending the generated htoprc with a newline.
2021-08-16 23:20:31 +02:00
Bart Bakker
e4553546cc htop: let htop program use its default settings
Don't generate the `htoprc` when using default settings to use the defaults of
the htop program.

Rename the test for this case to 'empty-settings'.
2021-08-16 23:20:31 +02:00
Bart Bakker
7226c2db46 htop: add self as maintainer 2021-08-16 23:20:30 +02:00
Bart Bakker
6eb88173e9 htop: remove deprecated options and definitions 2021-08-16 23:20:29 +02:00
Robert Helgesson
72f3bc6fa4 flameshot: add some service sandboxing 2021-08-14 15:13:31 +02:00
Robert Helgesson
654d82f888 syncthing: add more service sandboxing 2021-08-14 15:13:27 +02:00
Robert Helgesson
a965b097b1 lib.gvariant: fix rendering of empty non-string arrays
Before, empty arrays would always be rendered as an empty string
array.
2021-08-13 08:52:13 +02:00
Robert Helgesson
a3d691c053 lib.gvariant: add a few more functions to test case 2021-08-13 00:45:10 +02:00
Robert Helgesson
d819e0741a rofi-pass: remove test dependency on rofi 2021-08-13 00:30:51 +02:00
Robert Helgesson
479e26dc8c scmpuff: remove test dependency on zsh 2021-08-12 23:11:15 +02:00
Robert Helgesson
3d93e1e802 bat: support list settings and shell escaping
Fixes #2262
2021-08-12 21:29:14 +02:00
Robert Helgesson
604561ba9a lib.gvariant: escape newlines in strings
See #2096
2021-08-11 23:30:24 +02:00
Mihai Fufezan
c049a09d1a easyeffects: add module (#2182)
* pulseeffects: change default example

pulseeffects-pw is now an alias to easyeffects, and the `pulseeffects` binary
that this module references is no longer in that package.

* easyeffects: add module

The easyeffects service is the PipeWire equivalent of the pulseeffects
service.
2021-08-11 09:21:43 -06:00
Shamrock Lee
a4a8307897 java: add module 2021-08-10 23:30:12 +02:00
zach latta
a57ef9dad1 doc: darwin: user.users.eve -> users.users.eve (#2258)
This fixes a broken example for nix-darwin in the docs.
2021-08-10 12:41:00 -06:00
Matthew Leach
5515ec99cc email: allow null certificatesFile
Allow the value of certificatesFile to be null.

Also fixup uses of this variable.

Fixes: #2206
2021-08-10 00:12:13 +02:00
Ivan Malison
2c4234cb79 notify-osd: init (#2240)
Daemon that displays passive pop-up notifications
2021-08-08 20:29:36 -04:00
Ctem
59be1f4983 dunst: add option to read alternative configuration file (#2113) 2021-08-07 20:44:36 -04:00
midchildan
b0d769691c emacs: add extraConfig option 2021-08-06 23:57:14 +02:00
Robert Helgesson
29ea37374d fish: use dummy fish package in tests 2021-08-06 23:33:19 +02:00
Robert Helgesson
d490797179 nix-index: use dummy fish package in tests 2021-08-06 22:55:57 +02:00
Vanilla
ab6517d34a powerline-go: add fish integration 2021-08-06 22:46:58 +02:00
piegames
7f976da068 files: ignore conflict when files are identical
When the target file exists but has the exact same content then we
will now skip creation of the link from the source file.

Fixes #1213
2021-07-29 23:01:52 +02:00
zseri
7c19bcb822 nixos: remove indirection via activate-${username}
Fixes #2191
2021-07-29 22:23:24 +02:00
Sandro Jäckel
5f6364fc28 home-manager: add --no-out-link command line option
When this option is used then `home-manager build` will not produce a
`result` link in the current working directory.
2021-07-29 16:04:41 +02:00
Yisrael Dov Lebow
2272fc312d doc: darwin: need to specify a system user (#2220) 2021-07-28 15:52:22 -04:00
Nicolas Berbiche
e08c696524 volnoti: fix package option namespace (#2227) 2021-07-28 15:39:29 -04:00
Robert Helgesson
ae8cb242f2 home-environment: use declare -gr in activation init
This marks the setup variables as read-only. Just to add a bit extra
safety.
2021-07-27 23:50:33 +02:00
Matthieu Coudron
47ad3655ec programs.neovim: expose generatedConfigViml (#2213)
Expose the generated viml config, this has 2 advantages:
1/ user can choose to write the generated config to a file of its choice
2/ the user can prepend/append to the config before writing it

    xdg.configFile."nvim/init.vim".text = ''
	" prepend some config
	${programs.neovim.generatedConfigViml}
	" append some config
    '';

NOTE: this was already possible with 
xdg.configFile."nvim/init.vim" = mkMerge [
  (mkBefore {
    text = ''
      " prepend some config
    '';
  })
  (mkAfter {
    text = ''
      " append some config
    '';
  })
]
2021-07-27 15:59:50 +02:00
Kritnich
f6f6990fc8 barrier: remove tray option (#2215)
barrier's --no-tray CLI parameter is non-functional and so the option has been removed.
2021-07-26 09:16:00 -06:00
t4ccer
addc78bea0 neovim: Add coc support (#2154)
This adds two new options: 'programs.neovim.coc.{enable,settings}`.

These settings offer a simple interface over `xdg.configFile."nvim/coc-settings.json`,
using the standard Nix' syntax instead of a multiline string.
2021-07-25 22:40:07 -04:00
Kid
0423a7b40c fish: fix home-manager completion path 2021-07-25 00:32:20 +08:00
Robert Helgesson
996b439739 volnoti: add platform assert 2021-07-24 00:37:06 +02:00
Andreas Mager
cc6909d407 trayer: add module (#2177) 2021-07-24 00:29:49 +02:00
Nicolas Berbiche
784da32958 meta: github: fix issue template assignees 2021-07-23 23:45:37 +02:00
Bjørn Forsman
6c984bd675 taskwarrior: don't create dataLocation with home.file
With

  programs.taskwarrior.dataLocation = /absolute/path

(outside of $HOME) the current implementation wrongly creates
$HOME/absolute/path (due to how home.file is implemented).

Since taskwarrior creates the dataLocation automatically on first run,
there is actually no need for HM to create that directory.

Additional benefit, the .keep symlink that HM creates as a side-effect
no longer appears in the taskwarrior data directory.

Fixes #2207.
2021-07-23 23:22:32 +02:00
Robert Helgesson
ddeeb031fd nixos: add nix package to activation script path
Fixes #2178
2021-07-23 23:18:15 +02:00
Ivan Malison
41101d0e62 volnoti: add module (#2183) 2021-07-21 00:17:27 -04:00
Alexander
fa483b82ab xcape: run xcape after setxkbmap (#2198) (#2199)
Co-authored-by: Alexander Khodyrev <a@akho.name>
2021-07-19 21:16:14 -04:00
Robert Helgesson
d7e089699a syncthing: restrict service slightly 2021-07-19 22:41:51 +02:00
Nicolas Berbiche
2b75633b2c meta: github: update issue template
Also add feature request template.
2021-07-18 23:54:23 +02:00
Robert Helgesson
41903a14b0 Remove a few format exceptions 2021-07-18 23:34:50 +02:00
axion
82b06103ae home-manager: add fish completion 2021-07-18 23:13:06 +02:00
Robert Helgesson
5f433eb164 Move platform check into modules
Before, loading a module would be guarded by an optional platform
condition. This made it possible to avoid loading and evaluating a
module if it did not support the host platform.

Unfortunately, this made it impossible to share a single configuration
between GNU/Linux and Darwin hosts, which some wish to do.

This removes the conditional load and instead inserts host platform
assertions in the modules that are platform specific.

Fixes #1906
2021-07-18 20:43:22 +02:00
Robert Helgesson
1617e56c2f firefox: fix tests 2021-07-18 20:29:00 +02:00
Ivan Malison
c476cc61b2 xsettingsd: add service module 2021-07-15 15:47:42 +02:00
Sumner Evans
f56a087cbc sway: add propagate --to-code for modes (#2176)
Propagates the bindkeysToCode setting which adds --to-code to the keybindings in mode configs.

Closes #2174
2021-07-15 07:09:54 -06:00
IvarWithoutBones
775cb20bd4 sm64ex: add module 2021-07-12 08:57:35 +02:00
Colin Summers
9e3c402972 brave: fix config dir path (#2173)
Changes install path for extensions from `~/.config/brave` to
`~/.config/BraveSoftware/Brave-Browser` on Linux.
2021-07-11 21:19:10 -04:00
Naïm Favier
4971b9cad0 setxkbmap: reset options before setting new ones (#2160) 2021-07-11 21:15:18 -04:00
Gabriel Fontes
3ab254aff4 qutebrowser: add onChange ipc reloading 2021-07-11 22:46:06 +02:00
Jörg Thalheim
9ed7a73ae2 home-manager: fix nixos-option fallback 2021-07-10 11:38:33 +02:00
Jörg Thalheim
ae636c09f4 Revert "Revert "home-manager: use nixos-option from pkgs""
This reverts commit 2c9fe368c1.
2021-07-10 11:21:04 +02:00
Jörg Thalheim
2c9fe368c1 Revert "home-manager: use nixos-option from pkgs"
This reverts commit d7d7bbbf20.
2021-07-10 11:17:32 +02:00
Robert Helgesson
d7d7bbbf20 home-manager: use nixos-option from pkgs
Fixes #2170
2021-07-10 09:34:55 +02:00
Robert Helgesson
06ee8ec8df xmobar: use dummy package in test 2021-07-07 23:46:53 +02:00
dawidsowa
97d183e2e4 devilspie2: add module (#1477)
Co-authored-by: Sumner Evans <me@sumnerevans.com>
Co-authored-by: Nicolas Berbiche <nicolas@normie.dev>
2021-07-05 16:29:34 -04:00
Robert Helgesson
ac319fd314 home-environment: add Nixpkgs release version check
This adds a warning when a release version mismatch is detected
between Home Manager and Nixpkgs.
2021-07-04 09:40:40 +02:00
Rosario Pulella
7df6656b11 foot: revert always create config file (#2091) (#2157)
This reverts commit 666eee4f72 (#2091).

As of NixOS/nixpkgs#128121, which incorporated changes from:
https://codeberg.org/dnkl/foot/pulls/588/, foot no longer
errors if there is no config file.
2021-07-01 12:05:37 -06:00
Mario Rodas
9ad0024d4d rbw: use pientry.binaryPath when available (#2153)
`pinentry_mac` does not use bin/pientry as path to its binary, instead
it sets `binaryPath` pointing to the binary.
2021-06-29 21:27:19 -04:00
t4ccer
3f6cb409ca xmobar: add module (#2120)
* xmobar: Add module

* xmobar: Add test case

xmobar: Add test default.nix

* xmobar: Order lists alphabetically

* xmobar: Change colon to comma in description

* xmobar: Fix macos tests

* xmobar: Remove extra line

* xmobar: Add literalExample

Co-authored-by: Sumner Evans <me@sumnerevans.com>

* xmobar: Update extraConfig description

Co-authored-by: Sumner Evans <me@sumnerevans.com>
2021-06-29 13:02:43 -06:00
t4ccer
5b08b33e8f rofi: add "plugins" option (#2117)
* rofi: add support to plugins

* rofi: update package example

Co-authored-by: Sumner Evans <me@sumnerevans.com>

* rofi: Format package example

* rofi: Fix tests

Rofi will not try to install plugins using override when tests overlay
actual rofi package with empty scirpt

* rofi: Refactor

Co-authored-by: Sumner Evans <me@sumnerevans.com>
2021-06-29 11:13:01 -06:00
Robert Helgesson
9b7a90daa1 files: minor cleanup 2021-06-28 23:17:00 +02:00
Lava
85d67b0a6e xsession: Add profilePath configuration option (#2140)
This allows the user to move .xprofile somewhere else, which can help
with decluttering their home directory.
2021-06-28 09:11:15 -06:00
Lava
dc4337d9fe xresources: Add path configuration option (#2141)
* xresources: Add path configuration option

This allows the user to move .Xresources somewhere else, which can help
with decluttering the home directory.

* xresources: Update xresources.path docs

* xresources: Fix formatting
2021-06-28 00:50:40 -06:00
DG
a17bc3217f zsh: add enableSyntaxHighlighting option (#2144)
Add a simple way to enable syntax highlighting for zsh using https://github.com/zsh-users/zsh-syntax-highlighting
2021-06-28 00:04:38 -06:00
Robert Helgesson
2aeaf65e8f files: assert that target files are unique
Fixes #1807
2021-06-27 17:10:45 +02:00
Robert Helgesson
f4998f0adc tests: bump nmt 2021-06-27 14:20:13 +02:00
Bruno BELANYI
8d3b273afe himalaya: add module
A very simple TUI mail client.
2021-06-26 18:29:42 -04:00
j-k
8eee5f5272 obs-studio: use wrapobs and the new plugin layout (#2142)
The packaging in nixpkgs for obs plugins has changed and there's a
wrapOBS function.
The name of the plugins has also changed so the example needed updating
to reflect that.

Related: https://github.com/NixOS/nixpkgs/pull/125308
2021-06-26 17:29:50 -04:00
Kaligule
0ada50fc9c docs: document how to reset the nix-env 2021-06-25 11:18:26 +02:00
Ilan Joselevich
7e2b1a42aa i18n.inputMethod: add module 2021-06-25 00:58:50 +02:00
Robert Helgesson
ab0e6c3e0e tests: bump nmt 2021-06-24 22:47:21 +02:00
Robert Helgesson
21ac4c499b xmonad: restrict news entry to Linux 2021-06-24 08:42:28 +02:00
Sergey Vlasov
b42fce7aaa i3,sway: add bar color options for the focused output (#2135)
Both i3bar and swaybar can use different colors for the bar on the
currently focused monitor output; add color options for this feature.
2021-06-22 20:56:41 -06:00
Nicolas Berbiche
49864a4370 xmonad: document breakage of recompilation (#2024)
Co-authored-by: Markus Scherer <markus.f.scherer@gmail.com>
2021-06-22 20:36:47 -04:00
Robert Helgesson
762f860cfb tests: prevent some unnecessary downloads 2021-06-23 00:37:25 +02:00
Kid
04955ca970 README: fix outdated description (#2131)
* README: fix outdated description
2021-06-22 16:20:13 +02:00
Sandro Jäckel
cd11c02c28 command-not-found: update from nixpkgs 2021-06-20 20:40:37 +02:00
Robert Helgesson
a73e619377 tests: update nmt
Allows running, e.g.,

    nix-build --pure tests -A build.all
2021-06-20 09:52:58 +02:00
Naïm Favier
dc1b6b8349 bspwm: re-add support for lists as config option values (#2125)
Removed by mistake in e70524c, but ignore_ewmh_fullscreen still needs it.
2021-06-20 00:57:40 -04:00
Naïm Favier
e70524cd2b bspwm: various improvements (#2095)
* bspwm: various improvements

- fixes shell escaping issues and general style issues
- allow reloading the config on-the-fly by exposing bspwmrc to the user

* bspwm: add configuration test
2021-06-19 18:40:17 -04:00
Josh Holland
2f6d5c90f4 fzf: also use custom package for shell integrations (#2119) 2021-06-17 23:57:25 +02:00
Christopher League
6d9bff77ed rsibreak: add package when enabled; fixes #2092 (#2118)
Otherwise rsibreak cannot find its icon and is a blank gap on the
notification tray.
2021-06-17 09:08:10 -06:00
Philipp Dargel
d04e52b0c0 terminator: add module (#2063)
added configuration for terminator
2021-06-17 09:06:47 -06:00
Naïm Favier
3aa479d551 dunst: make icon_path extensible (#2097) 2021-06-16 21:06:16 -04:00
Robert Helgesson
a01fe9f81e sxhkd: fix service test
Before it generated a nonsense test script.
2021-06-17 00:16:17 +02:00
Robert Helgesson
6cd92c643a sxhkd: minor formatting in test 2021-06-16 23:57:58 +02:00
Nicolas Berbiche
5a19e0ea9c home-manager: fix nixos-option evaluation (#2115) 2021-06-16 16:39:02 -04:00
Dusk Banks
63af2d3e4c home-manager: add home-manager option
This adds functionality much like that provided by `nixos-option`.
2021-06-15 23:46:45 +02:00
Kevin Amado
e92f5bb79e programs.gnome-terminal: terminal options (#2042)
- Add support for showing bold as bright colors
- Add support to configure the background transparency
- Fix the scrollOnOutput, it was not being dumped to the config
- Add tests!
- Add myself as maintainer
2021-06-15 23:39:56 +02:00
Naïm Favier
1e8d0beae4 xresources: load .Xresources in xsession.initExtra 2021-06-15 23:01:13 +02:00
Dmitry Kulikov
9b39fd7eb4 sxhkd: stop scope before creating (#2086) 2021-06-15 13:27:35 -04:00
Ivar
be0e73a308 qutebrowser: add quickmark support (#2059)
Closes: https://github.com/nix-community/home-manager/issues/1230
2021-06-15 12:22:21 -04:00
Josh Holland
e0f2949c98 direnv: add enableFlakes option for enableNixDirenvIntegration (#2089)
NixOS/nixpkgs@03310df843 disabled flake
support by default, so we now need to build a custom package and use it
if the user wants to `use flake` successfully.  This should fix #2087.
2021-06-15 12:11:26 -04:00
bb010g
1375fd4a03 systemd: add automounts option 2021-06-14 23:10:21 +02:00
bb010g
b6613a8544 systemd: bring more in line with upstream 2021-06-14 23:10:20 +02:00
bb010g
c982c19f53 files: properly escape shell arguments 2021-06-14 23:10:19 +02:00
Naïm Favier
4ed6705b0f nixos: set stopIfChanged to false (#2105)
There is no ExecStop so we can just restart the service.
2021-06-14 20:49:38 +03:00
Sumner Evans
25bf3d7953 password-store: add environment variables to xsession.importedVariables (#2103)
This ensures that any systemd services that need pass will have the
correct environment variables.
2021-06-13 16:27:31 -06:00
ZerataX
fb50102daf mangohud: add module 2021-06-12 09:55:58 +02:00
Rosario Pulella
666eee4f72 programs.foot: Always create config file (#2091)
foot complains if there is no config file.
2021-06-10 18:40:36 +02:00
bb010g
42847469b3 zsh: add completionInit option (#2046)
Factored out from original .zshrc construction.
2021-06-09 11:15:10 -04:00
Christopher League
aa36e2d6b4 xsession.pointerCursor: .icons file for AwesomeWM (#2084) 2021-06-07 18:00:31 -04:00
Johannes Schleifenbaum
06a98ba0fd pantalaimon: add module (#2056) 2021-06-07 17:38:42 -04:00
Dominik Schrempf
f74dc9c70b xidlehook: add module (#1761)
Co-authored-by: Nicolas Berbiche <nic.berbiche@gmail.com>
2021-06-07 16:13:43 -04:00
Ethan Edwards
9424f31f86 piston-cli: add module (#2052)
* piston-cli: add module

* News: Remove trailing whitespace
2021-06-07 08:07:15 -06:00
malte-v
3ffe2a4cdf programs.senpai: add module (#2076)
* maintainers: add malvo

* programs.senpai: add module
2021-06-07 07:40:32 -06:00
Rodney Lorrimar
afb5fd962c irssi: add ssl_cert option for servers (#2043)
* irssi: add ssl_cert option for servers

I was following these instructions
https://www.oftc.net/NickServ/CertFP/
and found that the `/server add -ssl_cert` option was needed.

This patch therefore adds an optional
`programs.irssi.networks.<name>.server.ssl.certificateFile` path.

Perhaps this could also be done with a `settings` attribute, but that
would probably require most of this module to be reworked.

* irsii: Add example-settings test case
2021-06-06 15:31:25 -06:00
Bruno BELANYI
7591c8041d rbw: add module (#1998)
`rbw` is a stand-alone Bitwarden client, which makes use of a daemon to
cache your password and manage state.

Its configuration can be managed by `home-manager` or not, leaving the
user free to configure it through `rbw config`.
2021-06-05 18:09:02 -06:00
Rodney Lorrimar
5060262b79 services/emacs: Prevent deletion of socket file
When running a socket-activated emacs service, we don't want emacs to
remove the socket file after exiting, because then subsequent
invocations of `emacsclient` won't be able to use the socket to start
emacs.service again.
2021-06-06 01:00:20 +02:00
Tad Fisher
ac82c036d8 services/emacs: Update systemd definitions, drop Emacs 26 support
Emacs 27 added Type=notify support and updated the service definition to
remove the use of `emacsclient' to kill the service. Emacs 28 changes
the `StartupWMClass' in emacsclient.desktop to `Emacsd'. Update our
emacs.service and emacsclient.desktop definitions to match upstream
changes.

When killing emacs.service, the socket is removed, and subsequently
starting the service manually results in a service without a socket.
Prevent this by adding `RefuseManualStart=true' to the service's Unit
definition.

Drop Emacs 26 support as it is no longer shipped in nixpkgs. Update the
tests to verify the following configuration scenarios:

- Emacs version: 27, 28
- Socket activation: disabled, enabled
2021-06-06 01:00:19 +02:00
puzzlewolf
e9ed9c2e11 etesync-dav: fix typo (#2067)
Upstream (https://github.com/etesync/etesync-dav/blob/master/README.md#configuration-and-running) uses 37358 as default port.
2021-06-05 16:58:12 -06:00
bb010g
5eb199e937 home-manager: pass on --debug option (#2049)
* man-home-manager: remove trailing whitespace

* home-manager: pass on `--debug` option
2021-06-05 16:11:06 -06:00
Naïm Favier
dba802c1d9 dunst: add the whole package to home.packages (#2079)
The `dunst` package provides the `dunstctl` and `dunstify` command-line utilities which are useful to have.
2021-06-05 15:31:50 -06:00
lunik1
e4c55ed4e6 Revert "foot: add foot binaries to user service's path (#2061)"
This reverts commit cb227dc6c2.
2021-06-05 20:53:45 +02:00
Robert Helgesson
19d95258ac docs: set current version to 21.11 2021-06-05 20:05:04 +02:00
Robert Helgesson
5c1415d67f docs: mark 21.05 as stable version 2021-06-05 19:54:25 +02:00
Dusk Banks
45f9cb06a9 texlive: add packageSet option 2021-06-03 22:44:09 +02:00
Dusk Banks
c12d53dd7c texlive: "Texlive" -> "TeX Live" 2021-06-03 22:44:08 +02:00
Robert Helgesson
d3cdabb5c9 Replace references to pkgs.gnome3 by pkgs.gnome 2021-06-03 22:09:59 +02:00
Matthieu Coudron
c7e79b5337 programs.neovim: dont wrap init.vim (#2058)
since we want to write it ourself in ~/.config/nvim/init.vim
2021-06-03 21:37:53 +02:00
Basti
95da56b783 i3,sway: workspace output assignment (#2003)
(cherry picked from commit ea3ff797c87313e71f2ed2fd2b932a18a4b4400b)
2021-06-02 18:03:20 -06:00
cwyc
30102ea9e5 xdg-desktop-entries: add module (#1450)
* xdg-desktop-entries: add module

rebase

* xdg-desktop-entries: adapt to changes in makeDesktopItem

This package depends on the makeDesktopItem function in nixpkgs, which recently changed its syntax:
https://github.com/NixOS/nixpkgs/pull/91790

This commit makes the module compatible with the new syntax.

It also exposes the fileValidation option in makeDesktopItem.

Co-authored-by: cwyc <cwyc@users.noreply.github.com>
Co-authored-by: --get <--show>
2021-06-02 19:36:17 -04:00
Bart Bakker
d6bbd02e95 htop: fix preserving the order of meters (#2065)
Pass meters for formatting in a list of attrsets so that ordering can be
preserved. In addition provide some mode-specific functions to create these
attrsets, to make for a bit nicer config.

This fixes #2060.
2021-06-02 19:27:17 -04:00
Sylvain Fankhauser
b917624670 i3status-rust: replace deprecated format keys (#2062) 2021-06-02 11:05:19 -04:00
lunik1
cb227dc6c2 foot: add foot binaries to user service's path (#2061)
This is needed for foot's new terminal spawning feature to function.
2021-06-01 19:24:59 -04:00
Matthieu Coudron
2a4ab0d891 programs.neovim: fix tests + swap extraConfig and pluginconfig (#2053)
makes more sense to have extraConfig afterwards in case use want to override config
2021-05-31 19:32:21 +02:00
Robert Helgesson
9e253a8c30 docs: minor additional issue template update 2021-05-31 17:27:34 +02:00
Robert Helgesson
5573c10ea4 docs: update issue template
Most importantly change chat contact information.
2021-05-31 17:24:37 +02:00
bb010g
0e329cee4c jq: add package option 2021-05-30 22:48:57 +02:00
Robert Helgesson
d2aaeac42c files: remove assertion on recursive onChange
See discussion in

  https://github.com/nix-community/home-manager/pull/2031
2021-05-30 11:54:33 +02:00
Robert Helgesson
07ad6a4f76 files: fix use of onChange with directory source
Previously, the comparison would not handle directory comparison
correctly, always finding that the source and target differed. This
would trigger the `onChange` script on each activation.

Fixes #2004
2021-05-29 21:52:37 +02:00
1184 changed files with 45910 additions and 9927 deletions

303
.github/CODEOWNERS vendored
View File

@@ -1,303 +0,0 @@
* @rycee
/flake.nix @bqv @kisik21
/modules/home-environment.nix @rycee
/modules/misc/dconf.nix @gnidorah @rycee
/modules/misc/fontconfig.nix @rycee
/tests/modules/misc/fontconfig @rycee
/modules/misc/gtk.nix @rycee
/modules/config/i18n.nix @midchildan
/tests/modules/config/i18n @midchildan
/modules/misc/news.nix @rycee
/modules/misc/numlock.nix @evanjs
/tests/modules/misc/numlock @evanjs
/modules/misc/pam.nix @rycee
/tests/modules/misc/pam @rycee
/modules/misc/qt.nix @rycee
/modules/misc/submodule-support.nix @rycee
/modules/misc/tmpfiles.nix @dawidsowa
/modules/misc/vte.nix @rycee
/modules/misc/xdg-mime-apps.nix @pacien
/modules/misc/xdg-user-dirs.nix @pacien
/modules/misc/xdg-system-dirs.nix @tadfisher
/tests/modules/misc/xdg/system-dirs.nix @tadfisher
/modules/programs/aria2.nix @JustinLovinger
/modules/programs/autojump.nix @evanjs
/tests/modules/programs/autojump @evanjs
/modules/programs/autorandr.nix @uvNikita
/modules/programs/bash.nix @rycee
/modules/programs/bat.nix @marsam
/modules/programs/beets.nix @rycee
/modules/programs/broot.nix @aheaume
/modules/programs/dircolors.nix @JustinLovinger
/modules/programs/direnv.nix @rycee
/modules/programs/eclipse.nix @rycee
/modules/programs/emacs.nix @rycee
/modules/programs/exa.nix @kalhauge
/modules/programs/firefox.nix @rycee
/modules/programs/foot.nix @plabadens
/tests/modules/programs/foot @plabadens
/modules/programs/gh.nix @Gerschtli
/tests/modules/programs/gh @Gerschtli
/modules/programs/git.nix @rycee
/modules/programs/gnome-terminal.nix @rycee
/modules/programs/go.nix @rvolosatovs
/modules/programs/home-manager.nix @rycee
/modules/programs/htop.nix @bjpbakker
/modules/programs/i3status.nix @JustinLovinger
/modules/programs/i3status-rust.nix @workflow
/modules/programs/java.nix @ShamrockLee
/modules/programs/keychain.nix @marsam
/modules/programs/lazygit.nix @kalhauge
/modules/programs/lesspipe.nix @rycee
/modules/programs/lf.nix @owm111
/tests/modules/programs/lf @owm111
/modules/programs/lieer.nix @tadfisher
/modules/programs/lsd.nix @marsam
/modules/programs/matplotlib.nix @rprospero
/modules/programs/mbsync.nix @KarlJoad
/tests/modules/programs/mbsync @KarlJoad
/modules/programs/mcfly.nix @marsam
/modules/programs/mpv.nix @tadeokondrak @thiagokokada
/tests/modules/programs/mpv @thiagokokada
/modules/programs/mu.nix @KarlJoad
/modules/programs/ncmpcpp.nix @olmokramer
/tests/modules/programs/ncmpcpp @olmokramer
/tests/modules/programs/ncmpcpp-linux @olmokramer
/modules/programs/ncspot.nix @marsam
/modules/programs/ne.nix @cwyc
/tests/modules/programs/ne @cwyc
/modules/programs/newsboat.nix @sumnerevans
/tests/modules/programs/newsboat @sumnerevans
/modules/programs/nix-index.nix @ambroisie
/tests/modules/programs/nix-index @ambroisie
/modules/programs/noti.nix @marsam
/modules/programs/nushell.nix @Philipp-M
/tests/modules/programs/nushell @Philipp-M
/modules/programs/obs-studio.nix @adisbladis
/modules/programs/octant.nix @06kellyjac
/modules/programs/opam.nix @marsam
/modules/programs/openssh.nix @rycee
/modules/programs/password-store.nix @pacien
/modules/programs/pazi.nix @marsam
/modules/programs/pidgin.nix @rycee
/modules/programs/powerline-go.nix @DamienCassou
/modules/programs/rofi.nix @thiagokokada
/tests/modules/programs/rofi @thiagokokada
/modules/programs/rofi-pass.nix @seylerius
/tests/modules/programs/rofi-pass @seylerius
/modules/programs/rtorrent.nix @marsam
/modules/programs/sbt.nix @kubukoz
/tests/modules/programs/sbt @kubukoz
/modules/programs/scmpuff.nix @cpcloud
/tests/modules/programs/scmpuff @cpcloud
/modules/programs/ssh.nix @rycee
/modules/programs/starship.nix @marsam
/modules/programs/texlive.nix @rycee
/modules/programs/topgrade.nix @msfjarvis
/tests/modules/programs/topgrade @msfjarvis
/modules/programs/waybar.nix @berbiche
/tests/modules/programs/waybar @berbiche
/modules/programs/z-lua.nix @marsam
/modules/programs/zathura.nix @rprospero
/modules/programs/zoxide.nix @marsam
/modules/programs/zsh/prezto.nix @NickHu
/modules/services/barrier.nix @Kritnich
/tests/modules/services/barrier @Kritnich
/modules/services/caffeine.nix @uvNikita
/modules/services/cbatticon.nix @pmiddend
/modules/services/clipmenu.nix @DamienCassou
/modules/services/dropbox.nix @eyJhb
/tests/modules/services/dropbox @eyJhb
/modules/services/dunst.nix @rycee
/modules/services/emacs.nix @tadfisher
/modules/services/etesync-dav.nix @Valodim
/modules/services/flameshot.nix @moredhel
/modules/services/fluidsynth.nix @Valodim
/modules/services/gnome-keyring.nix @rycee
/modules/services/gpg-agent.nix @rycee
/modules/services/grobi.nix @mbrgm
/modules/services/hound.nix @adisbladis
/modules/services/imapnotify.nix @nickhu
/modules/services/kanshi.nix @nurelin
/tests/modules/services/kanshi @nurelin
/modules/services/kdeconnect.nix @adisbladis
/modules/services/keepassx.nix @rycee
/modules/services/lieer.nix @tadfisher
/modules/services/lorri.nix @Gerschtli
/modules/services/mako.nix @onny
/modules/services/mbsync.nix @pjones
/modules/services/mpdris2.nix @pjones
/modules/services/mpris-proxy.nix @ThibautMarty
/modules/services/muchsync.nix @pacien
/modules/services/network-manager-applet.nix @rycee
/modules/services/parcellite.nix @gleber
/modules/services/pass-secret-service.nix @cab404
/modules/services/password-store-sync.nix @pacien
/modules/services/pasystray.nix @pltanton
/modules/services/pbgopy.nix @ivarwithoutbones
/tests/modules/services/pbgopy @ivarwithoutbones
/modules/services/plan9port.nix @ehmry
/modules/services/playerctld.nix @fendse
/tests/modules/playerctld @fendse
/modules/services/poweralertd.nix @ThibautMarty
/modules/services/pulseeffects.nix @jonringer
/modules/services/random-background.nix @rycee
/modules/services/redshift-gammastep @rycee @petabyteboy @thiagokokada
/tests/modules/redshift-gammastep @thiagokokada
/modules/services/status-notifier-watcher.nix @pltanton
/modules/services/syncthing.nix @rycee
/modules/services/taffybar.nix @rycee
/modules/services/tahoe-lafs.nix @rycee
/modules/services/taskwarrior-sync.nix @minijackson @pacien
/modules/services/udiskie.nix @rycee
/modules/services/unison.nix @pacien
/modules/services/window-managers/i3-sway/i3.nix @sumnerevans
/tests/modules/services/window-managers/i3 @sumnerevans
/modules/services/window-managers/i3-sway/lib @sumnerevans
/modules/services/window-managers/i3-sway/sway.nix @alexarice @sumnerevans
/tests/modules/services/window-managers/sway @sumnerevans
/modules/services/wlsunset.nix @matrss
/tests/modules/services/wlsunset @matrss
/modules/services/xcape.nix @nickhu
/modules/services/xembed-sni-proxy.nix @rycee
/modules/services/xscreensaver.nix @rycee
/modules/services/xsuspender.nix @offlinehacker
/modules/systemd.nix @rycee
/modules/xcursor.nix @league
/modules/xresources.nix @rycee
/modules/xsession.nix @rycee

View File

@@ -1,31 +0,0 @@
<!--
Don't forget to check if there already exists a relevant issue before
creating a new one.
-->
### Issue description
<!--
Please describe the issue. For support and help please use the IRC
channel #home-manager at irc.oftc.net or Matrix room
https://matrix.to/#/#hm:rycee.net instead.
-->
### Meta
#### Maintainer CC
<!--
Please @ people who are in the `meta.maintainers` list of the
offending module. If in doubt, check `git blame` for whoever last
touched something.
-->
#### Technical details
<!--
Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the
result.
-->

View File

@@ -0,0 +1,15 @@
---
name: Feature request
about: Ask for a new feature to be added (module, program, etc.)
title: ''
labels: feature request
assignees: rycee, berbiche, sumnerevans
---
<!--
Note: Please search to see if the feature has already been requested
-->
### Description

55
.github/ISSUE_TEMPLATE/issue.yaml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Bug Report
description: File a bug/issue
title: 'bug: '
labels: [bug, triage]
# We cannot use nix-community/home-manager
# See https://github.com/dear-github/dear-github/issues/170
assignees: [rycee, berbiche, sumnerevans]
body:
- type: checkboxes
attributes:
label: Are you following the right branch?
description: |
You should follow the branch of Home Manager that corresponds to your
version of Nixpkgs; see [the README](https://github.com/nix-community/home-manager#releases) for details.
options:
- label: My Nixpkgs and Home Manager versions are in sync
required: true
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: |
Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Issue description
description: |
Please describe the issue.
For support and help please use the IRC channel #home-manager at irc.oftc.net or
Matrix room <https://matrix.to/#/#hm:rycee.net> instead.
validations:
required: false
- type: textarea
attributes:
label: Maintainer CC
description: |
Please @ people who are in the `meta.maintainers` list of the offending module.
If in doubt, check `git blame` for whoever last touched something.
validations:
required: false
- type: textarea
id: system
attributes:
label: System information
description: |
Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.
render: markdown
validations:
required: true

View File

@@ -15,7 +15,7 @@ pull-request.
Also make sure to read the guidelines found at
https://github.com/nix-community/home-manager/blob/master/doc/contributing.adoc#sec-guidelines
https://github.com/nix-community/home-manager/blob/master/docs/contributing.adoc#sec-guidelines
-->
@@ -23,7 +23,7 @@ Also make sure to read the guidelines found at
- [ ] Code formatted with `./format`.
- [ ] Code tested through `nix-shell --pure tests -A run.all`.
- [ ] Code tested through `nix-shell --pure tests -A run.all` or `nix develop --ignore-environment .#all` using Flakes.
- [ ] Test cases updated/added. See [example](https://github.com/nix-community/home-manager/commit/f3fbb50b68df20da47f9b0def5607857fcc0d021#diff-b61a6d542f9036550ba9c401c80f00ef).
@@ -35,10 +35,8 @@ Also make sure to read the guidelines found at
{long description}
```
See [CONTRIBUTING](https://github.com/nix-community/home-manager/blob/master/doc/contributing.adoc#sec-commit-style) for more information and [recent commit messages](https://github.com/nix-community/home-manager/commits/master) for examples.
See [CONTRIBUTING](https://github.com/nix-community/home-manager/blob/master/docs/contributing.adoc#sec-commit-style) for more information and [recent commit messages](https://github.com/nix-community/home-manager/commits/master) for examples.
- If this PR adds a new module
- [ ] Added myself as module maintainer. See [example](https://github.com/nix-community/home-manager/blob/068ff76a10e95820f886ac46957edcff4e44621d/modules/programs/lesspipe.nix#L6).
- [ ] Added myself and the module files to `.github/CODEOWNERS`.

View File

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

29
.github/labeler.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
"mail":
- modules/programs/aerc*.nix
- modules/programs/alot*.nix
- tests/modules/programs/aerc/*
- tests/modules/programs/alot/*
- modules/programs/mujmap.nix
- tests/modules/programs/mujmap/*
- modules/programs/notmuch.nix
- modules/programs/neomutt*
- tests/modules/programs/neomutt/*
- modules/programs/getmail*
- modules/*/mbsync*
- tests/modules/programs/mbsync/*
- modules/programs/himalaya.nix
- tests/modules/programs/himalaya/*
- modules/programs/thunderbird.nix
- tests/modules/programs/thunderbird/*
- modules/services/imapnotify.nix
"neovim":
- modules/programs/neovim.nix
- tests/modules/programs/neovim/**/*
"shell":
- modules/lib/zsh.nix
- modules/programs/zsh*
- modules/programs/bash*
- tests/modules/programs/zsh/**/*

18
.github/stale.yml vendored
View File

@@ -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,11 +36,8 @@ 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 close the issue.
Also, don't be afraid to manually close an issue, even if it holds valuable information.
</p>
<p>
Closed issues stay in the system for people to search, read, cross-reference, or even reopen--nothing is lost!
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>
</details>
@@ -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>
@@ -57,7 +53,7 @@ pulls:
<summary><b>If you are the original author of the PR</b></summary>
<p>
* GitHub sometimes doesn't notify people who commented / reviewed a PR previously, when you (force) push commits. *If you have addressed the reviews* you can [officially ask for a review](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review) from those who commented to you or anyone else.
* GitHub sometimes doesn't notify people who commented / reviewed a PR previously when you (force) push commits. *If you have addressed the reviews* you can [officially ask for a review](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review) from those who commented to you or anyone else.
* If it is unfinished but you plan to finish it, please mark it as a draft.
* If you don't expect to work on it any time soon, please consider closing it with a short comment encouraging someone else to pick up your work.
* To get things rolling again, rebase the PR against the target branch and address valid comments.
@@ -66,7 +62,7 @@ pulls:
</details>
<details>
<summary><b>If you are <i>not</i> the original author of the issue</b></summary>
<summary><b>If you are <i>not</i> the original author of the PR</b></summary>
<p>
* If you want to pick up the work on this PR, please create a new PR and indicate that it supercedes and closes this PR.

View File

@@ -11,13 +11,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v16
- uses: cachix/install-nix-action@v20
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v10
- uses: cachix/cachix-action@v12
with:
name: nix-community
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: |
nix-build -A docs.html
cp -r result/share/doc/home-manager public

24
.github/workflows/labeler.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: "Label PR"
on:
- pull_request_target
# WARNING:
# When extending this action, be aware that $GITHUB_TOKEN allows some write
# access to the GitHub API. This means that it should not evaluate user input in
# a way that allows code injection.
permissions:
contents: read
pull-requests: write
jobs:
labels:
runs-on: ubuntu-latest
if: github.repository_owner == 'nix-community'
steps:
- uses: actions/labeler@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
sync-labels: true

View File

@@ -6,19 +6,25 @@ on:
jobs:
tests:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v16
- uses: cachix/install-nix-action@v20
with:
install_url: https://releases.nixos.org/nix/nix-2.3.16/install
nix_path: nixpkgs=channel:nixos-21.05
- uses: cachix/cachix-action@v10
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v12
with:
name: nix-community
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: |
if grep -R --exclude stdlib-extended.nix literalExample modules ; then
echo "Error: literalExample should be replaced by literalExpression" > /dev/stderr
exit 1
fi
- run: nix-build -A docs.jsonModuleMaintainers
- run: ./format -c
- run: nix-shell . -A install
- run: nix-shell --pure tests -A run.all
- run: nix-shell --arg enableBig false --pure tests -A run.all

20
.github/workflows/update-flake.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: Update flake inputs
on:
schedule:
# Update every Sunday and Wednesday
- cron: "51 3 * * 0,3"
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Nix
uses: cachix/install-nix-action@v20
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@v19
with:
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
pr-labels: dependencies

1
.gitignore vendored
View File

@@ -1,2 +1 @@
/flake.lock
/result*

View File

@@ -4,25 +4,14 @@ variables:
NIX_PATH: "nixpkgs=channel:nixos-unstable"
stages:
- test
- deploy
Run tests:
stage: test
script:
- nix-shell --pure tests -A run.files-text
rules:
- if: $CI_COMMIT_BRANCH == "master"
when: always
pages:
stage: deploy
script:
- mkdir -p ~/.config/nixpkgs
- echo '{ manual.html.enable = true; }' > ~/.config/nixpkgs/home.nix
- nix-shell . -A install
- nix-build -A docs.html
- mkdir public
- cp -r ~/.nix-profile/share/doc/home-manager/* public/
- cp -r ./result/share/doc/home-manager/* public/
artifacts:
paths:
- public

1
.release Normal file
View File

@@ -0,0 +1 @@
23.11

View File

@@ -1 +0,0 @@
doc/contributing.adoc

View File

@@ -1 +0,0 @@
doc/faq.adoc

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2017-2020 Home Manager contributors
Copyright (c) 2017-2023 Home Manager contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

20
Makefile Normal file
View File

@@ -0,0 +1,20 @@
.PHONY: all all-tests test test-install format
NIXPKGS_REV := nixpkgs-unstable
NIX_PATH := nixpkgs=https://github.com/NixOS/nixpkgs/archive/${NIXPKGS_REV}.tar.gz
all: all-tests test-install
all-tests:
$(MAKE) test TEST=all
test:
ifndef TEST
$(error Use 'make test TEST=<test_name>' to run desired test)
endif
nix-shell --pure tests -I ${NIX_PATH} -A run.${TEST}
test-install:
HOME=$(shell mktemp -d) NIX_PATH=${NIX_PATH} nix-shell . -A install
format:
./format

395
README.md
View File

@@ -6,10 +6,31 @@ using the [Nix][] package manager together with the Nix libraries
found in [Nixpkgs][]. It allows declarative configuration of user
specific (non global) packages and dotfiles.
Usage
-----
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].
For a systematic overview of Home Manager and its available options,
please see
- the [Home Manager manual][manual],
- the [Home Manager configuration options][configuration options], and
- the 3rd party [Home Manager option search](https://mipmip.github.io/home-manager-option-search/).
If you would like to contribute to Home Manager
then please have a look at the [contributing][] chapter of the manual.
Releases
--------
Home Manager is developed against `nixpkgs-unstable` branch, which
often causes it to contain tweaks for changes/packages not yet
released in stable NixOS. To avoid breaking users' configurations,
Home Manager is released in branches corresponding to NixOS releases
(e.g. `release-23.05`). These branches get fixes, but usually not new
modules. If you need a module to be backported, then feel free to open
an issue.
Words of warning
----------------
@@ -32,14 +53,14 @@ will write to your dconf store and cannot tell whether a configuration
that it is about to be overwritten was from a previous Home Manager
generation or from manual configuration.
Home Manager targets [NixOS][] unstable and NixOS version 21.05 (the
Home Manager targets [NixOS][] unstable and NixOS version 23.05 (the
current stable version), it may or may not work on other Linux
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.
@@ -47,340 +68,68 @@ all this out you can go ahead and read the rest of this text.
Contact
-------
You can chat with us on IRC in the channel [#home-manager][] on
[OFTC][].
You can chat with us on IRC in the channel [#home-manager][] on [OFTC][].
There is also a [Matrix room](https://matrix.to/#/#hm:rycee.net),
which is bridged to the IRC channel.
Installation
------------
Currently the easiest way to install Home Manager is as follows:
Home Manager can be used in three primary ways:
1. Make sure you have a working Nix installation. Specifically, make
sure that your user is able to build and install Nix packages. For
example, you should be able to successfully run a command like
`nix-instantiate '<nixpkgs>' -A hello` without having to switch to
the root user. For a multi-user install of Nix this means that
your user must be covered by the
[`allowed-users`][nixAllowedUsers] Nix option. On NixOS you can
control this option using the
[`nix.allowedUsers`][nixosAllowedUsers] system option.
1. Using the standalone `home-manager` tool. For platforms other than
NixOS and Darwin, this is the only available choice. It is also
recommended for people on NixOS or Darwin that want to manage their
home directory independently of the system as a whole. See
[Standalone installation][manual standalone install] in the manual
for instructions on how to perform this installation.
Note that Nix 2.4 (`nixUnstable`) is not yet supported.
2. As a module within a NixOS system configuration. This allows the
user profiles to be built together with the system when running
`nixos-rebuild`. See [NixOS module installation][manual nixos
install] in the manual for a description of this setup.
2. Add the appropriate Home Manager channel. If you are following
Nixpkgs master or an unstable channel you can run
3. As a module within a [nix-darwin][] system configuration. This
allows the user profiles to be built together with the system when
running `darwin-rebuild`. See [nix-darwin module
installation][manual nix-darwin install] in the manual for a
description of this setup.
```console
$ nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
$ nix-channel --update
```
Home Manager provides both the channel-based setup and the flake-based one.
See [Nix Flakes][manual nix flakes] for a description of the flake-based setup.
and if you follow a Nixpkgs version 21.05 channel you can run
Translations
------------
```console
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-21.05.tar.gz home-manager
$ nix-channel --update
```
Home Manager has basic support for internationalization through
[gettext](https://www.gnu.org/software/gettext/). The translations are
hosted by [Weblate](https://weblate.org/). If you would like to
contribute to the translation effort then start by going to the
[Home Manager Weblate project](https://hosted.weblate.org/engage/home-manager/).
On NixOS you may need to log out and back in for the channel to
become available. On non-NixOS you may have to add
<a href="https://hosted.weblate.org/engage/home-manager/">
<img src="https://hosted.weblate.org/widgets/home-manager/-/multi-auto.svg" alt="Translation status" />
</a>
```shell
export NIX_PATH=$HOME/.nix-defexpr/channels${NIX_PATH:+:}$NIX_PATH
```
License
-------
to your shell (see [nix#2033](https://github.com/NixOS/nix/issues/2033)).
This project is licensed under the terms of the [MIT license](LICENSE).
3. Install Home Manager and create the first Home Manager generation:
```console
$ nix-shell '<home-manager>' -A install
```
Once finished, Home Manager should be active and available in your
user environment.
3. If you do not plan on having Home Manager manage your shell
configuration then you must source the
```
$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
```
file in your shell configuration. Unfortunately, in this specific
case we currently only support POSIX.2-like shells such as
[Bash][] or [Z shell][].
For example, if you use Bash then add
```bash
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
```
or this when managing home configuration together with system
configuration
```bash
. "/etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh"
```
to your `~/.profile` file.
If instead of using channels you want to run Home Manager from a Git
checkout of the repository then you can use the
`programs.home-manager.path` option to specify the absolute path to
the repository.
Usage
-----
Home Manager is typically managed through the `home-manager` tool.
This tool can, for example, apply configurations to your home
directory, list user packages installed by the tool, and list the
configuration generations.
As an example, let us expand the initial configuration file from the
installation above to install the htop and fortune packages, install
Emacs with a few extra packages enabled, install Firefox with
smooth scrolling disabled, and enable the user gpg-agent service.
To satisfy the above setup we should elaborate the
`~/.config/nixpkgs/home.nix` file as follows:
```nix
{ pkgs, ... }:
{
home.packages = [
pkgs.htop
pkgs.fortune
];
programs.emacs = {
enable = true;
extraPackages = epkgs: [
epkgs.nix-mode
epkgs.magit
];
};
programs.firefox = {
enable = true;
profiles = {
myprofile = {
settings = {
"general.smoothScroll" = false;
};
};
};
};
services.gpg-agent = {
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
};
programs.home-manager = {
enable = true;
path = "…";
};
}
```
To activate this configuration you can then run
```console
$ home-manager switch
```
or if you are not feeling so lucky,
```console
$ home-manager build
```
which will create a `result` link to a directory containing an
activation script and the generated home directory files.
Documentation of available configuration options, including
descriptions and usage examples, is available in the [Home Manager
manual][configuration options] or offline by running
```console
$ man home-configuration.nix
```
Rollbacks
---------
While the `home-manager` tool does not explicitly support rollbacks at
the moment it is relatively easy to perform one manually. The steps to
do so are
1. Run `home-manager generations` to determine which generation you
wish to rollback to:
```console
$ home-manager generations
2018-01-04 11:56 : id 765 -> /nix/store/kahm1rxk77mnvd2l8pfvd4jkkffk5ijk-home-manager-generation
2018-01-03 10:29 : id 764 -> /nix/store/2wsmsliqr5yynqkdyjzb1y57pr5q2lsj-home-manager-generation
2018-01-01 12:21 : id 763 -> /nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation
2017-12-29 21:03 : id 762 -> /nix/store/6c0k1r03fxckql4vgqcn9ccb616ynb94-home-manager-generation
2017-12-25 18:51 : id 761 -> /nix/store/czc5y6vi1rvnkfv83cs3rn84jarcgsgh-home-manager-generation
```
2. Copy the Nix store path of the generation you chose, e.g.,
/nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation
for generation 763.
3. Run the `activate` script inside the copied store path:
```console
$ /nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation/activate
Starting home manager activation
```
Keeping your ~ safe from harm
-----------------------------
To configure programs and services Home Manager must write various
things to your home directory. To prevent overwriting any existing
files when switching to a new generation, Home Manager will attempt to
detect collisions between existing files and generated files. If any
such collision is detected the activation will terminate before
changing anything on your computer.
For example, suppose you have a wonderful, painstakingly created
`~/.config/git/config` and add
```nix
{
# …
programs.git = {
enable = true;
userName = "Jane Doe";
userEmail = "jane.doe@example.org";
};
# …
}
```
to your configuration. Attempting to switch to the generation will
then result in
```console
$ home-manager switch
Activating checkLinkTargets
Existing file '/home/jdoe/.config/git/config' is in the way
Please move the above files and try again
```
Graphical services
------------------
Home Manager includes a number of services intended to run in a
graphical session, for example `xscreensaver` and `dunst`.
Unfortunately, such services will not be started automatically unless
you let Home Manager start your X session. That is, you have something
like
```nix
{
# …
services.xserver.enable = true;
# …
}
```
in your system configuration and
```nix
{
# …
xsession.enable = true;
xsession.windowManager.command = "…";
# …
}
```
in your Home Manager configuration.
Nix Flakes
----------
Home Manager includes a `flake.nix` file for compatibility with [Nix Flakes][]
for those that wish to use it as a module. A bare-minimum `flake.nix` would be
as follows:
```nix
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
};
outputs = { home-manager, nixpkgs, ... }: {
nixosConfigurations = {
hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jdoe = import ./home.nix;
}
];
};
};
};
}
```
Note, the Home Manager library is exported by the flake under
`lib.hm`.
When using flakes, switch to new configurations as you do for the
whole system (e. g. `nixos-rebuild switch --flake <path>`) instead of
using the `home-manager` command line tool.
Releases
--------
Home Manager is developed against `nixpkgs-unstable` branch, which
often causes it to contain tweaks for changes/packages not yet
released in stable NixOS. To avoid breaking users' configurations,
Home Manager is released in branches corresponding to NixOS releases
(e.g. `release-21.05`). These branches get fixes, but usually not new
modules. If you need a module to be backported, then feel free to open
an issue.
[Bash]: https://www.gnu.org/software/bash/
[Nix]: https://nixos.org/nix/
[Nix]: https://nixos.org/explore.html
[NixOS]: https://nixos.org/
[Nixpkgs]: https://nixos.org/nixpkgs/
[nixAllowedUsers]: https://nixos.org/nix/manual/#conf-allowed-users
[nixosAllowedUsers]: https://nixos.org/nixos/manual/options.html#opt-nix.allowedUsers
[Z shell]: http://zsh.sourceforge.net/
[manual]: https://nix-community.github.io/home-manager/
[Nixpkgs]: https://github.com/NixOS/nixpkgs
[manual]: https://nix-community.github.io/home-manager/index.html
[contributing]: https://nix-community.github.io/home-manager/#ch-contributing
[manual usage]: https://nix-community.github.io/home-manager/#ch-usage
[configuration options]: https://nix-community.github.io/home-manager/options.html
[#home-manager]: https://webchat.oftc.net/?channels=home-manager
[OFTC]: https://oftc.net/
[samueldr]: https://github.com/samueldr/
[Nix Pills]: https://nixos.org/nixos/nix-pills/
[Nix Pills]: https://nixos.org/guides/nix-pills/
[Nix Flakes]: https://nixos.wiki/wiki/Flakes
[nix-darwin]: https://github.com/LnL7/nix-darwin
[manual standalone install]: https://nix-community.github.io/home-manager/index.html#sec-install-standalone
[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

View File

@@ -1,10 +1,11 @@
{ pkgs ? import <nixpkgs> { } }:
rec {
docs = with import ./doc { inherit pkgs; }; {
docs = with import ./docs { inherit pkgs; }; {
html = manual.html;
manPages = manPages;
json = options.json;
jsonModuleMaintainers = jsonModuleMaintainers; # Unstable, mainly for CI.
};
home-manager = pkgs.callPackage ./home-manager { path = toString ./.; };

View File

@@ -1,187 +0,0 @@
[[ch-writing-modules]]
== Writing Home Manager Modules
:writing-nixos-modules: https://nixos.org/nixos/manual/index.html#sec-writing-modules
The module system in Home Manager is based entirely on the NixOS module system so we will here only highlight aspects that are specific for Home Manager. For information about the module system as such please refer to the {writing-nixos-modules}[Writing NixOS Modules] chapter of the NixOS manual.
[[sec-option-types]]
=== Option Types
:wikipedia-dag: https://en.wikipedia.org/w/index.php?title=Directed_acyclic_graph&oldid=939656095
:gvariant-description: https://developer.gnome.org/glib/stable/glib-GVariant.html#glib-GVariant.description
Overall the basic option types are the same in Home Manager as NixOS. A few Home Manager options, however, make use of custom types that are worth describing in more detail. These are the option types `dagOf` and `gvariant` that are used, for example, by <<opt-programs.ssh.matchBlocks>> and <<opt-dconf.settings>>.
`hm.types.dagOf`::
Options of this type have attribute sets as values where each member is a node in a {wikipedia-dag}[directed acyclic graph] (DAG). This allows the attribute set entries to express dependency relations among themselves. This can, for example, be used to control the order of match blocks in a OpenSSH client configuration or the order of activation script blocks in <<opt-home.activation>>.
+
A number of functions are provided to create DAG nodes. The functions are shown below with examples using an option `foo.bar` of type `hm.types.dagOf types.int`.
+
`hm.dag.entryAnywhere (value: T)`:::
Indicates that `value` can be placed anywhere within the DAG. This is also the default for plain attribute set entries, that is
+
[source,nix]
----
foo.bar = {
a = hm.dag.entryAnywhere 0;
}
----
+
and
+
[source,nix]
----
foo.bar = {
a = 0;
}
----
+
are equivalent.
+
`hm.dag.entryAfter (afters: list string) (value: T)`:::
Indicates that `value` must be placed _after_ each of the attribute names in the given list. For example
+
[source,nix]
----
foo.bar = {
a = 0;
b = hm.dag.entryAfter [ "a" ] 1;
}
----
+
would place `b` after `a` in the graph.
+
`hm.dag.entryBefore (befores: list string) (value: T)`:::
Indicates that `value` must be placed _before_ each of the attribute names in the given list. For example
+
[source,nix]
----
foo.bar = {
b = hm.dag.entryBefore [ "a" ] 1;
a = 0;
}
----
+
would place `b` before `a` in the graph.
+
`hm.dag.entryBetween (befores: list string) (afters: list string) (value: T)`:::
Indicates that `value` must be placed _before_ the attribute names in the first list and _after_ the attribute names in the second list. For example
+
[source,nix]
----
foo.bar = {
a = 0;
c = hm.dag.entryBetween [ "b" ] [ "a" ] 2;
b = 1;
}
----
+
would place `c` before `b` and after `a` in the graph.
`hm.types.gvariant`::
This type is useful for options representing {gvariant-description}[GVariant] values. The type accepts all primitive GVariant types as well as arrays and tuples. Dictionaries are not currently supported.
+
To create a GVariant value you can use a number of provided functions. Examples assume an option `foo.bar` of type `hm.types.gvariant`.
+
`hm.gvariant.mkBoolean (v: bool)`:::
Takes a Nix value `v` to a GVariant `boolean` value. Note, Nix booleans are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkBoolean true;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = true;
----
`hm.gvariant.mkString (v: string)`:::
Takes a Nix value `v` to a GVariant `string` value. Note, Nix strings are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkString "a string";
----
+
is equivalent to
+
[source,nix]
----
foo.bar = "a string";
----
`hm.gvariant.mkObjectpath (v: string)`:::
Takes a Nix value `v` to a GVariant `objectpath` value.
`hm.gvariant.mkUchar (v: string)`:::
Takes a Nix value `v` to a GVariant `uchar` value.
`hm.gvariant.mkInt16 (v: int)`:::
Takes a Nix value `v` to a GVariant `int16` value.
`hm.gvariant.mkUint16 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint16` value.
`hm.gvariant.mkInt32 (v: int)`:::
Takes a Nix value `v` to a GVariant `int32` value. Note, Nix integers are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkInt32 7;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = 7;
----
`hm.gvariant.mkUint32 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint32` value.
`hm.gvariant.mkInt64 (v: int)`:::
Takes a Nix value `v` to a GVariant `int64` value.
`hm.gvariant.mkUint64 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint64` value.
`hm.gvariant.mkDouble (v: double)`:::
Takes a Nix value `v` to a GVariant `double` value. Note, Nix floats are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkDouble 3.14;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = 3.14;
----
+
`hm.gvariant.mkArray type elements`:::
Builds a GVariant array containing the given list of elements, where each element is a GVariant value of the given type. The `type` value can be constructed using
+
--
- `hm.gvariant.type.string`
- `hm.gvariant.type.boolean`
- `hm.gvariant.type.uchar`
- `hm.gvariant.type.int16`
- `hm.gvariant.type.uint16`
- `hm.gvariant.type.int32`
- `hm.gvariant.type.uint32`
- `hm.gvariant.type.int64`
- `hm.gvariant.type.uint64`
- `hm.gvariant.type.double`
- `hm.gvariant.type.arrayOf type`
- `hm.gvariant.type.maybeOf type`
- `hm.gvariant.type.tupleOf types`
--
+
where `type` and `types` are themselves a type and list of types, respectively.
+
`hm.gvariant.mkEmptyArray type`:::
An alias of `hm.gvariant.mkArray type []`.
+
`hm.gvariant.mkNothing type`:::
Builds a GVariant maybe value whose (non-existent) element is of the given type. The `type` value is constructed as described for the `mkArray` function above.
+
`hm.gvariant.mkJust element`:::
Builds a GVariant maybe value containing the given GVariant element.
+
`hm.gvariant.mkTuple elements`:::
Builds a GVariant tuple containing the given list of elements, where each element is a GVariant value.

22
docs/3rd-party.adoc Normal file
View File

@@ -0,0 +1,22 @@
[[ch-3rd-party]]
== Third-Party Tools and Extensions
Here is a collection of tools and extensions that relate to Home
Manager. Note, these are maintained outside the regular Home Manager
flow so quality and support may vary wildly. If you encounter problems
then please raise them in the corresponding project, not as issues in
the Home Manager tracker.
If you have made something interesting related to Home Manager then
you are encouraged to create a PR that expands this chapter.
[[sec-3rd-party-module-collections]]
=== Module Collections
- https://github.com/schuelermine/xhmm[xhmm — extra Home Manager modules]
+
A collection of modules maintained by Anselm Schüler.
- https://github.com/danth/stylix/[Stylix — System-wide colorscheming and typography]
+
Configure your applications to get coherent color scheme and font.

View File

@@ -28,6 +28,11 @@ Assuming your clone is at `$HOME/devel/home-manager` then you can make the `home
[source,console]
$ home-manager -I home-manager=$HOME/devel/home-manager
+
or, if using <<sec-flakes-standalone,flakes>>:
+
[source,console]
$ home-manager --override-input home-manager ~/devel/home-manager
+
or
2. changing the default path by ensuring your configuration includes
@@ -45,8 +50,8 @@ The first option is good if you only temporarily want to use your clone.
[[sec-guidelines]]
=== Guidelines
:irc-home-manager: https://webchat.oftc.net/?channels=home-manager
:valuable-options: https://github.com/Infinisil/rfcs/blob/config-option/rfcs/0042-config-option.md#valuable-options
:rfc-42: https://github.com/Infinisil/rfcs/blob/config-option/rfcs/0042-config-option.md
:valuable-options: https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md#valuable-options
:rfc-42: https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md
:assertions: https://nixos.org/manual/nixos/stable/index.html#sec-assertions
If your contribution satisfy the following rules then there is a good chance it will be merged without too much trouble. The rules are enforced by the Home Manager maintainers and to a lesser extent the Home Manager CI system.
@@ -105,17 +110,15 @@ When you have made changes to a module, it is a good idea to check that the man
[source,console]
$ nix-build -A docs.manPages
$ man ./result/share/man/man5/home-configuration.nix.5
$ man ./result/share/man/man5/home-configuration.nix.5.gz
==== Add yourself as a module maintainer
Every new module _must_ include a named maintainer using the `meta.maintainers` attribute. If you are a user of a module that currently lacks a maintainer then please consider adopting it.
If you are present in the NixOS maintainer list then you can use that entry. If you are not then you can add yourself to `modules/lib/maintainers.nix` in the Home Manager project.
If you are present in the nixpkgs maintainer list then you can use that entry. If you are not then you can add yourself to `modules/lib/maintainers.nix` in the Home Manager project.
Also add yourself to `.github/CODEOWNERS` as owner of the associated module files, including the test files. You will then be automatically added as a reviewer on any new pull request that touches your files.
Maintainers are encouraged to join the IRC channel and participate when they have opportunity.
Maintainers are encouraged to join the IRC or Matrix channel and participate when they have opportunity.
[[sec-guidelines-code-style]]
==== Format your code
@@ -155,7 +158,7 @@ A potential gotcha with respect to licensing are option descriptions. Often it i
The commits in your pull request should be reasonably self-contained, that is, each commit should make sense in isolation. In particular, you will be asked to amend any commit that introduces syntax errors or similar problems even if they are fixed in a later commit.
The commit messages should follow the {seven-rules}[seven rules]. We also ask you to include the affected code component or module in the first line. That is, a commit message should follow the template
The commit messages should follow the {seven-rules}[seven rules], except for "Capitalize the subject line". We also ask you to include the affected code component or module in the first line. That is, a commit message should follow the template
----
{component}: {description}
@@ -256,3 +259,8 @@ and run an individual test, for example `alacritty-empty-settings`, through
[source,console]
$ nix-shell --pure tests -A run.alacritty-empty-settings
However, those invocations will impurely source the systems nixpkgs, and may cause failures. To run against the nixpkgs from the flake.lock, use instead e.g.
[source,console]
$ nix develop --ignore-environment .#all

View File

@@ -5,12 +5,10 @@
let
nmdSrc = pkgs.fetchFromGitLab {
name = "nmd";
owner = "rycee";
repo = "nmd";
rev = "2398aa79ab12aa7aba14bc3b08a6efd38ebabdc5";
sha256 = "0yxb48afvccn8vvpkykzcr4q1rgv8jsijqncia7a5ffzshcrwrnh";
nmdSrc = fetchTarball {
url =
"https://git.sr.ht/~rycee/nmd/archive/abb15317ebd17e5a0a7dd105e2ce52f2700185a8.tar.gz";
sha256 = "0zzrbjxf15hada279irif7s3sb8vs95jn4y4f8694as0j739gd1m";
};
nmd = import nmdSrc { inherit lib pkgs; };
@@ -26,6 +24,8 @@ let
}];
};
dontCheckDefinitions = { _module.check = false; };
buildModulesDocs = args:
nmd.buildModulesDocs ({
moduleRootPaths = [ ./.. ];
@@ -43,21 +43,7 @@ let
};
nixosModuleDocs = buildModulesDocs {
modules = let
nixosModule = module: pkgs.path + "/nixos/modules" + module;
mockedNixos = with lib; {
options = {
environment.pathsToLink = mkSinkUndeclaredOptions { };
systemd.services = mkSinkUndeclaredOptions { };
users.users = mkSinkUndeclaredOptions { };
};
};
in [
../nixos/default.nix
mockedNixos
(nixosModule "/misc/assertions.nix")
scrubbedPkgsModule
];
modules = [ ../nixos scrubbedPkgsModule dontCheckDefinitions ];
docBook = {
id = "nixos-options";
optionIdPrefix = "nixos-opt";
@@ -65,22 +51,7 @@ let
};
nixDarwinModuleDocs = buildModulesDocs {
modules = let
nixosModule = module: pkgs.path + "/nixos/modules" + module;
mockedNixDarwin = with lib; {
options = {
environment.pathsToLink = mkSinkUndeclaredOptions { };
system.activationScripts.postActivation.text =
mkSinkUndeclaredOptions { };
users.users = mkSinkUndeclaredOptions { };
};
};
in [
../nix-darwin/default.nix
mockedNixDarwin
(nixosModule "/misc/assertions.nix")
scrubbedPkgsModule
];
modules = [ ../nix-darwin scrubbedPkgsModule dontCheckDefinitions ];
docBook = {
id = "nix-darwin-options";
optionIdPrefix = "nix-darwin-opt";
@@ -89,6 +60,7 @@ let
docs = nmd.buildDocBookDocs {
pathName = "home-manager";
projectName = "Home Manager";
modulesDocs = [ hmModulesDocs nixDarwinModuleDocs nixosModuleDocs ];
documentsDirectory = ./.;
documentType = "book";
@@ -117,4 +89,14 @@ in {
manPages = docs.manPages;
manual = { inherit (docs) html htmlOpenTool; };
# Unstable, mainly for CI.
jsonModuleMaintainers = pkgs.writeText "hm-module-maintainers.json" (let
result = lib.evalModules {
modules = import ../modules/modules.nix {
inherit lib pkgs;
check = false;
} ++ [ scrubbedPkgsModule ];
};
in builtins.toJSON result.config.meta.maintainers);
}

View File

@@ -40,16 +40,26 @@ error: build of /nix/store/b37x3s7pzxbasfqhaca5dqbf3pjjw0ip-user-environment.
The solution is typically to uninstall the package from the environment using `nix-env --uninstall` and reattempt the Home Manager generation switch.
=== Why are the session variables not set?
You could also opt to unistall _all_ of the packages from your profile with `nix-env --uninstall '*'`.
Home Manager is only able to set session variables automatically if it manages your Bash or Z shell configuration. If you don't want to let Home Manager manage your shell then you will have to manually source the `~/.nix-profile/etc/profile.d/hm-session-vars.sh` file in an appropriate way. In Bash and Z shell this can be done by adding
=== Why are the session variables not set?
:foreign-env: https://github.com/oh-my-fish/plugin-foreign-env
Home Manager is only able to set session variables automatically if it manages your Bash, Z shell, or fish shell configuration. To enable such management you use <<opt-programs.bash.enable>>, <<opt-programs.zsh.enable>>, or <<opt-programs.fish.enable>>.
If you don't want to let Home Manager manage your shell then you will have to manually source the `~/.nix-profile/etc/profile.d/hm-session-vars.sh` file in an appropriate way. In Bash and Z shell this can be done by adding
[source,bash]
----
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
----
to your `.profile` and `.zshrc` files, respectively. The `hm-session-vars.sh` file should work in most Bourne-like shells.
to your `.profile` and `.zshrc` files, respectively. The `hm-session-vars.sh` file should work in most Bourne-like shells. For fish shell, it is possible to source it using {foreign-env}[the foreign-env plugin]
[source,bash]
----
fenv source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh" > /dev/null
----
=== How to set up a configuration for multiple users/machines?
:post-your-homenix: https://www.reddit.com/r/NixOS/comments/9bb9h9/post_your_homemanager_homenix_file/
@@ -62,7 +72,10 @@ For example, if you have two machines, called "kronos" and "rhea" on which you w
- `rhea-jane.nix`, and
- `common.nix`
in your repository. On the kronos and rhea machines you can then make `~jane/.config/nixpkgs/home.nix` be a symbolic link to the corresponding file in your configuration repository.
in your repository.
On the kronos and rhea machines you can then make
`~jane/.config/home-manager/home.nix`
be a symbolic link to the corresponding file in your configuration repository.
The `kronos-jane.nix` and `rhea-jane.nix` files follow the format
@@ -81,18 +94,26 @@ 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]
services.dbus.packages = with pkgs; [ gnome.dconf ];
programs.dconf.enable = true;
to your system configuration.
@@ -125,8 +146,8 @@ You can add the `nixpkgs-unstable` channel by running
[source,console]
----
# nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs-unstable
# nix-channel --update
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs-unstable
$ nix-channel --update
----
Note, the package will not be affected by any package overrides, overlays, etc.

View File

@@ -2,13 +2,14 @@
== Installing Home Manager
:nix-darwin: https://github.com/LnL7/nix-darwin/
:nixos-wiki-flakes: https://nixos.wiki/wiki/Flakes
Home Manager can be used in three primary ways:
1. Using the standalone `home-manager` tool. For platforms other than
NixOS and Darwin, this is the only available choice. It is also
recommended for people on NixOS or Darwin that want to manage their
home directory independent of the system as a whole. See
home directory independently of the system as a whole. See
<<sec-install-standalone>> for instructions on how to perform this
installation.
@@ -22,11 +23,22 @@ This allows the user profiles to be built together with the system
when running `darwin-rebuild`. See <<sec-install-nix-darwin-module>>
for a description of this setup.
[NOTE]
In this chapter we describe how to install Home Manager in the
standard way using channels. If you prefer to use
{nixos-wiki-flakes}[Nix Flakes] then please see the instructions in
<<ch-nix-flakes>>.
[[sec-install-standalone]]
=== Standalone installation
:nix-allowed-users: https://nixos.org/nix/manual/#conf-allowed-users
:nixos-allowed-users: https://nixos.org/nixos/manual/options.html#opt-nix.allowedUsers
:bash: https://www.gnu.org/software/bash/
:zsh: http://zsh.sourceforge.net/
:fish: https://fishshell.com
:plugin-foreign-env: https://github.com/oh-my-fish/plugin-foreign-env
:babelfish: https://github.com/bouk/babelfish
1. Make sure you have a working Nix installation. Specifically, make
sure that your user is able to build and install Nix packages. For
@@ -37,9 +49,8 @@ must be covered by the {nix-allowed-users}[`allowed-users`] Nix
option. On NixOS you can control this option using the
{nixos-allowed-users}[`nix.allowedUsers`] system option.
2. Add the Home Manager channel that you wish to follow. If you are
following Nixpkgs master or an unstable channel then this is done by
running
2. Add the appropriate Home Manager channel. If you are following
Nixpkgs master or an unstable channel you can run
+
[source,console]
----
@@ -47,22 +58,13 @@ $ nix-channel --add https://github.com/nix-community/home-manager/archive/master
$ nix-channel --update
----
+
and if you follow a Nixpkgs version 21.05 channel, you can run
and if you follow a Nixpkgs version 23.05 channel you can run
+
[source,console]
----
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-21.05.tar.gz home-manager
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.05.tar.gz home-manager
$ nix-channel --update
----
+
On NixOS you may need to log out and back in for the channel to become
available. On non-NixOS you may have to add
+
[source,bash]
export NIX_PATH=$HOME/.nix-defexpr/channels${NIX_PATH:+:}$NIX_PATH
+
to your shell (see
https://github.com/NixOS/nix/issues/2033[nix#2033]).
3. Run the Home Manager installation command and create the first Home
Manager generation:
@@ -86,9 +88,9 @@ file in your shell configuration. Alternatively source
+
when managing home configuration together with system configuration.
+
Unfortunately, we currently only support POSIX.2-like shells such as
https://www.gnu.org/software/bash/[Bash] or
http://zsh.sourceforge.net/[Z shell].
This file can be sourced directly by POSIX.2-like shells such as
{bash}[Bash] or {zsh}[Z shell]. {fish}[Fish] users can use utilities
such as {plugin-foreign-env}[foreign-env] or {babelfish}[babelfish].
+
For example, if you use Bash then add
+
@@ -104,6 +106,9 @@ checkout of the repository then you can use the
<<opt-programs.home-manager.path>> option to specify the absolute path
to the repository.
Once installed you can see <<ch-usage>> for a more detailed
description of Home Manager and how to use it.
[[sec-install-nixos-module]]
=== NixOS module
@@ -116,21 +121,21 @@ deployed through NixOps.
To make the NixOS module available for use you must `import` it into
your system configuration. This is most conveniently done by adding a
Home Manager channel. For example, if you are following Nixpkgs master
or an unstable channel, you can run
Home Manager channel to the root user. For example, if you are
following Nixpkgs master or an unstable channel, you can run
[source,console]
----
# nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
# nix-channel --update
$ sudo nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
$ sudo nix-channel --update
----
and if you follow a Nixpkgs version 21.05 channel, you can run
and if you follow a Nixpkgs version 23.05 channel, you can run
[source,console]
----
# nix-channel --add https://github.com/nix-community/home-manager/archive/release-21.05.tar.gz home-manager
# nix-channel --update
$ sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.05.tar.gz home-manager
$ sudo nix-channel --update
----
It is then possible to add
@@ -153,9 +158,39 @@ home-manager.users.eve = { pkgs, ... }: {
};
----
and after a `nixos-rebuild switch` the user eve's environment should
and after a `sudo nixos-rebuild switch` the user eve's environment should
include a basic Bash configuration and the packages atool and httpie.
[NOTE]
====
If `nixos-rebuild switch` does not result in the environment you expect,
you can take a look at the output of the Home Manager activation script output using
[source,console]
$ systemctl status "home-manager-$USER.service"
====
If you do not plan on having Home Manager manage your shell
configuration then you must add either
[source,bash]
----
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
----
or
[source,bash]
----
. "/etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh"
----
to your shell configuration, depending on whether
<<nixos-opt-home-manager.useUserPackages>> is enabled. This file can
be sourced directly by POSIX.2-like shells such as {bash}[Bash] or
{zsh}[Z shell]. {fish}[Fish] users can use utilities such as
{plugin-foreign-env}[foreign-env] or {babelfish}[babelfish].
[NOTE]
====
By default packages will be installed to `$HOME/.nix-profile` but they
@@ -184,6 +219,9 @@ the dependency on `NIX_PATH`, which is otherwise used for importing
Nixpkgs.
====
Once installed you can see <<ch-usage>> for a more detailed
description of Home Manager and how to use it.
[[sec-install-nix-darwin-module]]
=== nix-darwin module
@@ -199,16 +237,16 @@ or an unstable channel, you can run
[source,console]
----
# nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
# nix-channel --update
$ nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
$ nix-channel --update
----
and if you follow a Nixpkgs version 21.05 channel, you can run
and if you follow a Nixpkgs version 23.05 channel, you can run
[source,console]
----
# nix-channel --add https://github.com/nix-community/home-manager/archive/release-21.05.tar.gz home-manager
# nix-channel --update
$ nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.05.tar.gz home-manager
$ nix-channel --update
----
It is then possible to add
@@ -224,6 +262,10 @@ For example, a nix-darwin configuration may include the lines
[source,nix]
----
users.users.eve = {
name = "eve";
home = "/Users/eve";
}
home-manager.users.eve = { pkgs, ... }: {
home.packages = [ pkgs.atool pkgs.httpie ];
programs.bash.enable = true;
@@ -234,10 +276,31 @@ and after a `darwin-rebuild switch` the user eve's environment
should include a basic Bash configuration and the packages atool and
httpie.
If you do not plan on having Home Manager manage your shell
configuration then you must add either
[source,bash]
----
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
----
or
[source,bash]
----
. "/etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh"
----
to your shell configuration, depending on whether
<<nix-darwin-opt-home-manager.useUserPackages>> is enabled. This file
can be sourced directly by POSIX.2-like shells such as {bash}[Bash] or
{zsh}[Z shell]. {fish}[Fish] users can use utilities such as
{plugin-foreign-env}[foreign-env] or {babelfish}[babelfish].
[NOTE]
====
By default user packages will not be ignored in favor of
`environment.systemPackages`, but they will be intalled to
`environment.systemPackages`, but they will be installed to
`/etc/profiles/per-user/$USERNAME` if
[source,nix]
@@ -261,3 +324,6 @@ This saves an extra Nixpkgs evaluation, adds consistency, and removes
the dependency on `NIX_PATH`, which is otherwise used for importing
Nixpkgs.
====
Once installed you can see <<ch-usage>> for a more detailed
description of Home Manager and how to use it.

View File

@@ -13,12 +13,12 @@
</refnamediv>
<refsection>
<title>Description</title>
<para>
The file <filename>~/.config/nixpkgs/home.nix</filename> contains the
<simpara>
The file <filename>~/.config/home-manager/home.nix</filename> contains the
declarative specification of your Home Manager configuration. The command
<command>home-manager</command> takes this file and realises the user
environment configuration specified therein.
</para>
</simpara>
</refsection>
<refsection>
<title>Options</title>

View File

@@ -17,6 +17,10 @@
build
</arg>
<arg choice="plain">
init <arg>--switch</arg> <arg><replaceable>dir</replaceable></arg>
</arg>
<arg choice="plain">
instantiate
</arg>
@@ -41,6 +45,10 @@
news
</arg>
<arg choice="plain">
option <replaceable>option.name</replaceable>
</arg>
<arg choice="plain">
packages
</arg>
@@ -98,6 +106,10 @@
</group>
</arg>
<arg>
--version
</arg>
<arg>
<group choice="req">
<arg choice="plain">
@@ -135,6 +147,10 @@
--debug
</arg>
<arg>
--impure
</arg>
<arg>
--keep-failed
</arg>
@@ -143,6 +159,18 @@
--keep-going
</arg>
<arg>
<group choice="req">
<arg choice="plain">
-L
</arg>
<arg choice="plain">
--print-build-logs
</arg>
</group>
</arg>
<arg>
--show-trace
</arg>
@@ -151,6 +179,14 @@
--(no-)substitute
</arg>
<arg>
--no-out-link
</arg>
<arg>
--refresh
</arg>
<arg>
<group choice="req">
<arg choice="plain">
@@ -168,7 +204,9 @@
<title>Description</title>
<para>
This command updates the user environment so that it corresponds to the
configuration specified in <filename>~/.config/nixpkgs/home.nix</filename> or <filename>~/.config/nixpkgs/flake.nix</filename>.
configuration specified in
<filename>$XDG_CONFIG_HOME/home-manager/home.nix</filename> or
<filename>$XDG_CONFIG_HOME/home-manager/flake.nix</filename>.
</para>
<para>
All operations using this tool expects a sub-command that indicates the
@@ -184,6 +222,35 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>init</option> [<option>--switch</option>] [<replaceable>dir</replaceable>]
</term>
<listitem>
<simpara>
Generates an initial <filename>home.nix</filename> file for the
current user. If Nix flakes are enabled, then this command also
generates a <filename>flake.nix</filename> file.
</simpara>
<simpara>
If a path <replaceable>dir</replaceable> is given then the
configuration will be generated in that directory. Otherwise, the
configuration will be generated in
<filename>~/.config/home-manager</filename>. The output directory will
be created if it does not exist.
</simpara>
<simpara>
If the <option>--switch</option> option is given, then the generated
configuration is activated.
</simpara>
<simpara>
Note, this command will not overwrite any existing files. It is
therefore safe to initialize a configuration, edit it, and then re-run
the <option>init</option> command with <option>--switch</option>
enabled to activate the configuration.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>instantiate</option>
@@ -250,6 +317,18 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>option <replaceable>option.name</replaceable></option>
</term>
<listitem>
<para>
Inspect the given option name in the home configuration, like <citerefentry>
<refentrytitle>nixos-option</refentrytitle>
<manvolnum>8</manvolnum> </citerefentry>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>packages</option>
@@ -302,8 +381,8 @@
</listitem>
<listitem>
<para>
optionally remove all Home Manager generations and make them
available for immediate garbage collection.
remove all Home Manager generations and make them available
for immediate garbage collection.
</para>
</listitem>
</itemizedlist>
@@ -390,7 +469,7 @@
<listitem>
<para>
Indicates the path to the Home Manager configuration file. If not given,
<filename>~/.config/nixpkgs/home.nix</filename> is used.
<filename>$XDG_CONFIG_HOME/home-manager/home.nix</filename> is used.
</para>
</listitem>
</varlistentry>
@@ -407,6 +486,16 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--version</option>
</term>
<listitem>
<para>
Prints the version number of the <command>home-manager</command> tool.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-n</option>
@@ -472,6 +561,18 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--impure</option>
</term>
<listitem>
<para>
Passed on to <citerefentry>
<refentrytitle>nix-build</refentrytitle>
<manvolnum>1</manvolnum> </citerefentry>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--keep-failed</option>
@@ -496,6 +597,22 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-L</option>
</term>
<term>
<option>--print-build-logs</option>
</term>
<listitem>
<para>
Passed on to <citerefentry>
<refentrytitle>nix build</refentrytitle>
</citerefentry>
when building from a flake.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--show-trace</option>
@@ -520,6 +637,31 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--no-out-link</option>
</term>
<listitem>
<para>
Passed on to <citerefentry>
<refentrytitle>nix-build</refentrytitle>
<manvolnum>1</manvolnum> </citerefentry>
when running <command>home-manager build</command>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--refresh</option>
</term>
<listitem>
<para>
Passed on to <citerefentry>
<refentrytitle>nix-build</refentrytitle>
<manvolnum>1</manvolnum> </citerefentry>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-v</option>
@@ -540,7 +682,7 @@
<variablelist>
<varlistentry>
<term>
<filename>~/.local/share/home-manager/news-read-ids</filename>
<filename>$XDG_DATA_HOME/home-manager/news-read-ids</filename>
</term>
<listitem>
<para>

View File

@@ -4,7 +4,7 @@
<title>Home Manager Reference Pages</title>
<info>
<author><personname>Home Manager contributors</personname></author>
<copyright><year>20172020</year><holder>Home Manager contributors</holder>
<copyright><year>20172022</year><holder>Home Manager contributors</holder>
</copyright>
</info>
<xi:include href="man-configuration.xml" />

View File

@@ -9,28 +9,33 @@
<preface>
<title>Preface</title>
<para>
This manual will eventually describes how to install, use, and extend Home
This manual will eventually describe how to install, use, and extend Home
Manager.
</para>
<para>
If you encounter problems then please reach out on the IRC channel
<link xlink:href="https://webchat.oftc.net/?channels=home-manager">#home-manager</link>
hosted by <link xlink:href="https://oftc.net/">OFTC</link>.
There is also a <link xlink:href="https://matrix.to/#/%23hm:rycee.net">Matrix room</link>,
which is bridged to the IRC channel.
If your problem is caused by a bug in Home Manager then it should
be reported on the
<link xlink:href="https://github.com/nix-community/home-manager/issues">Home Manager issue tracker</link>.
</para>
<note>
<para>
Commands prefixed with <literal>#</literal> have to be run as root, either
Commands prefixed with <literal>$ sudo</literal> have to be run as root, either
requiring to login as root user or temporarily switching to it using
<literal>sudo</literal> for example.
</para>
</note>
</preface>
<xi:include href="installation.xml" />
<xi:include href="usage.xml" />
<xi:include href="nix-flakes.xml" />
<xi:include href="writing-modules.xml" />
<xi:include href="contributing.xml" />
<xi:include href="3rd-party.xml" />
<xi:include href="faq.xml" />
<appendix xml:id="ch-options">
<title>Configuration Options</title>

228
docs/nix-flakes.adoc Normal file
View File

@@ -0,0 +1,228 @@
[[ch-nix-flakes]]
== Nix Flakes
:nixos-wiki-flakes: https://nixos.wiki/wiki/Flakes
Home Manager is compatible with {nixos-wiki-flakes}[Nix Flakes]. But
please be aware that the support it is still experimental and may
change in backwards incompatible ways.
Just like in the standard installation you can use the Home Manager
flake in three ways:
1. Using the standalone `home-manager` tool. For platforms other than
NixOS and Darwin, this is the only available choice. It is also
recommended for people on NixOS or Darwin that want to manage their
home directory independently of the system as a whole. See
<<sec-flakes-standalone>> for instructions on how to perform this
installation.
2. As a module within a NixOS system configuration. This allows the
user profiles to be built together with the system when running
`nixos-rebuild`. See <<sec-flakes-nixos-module>> for a description of
this setup.
3. As a module within a {nix-darwin}[nix-darwin] system configuration.
This allows the user profiles to be built together with the system
when running `darwin-rebuild`. See <<sec-flakes-nix-darwin-module>>
for a description of this setup.
[[sec-flakes-prerequisites]]
=== Prerequisites
* Install Nix 2.4 or later, or have it in `nix-shell`.
* Enable experimental features `nix-command` and `flakes`.
+
** When using NixOS, add the following to your `configuration.nix` and rebuild your system.
+
[source,nix]
nix = {
package = pkgs.nixFlakes;
extraOptions = ''
experimental-features = nix-command flakes
'';
};
+
** If you are not using NixOS, add the following to `nix.conf` (located at `~/.config/nix/` or `/etc/nix/nix.conf`).
+
[source,bash]
experimental-features = nix-command flakes
+
You may need to restart the Nix daemon with, for example, `sudo systemctl restart nix-daemon.service`.
+
** Alternatively, you can enable flakes on a per-command basis with the following additional flags to `nix` and `home-manager`:
+
[source,console]
----
$ 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`).
+
Unlike the channel-based setup,
`home.nix` will be evaluated when the flake is built,
so it must be present before bootstrap of Home Manager from the flake.
See <<sec-usage-configuration>> for introduction about
writing a Home Manager configuration.
[[sec-flakes-standalone]]
=== Standalone setup
To prepare an initial Home Manager configuration for your logged in user,
you can run the Home Manager `init` command directly from its flake.
For example, if you are using the unstable version of Nixpkgs or NixOS,
then to generate and activate a basic configuration run the command
[source,console]
$ nix run home-manager/master -- init --switch
For Nixpkgs or NixOS version 23.05 run
[source,console]
$ nix run home-manager/release-23.05 -- init --switch
This will generate a `flake.nix` and a `home.nix` file in
`~/.config/home-manager`, creating the directory if it does not exist.
If you omit the `--switch` option then the activation will not happen.
This is useful if you want to inspect and edit the configuration before activating it.
[source,console]
----
$ nix run home-manager/$branch -- init
$ # Edit files in ~/.config/home-manager
$ nix run home-manager/$branch -- init --switch
----
Where `$branch` is one of `master` or `release-23.05`.
After the initial activation has completed successfully then building
and activating your flake-based configuration is as simple as
[source,console]
$ home-manager switch
It is possible to override the default configuration directory, if you want.
For example,
[source,console]
----
$ nix run home-manager/$branch -- init --switch ~/hmconf
$ # And after the initial activation.
$ home-manager switch --flake ~/hmconf
----
[NOTE]
====
The flake inputs are not automatically updated by Home Manager.
You need to use the standard `nix flake update` command for that.
If you only want to update a single flake input,
then the command `nix flake lock --update-input <input>` can be used.
You can also pass flake-related options
such as `--recreate-lock-file` or `--update-input <input>`
to `home-manager` when building or switching,
and these options will be forwarded to `nix build`.
See the {nixos-wiki-flakes}[NixOS Wiki page] for details.
====
[[sec-flakes-nixos-module]]
=== NixOS module
To use Home Manager as a NixOS module,
a bare-minimum `flake.nix` would be as follows:
[source,nix]
----
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ nixpkgs, home-manager, ... }: {
nixosConfigurations = {
hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jdoe = import ./home.nix;
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
}
];
};
};
};
}
----
The Home Manager configuration is then part of the NixOS configuration
and is automatically rebuilt with the system when using the appropriate command
for the system, such as `nixos-rebuild switch --flake <flake-uri>`.
You can use the above `flake.nix` as a template in `/etc/nixos` by
[source,console]
$ nix flake new /etc/nixos -t github:nix-community/home-manager#nixos
[[sec-flakes-nix-darwin-module]]
=== nix-darwin module
The flake-based setup of the Home Manager nix-darwin module
is similar to that of NixOS. The `flake.nix` would be:
[source,nix]
----
{
description = "Darwin configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
darwin.url = "github:lnl7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ nixpkgs, home-manager, darwin, ... }: {
darwinConfigurations = {
hostname = darwin.lib.darwinSystem {
system = "x86_64-darwin";
modules = [
./configuration.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jdoe = import ./home.nix;
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
}
];
};
};
};
}
----
and it is also rebuilt with the nix-darwin generations.
The rebuild command here may be `darwin-rebuild switch --flake <flake-uri>`.
You can use the above `flake.nix` as a template in `~/.config/darwin` by
[source,console]
$ nix flake new ~/.config/darwin -t github:nix-community/home-manager#nix-darwin

View File

@@ -6,6 +6,16 @@ This section lists the release notes for stable versions of Home Manager and the
:leveloffset: 1
include::rl-2311.adoc[]
include::rl-2305.adoc[]
include::rl-2211.adoc[]
include::rl-2205.adoc[]
include::rl-2111.adoc[]
include::rl-2105.adoc[]
include::rl-2009.adoc[]

View File

@@ -8,7 +8,7 @@ The 21.05 release branch became the stable branch in May, 2021.
This release has the following notable changes:
* The <<opt-programs.broot.verbs>> option is now a list rather than an
* The `opt-programs.broot.verbs` option is now a list rather than an
attribute set. To migrate, move the keys of the attrset into the list
items' `invocation` keys. For example,
+

View File

@@ -0,0 +1,73 @@
[[sec-release-21.11]]
== Release 21.11
The 21.11 release branch became the stable branch in November, 2021.
[[sec-release-21.11-highlights]]
=== Highlights
This release has the following notable changes:
* All Home Manager modules are now loaded on all platforms. With this
change you will get a more descriptive error message if you attempt to
enable a module that is incompatible with the host platform.
+
Previously, modules that were platform specific would only be loaded
on that particular platform. For example, a module defining a
https://systemd.io/[systemd] service would only be loaded when the
host platform was Linux. This reduced evaluation times, simplified the
generated documentation, and made it impossible to accidentally use
modules that do not support the host platform.
+
While the above benefits are quite nice, avoiding module loads also
brings a few problems. For example, the
https://nix-community.github.io/home-manager/[public documentation]
will only show the options available for Linux hosts and the
documentation cannot make references to options within modules that
are unavailable on some hosts. Finally, users who wish to use the same
configuration file for different platforms cannot do so, even if the
platform incompatible options are unused.
+
Ultimately, the benefits of loading all modules won and the behavior
has now changed. For associated discussion see
https://github.com/nix-community/home-manager/issues/1906[issue #1906].
* Rofi version 1.7.0 removed many options that were used by the module and replaced them with custom themes, which are more flexible and powerful.
+
You can replicate your old configuration by moving those options to <<opt-programs.rofi.theme>>. Keep in mind that the syntax is different so you may need to do some changes.
* Taskwarrior version 2.6.0 respects XDG Specification for the config file now.
Option <<opt-programs.taskwarrior.config>> and friends now generate the config file at
`$XDG_CONFIG_HOME/task/taskrc` instead of `~/.taskrc`.
[[sec-release-21.11-state-version-changes]]
=== State Version Changes
The state version in this release includes the changes below. These
changes are only active if the `home.stateVersion` option is set to
"21.11" or later.
* The <<opt-home.keyboard>> option now defaults to `null`, meaning that Home Manager won't do any keyboard layout management. For example, `setxkbmap` won't be run in X sessions.
* The <<opt-programs.pet.settings>> option no longer place its value inside a `General` attribute.
For example,
+
[source,nix]
programs.pet.settings.editor = "nvim";
+
becomes
+
[source,nix]
programs.pet.settings.General.editor = "nvim";
* The <<opt-programs.waybar.settings>> option now allows defining modules directly under <<opt-programs.waybar.settings>>.
For example,
+
[source,nix]
programs.waybar.settings.modules."custom/my-module" = { };
+
becomes
+
[source,nix]
programs.waybar.settings."custom/my-module" = { };

View File

@@ -0,0 +1,44 @@
[[sec-release-22.05]]
== Release 22.05
The 22.05 release branch became the stable branch in May, 2022.
[[sec-release-22.05-highlights]]
=== Highlights
:hm-weblate: https://hosted.weblate.org/projects/home-manager/
This release has the following notable changes:
* The `programs.waybar.settings.modules` option was removed.
Waybar modules should now be declared directly under `programs.waybar.settings`.
* Home Manager now partially support translation of texts into different languages.
Note, the support is quite limited at the moment.
Specifically, it only applies to parts of the system written in the Bash language,
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
The state version in this release includes the changes below.
These changes are only active if the `home.stateVersion` option is set to "22.05" or later.
* The <<opt-programs.waybar.settings>> option now allows defining modules directly under <<opt-programs.waybar.settings>>.
Defining modules under `programs.waybar.settings.modules` will now be an error.
For example,
+
[source,nix]
programs.waybar.settings.modules."custom/my-module" = { };
+
becomes
+
[source,nix]
programs.waybar.settings."custom/my-module" = { };

View File

@@ -0,0 +1,113 @@
[[sec-release-22.11]]
== Release 22.11
The 22.11 release branch became the stable branch in November, 2022.
[[sec-release-22.11-highlights]]
=== Highlights
This release has the following notable changes:
* The <<opt-home.stateVersion>> option no longer has a default value.
It used to default to ``18.09'', which was the Home Manager version
that introduced the option. If your configuration does not explicitly
set this option then you need to add
+
[source,nix]
home.stateVersion = "18.09";
+
to your configuration.
* The Flake function `homeManagerConfiguration` has been simplified.
Specifically, the arguments
+
--
- `configuration`,
- `username`,
- `homeDirectory`,
- `stateVersion`,
- `extraModules`, and
- `system`
--
+
have been removed. Instead use the new `modules` argument, which
accepts a list of NixOS modules.
+
Further, the `pkgs` argument is now mandatory and should be set to
`nixpkgs.legacyPackages.${system}` where `nixpkgs` is the Nixpkgs
input of your choice.
+
For example, if your Flake currently contains
+
[source,nix]
----
homeManagerConfiguration {
configuration = import ./home.nix;
system = "x86_64-linux";
username = "jdoe";
homeDirectory = "/home/jdoe";
stateVersion = "22.05";
extraModules = [ ./some-extra-module.nix ];
}
----
+
then you can change it to
+
[source,nix]
----
homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
modules = [
./home.nix
./some-extra-module.nix
{
home = {
username = "jdoe";
homeDirectory = "/home/jdoe";
stateVersion = "22.05";
};
}
];
}
----
+
Of course, you can move the assignment of <<opt-home.username>>,
<<opt-home.homeDirectory>>, and <<opt-home.stateVersion>> to some
other file or simply place them in your `home.nix`.
* The `services.picom` module has been refactored to use structural
settings.
+
As a result `services.picom.extraOptions` has been removed in favor of
<<opt-services.picom.settings>>. Also, `services.picom.blur*` were
removed since upstream changed the blur settings to be more flexible.
You can migrate the blur settings to use
<<opt-services.picom.settings>> instead.
* The `services.compton` module has been removed. It was deprecated in
release 20.03. Use `services.picom` instead.
[[sec-release-22.11-state-version-changes]]
=== State Version Changes
The state version in this release includes the changes below.
These changes are only active if the `home.stateVersion` option is set to "22.11" or later.
* The <<opt-services.mpd.musicDirectory>> option now defaults to the
value of <<opt-xdg.userDirs.music>> if <<opt-xdg.userDirs.enable>> is
enabled. Otherwise it is undefined and must be specified in the user
configuration.
* The activation script now resets `PATH` before running. Before, the
user's `PATH` environment variable would be used in the script and
this made it possible for commands in the activation script to run
arbitrary commands accessible to the user. We now restrict the
activation script to commands that are explicitly specified.
+
There is no official way to restore the old behavior. We attempt to
make the activation script as reproducible as possible and honoring
the user's `PATH` reduces reproducibility.
+
If you need to run a command in an activation script block then refer
to the command by its absolute command path, such as
`${pkgs.hello}/bin/hello`.

View File

@@ -0,0 +1,57 @@
[[sec-release-23.05]]
== Release 23.05
The 23.05 release branch became the stable branch in May, 2023.
[[sec-release-23.05-highlights]]
=== Highlights
This release has the following notable changes:
* Firefox add-ons are now managed per-profile.
That is, if you are currently having
+
[source,nix]
programs.firefox.extensions = [ foo bar ];
+
in your configuration then you must change it to
+
[source,nix]
programs.firefox.profiles.myprofile.extensions = [ foo bar ];
* The default configuration location has been changed from
`~/.config/nixpkgs/home.nix` to `~/.config/home-manager/home.nix`.
+
Similarly, if you are using a Nix flake based setup
then the default flake file location has changed from
`~/.config/nixpkgs/flake.nix` to `~/.config/home-manager/flake.nix`.
+
The old location will continue to work but using it will trigger a warning message.
We changed the default configuration location to avoid confusion about
which files belong to Home Manager and which belong to Nixpkgs.
* The `home-manager` tool now offers an `init` command.
This command can be used to generate an initial Home Manager configuration,
and optionally also activate it.
The recommended installation method for a standalone Home Manager setup
with Nix flakes uses this new command.
The standard installation method remains the same but uses the new command internally.
See <<sec-flakes-standalone>> for more.
[[sec-release-23.05-state-version-changes]]
=== State Version Changes
The state version in this release includes the changes below.
These changes are only active if the `home.stateVersion` option is set to "23.05" or later.
* The options
+
--
- <<opt-xsession.windowManager.i3.config.window.titlebar>>
- <<opt-xsession.windowManager.i3.config.floating.titlebar>>
- <<opt-wayland.windowManager.sway.config.window.titlebar>>
- <<opt-wayland.windowManager.sway.config.floating.titlebar>>
--
+
now default to `true` which is consistent with the default values for
those options used by `i3` and `sway`.

View File

@@ -0,0 +1,25 @@
[[sec-release-23.11]]
== Release 23.11
This is the current unstable branch and the information in this section is therefore not final.
[[sec-release-23.11-highlights]]
=== Highlights
This release has the following notable changes:
* When using <<opt-programs.fish.enable>>, the setup code
for <<opt-home.sessionVariables>> is now translated
with https://github.com/bouk/babelfish[babelfish].
This should result in significantly faster shell startup times
but could theoretically break
if you have very complex bash expressions in a session variable.
Please report any issues you experience.
[[sec-release-23.11-state-version-changes]]
=== State Version Changes
The state version in this release includes the changes below.
These changes are only active if the `home.stateVersion` option is set to "23.11" or later.
* Nothing, yet.

252
docs/usage.adoc Normal file
View File

@@ -0,0 +1,252 @@
[[ch-usage]]
== Using Home Manager
Your use of Home Manager is centered around the configuration file,
which is typically found at `~/.config/home-manager/home.nix` in the standard installation
or `~/.config/home-manager/flake.nix` in a Nix flake based installation.
[NOTE]
The default configuration used to be placed in `~/.config/nixpkgs`¸
so you may see references to that elsewhere.
The old directory still works but Home Manager will print a warning message when used.
This configuration file can be _built_ and _activated_.
Building a configuration produces a directory in the Nix store that contains all files and programs that should be available in your home directory and Nix user profile, respectively. The build step also checks that the configuration is valid and it will fail with an error if you, for example, assign a value to an option that does not exist or assign a value of the wrong type. Some modules also have custom assertions that perform more detailed, module specific, checks.
Concretely, if your configuration contains
[source,nix]
programs.emacs.enable = "yes";
then building it, for example using `home-manager build`, will result in an error message saying something like
[source,console]
----
$ home-manager build
error: A definition for option `programs.emacs.enable' is not of type `boolean'. Definition values:
- In `/home/jdoe/.config/home-manager/home.nix': "yes"
(use '--show-trace' to show detailed location information)
----
The message indicates that you must provide a Boolean value for this option, that is, either `true` or `false`. The documentation of each option will state the expected type, for <<opt-programs.emacs.enable>> you will see ``Type: boolean''. You there also find information about the default value and a description of the option. You can find the complete option documentation in <<ch-options>> or directly in the terminal by running
[source,console]
man home-configuration.nix
Once a configuration is successfully built, it can be activated. The activation performs the steps necessary to make the files, programs, and services available in your user environment. The `home-manager switch` command performs a combined build and activation.
[[sec-usage-configuration]]
=== Configuration Example
A fresh install of Home Manager will generate a minimal `~/.config/home-manager/home.nix` file containing something like
[source,nix]
----
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "jdoe";
home.homeDirectory = "/home/jdoe";
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "23.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}
----
You can use this as a base for your further configurations.
[NOTE]
If you are not very familiar with the Nix language and NixOS modules then it is encouraged to start with small and simple changes. As you learn you can gradually grow the configuration with confidence.
As an example, let us expand the initial configuration file to also install the htop and fortune packages, install Emacs with a few extra packages available, and enable the user gpg-agent service.
To satisfy the above setup we should elaborate the `home.nix` file as follows:
[source,nix]
----
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "jdoe";
home.homeDirectory = "/home/jdoe";
# Packages that should be installed to the user profile.
home.packages = [ <1>
pkgs.htop
pkgs.fortune
];
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "23.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.emacs = { <2>
enable = true;
extraPackages = epkgs: [
epkgs.nix-mode
epkgs.magit
];
};
services.gpg-agent = { <3>
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
};
}
----
<1> Nixpkgs packages can be installed to the user profile using <<opt-home.packages>>.
<2> The option names of a program module typically start with `programs.<package name>`.
<3> Similarly, for a service module, the names start with `services.<package name>`. Note in some cases a package has both programs _and_ service options Emacs is such an example.
To activate this configuration you can run
[source,console]
home-manager switch
or if you are not feeling so lucky,
[source,console]
home-manager build
which will create a `result` link to a directory containing an
activation script and the generated home directory files.
[[sec-usage-rollbacks]]
=== Rollbacks
While the `home-manager` tool does not explicitly support rollbacks at the moment it is relatively easy to perform one manually. The steps to do so are
1. Run `home-manager generations` to determine which generation you wish to rollback to:
+
[source,console]
----
$ home-manager generations
2018-01-04 11:56 : id 765 -> /nix/store/kahm1rxk77mnvd2l8pfvd4jkkffk5ijk-home-manager-generation
2018-01-03 10:29 : id 764 -> /nix/store/2wsmsliqr5yynqkdyjzb1y57pr5q2lsj-home-manager-generation
2018-01-01 12:21 : id 763 -> /nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation
2017-12-29 21:03 : id 762 -> /nix/store/6c0k1r03fxckql4vgqcn9ccb616ynb94-home-manager-generation
2017-12-25 18:51 : id 761 -> /nix/store/czc5y6vi1rvnkfv83cs3rn84jarcgsgh-home-manager-generation
----
2. Copy the Nix store path of the generation you chose, e.g.,
+
----
/nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation
----
+
for generation 763.
3. Run the `activate` script inside the copied store path:
+
[source,console]
----
$ /nix/store/mv960kl9chn2lal5q8lnqdp1ygxngcd1-home-manager-generation/activate
Starting home manager activation
----
[[sec-usage-dotfiles]]
=== Keeping your ~ safe from harm
To configure programs and services Home Manager must write various things to your home directory. To prevent overwriting any existing files when switching to a new generation, Home Manager will attempt to detect collisions between existing files and generated files. If any such collision is detected the activation will terminate before changing anything on your computer.
For example, suppose you have a wonderful, painstakingly created `~/.config/git/config` and add
[source,nix]
----
{
# …
programs.git = {
enable = true;
userName = "Jane Doe";
userEmail = "jane.doe@example.org";
};
# …
}
----
to your configuration. Attempting to switch to the generation will then result in
[source,console]
----
$ home-manager switch
Activating checkLinkTargets
Existing file '/home/jdoe/.config/git/config' is in the way
Please move the above files and try again
----
[[sec-usage-graphical]]
=== Graphical services
Home Manager includes a number of services intended to run in a graphical session, for example `xscreensaver` and `dunst`. Unfortunately, such services will not be started automatically unless you let Home Manager start your X session. That is, you have something like
[source,nix]
----
{
# …
services.xserver.enable = true;
# …
}
----
in your system configuration and
[source,nix]
----
{
# …
xsession.enable = true;
xsession.windowManager.command = "…";
# …
}
----
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
----

283
docs/writing-modules.adoc Normal file
View File

@@ -0,0 +1,283 @@
[[ch-writing-modules]]
== Writing Home Manager Modules
:writing-nixos-modules: https://nixos.org/nixos/manual/index.html#sec-writing-modules
The module system in Home Manager is based entirely on the NixOS module system so we will here only highlight aspects that are specific for Home Manager. For information about the module system as such please refer to the {writing-nixos-modules}[Writing NixOS Modules] chapter of the NixOS manual.
[[sec-option-types]]
=== Option Types
:wikipedia-dag: https://en.wikipedia.org/w/index.php?title=Directed_acyclic_graph&oldid=939656095
:gvariant-description: https://docs.gtk.org/glib/struct.Variant.html#description
Overall the basic option types are the same in Home Manager as NixOS. A few Home Manager options, however, make use of custom types that are worth describing in more detail. These are the option types `dagOf` and `gvariant` that are used, for example, by <<opt-programs.ssh.matchBlocks>> and <<opt-dconf.settings>>.
[[sec-option-types-dag]]`hm.types.dagOf`::
Options of this type have attribute sets as values where each member is a node in a {wikipedia-dag}[directed acyclic graph] (DAG). This allows the attribute set entries to express dependency relations among themselves. This can, for example, be used to control the order of match blocks in a OpenSSH client configuration or the order of activation script blocks in <<opt-home.activation>>.
+
A number of functions are provided to create DAG nodes. The functions are shown below with examples using an option `foo.bar` of type `hm.types.dagOf types.int`.
+
--
[[sec-option-types-dag-entryAnywhere]]`hm.dag.entryAnywhere (value: T) : DagEntry<T>`:::
Indicates that `value` can be placed anywhere within the DAG. This is also the default for plain attribute set entries, that is
+
[source,nix]
----
foo.bar = {
a = hm.dag.entryAnywhere 0;
}
----
+
and
+
[source,nix]
----
foo.bar = {
a = 0;
}
----
+
are equivalent.
+
[[sec-option-types-dag-entryAfter]]`hm.dag.entryAfter (afters: list string) (value: T) : DagEntry<T>` :::
Indicates that `value` must be placed _after_ each of the attribute names in the given list. For example
+
[source,nix]
----
foo.bar = {
a = 0;
b = hm.dag.entryAfter [ "a" ] 1;
}
----
+
would place `b` after `a` in the graph.
+
[[sec-option-types-dag-entryBefore]]`hm.dag.entryBefore (befores: list string) (value: T) : DagEntry<T>` :::
Indicates that `value` must be placed _before_ each of the attribute names in the given list. For example
+
[source,nix]
----
foo.bar = {
b = hm.dag.entryBefore [ "a" ] 1;
a = 0;
}
----
+
would place `b` before `a` in the graph.
+
[[sec-option-types-dag-entryBetween]]`hm.dag.entryBetween (befores: list string) (afters: list string) (value: T) : DagEntry<T>` :::
Indicates that `value` must be placed _before_ the attribute names in the first list and _after_ the attribute names in the second list. For example
+
[source,nix]
----
foo.bar = {
a = 0;
c = hm.dag.entryBetween [ "b" ] [ "a" ] 2;
b = 1;
}
----
+
would place `c` before `b` and after `a` in the graph.
--
+
There are also a set of functions that generate a DAG from a list.
These are convenient when you just want to have a linear list of DAG entries,
without having to manually enter the relationship between each entry.
Each of these functions take a `tag` as argument and the DAG entries will be named `${tag}-${index}`.
[[sec-option-types-dag-entriesAnywhere]]`hm.dag.entriesAnywhere (tag: string) (values: [T]) : Dag<T>`:::
Creates a DAG with the given values with each entry labeled using the given tag. For example
+
[source,nix]
foo.bar = hm.dag.entriesAnywhere "a" [ 0 1 ];
+
is equivalent to
+
[source,nix]
----
foo.bar = {
a-0 = 0;
a-1 = hm.dag.entryAfter [ "a-0" ] 1;
}
----
+
[[sec-option-types-dag-entriesAfter]]`hm.dag.entriesAfter (tag: string) (afters: list string) (values: [T]) : Dag<T>`:::
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed are placed _after_ each of the attribute names in `afters`.
For example
+
[source,nix]
foo.bar =
{ b = 0; }
// hm.dag.entriesAfter "a" [ "b" ] [ 1 2 ];
+
is equivalent to
+
[source,nix]
----
foo.bar = {
b = 0;
a-0 = hm.dag.entryAfter [ "b" ] 1;
a-1 = hm.dag.entryAfter [ "a-0" ] 2;
}
----
+
[[sec-option-types-dag-entriesBefore]]`hm.dag.entriesBefore (tag: string) (befores: list string) (values: [T]) : Dag<T>`:::
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed _before_ each of the attribute names in `befores`.
For example
+
[source,nix]
foo.bar =
{ b = 0; }
// hm.dag.entriesBefore "a" [ "b" ] [ 1 2 ];
+
is equivalent to
+
[source,nix]
----
foo.bar = {
b = 0;
a-0 = 1;
a-1 = hm.dag.entryBetween [ "b" ] [ "a-0" ] 2;
}
----
+
[[sec-option-types-dag-entriesBetween]]`hm.dag.entriesBetween (tag: string) (befores: list string) (afters: list string) (values: [T]) : Dag<T>`:::
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed _before_ each of the attribute names in `befores`
and _after_ each of the attribute names in `afters`.
For example
+
[source,nix]
foo.bar =
{ b = 0; c = 3; }
// hm.dag.entriesBetween "a" [ "b" ] [ "c" ] [ 1 2 ];
+
is equivalent to
+
[source,nix]
----
foo.bar = {
b = 0;
c = 3;
a-0 = hm.dag.entryAfter [ "c" ] 1;
a-1 = hm.dag.entryBetween [ "b" ] [ "a-0" ] 2;
}
----
[[sec-option-types-gvariant]]`hm.types.gvariant`::
This type is useful for options representing {gvariant-description}[GVariant] values. The type accepts all primitive GVariant types as well as arrays, tuples, ``maybe'' types, and dictionaries.
+
Some Nix values are automatically coerced to matching GVariant value but the GVariant model is richer so you may need to use one of the provided constructor functions. Examples assume an option `foo.bar` of type `hm.types.gvariant`.
+
[[sec-option-types-gvariant-mkBoolean]]`hm.gvariant.mkBoolean (v: bool)`:::
Takes a Nix value `v` to a GVariant `boolean` value (GVariant format string `b`). Note, Nix booleans are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkBoolean true;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = true;
----
[[sec-option-types-gvariant-mkString]]`hm.gvariant.mkString (v: string)`:::
Takes a Nix value `v` to a GVariant `string` value (GVariant format string `s`). Note, Nix strings are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkString "a string";
----
+
is equivalent to
+
[source,nix]
----
foo.bar = "a string";
----
[[sec-option-types-gvariant-mkObjectpath]]`hm.gvariant.mkObjectpath (v: string)`:::
Takes a Nix value `v` to a GVariant `objectpath` value (GVariant format string `o`).
[[sec-option-types-gvariant-mkUchar]]`hm.gvariant.mkUchar (v: string)`:::
Takes a Nix value `v` to a GVariant `uchar` value (GVariant format string `y`).
[[sec-option-types-gvariant-mkInt16]]`hm.gvariant.mkInt16 (v: int)`:::
Takes a Nix value `v` to a GVariant `int16` value (GVariant format string `n`).
[[sec-option-types-gvariant-mkUint16]]`hm.gvariant.mkUint16 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint16` value (GVariant format string `q`).
[[sec-option-types-gvariant-mkInt32]]`hm.gvariant.mkInt32 (v: int)`:::
Takes a Nix value `v` to a GVariant `int32` value (GVariant format string `i`). Note, Nix integers are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkInt32 7;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = 7;
----
[[sec-option-types-gvariant-mkUint32]]`hm.gvariant.mkUint32 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint32` value (GVariant format string `u`).
[[sec-option-types-gvariant-mkInt64]]`hm.gvariant.mkInt64 (v: int)`:::
Takes a Nix value `v` to a GVariant `int64` value (GVariant format string `x`).
[[sec-option-types-gvariant-mkUint64]]`hm.gvariant.mkUint64 (v: int)`:::
Takes a Nix value `v` to a GVariant `uint64` value (GVariant format string `t`).
[[sec-option-types-gvariant-mkDouble]]`hm.gvariant.mkDouble (v: double)`:::
Takes a Nix value `v` to a GVariant `double` value (GVariant format string `d`). Note, Nix floats are automatically coerced using this function. That is,
+
[source,nix]
----
foo.bar = hm.gvariant.mkDouble 3.14;
----
+
is equivalent to
+
[source,nix]
----
foo.bar = 3.14;
----
+
[[sec-option-types-gvariant-mkArray]]`hm.gvariant.mkArray type elements`:::
Builds a GVariant array containing the given list of elements, where each element is a GVariant value of the given type (GVariant format string `a${type}`). The `type` value can be constructed using
+
--
- `hm.gvariant.type.string` (GVariant format string `s`)
- `hm.gvariant.type.boolean` (GVariant format string `b`)
- `hm.gvariant.type.uchar` (GVariant format string `y`)
- `hm.gvariant.type.int16` (GVariant format string `n`)
- `hm.gvariant.type.uint16` (GVariant format string `q`)
- `hm.gvariant.type.int32` (GVariant format string `i`)
- `hm.gvariant.type.uint32` (GVariant format string `u`)
- `hm.gvariant.type.int64` (GVariant format string `x`)
- `hm.gvariant.type.uint64` (GVariant format string `t`)
- `hm.gvariant.type.double` (GVariant format string `d`)
- `hm.gvariant.type.variant` (GVariant format string `v`)
- `hm.gvariant.type.arrayOf type` (GVariant format string `a${type}`)
- `hm.gvariant.type.maybeOf type` (GVariant format string `m${type}`)
- `hm.gvariant.type.tupleOf types` (GVariant format string `(${lib.concatStrings types})`)
- `hm.gvariant.type.dictionaryEntryOf [keyType valueType]` (GVariant format string `{${keyType}${valueType}}`)
--
+
where `type` and `types` are themselves a type and list of types, respectively.
+
[[sec-option-types-gvariant-mkEmptyArray]]`hm.gvariant.mkEmptyArray type`:::
An alias of <<sec-option-types-gvariant-mkArray,`hm.gvariant.mkArray type []`>>.
+
[[sec-option-types-gvariant-mkNothing]]`hm.gvariant.mkNothing type`:::
Builds a GVariant maybe value (GVariant format string `m${type}`) whose (non-existent) element is of the given type. The `type` value is constructed as described for the <<sec-option-types-gvariant-mkArray,`mkArray`>> function above.
+
[[sec-option-types-gvariant-mkJust]]`hm.gvariant.mkJust element`:::
Builds a GVariant maybe value (GVariant format string `m${element.type}`) containing the given GVariant element.
+
[[sec-option-types-gvariant-mkTuple]]`hm.gvariant.mkTuple elements`:::
Builds a GVariant tuple containing the given list of elements, where each element is a GVariant value.
+
[[sec-option-types-gvariant-mkVariant]]`hm.gvariant.mkVariant element`:::
Builds a GVariant variant (GVariant format string `v`) which contains the value of a GVariant element.
+
[[sec-option-types-gvariant-mkDictionaryEntry]]`hm.gvariant.mkDictionaryEntry [key value]`:::
Builds a GVariant dictionary entry containing the given list of elements (GVariant format string `{${key.type}${value.type}}`), where each element is a GVariant value.

27
flake.lock generated Normal file
View File

@@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1685655444,
"narHash": "sha256-6EujQNAeaUkWvpEZZcVF8qSfQrNVWFNNGbUJxv/A5a8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e635192892f5abbc2289eaac3a73cdb249abaefd",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

128
flake.nix
View File

@@ -1,46 +1,112 @@
{
description = "Home Manager for Nix";
outputs = { self, nixpkgs }:
let
# List of systems supported by home-manager binary
supportedSystems = nixpkgs.lib.platforms.unix;
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# Function to generate a set based on supported systems
forAllSystems = f:
nixpkgs.lib.genAttrs supportedSystems (system: f system);
outputs = { self, nixpkgs, ... }:
{
nixosModules = rec {
home-manager = import ./nixos;
default = home-manager;
};
# deprecated in Nix 2.8
nixosModule = self.nixosModules.default;
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in rec {
nixosModules.home-manager = import ./nixos;
nixosModule = self.nixosModules.home-manager;
darwinModules = rec {
home-manager = import ./nix-darwin;
default = home-manager;
};
# unofficial; deprecated in Nix 2.8
darwinModule = self.darwinModules.default;
darwinModules.home-manager = import ./nix-darwin;
darwinModule = self.darwinModules.home-manager;
templates = {
standalone = {
path = ./templates/standalone;
description = "Standalone setup";
};
nixos = {
path = ./templates/nixos;
description = "Home Manager as a NixOS module,";
};
nix-darwin = {
path = ./templates/nix-darwin;
description = "Home Manager as a nix-darwin module,";
};
};
packages = forAllSystems (system: {
home-manager = nixpkgsFor.${system}.callPackage ./home-manager { };
});
defaultPackage =
forAllSystems (system: self.packages.${system}.home-manager);
defaultTemplate = self.templates.standalone;
lib = {
hm = import ./modules/lib { lib = nixpkgs.lib; };
homeManagerConfiguration = { configuration, system, homeDirectory
, username, extraModules ? [ ], extraSpecialArgs ? { }
, pkgs ? builtins.getAttr system nixpkgs.outputs.legacyPackages
, check ? true, stateVersion ? "20.09" }@args:
assert nixpkgs.lib.versionAtLeast stateVersion "20.09";
hm = (import ./modules/lib/stdlib-extended.nix nixpkgs.lib).hm;
homeManagerConfiguration = { modules ? [ ], pkgs, lib ? pkgs.lib
, extraSpecialArgs ? { }, check ? true
# Deprecated:
, configuration ? null, extraModules ? null, stateVersion ? null
, username ? null, homeDirectory ? null, system ? null }@args:
let
msgForRemovedArg = ''
The 'homeManagerConfiguration' arguments
import ./modules {
inherit pkgs check extraSpecialArgs;
- 'configuration',
- 'username',
- 'homeDirectory'
- 'stateVersion',
- 'extraModules', and
- 'system'
have been removed. Instead use the arguments 'pkgs' and
'modules'. See the 22.11 release notes for more: https://nix-community.github.io/home-manager/release-notes.html#sec-release-22.11-highlights
'';
throwForRemovedArgs = v:
let
used = builtins.filter (n: (args.${n} or null) != null) [
"configuration"
"username"
"homeDirectory"
"stateVersion"
"extraModules"
"system"
];
msg = msgForRemovedArg + ''
Deprecated args passed: ''
+ builtins.concatStringsSep " " used;
in lib.throwIf (used != [ ]) msg v;
in throwForRemovedArgs (import ./modules {
inherit pkgs lib check extraSpecialArgs;
configuration = { ... }: {
imports = [ configuration ] ++ extraModules;
home = { inherit homeDirectory stateVersion username; };
imports = modules
++ [{ programs.home-manager.path = toString ./.; }];
nixpkgs = { inherit (pkgs) config overlays; };
};
};
});
};
};
} // (let
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
in {
devShells = forAllSystems (system:
let
pkgs = nixpkgs.legacyPackages.${system};
tests = import ./tests { inherit pkgs; };
in tests.run);
packages = forAllSystems (system:
let
pkgs = nixpkgs.legacyPackages.${system};
docs = import ./docs { inherit pkgs; };
hmPkg = pkgs.callPackage ./home-manager { path = toString ./.; };
in {
default = hmPkg;
home-manager = hmPkg;
docs-html = docs.manual.html;
docs-json = docs.options.json;
docs-manpages = docs.manPages;
});
defaultPackage = forAllSystems (system: self.packages.${system}.default);
});
}

29
format
View File

@@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/05f0934825c2a0750d4888c4735f9420c906b388.tar.gz -i bash -p findutils nixfmt
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/6616de389ed55fba6eeba60377fc04732d5a207c.tar.gz -i bash -p findutils nixfmt
CHECK_ARG=
@@ -12,39 +12,16 @@ case $1 in
;;
esac
# The first block of excludes are files where nixfmt does a poor job,
# IMHO. The second block of excludes are files touched by open pull
# requests and we want to avoid merge conflicts.
# The excludes are for files touched by open pull requests and we want
# to avoid merge conflicts.
find . -name '*.nix' \
! -path ./modules/programs/irssi.nix \
\
! -path ./home-manager/home-manager.nix \
! -path ./modules/default.nix \
! -path ./modules/files.nix \
! -path ./modules/home-environment.nix \
! -path ./modules/lib/default.nix \
! -path ./modules/lib/file-type.nix \
! -path ./modules/manual.nix \
! -path ./modules/misc/news.nix \
! -path ./modules/misc/nixpkgs.nix \
! -path ./modules/misc/xdg.nix \
! -path ./modules/modules.nix \
! -path ./modules/programs/bash.nix \
! -path ./modules/programs/firefox.nix \
! -path ./modules/programs/gpg.nix \
! -path ./modules/programs/ssh.nix \
! -path ./modules/programs/tmux.nix \
! -path ./modules/programs/zsh.nix \
! -path ./modules/services/gpg-agent.nix \
! -path ./modules/services/mpd.nix \
! -path ./modules/services/sxhkd.nix \
! -path ./modules/systemd.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 \
! -path ./tests/modules/programs/zsh/session-variables.nix \
! -path ./tests/modules/services/sxhkd/service.nix \
! -path ./tests/modules/systemd/services.nix \
! -path ./tests/modules/systemd/session-variables.nix \
-exec nixfmt $CHECK_ARG {} +

View File

@@ -62,6 +62,7 @@
# generations
# help
# news
# option
# packages
# remove-generations
# switch
@@ -86,6 +87,7 @@
#
# help
# edit
# option
# build
# switch
# generations
@@ -131,6 +133,9 @@
#
# edit Open the home configuration in $EDITOR
#
# option OPTION.NAME
# Inspect configuration option named OPTION.NAME.
#
# build Build configuration into result directory
#
# switch Build and activate configuration
@@ -271,22 +276,34 @@ _home-manager_xdg-get-cache-home () {
##################################################
_hm_subcommands=( "help" "edit" "option" "build" "init" "instantiate" "switch" "generations" "remove-generations" "expire-generations" "packages" "news" "uninstall" )
declare -ra _hm_subcommands
# Finds the active sub-command, if any.
_home-manager_subcommand() {
local subcommand='' i=
for ((i = 1; i < ${#COMP_WORDS[@]}; i++)); do
local word="${COMP_WORDS[i]}"
if [[ " ${_hm_subcommands[*]} " == *" ${word} "* ]]; then
subcommand="$word"
break
fi
done
echo "$subcommand"
}
# shellcheck disable=SC2207
_home-manager_completions ()
{
#--------------------------#
local Subcommands
Subcommands=( "help" "edit" "build" "instantiate" "switch" "generations" "remove-generations" "expire-generations" "packages" "news" "uninstall" )
# ^ « home-manager »'s subcommands.
#--------------------------#
local Options
Options=( "-f" "--file" "-b" "-A" "-I" "-h" "--help" "-n" "--dry-run" "-v" "--verbose" \
"--cores" "--debug" "--keep-failed" "--keep-going" "-j" "--max-jobs" "--no-substitute" "--show-trace" "--substitute")
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" \
"-L" "--print-build-logs" \
"--show-trace" "--substitute" "--builders" "--version" \
"--update-input" "--override-input" "--experimental-features" \
"--extra-experimental-features" "--refresh")
# ^ « home-manager »'s options.
@@ -312,39 +329,53 @@ _home-manager_completions ()
# PreviousWord="-f"
# CurrentWord="./"
local CurrentCommand
CurrentCommand="$(_home-manager_subcommand)"
#--------------------------#
COMPREPLY=()
case "$PreviousWord" in
"-f"|"--file")
COMPREPLY+=( $( compgen -A file -- "$CurrentWord") )
;;
"-I")
case "$CurrentCommand" in
"init")
COMPREPLY+=( $( compgen -W "--switch" -- "$CurrentWord" ) )
COMPREPLY+=( $( compgen -A directory -- "$CurrentWord") )
;;
"-A")
# shellcheck disable=SC2119
COMPREPLY+=( $( compgen -W "$(_home-manager_list-nix-attributes)" -- "$CurrentWord") )
;;
"remove-generations")
COMPREPLY+=( $( compgen -W "$(_home-manager_list-generation-identifiers)" -- "$CurrentWord" ) )
;;
*)
case "$PreviousWord" in
COMPREPLY+=( $( compgen -W "${Subcommands[*]}" -- "$CurrentWord" ) )
COMPREPLY+=( $( compgen -W "${Options[*]}" -- "$CurrentWord" ) )
"-f"|"--file")
COMPREPLY+=( $( compgen -A file -- "$CurrentWord") )
;;
"-I")
COMPREPLY+=( $( compgen -A directory -- "$CurrentWord") )
;;
"-A")
# shellcheck disable=SC2119
COMPREPLY+=( $( compgen -W "$(_home-manager_list-nix-attributes)" -- "$CurrentWord") )
;;
*)
if [[ ! $CurrentCommand ]]; then
COMPREPLY+=( $( compgen -W "${_hm_subcommands[*]}" -- "$CurrentWord" ) )
fi
COMPREPLY+=( $( compgen -W "${Options[*]}" -- "$CurrentWord" ) )
;;
esac
;;
esac
#--------------------------#
@@ -354,4 +385,4 @@ _home-manager_completions ()
complete -F _home-manager_completions -o default home-manager
#complete -W "help edit build switch generations remove-generations expire-generations packages news" home-manager
#complete -W "help edit option build switch generations remove-generations expire-generations packages news" home-manager

View File

@@ -0,0 +1,72 @@
#!/bin/env fish
##################################################
# « home-manager » command-line fish completion
#
# © 2021 "Ariel AxionL" <i at axionl dot me>
#
# MIT License
#
##################################################
### Functions
function __home_manager_generations --description "Get all generations"
for i in (home-manager generations)
set -l split (string split " " $i)
set -l gen_id $split[5]
set -l gen_datetime $split[1..2]
set -l gen_hash (string match -r '\w{32}' $i)
echo $gen_id\t$gen_datetime $gen_hash
end
end
### SubCommands
complete -c home-manager -n "__fish_use_subcommand" -f -a "help" -d "Print home-manager help"
complete -c home-manager -n "__fish_use_subcommand" -f -a "edit" -d "Open the home configuration in $EDITOR"
complete -c home-manager -n "__fish_use_subcommand" -f -a "option" -d "Inspect configuration option"
complete -c home-manager -n "__fish_use_subcommand" -f -a "build" -d "Build configuration into result directory"
complete -c home-manager -n "__fish_use_subcommand" -f -a "instantiate" -d "Instantiate the configuration and print the resulting derivation"
complete -c home-manager -n "__fish_use_subcommand" -f -a "switch" -d "Build and activate configuration"
complete -c home-manager -n "__fish_use_subcommand" -f -a "generations" -d "List all home environment generations"
complete -c home-manager -n "__fish_use_subcommand" -f -a "packages" -d "List all packages installed in home-manager-path"
complete -c home-manager -n "__fish_use_subcommand" -f -a "news" -d "Show news entries in a pager"
complete -c home-manager -n "__fish_use_subcommand" -f -a "uninstall" -d "Remove Home Manager"
complete -c home-manager -n "__fish_use_subcommand" -x -a "remove-generations" -d "Remove indicated generations"
complete -c home-manager -n "__fish_seen_subcommand_from remove-generations" -f -ka '(__home_manager_generations)'
complete -c home-manager -n "__fish_use_subcommand" -x -a "expire-generations" -d "Remove generations older than TIMESTAMP"
### Options
complete -c home-manager -F -s f -l "file" -d "The home configuration file"
complete -c home-manager -x -s A -d "Select an expression in the configuration file"
complete -c home-manager -F -s I -d "Add a path to the Nix expression search path"
complete -c home-manager -F -l "flake" -d "Use Home Manager configuration at specified flake-uri"
complete -c home-manager -F -s b -d "Move existing files to new path rather than fail"
complete -c home-manager -f -s v -l "verbose" -d "Verbose output"
complete -c home-manager -f -s n -l "dry-run" -d "Do a dry run, only prints what actions would be taken"
complete -c home-manager -f -s h -l "help" -d "Print this help"
complete -c home-manager -f -s h -l "version" -d "Print the Home Manager version"
complete -c home-manager -x -l "arg" -d "Override inputs passed to home-manager.nix"
complete -c home-manager -x -l "argstr" -d "Like --arg but the value is a string"
complete -c home-manager -x -l "cores" -d "Threads per job (e.g. -j argument to make)"
complete -c home-manager -x -l "debug"
complete -c home-manager -x -l "impure"
complete -c home-manager -f -l "keep-failed" -d "Keep temporary directory used by failed builds"
complete -c home-manager -f -l "keep-going" -d "Keep going in case of failed builds"
complete -c home-manager -x -s j -l "max-jobs" -d "Max number of build jobs in parallel"
complete -c home-manager -x -l "option" -d "Set Nix configuration option"
complete -c home-manager -x -l "builders" -d "Remote builders"
complete -c home-manager -f -s L -l "print-build-logs" -d "Print full build logs on standard error"
complete -c home-manager -f -l "show-trace" -d "Print stack trace of evaluation errors"
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"
complete -c home-manager -f -l "refresh" -d "Consider all previously downloaded files out-of-date"

View File

@@ -8,15 +8,23 @@ _arguments \
'-b[backup files]:EXT:()' \
'--cores[cores]:NUM:()' \
'--debug[debug]' \
'--impure[impure]' \
'--keep-failed[keep failed]' \
'--keep-going[keep going]' \
'--version[version]' \
'(-h --help)'{--help,-h}'[help]' \
'(-v --verbose)'{--verbose,-v}'[verbose]' \
'(-n --dry-run)'{--dry-run,-n}'[dry run]' \
'(-f --file)'{--file,-f}'[configuration file]:FILE:_files' \
'(-j --max-jobs)'{--max-jobs,-j}'[max jobs]:NUM:()' \
'--option[option]:NAME VALUE:()' \
'--builders[builders]:SPEC:()' \
'(-L --print-build-logs)'{--print-build-logs,-L}'[print build logs]' \
'--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
@@ -25,7 +33,9 @@ case "$state" in
_values 'command' \
'help[help]' \
'edit[edit]' \
'option[inspect option]' \
'build[build]' \
'init[init]' \
'switch[switch]' \
'generations[list generations]' \
'remove-generations[remove generations]' \
@@ -44,13 +54,26 @@ case "$state" in
_arguments \
'--cores[cores]:NUM:()' \
'--debug[debug]' \
'--impure[impure]' \
'--keep-failed[keep failed]' \
'--keep-going[keep going]' \
'--max-jobs[max jobs]:NUM:()' \
'--no-out-link[no out link]' \
'--no-substitute[no substitute]' \
'--option[option]:NAME VALUE:()' \
'--show-trace[show trace]' \
'--substitute[substitute]'
'--substitute[substitute]' \
'--builders[builders]:SPEC:()' \
'--refresh[refresh]' \
'--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:()'
;;
init)
_arguments \
'--switch[switch]' \
':PATH:_files -/'
;;
esac
esac

View File

@@ -1,4 +1,7 @@
{ runCommand, lib, bash, coreutils, findutils, gnused, less
{ runCommand, lib, bash, callPackage, coreutils, findutils, gettext, gnused
, less, ncurses, unixtools
# used for pkgs.path for nixos-option
, pkgs
# Extra path to Home Manager. If set then this path will be tried
# before `$HOME/.config/nixpkgs/home-manager` and
@@ -9,10 +12,14 @@ let
pathStr = if path == null then "" else path;
nixos-option = pkgs.nixos-option or (callPackage
(pkgs.path + "/nixos/modules/installer/tools/nixos-option") { });
in runCommand "home-manager" {
preferLocalBuild = true;
allowSubstitutes = false;
nativeBuildInputs = [ gettext ];
meta = with lib; {
mainProgram = "home-manager";
description = "A user environment configurator";
maintainers = [ maintainers.rycee ];
platforms = platforms.unix;
@@ -23,14 +30,36 @@ in runCommand "home-manager" {
substituteInPlace $out/bin/home-manager \
--subst-var-by bash "${bash}" \
--subst-var-by coreutils "${coreutils}" \
--subst-var-by findutils "${findutils}" \
--subst-var-by gnused "${gnused}" \
--subst-var-by less "${less}" \
--subst-var-by HOME_MANAGER_PATH '${pathStr}'
--subst-var-by DEP_PATH "${
lib.makeBinPath [
coreutils
findutils
gettext
gnused
less
ncurses
nixos-option
unixtools.hostname
]
}" \
--subst-var-by HOME_MANAGER_LIB '${../lib/bash/home-manager.sh}' \
--subst-var-by HOME_MANAGER_PATH '${pathStr}' \
--subst-var-by OUT "$out"
install -D -m755 ${./completion.bash} \
$out/share/bash-completion/completions/home-manager
install -D -m755 ${./completion.zsh} \
$out/share/zsh/site-functions/_home-manager
install -D -m755 ${./completion.fish} \
$out/share/fish/vendor_completions.d/home-manager.fish
install -D -m755 ${../lib/bash/home-manager.sh} \
"$out/share/bash/home-manager.sh"
for path in ${./po}/*.po; do
lang="''${path##*/}"
lang="''${lang%%.*}"
mkdir -p "$out/share/locale/$lang/LC_MESSAGES"
msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$path"
done
''

View File

@@ -1,13 +1,31 @@
#!@bash@/bin/bash
# Prepare to use tools from Nixpkgs.
PATH=@coreutils@/bin:@findutils@/bin:@gnused@/bin:@less@/bin${PATH:+:}$PATH
PATH=@DEP_PATH@${PATH:+:}$PATH
set -euo pipefail
function errorEcho() {
# shellcheck disable=2048,2086
echo $* >&2
export TEXTDOMAIN=home-manager
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 $HOME/.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 --uninstall"
fi
}
function setVerboseAndDryRun() {
@@ -32,34 +50,57 @@ function setWorkDir() {
fi
}
# Checks whether the 'flakes' and 'nix-command' Nix options are enabled.
function hasFlakeSupport() {
type -p nix > /dev/null \
&& nix show-config 2> /dev/null \
| grep experimental-features \
| grep flakes \
| grep -q nix-command
}
# Attempts to set the HOME_MANAGER_CONFIG global variable.
#
# If no configuration file can be found then this function will print
# an error message and exit with an error code.
function setConfigFile() {
if [[ -v HOME_MANAGER_CONFIG ]] ; then
if [[ ! -e "$HOME_MANAGER_CONFIG" ]] ; then
errorEcho "No configuration file found at $HOME_MANAGER_CONFIG"
if [[ -e "$HOME_MANAGER_CONFIG" ]] ; then
HOME_MANAGER_CONFIG="$(realpath "$HOME_MANAGER_CONFIG")"
else
_i 'No configuration file found at %s' \
"$HOME_MANAGER_CONFIG" >&2
exit 1
fi
elif [[ ! -v HOME_MANAGER_CONFIG ]]; then
local configHome="${XDG_CONFIG_HOME:-$HOME/.config}"
local hmConfigHome="$configHome/home-manager"
local nixpkgsConfigHome="$configHome/nixpkgs"
local defaultConfFile="$hmConfigHome/home.nix"
local configFile
HOME_MANAGER_CONFIG="$(realpath "$HOME_MANAGER_CONFIG")"
return
fi
local defaultConfFile="${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix"
local confFile
for confFile in "$defaultConfFile" \
"$HOME/.nixpkgs/home.nix" ; do
if [[ -e "$confFile" ]] ; then
HOME_MANAGER_CONFIG="$(realpath "$confFile")"
return
if [[ -e "$defaultConfFile" ]]; then
configFile="$defaultConfFile"
elif [[ -e "$nixpkgsConfigHome/home.nix" ]]; then
configFile="$nixpkgsConfigHome/home.nix"
# translators: The first '%s' specifier will be replaced by either
# 'home.nix' or 'flake.nix'.
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
'home.nix' "$nixpkgsConfigHome" "$hmConfigHome" >&2
elif [[ -e "$HOME/.nixpkgs/home.nix" ]]; then
configFile="$HOME/.nixpkgs/home.nix"
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
'home.nix' "$HOME/.nixpkgs" "$hmConfigHome" >&2
fi
done
errorEcho "No configuration file found." \
"Please create one at $defaultConfFile"
exit 1
if [[ -v configFile ]]; then
HOME_MANAGER_CONFIG="$(realpath "$configFile")"
else
_i 'No configuration file found. Please create one at %s' \
"$defaultConfFile" >&2
exit 1
fi
fi
}
function setHomeManagerNixPath() {
@@ -68,16 +109,55 @@ function setHomeManagerNixPath() {
"${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home-manager" \
"$HOME/.nixpkgs/home-manager" ; do
if [[ -e "$path" || "$path" =~ ^https?:// ]] ; then
export NIX_PATH="home-manager=$path${NIX_PATH:+:}$NIX_PATH"
EXTRA_NIX_PATH+=("home-manager=$path")
return
fi
done
}
# Sets some useful Home Manager related paths as global read-only variables.
function setHomeManagerPathVariables() {
declare -r globalNixStateDir="${NIX_STATE_DIR:-/nix/var/nix}"
declare -r globalProfilesDir="$globalNixStateDir/profiles/per-user/$USER"
declare -r globalGcrootsDir="$globalNixStateDir/gcroots/per-user/$USER"
declare -r stateHome="${XDG_STATE_HOME:-$HOME/.local/state}"
declare -r userNixStateDir="$stateHome/nix"
declare -gr HM_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/home-manager"
declare -gr HM_STATE_DIR="$stateHome/home-manager"
declare -gr HM_GCROOT_LEGACY_PATH="$globalGcrootsDir/current-home"
if [[ -d $userNixStateDir/profiles ]]; then
declare -gr HM_PROFILE_DIR="$userNixStateDir/profiles"
elif [[ -d $globalProfilesDir ]]; then
declare -gr HM_PROFILE_DIR="$globalProfilesDir"
else
_iError 'Could not find suitable profile directory, tried %s and %s' \
"$HM_STATE_DIR/profiles" "$globalProfilesDir" >&2
exit 1
fi
}
function setFlakeAttribute() {
local configFlake="${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/flake.nix"
if [[ -z $FLAKE_ARG && ! -v HOME_MANAGER_CONFIG && -e "$configFlake" ]]; then
FLAKE_ARG="$(dirname "$(readlink -f "$configFlake")")"
if [[ -z $FLAKE_ARG && ! -v HOME_MANAGER_CONFIG ]]; then
local configHome="${XDG_CONFIG_HOME:-$HOME/.config}"
local hmConfigHome="$configHome/home-manager"
local nixpkgsConfigHome="$configHome/nixpkgs"
local configFlake
if [[ -e "$hmConfigHome/flake.nix" ]]; then
configFlake="$hmConfigHome/flake.nix"
elif [[ -e "$nixpkgsConfigHome/flake.nix" ]]; then
configFlake="$nixpkgsConfigHome/flake.nix"
_iWarn $'Keeping your Home Manager %s in %s is deprecated,\nplease move it to %s' \
'flake.nix' "$nixpkgsConfigHome" "$hmConfigHome" >&2
fi
if [[ -v configFlake ]]; then
FLAKE_ARG="$(dirname "$(readlink -f "$configFlake")")"
fi
fi
if [[ -n "$FLAKE_ARG" ]]; then
@@ -85,26 +165,290 @@ function setFlakeAttribute() {
case $FLAKE_ARG in
*#*)
local name="${FLAKE_ARG#*#}"
;;
;;
*)
local name="$USER@$(hostname)"
if [ "$(nix eval "$flake#homeConfigurations" --apply "x: x ? \"$name\"")" = "false" ]; then
name="$USER"
fi
;;
local name="$USER"
# Check both long and short hostnames; long first to preserve
# pre-existing behaviour in case both happen to be defined.
for n in "$USER@$(hostname)" "$USER@$(hostname -s)"; do
if [[ "$(nix eval "$flake#homeConfigurations" --apply "x: x ? \"$n\"")" == "true" ]]; then
name="$n"
if [[ -v VERBOSE ]]; then
echo "Using flake homeConfiguration for $name"
fi
fi
done
;;
esac
export FLAKE_CONFIG_URI="$flake#homeConfigurations.\"$name\""
fi
}
function doInspectOption() {
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
# translators: Here "flake" is a noun that refers to the Nix Flakes feature.
_iError "Can't inspect options of a flake configuration"
exit 1
fi
setConfigFile
local extraArgs=("$@")
for p in "${EXTRA_NIX_PATH[@]}"; do
extraArgs=("${extraArgs[@]}" "-I" "$p")
done
if [[ -v VERBOSE ]]; then
extraArgs=("${extraArgs[@]}" "--show-trace")
fi
local HOME_MANAGER_CONFIG_NIX HOME_MANAGER_CONFIG_ATTRIBUTE_NIX
HOME_MANAGER_CONFIG_NIX=${HOME_MANAGER_CONFIG//'\'/'\\'}
HOME_MANAGER_CONFIG_NIX=${HOME_MANAGER_CONFIG_NIX//'"'/'\"'}
HOME_MANAGER_CONFIG_NIX=${HOME_MANAGER_CONFIG_NIX//$'\n'/$'\\n'}
HOME_MANAGER_CONFIG_ATTRIBUTE_NIX=${HOME_MANAGER_CONFIG_ATTRIBUTE//'\'/'\\'}
HOME_MANAGER_CONFIG_ATTRIBUTE_NIX=${HOME_MANAGER_CONFIG_ATTRIBUTE_NIX//'"'/'\"'}
HOME_MANAGER_CONFIG_ATTRIBUTE_NIX=${HOME_MANAGER_CONFIG_ATTRIBUTE_NIX//$'\n'/$'\\n'}
local modulesExpr
modulesExpr="let confPath = \"${HOME_MANAGER_CONFIG_NIX}\"; "
modulesExpr+="confAttr = \"${HOME_MANAGER_CONFIG_ATTRIBUTE_NIX}\"; in "
modulesExpr+="(import <home-manager/modules> {"
modulesExpr+=" configuration = if confAttr == \"\" then confPath else (import confPath).\${confAttr};"
modulesExpr+=" pkgs = import <nixpkgs> {}; check = true; })"
nixos-option \
--options_expr "$modulesExpr.options" \
--config_expr "$modulesExpr.config" \
"${extraArgs[@]}" \
"${PASSTHROUGH_OPTS[@]}"
}
function doInit() {
# The directory where we should place the initial configuration.
local confDir
# Whether we should immediate activate the configuration.
local switch
# Whether we should create a flake file.
local withFlake
if hasFlakeSupport; then
withFlake=1
fi
while (( $# > 0 )); do
local opt="$1"
shift
case $opt in
--no-flake)
unset withFlake
;;
--switch)
switch=1
;;
-*)
_iError "%s: unknown option '%s'" "$0" "$opt" >&2
exit 1
;;
*)
if [[ -v confDir ]]; then
_i "Run '%s --help' for usage help" "$0" >&2
exit 1
else
confDir="$opt"
fi
;;
esac
done
if [[ ! -v confDir ]]; then
confDir="${XDG_CONFIG_HOME:-$HOME/.config}/home-manager"
fi
if [[ ! -e $confDir ]]; then
mkdir -p "$confDir"
fi
if [[ ! -d $confDir ]]; then
_iError "%s: unknown option '%s'" "$0" "$opt" >&2
exit 1
fi
local confFile="$confDir/home.nix"
local flakeFile="$confDir/flake.nix"
if [[ -e $confFile ]]; then
_i 'The file %s already exists, leaving it unchanged...' "$confFile"
else
_i 'Creating %s...' "$confFile"
local nl=$'\n'
local xdgVars=""
if [[ -v XDG_CACHE_HOME && $XDG_CACHE_HOME != "$HOME/.cache" ]]; then
xdgVars="$xdgVars xdg.cacheHome = \"$XDG_CACHE_HOME\";$nl"
fi
if [[ -v XDG_CONFIG_HOME && $XDG_CONFIG_HOME != "$HOME/.config" ]]; then
xdgVars="$xdgVars xdg.configHome = \"$XDG_CONFIG_HOME\";$nl"
fi
if [[ -v XDG_DATA_HOME && $XDG_DATA_HOME != "$HOME/.local/share" ]]; then
xdgVars="$xdgVars xdg.dataHome = \"$XDG_DATA_HOME\";$nl"
fi
if [[ -v XDG_STATE_HOME && $XDG_STATE_HOME != "$HOME/.local/state" ]]; then
xdgVars="$xdgVars xdg.stateHome = \"$XDG_STATE_HOME\";$nl"
fi
mkdir -p "$confDir"
cat > "$confFile" <<EOF
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "$USER";
home.homeDirectory = "$HOME";
$xdgVars
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "23.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, \${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh
#
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
# EDITOR = "emacs";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}
EOF
fi
if [[ ! -v withFlake ]]; then
HOME_MANAGER_CONFIG="$confFile"
else
FLAKE_ARG="$confDir"
if [[ -e $flakeFile ]]; then
_i 'The file %s already exists, leaving it unchanged...' "$flakeFile"
else
_i 'Creating %s...' "$flakeFile"
local nixSystem
nixSystem=$(nix eval --expr builtins.currentSystem --raw --impure)
mkdir -p "$confDir"
cat > "$flakeFile" <<EOF
{
description = "Home Manager configuration of $USER";
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, home-manager, ... }:
let
system = "$nixSystem";
pkgs = nixpkgs.legacyPackages.\${system};
in {
homeConfigurations."$USER" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [ ./home.nix ];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
};
}
EOF
fi
fi
if [[ -v switch ]]; then
echo
_i "Creating initial Home Manager generation..."
echo
if doSwitch; then
# translators: The "%s" specifier will be replaced by a file path.
_i $'All done! The home-manager tool should now be installed and you can edit\n\n %s\n\nto configure Home Manager. Run \'man home-configuration.nix\' to\nsee all available options.' \
"$confFile"
exit 0
else
# translators: The "%s" specifier will be replaced by a URL.
_i $'Uh oh, the installation failed! Please create an issue at\n\n %s\n\nif the error seems to be the fault of Home Manager.' \
"https://github.com/nix-community/home-manager/issues"
exit 1
fi
fi
}
function doInstantiate() {
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
errorEcho "Can't instantiate a flake configuration"
# translators: Here "flake" is a noun that refers to the Nix Flakes feature.
_i "Can't instantiate a flake configuration" >&2
exit 1
fi
setConfigFile
setHomeManagerNixPath
local extraArgs=()
@@ -126,7 +470,6 @@ function doInstantiate() {
function doBuildAttr() {
setConfigFile
setHomeManagerNixPath
local extraArgs=("$@")
@@ -146,6 +489,18 @@ function doBuildAttr() {
--argstr confAttr "$HOME_MANAGER_CONFIG_ATTRIBUTE"
}
function doBuildFlake() {
local extraArgs=("$@")
if [[ -v VERBOSE ]]; then
extraArgs=("${extraArgs[@]}" "--verbose")
fi
nix build \
"${extraArgs[@]}" \
"${PASSTHROUGH_OPTS[@]}"
}
# Presents news to the user. Takes as argument the path to a "news
# info" file as generated by `buildNews`.
function presentNews() {
@@ -160,34 +515,31 @@ function presentNews() {
elif [[ "$newsDisplay" == "silent" ]]; then
return
elif [[ "$newsDisplay" == "notify" ]]; then
local msg
if [[ $newsNumUnread -eq 1 ]]; then
msg="There is an unread and relevant news item.\n"
msg+="Read it by running the command '$(basename "$0") news'."
else
msg="There are $newsNumUnread unread and relevant news items.\n"
msg+="Read them by running the command '$(basename "$0") news'."
fi
local cmd msg
cmd="$(basename "$0")"
msg="$(_ip \
$'There is %d unread and relevant news item.\nRead it by running the command "%s news".' \
$'There are %d unread and relevant news items.\nRead them by running the command "%s news".' \
"$newsNumUnread" "$newsNumUnread" "$cmd")"
# Not actually an error but here stdout is reserved for
# nix-build output.
errorEcho
errorEcho -e "$msg"
errorEcho
echo $'\n'"$msg"$'\n' >&2
if [[ -v DISPLAY ]] && type -P notify-send > /dev/null; then
notify-send "Home Manager" "$msg"
notify-send "Home Manager" "$msg" > /dev/null 2>&1 || true
fi
elif [[ "$newsDisplay" == "show" ]]; then
doShowNews --unread
else
errorEcho "Unknown 'news.display' setting '$newsDisplay'."
_i 'Unknown "news.display" setting "%s".' "$newsDisplay" >&2
fi
}
function doEdit() {
if [[ ! -v EDITOR || -z $EDITOR ]]; then
errorEcho "Please set the \$EDITOR environment variable"
# shellcheck disable=2016
_i 'Please set the $EDITOR environment variable' >&2
return 1
fi
@@ -202,54 +554,37 @@ function doEdit() {
function doBuild() {
if [[ ! -w . ]]; then
errorEcho "Cannot run build in read-only directory";
_i 'Cannot run build in read-only directory' >&2
return 1
fi
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
local exitCode=0
nix build \
"${PASSTHROUGH_OPTS[@]}" \
${DRY_RUN+--dry-run} \
"$FLAKE_CONFIG_URI.activationPackage" \
|| exitCode=1
return $exitCode
fi
setWorkDir
local newsInfo
newsInfo=$(buildNews)
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
doBuildFlake \
"$FLAKE_CONFIG_URI.activationPackage" \
${DRY_RUN+--dry-run} \
${NO_OUT_LINK+--no-link} \
${PRINT_BUILD_LOGS+--print-build-logs} \
|| return
else
doBuildAttr \
${NO_OUT_LINK+--no-out-link} \
--attr activationPackage \
|| return
local exitCode
local newsInfo
newsInfo=$(buildNews)
doBuildAttr --attr activationPackage \
&& exitCode=0 || exitCode=1
presentNews "$newsInfo"
return $exitCode
presentNews "$newsInfo"
fi
}
function doSwitch() {
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
local exitCode=0
nix run \
"${PASSTHROUGH_OPTS[@]}" \
"$FLAKE_CONFIG_URI.activationPackage" \
|| exitCode=1
return $exitCode
fi
setWorkDir
local newsInfo
newsInfo=$(buildNews)
local generation
local exitCode=0
# Build the generation and run the activate script. Note, we
# specify an output link so that it is treated as a GC root. This
@@ -257,14 +592,24 @@ function doSwitch() {
# before activation completes.
generation="$WORK_DIR/generation"
doBuildAttr \
--out-link "$generation" \
--attr activationPackage \
&& "$generation/activate" || exitCode=1
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
doBuildFlake \
"$FLAKE_CONFIG_URI.activationPackage" \
--out-link "$generation" \
${PRINT_BUILD_LOGS+--print-build-logs} \
&& "$generation/activate" || return
else
doBuildAttr \
--out-link "$generation" \
--attr activationPackage \
&& "$generation/activate" || return
presentNews "$newsInfo"
local newsInfo
newsInfo=$(buildNews)
return $exitCode
presentNews "$newsInfo"
fi
}
function doListGens() {
@@ -274,7 +619,7 @@ function doListGens() {
color="always"
fi
pushd "$NIX_STATE_DIR/profiles/per-user/$USER" > /dev/null
pushd "$HM_PROFILE_DIR" > /dev/null
# shellcheck disable=2012
ls --color=$color -gG --time-style=long-iso --sort time home-manager-*-link \
| cut -d' ' -f 4- \
@@ -287,17 +632,17 @@ function doListGens() {
function doRmGenerations() {
setVerboseAndDryRun
pushd "$NIX_STATE_DIR/profiles/per-user/$USER" > /dev/null
pushd "$HM_PROFILE_DIR" > /dev/null
for generationId in "$@"; do
local linkName="home-manager-$generationId-link"
if [[ ! -e $linkName ]]; then
errorEcho "No generation with ID $generationId"
_i 'No generation with ID %s' "$generationId" >&2
elif [[ $linkName == $(readlink home-manager) ]]; then
errorEcho "Cannot remove the current generation $generationId"
_i 'Cannot remove the current generation %s' "$generationId" >&2
else
echo Removing generation $generationId
_i 'Removing generation %s' "$generationId"
$DRY_RUN_CMD rm $VERBOSE_ARG $linkName
fi
done
@@ -305,17 +650,10 @@ function doRmGenerations() {
popd > /dev/null
}
function doRmAllGenerations() {
$DRY_RUN_CMD rm $VERBOSE_ARG \
"$NIX_STATE_DIR/profiles/per-user/$USER/home-manager"*
}
function doExpireGenerations() {
local profileDir="$NIX_STATE_DIR/profiles/per-user/$USER"
local generations
generations="$( \
find "$profileDir" -name 'home-manager-*-link' -not -newermt "$1" \
find "$HM_PROFILE_DIR" -name 'home-manager-*-link' -not -newermt "$1" \
| sed 's/^.*-\([0-9]*\)-link$/\1/' \
)"
@@ -323,17 +661,18 @@ function doExpireGenerations() {
# shellcheck disable=2086
doRmGenerations $generations
elif [[ -v VERBOSE ]]; then
echo "No generations to expire"
_i "No generations to expire"
fi
}
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
errorEcho "No home-manager packages seem to be installed."
_i 'No home-manager packages seem to be installed.' >&2
fi
}
@@ -357,17 +696,24 @@ function newsReadIdsFile() {
# put the output in the work directory to avoid the risk of an
# unfortunately timed GC removing it.
function buildNews() {
setFlakeAttribute
if [[ -v FLAKE_CONFIG_URI ]]; then
# translators: Here "flake" is a noun that refers to the Nix Flakes feature.
_iError "Sorry, this command is not yet supported in flake setup" >&2
exit 1
fi
local output
output="$WORK_DIR/news-info.sh"
doBuildAttr \
--out-link "$output" \
--no-build-output \
--quiet \
--arg check false \
--argstr newsReadIdsFile "$(newsReadIdsFile)" \
--attr newsInfo \
> /dev/null
--out-link "$output" \
--no-build-output \
--quiet \
--arg check false \
--argstr newsReadIdsFile "$(newsReadIdsFile)" \
--attr newsInfo \
> /dev/null
echo "$output"
}
@@ -390,7 +736,7 @@ function doShowNews() {
${PAGER:-less} "$newsFileUnread"
;;
*)
errorEcho "Unknown argument $1"
_i 'Unknown argument %s' "$1"
return 1
esac
@@ -404,53 +750,54 @@ function doShowNews() {
function doUninstall() {
setVerboseAndDryRun
setNixProfileCommands
echo "This will remove Home Manager from your system."
_i 'This will remove Home Manager from your system.'
if [[ -v DRY_RUN ]]; then
echo "This is a dry run, nothing will actually be uninstalled."
_i 'This is a dry run, nothing will actually be uninstalled.'
fi
local confirmation
read -r -n 1 -p "Really uninstall Home Manager? [y/n] " confirmation
read -r -n 1 -p "$(_i 'Really uninstall Home Manager?') [y/n] " confirmation
echo
# shellcheck disable=2086
case $confirmation in
y|Y)
echo "Switching to empty Home Manager configuration..."
_i "Switching to empty Home Manager configuration..."
HOME_MANAGER_CONFIG="$(mktemp --tmpdir home-manager.XXXXXXXXXX)"
echo "{ lib, ... }: { home.file = lib.mkForce {}; }" > "$HOME_MANAGER_CONFIG"
echo "{ lib, ... }: {" > "$HOME_MANAGER_CONFIG"
echo " home.file = lib.mkForce {};" >> "$HOME_MANAGER_CONFIG"
echo " home.stateVersion = \"18.09\";" >> "$HOME_MANAGER_CONFIG"
echo "}" >> "$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"
$DRY_RUN_CMD rm $VERBOSE_ARG \
"$NIX_STATE_DIR/gcroots/per-user/$USER/current-home"
if [[ -e $HM_DATA_HOME ]]; then
$DRY_RUN_CMD rm $VERBOSE_ARG -r "$HM_DATA_HOME"
fi
if [[ -e $HM_STATE_DIR ]]; then
$DRY_RUN_CMD rm $VERBOSE_ARG -r "$HM_STATE_DIR"
fi
if [[ -e $HM_PROFILE_DIR ]]; then
$DRY_RUN_CMD rm $VERBOSE_ARG "$HM_PROFILE_DIR/home-manager"*
fi
if [[ -e $HM_GCROOT_LEGACY_PATH ]]; then
$DRY_RUN_CMD rm $VERBOSE_ARG "$HM_GCROOT_LEGACY_PATH"
fi
;;
*)
echo "Yay!"
_i "Yay!"
exit 0
;;
esac
local deleteProfiles
read -r -n 1 \
-p 'Remove all Home Manager generations? [y/n] ' \
deleteProfiles
echo
case $deleteProfiles in
y|Y)
doRmAllGenerations
echo "All generations are now eligible for garbage collection."
;;
*)
echo "Leaving generations but they may still be garbage collected."
;;
esac
echo "Home Manager is uninstalled but your home.nix is left untouched."
_i "Home Manager is uninstalled but your home.nix is left untouched."
}
function doHelp() {
@@ -463,23 +810,31 @@ function doHelp() {
echo " -A ATTRIBUTE Optional attribute that selects a configuration"
echo " expression in the configuration file."
echo " -I PATH Add a path to the Nix expression search path."
echo " --flake flake-uri Use home-manager configuration at flake-uri"
echo " --flake flake-uri Use Home Manager configuration at flake-uri"
echo " Default is '~/.config/home-manager'."
echo " -b EXT Move existing files to new path rather than fail."
echo " -v Verbose output"
echo " -n Do a dry run, only prints what actions would be taken"
echo " -h Print this help"
echo " --version Print the Home Manager version"
echo
echo "Options passed on to nix-build(1)"
echo
echo " --arg(str) NAME VALUE Override inputs passed to home-manager.nix"
echo " --cores NUM"
echo " --debug"
echo " --impure"
echo " --keep-failed"
echo " --keep-going"
echo " -j, --max-jobs NUM"
echo " --option NAME VALUE"
echo " -L, --print-build-logs"
echo " --show-trace"
echo " --(no-)substitute"
echo " --no-out-link Do not create a symlink to the output path"
echo " --no-write-lock-file"
echo " --builders VALUE"
echo " --refresh Consider all previously downloaded files out-of-date"
echo
echo "Commands"
echo
@@ -487,8 +842,18 @@ function doHelp() {
echo
echo " edit Open the home configuration in \$EDITOR"
echo
echo " option OPTION.NAME"
echo " Inspect configuration option named OPTION.NAME."
echo
echo " build Build configuration into result directory"
echo
echo " init [--switch] [DIR]"
echo " Initializes a configuration in the given directory. If the directory"
echo " does not exist, then it will be created. The default directory is"
echo " '~/.config/home-manager'."
echo
echo " --switch Immediately activate the generated configuration."
echo
echo " instantiate Instantiate the configuration and print the resulting derivation"
echo
echo " switch Build and activate configuration"
@@ -511,8 +876,6 @@ function doHelp() {
echo " uninstall Remove Home Manager"
}
readonly NIX_STATE_DIR="${NIX_STATE_DIR:-/nix/var/nix}"
EXTRA_NIX_PATH=()
HOME_MANAGER_CONFIG_ATTRIBUTE=""
PASSTHROUGH_OPTS=()
@@ -520,11 +883,14 @@ COMMAND=""
COMMAND_ARGS=()
FLAKE_ARG=""
setHomeManagerNixPath
setHomeManagerPathVariables
while [[ $# -gt 0 ]]; do
opt="$1"
shift
case $opt in
build|instantiate|edit|expire-generations|generations|help|news|packages|remove-generations|switch|uninstall)
build|init|instantiate|option|edit|expire-generations|generations|help|news|packages|remove-generations|switch|uninstall)
COMMAND="$opt"
;;
-A)
@@ -547,7 +913,7 @@ while [[ $# -gt 0 ]]; do
FLAKE_ARG="$1"
shift
;;
--recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file)
--recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file|--refresh)
PASSTHROUGH_OPTS+=("$opt")
;;
--update-input)
@@ -558,6 +924,20 @@ 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
;;
-L|--print-build-logs)
PRINT_BUILD_LOGS=1
;;
-h|--help)
doHelp
exit 0
@@ -569,29 +949,29 @@ while [[ $# -gt 0 ]]; do
PASSTHROUGH_OPTS+=("$opt" "$1" "$2")
shift 2
;;
-j|--max-jobs|--cores)
-j|--max-jobs|--cores|--builders)
PASSTHROUGH_OPTS+=("$opt" "$1")
shift
;;
--debug|--keep-failed|--keep-going|--show-trace\
|--substitute|--no-substitute)
|--substitute|--no-substitute|--impure)
PASSTHROUGH_OPTS+=("$opt")
;;
-v|--verbose)
export VERBOSE=1
;;
--version)
echo 21.05
echo 23.11-pre
exit 0
;;
*)
case $COMMAND in
expire-generations|remove-generations)
init|expire-generations|remove-generations|option)
COMMAND_ARGS+=("$opt")
;;
*)
errorEcho "$0: unknown option '$opt'"
errorEcho "Run '$0 --help' for usage help"
_iError "%s: unknown option '%s'" "$0" "$opt" >&2
_i "Run '%s --help' for usage help" "$0" >&2
exit 1
;;
esac
@@ -611,6 +991,9 @@ case $COMMAND in
build)
doBuild
;;
init)
doInit "${COMMAND_ARGS[@]}"
;;
instantiate)
doInstantiate
;;
@@ -625,12 +1008,15 @@ case $COMMAND in
;;
expire-generations)
if [[ ${#COMMAND_ARGS[@]} != 1 ]]; then
errorEcho "expire-generations expects one argument, got ${#COMMAND_ARGS[@]}."
_i 'expire-generations expects one argument, got %d.' "${#COMMAND_ARGS[@]}" >&2
exit 1
else
doExpireGenerations "${COMMAND_ARGS[@]}"
fi
;;
option)
doInspectOption "${COMMAND_ARGS[@]}"
;;
packages)
doListPackages
;;
@@ -644,8 +1030,10 @@ case $COMMAND in
doHelp
;;
*)
errorEcho "Unknown command: $COMMAND"
_iError 'Unknown command: %s' "$COMMAND" >&2
doHelp >&2
exit 1
;;
esac
# vim: ft=bash

View File

@@ -1,77 +1,64 @@
{ pkgs ? import <nixpkgs> {}
, confPath
, confAttr ? null
, check ? true
, newsReadIdsFile ? null
}:
with pkgs.lib;
{ pkgs ? import <nixpkgs> { }, confPath, confAttr ? null, check ? true
, newsReadIdsFile ? null }:
let
inherit (pkgs.lib)
concatMapStringsSep fileContents filter length optionalString removeSuffix
replaceStrings splitString;
env = import ../modules {
configuration =
if confAttr == "" || confAttr == null
then confPath
else (import confPath).${confAttr};
configuration = if confAttr == "" || confAttr == null then
confPath
else
(import confPath).${confAttr};
pkgs = pkgs;
check = check;
};
newsReadIds =
if newsReadIdsFile == null
then {}
else
let
ids = splitString "\n" (fileContents newsReadIdsFile);
in
builtins.listToAttrs (map (id: { name = id; value = null; }) ids);
newsReadIds = if newsReadIdsFile == null then
{ }
else
let ids = splitString "\n" (fileContents newsReadIdsFile);
in builtins.listToAttrs (map (id: {
name = id;
value = null;
}) ids);
newsIsRead = entry: builtins.hasAttr entry.id newsReadIds;
newsFiltered =
let
pred = entry: entry.condition && ! newsIsRead entry;
in
filter pred env.newsEntries;
newsFiltered = let pred = entry: entry.condition && !newsIsRead entry;
in filter pred env.newsEntries;
newsNumUnread = length newsFiltered;
newsFileUnread = pkgs.writeText "news-unread.txt" (
concatMapStringsSep "\n\n" (entry:
newsFileUnread = pkgs.writeText "news-unread.txt" (concatMapStringsSep "\n\n"
(entry:
let
time = replaceStrings ["T"] [" "] (removeSuffix "+00:00" entry.time);
in
''
* ${time}
time =
replaceStrings [ "T" ] [ " " ] (removeSuffix "+00:00" entry.time);
in ''
* ${time}
${replaceStrings ["\n"] ["\n "] entry.message}
''
) newsFiltered
);
${replaceStrings [ "\n" ] [ "\n " ] entry.message}
'') newsFiltered);
newsFileAll = pkgs.writeText "news-all.txt" (
concatMapStringsSep "\n\n" (entry:
newsFileAll = pkgs.writeText "news-all.txt" (concatMapStringsSep "\n\n"
(entry:
let
flag = if newsIsRead entry then "read" else "unread";
time = replaceStrings ["T"] [" "] (removeSuffix "+00:00" entry.time);
in
''
* ${time} [${flag}]
time =
replaceStrings [ "T" ] [ " " ] (removeSuffix "+00:00" entry.time);
in ''
* ${time} [${flag}]
${replaceStrings ["\n"] ["\n "] entry.message}
''
) env.newsEntries
);
${replaceStrings [ "\n" ] [ "\n " ] entry.message}
'') env.newsEntries);
# File where each line corresponds to an unread news entry
# identifier. If non-empty then the file ends in "\n".
newsUnreadIdsFile = pkgs.writeText "news-unread-ids" (
let
text = concatMapStringsSep "\n" (entry: entry.id) newsFiltered;
in
text + optionalString (text != "") "\n"
);
newsUnreadIdsFile = pkgs.writeText "news-unread-ids"
(let text = concatMapStringsSep "\n" (entry: entry.id) newsFiltered;
in text + optionalString (text != "") "\n");
newsInfo = pkgs.writeText "news-info.sh" ''
local newsNumUnread=${toString newsNumUnread}
@@ -81,8 +68,7 @@ let
local newsUnreadIdsFile="${newsUnreadIdsFile}"
'';
in
{
inherit (env) activationPackage;
inherit newsInfo;
}
in {
inherit (env) activationPackage;
inherit newsInfo;
}

View File

@@ -1,84 +1,20 @@
{ home-manager, runCommand }:
runCommand "home-manager-install" {
let
hmBashLibInit = ''
export TEXTDOMAIN=home-manager
export TEXTDOMAINDIR=${home-manager}/share/locale
source ${home-manager}/share/bash/home-manager.sh
'';
in runCommand "home-manager-install" {
propagatedBuildInputs = [ home-manager ];
preferLocalBuild = true;
allowSubstitutes = false;
shellHookOnly = true;
shellHook = ''
confFile="''${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix"
if [[ ! -e $confFile ]]; then
echo
echo "Creating initial Home Manager configuration..."
nl=$'\n'
xdgVars=""
if [[ -v XDG_CACHE_HOME && $XDG_CACHE_HOME != "$HOME/.cache" ]]; then
xdgVars="$xdgVars xdg.cacheHome = \"$XDG_CACHE_HOME\";$nl"
fi
if [[ -v XDG_CONFIG_HOME && $XDG_CONFIG_HOME != "$HOME/.config" ]]; then
xdgVars="$xdgVars xdg.configHome = \"$XDG_CONFIG_HOME\";$nl"
fi
if [[ -v XDG_DATA_HOME && $XDG_DATA_HOME != "$HOME/.local/share" ]]; then
xdgVars="$xdgVars xdg.dataHome = \"$XDG_DATA_HOME\";$nl"
fi
mkdir -p "$(dirname "$confFile")"
cat > $confFile <<EOF
{ config, pkgs, ... }:
{
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "$USER";
home.homeDirectory = "$HOME";
$xdgVars
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "21.05";
}
EOF
fi
echo
echo "Creating initial Home Manager generation..."
echo
if home-manager switch; then
cat <<EOF
All done! The home-manager tool should now be installed and you
can edit
$confFile
to configure Home Manager. Run 'man home-configuration.nix' to
see all available options.
EOF
exit 0
else
cat <<EOF
Uh oh, the installation failed! Please create an issue at
https://github.com/nix-community/home-manager/issues
if the error seems to be the fault of Home Manager.
EOF
exit 1
fi
'';
shellHook = "exec ${home-manager}/bin/home-manager init --switch --no-flake";
} ''
echo This derivation is not buildable, instead run it using nix-shell.
${hmBashLibInit}
_iError 'This derivation is not buildable, please run it using nix-shell.'
exit 1
''

219
home-manager/po/ca.po Normal file
View File

@@ -0,0 +1,219 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-23 12:49+0000\n"
"Last-Translator: Leix b <abone9999@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/home-manager/cli/"
"ca/>\n"
"Language: ca\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.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "No s'ha trobat cap fitxer de configuració a %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Mantenir el teu Home Manager %s a %s està obsolet,\n"
"si us plau mou-lo a %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "No s'ha trobat cap fitxer de configuració. Si us plau, creeu un a %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"No s'ha pogut trobar un directori de perfils adequat, s'ha provat %s i %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "No s'han pogut inspeccionar les opcions de configuració de flake"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%: opció desconeguda '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Executa '%s --help' per veure l'ajuda d'ús"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "El fitxer %s ja existeix, deixant sense modificar..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Creant %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Creant generació inicial de Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Tot fet! L'eina home-manager hauria de estar instal·lada i pots editar\n"
"\n"
" %s\n"
"\n"
"per a configurar Home Manager. Executa 'man home-configuration.nix' per\n"
"a veure totes les opcions disponibles."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Uh oh, la instal·lació ha fallat! Si us plau, notifica-ho a\n"
"\n"
" %s\n"
"\n"
"si l'error sembla culpa de Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "No es pot instanciar una configuració flake"
#: home-manager/home-manager:521
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] ""
"Hi ha %d notícia rellevant no llegida.\n"
"Llegeix-la executant la comanda \"%s news\"."
msgstr[1] ""
"Hi han %d notícies rellevants no llegides.\n"
"Llegeix-les executant la comanda \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuració \"news.display\" no reconeguda \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Si us plau, defineix la variable d'entorn $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Impossible executar la compilació en un directori només lectura"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "No existeix la generació amb ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Impossible eliminar la generació actual %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Eliminant la generació %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "No s'han trobat generacions a expirar"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Cap paquet home-manager sembla estar instal·lat."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
"Ho sentim, aquesta comanda encara no està suportada en la configuració de "
"flake"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Argument desconegut %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Home Manager serà esborrat del sistema."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Això és un simulacre, res serà realment desinstal·lat."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Estàs segur que vols desinstal·lar Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Canviant a configuració buida de Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Visca!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Manager ha estat desinstal·lat però el vostre home.nix es manté intacte."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera un argument, obtinguts %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Comanda desconeguda: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Aquesta derivació no es pot construir, si us plau executa-la utilitzant nix-"
"shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Creant configuració inicial de Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Eliminar totes les generacions de Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Totes les generacions són ara candidates per a la recol·lecció de brossa."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Deixant generacions, però aquestes encara poden ser esborrades pel "
#~ "recol·lector de brossa."

213
home-manager/po/da.po Normal file
View File

@@ -0,0 +1,213 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2022-09-19 18:22+0000\n"
"Last-Translator: cafkafk <christina@cafkafk.com>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/home-manager/cli/"
"da/>\n"
"Language: da\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.14.1\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Ingen konfigurationsfiler fundet ved %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Ingen konfigurationsfiler fundet. Venligst lav en ved %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Kan ikke inspicere indstillinger af en flake konfiguration"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: ukendt indstilling '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Kør '%s --help' for brugsvejledning"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Laver initial Home Manager generation..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Alt er færdigt! Home-manager værktøjet burde nu være installeret, og du kan "
"ændre\n"
"\n"
" %s\n"
" \n"
"For at konfigurere Home Manager. Kør 'man home-configuration.nix' for at \n"
"se alle de mulige indstillinger."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Åh nej, installationen fejlede! Venligst opret en fejlrapport ved\n"
"\n"
" %s\n"
" \n"
"hvis fejlen fremstår som forskyldt af Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Kan ikke instantiere en flake konfiguration"
#: home-manager/home-manager:521
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] ""
"Der er %d ulæst og relavante nyheder.\n"
"Læs den ved at køre \"%s news\"."
msgstr[1] ""
"Der er %d ulæste og relavante nyheder.\n"
"Læs dem ved at køre \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Ubekændt \"news.display\" indstilling \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Venligst sæt $EDITOR miljøvariablen"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Kan ikke bygge i en læs-kun folder"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Ingen generation med ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Kan ikke fjerne den nuværende generation %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Fjern generation %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Ingen generationer som skal udløbes"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr ""
"Det virker ikke som om der er nogle home-manager pakker der er installeret."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Ubekendt argument %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Dette vil fjerne Home Manager fra dit system."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Dette er en tør kørsel, intet vil rent faktisk blive uinstalleret."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Virkelig uinstaller Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Skifter til tom Home Manager konfiguration..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Juhuu!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Manager bliver uinstalleret, men din home.nix bliver forladt uberørt."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations forventer et argument, fik %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Ubekendt kommando: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "Denne derivation er ikke bygbar, venligst kør den gennem nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Laver initial Home Manager konfiguration..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Fjern alle Home Manager generationer?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Alle generationer kan nu blive tjekket for overflødige filer."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Forlad generationer, men de kan stadig bliver fjernet som overflødige "
#~ "filer."

215
home-manager/po/de.po Normal file
View File

@@ -0,0 +1,215 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-05-13 06:48+0000\n"
"Last-Translator: Reiner Gerecke <me@reinergerecke.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/home-manager/cli/"
"de/>\n"
"Language: de\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.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Keine Konfigurationsdatei unter %s gefunden"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Die Aufbewahrung der Home Manager %s in %s ist veraltet,\n"
"bitte verschiebe es nach %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Keine Konfigurationsdatei gefunden. Bitte erstellen Sie eine unter %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Kein passendes Profil-Verzeichnis gefunden. Versuchte %s und %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Die Optionen einer Flake-Konfiguration können nicht inspiziert werden"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: unbekannte Option '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Führe '%s --help' aus, um Hilfe zur Verwendung zu erhalten"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Die Datei %s existiert bereits, sie bleibt unverändert..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Erstelle %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Erstelle initiale Home Manager Generation..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Alles fertig! Das Home Manager Tool sollte nun installiert sein. Sie können\n"
"\n"
" %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"
"sehen."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Ups, die Installation schlug fehl. Bitte erstellen Sie ein Issue unter\n"
"\n"
" %s\n"
"\n"
"falls der Fehler auf Home Manager zurückzuführen ist."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Kann eine Flake-Konfiguration nicht instanziieren"
#: home-manager/home-manager:521
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] ""
"Es gibt eine ungelesene und relevante Nachricht.\n"
"Lesen Sie sie, indem Sie den Befehl \"%s news\" ausführen."
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Unbekannte \"news.display\" Einstellung \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Bitte legen Sie die $EDITOR Variable fest"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Build kann nicht im schreibgeschützten Ordner ausgeführt werden"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Keine Generation mit ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Die jetzige Generation %s kann nicht entfernt werden"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Entferne Generation %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Keine ablaufenden Generationen"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Es scheint, als ob keine Home Manager Pakete installiert sind."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr "Dieser Befehl wird im Flake-Setup leider noch nicht unterstützt"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Unbekannte Argumente %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Dies wird Home Manager von Ihrem System entfernen."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Möchten Sie wirklich Home Manager deinstallieren?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Wechsle zu einer leeren Home Manager Konfiguration..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Juhu!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations erwartet ein Argument, hat aber %d erhalten."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Unbekannter Befehl: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Diese Derivation ist nicht kompilierbar. Bitte führen Sie nix-shell aus."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Erstelle initiale Home Manager Konfiguration..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Entferne alle Home Manager Generationen?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Alle Generationen kommen nun für die Garbage Collection in Frage."
#~ 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."

215
home-manager/po/es.po Normal file
View File

@@ -0,0 +1,215 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-10 22:05+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/home-manager/cli/"
"es/>\n"
"Language: es\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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Archivo de configuración no encontrado en %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Mantener tu Home Manager %s en %s está obsoleto,\n"
"por favor muévalo a %s"
#: home-manager/home-manager:99
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:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"No se ha podido encontrar un directorio de perfiles adecuado, se ha probado "
"con %s y %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
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:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: opción desconocida '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Ejecute '%s --help' para ver ayuda"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "El fichero %s ya existe, dejándolo sin modificar..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Creando %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Creando generación inicial de Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Listo! home-manager ha sido instalado y ahora puede editar\n"
"\n"
" %s\n"
"\n"
"para configurar Home Manager. Ejecute 'man home-configuration.nix' para\n"
"ver todas las opciones disponibles."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"La instalación ha fallado. Por favor notifíquelo en\n"
"\n"
" %s\n"
"\n"
"si el error parecer ser culpa de Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "No se pudo instanciar una configuración flake"
#: home-manager/home-manager:521
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] ""
"Hay %d noticia relevante no leída.\n"
"Léala ejecutando el comando \"%s news\"."
msgstr[1] ""
"Hay %d noticias relevantes no leídas.\n"
"Léalas ejecutando el comando \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuración \"news.display\" no reconocida \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Defina la variable de ambiente $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "No se puede ejecutar en un directorio de sólo lectura"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "No existe la generación con ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "No se pudo borrar la generación actual %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Borrando generación %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "No se encontraron generaciones para expirar"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "No se encontró ningún paquete home-manager instalado."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
"Lo sentimos, este comando aún no está soportado en la configuración de flake"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Argumento desconocido %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Home Manager será borrado del sistema."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Este es un simulacro, nada será realmente desinstalado."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Desinstalar Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Cambiando a configuración vacía de Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Bien!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera un argumento pero se dieron %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Comando desconocido %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "Esta derivación no se puede construir, ejecute con nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Creando configuración inicial de Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Borrar todas las generaciones de Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Ahora todas las generaciones son aptas para recolección de basura."
#~ 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."

185
home-manager/po/fa.po Normal file
View File

@@ -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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-05-28 22:49+0000\n"
"Last-Translator: Mohammad Abdolirad <m.abdolirad@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.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "هیچ فایل تنظیماتی در %s پیدا نشد"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "هیچ فایل تنظیماتی پیدا نشد. لطفا یک فایل در %s بسازید"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr ""
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr ""
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr ""
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "فایل %s از قبل وجود داشته است، بدون تغییر رها شد..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "ساختن %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
" %s\n"
"\n"
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
" %s\n"
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr ""
#: home-manager/home-manager:521
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "لطفا متغیر محیطی $EDITOR را مقدار دهی کنید"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr ""
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr ""
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "نمی‌توان نسل فعلی %s را حذف کرد"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "حذف کردن نسل %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr ""
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr ""
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr ""
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "واقعاً هوم منیجر را حذف نصب کنید؟"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr ""
#: home-manager/home-manager:795
#, fuzzy
msgid "Yay!"
msgstr "آره!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "هوم منیجر حذف نصب شد اما home.nix شما دست نخورده باقی ماند."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "دستور ناشناخته: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "ایجاد تنظیمات اولیه Home-Manager..."

179
home-manager/po/fi.po Normal file
View File

@@ -0,0 +1,179 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: fi\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"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr ""
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr ""
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr ""
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr ""
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr ""
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
" %s\n"
"\n"
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
" %s\n"
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr ""
#: home-manager/home-manager:521
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr ""
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr ""
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr ""
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr ""
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr ""
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr ""
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr ""
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr ""
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr ""
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr ""
#: home-manager/home-manager:795
msgid "Yay!"
msgstr ""
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr ""
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""

216
home-manager/po/fr.po Normal file
View File

@@ -0,0 +1,216 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-11 20:41+0000\n"
"Last-Translator: Robert Helgesson <robert@rycee.net>\n"
"Language-Team: French <https://hosted.weblate.org/projects/home-manager/cli/"
"fr/>\n"
"Language: fr\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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Aucun fichier de configuration trouvé à l'emplacement %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
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:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Impossible d'inspecter les options d'une configuration en flocons"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s : option inconnue « %s »"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Exécuter « %s --help » pour de l'aide sur l'utilisation"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Le fichier %s existe déjà, il sera laissé inchangé..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Création de la génération initiale de Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Tout est fait! Home Manager devrait désormais être installé et vous pouvez "
"éditer\n"
"\n"
" %s\n"
"\n"
"pour configurer Home Manager. Pour avoir une liste des options disponibles,\n"
"essayez 'man home-configuration.nix'."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Uh oh, l'installation n'a pas réussi! Veuillez signaler cette erreur à "
"l'adresse suivante\n"
"\n"
" %s\n"
"\n"
"si l'erreur semble être liée à Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Impossible d'instancier une configuration flake"
#: home-manager/home-manager:521
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] ""
"Il y a %d nouvel élément non lu et pertinent.\n"
"Vous pouvez le lire en exécutant la commande \"%s news\"."
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Configuration \"news.display\" iconnue \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Veuillez définir la variable d'environnement $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Impossible de lancer une compilation dans un dossier en écriture seule"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Aucune génération avec l'identifiant %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Impossible de supprimer la génération courante %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Suppression de la génération %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Aucune génération expirée"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Aucun paquet home-manager ne semble être installé."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Aucun argument %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Cela va supprimer Home Manager de votre système."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Voulez-vous vraiment désinstaller Home Manager ?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Changement vers une configuration vierge de Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Yay !"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations attend un argument, a obtenu %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Commande inconnue : %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "Cette dérivation ne peut être construite, essayez avec nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Création de la configuration initiale de Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Supprimer toutes les générations de Home Manager ?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Toutes les générations sont maintenant éligibles pour la collecte des "
#~ "ordures."
#~ 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."

View File

@@ -0,0 +1,180 @@
# 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.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Home Manager\n"
"Report-Msgid-Bugs-To: https://github.com/nix-community/home-manager/issues\n"
"POT-Creation-Date: 2023-05-27 09:08+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr ""
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr ""
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr ""
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr ""
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr ""
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
" %s\n"
"\n"
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
" %s\n"
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr ""
#: home-manager/home-manager:521
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr ""
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr ""
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr ""
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr ""
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr ""
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr ""
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr ""
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr ""
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr ""
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr ""
#: home-manager/home-manager:795
msgid "Yay!"
msgstr ""
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr ""
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""

210
home-manager/po/it.po Normal file
View File

@@ -0,0 +1,210 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-11 20:41+0000\n"
"Last-Translator: Robert Helgesson <robert@rycee.net>\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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Nessun file di configurazione trovato in %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
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:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Impossibile ispezionare le opzioni di configurazione flake"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: opzione sconosciuta '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Esegui '%s --help' per ottenere aiuto"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Il file %s è già esistente, non verrà modificato..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
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/home-manager:432
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/home-manager:437
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."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Impossibile istanziare una configurazione flake"
#: home-manager/home-manager:521
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Opzione \"news.display\" sconosciuta \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Per favore impostare la variabile d'ambient $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Impossibile eseguire la build in una cartella in sola lettura"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Nessuna generazione con ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Impossibile rimuovere la generazione corrente %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Rimuovo la generazione %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Nessuna generazione in scadenza"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Nessun pacchetto home-manager sembra essere installato."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Argomento sconosciuto: %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Questo rimuoverà Home Manger dal tuo sistema."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Vuoi davvero disinstallare Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Cambio ad una configurazione Home Manager vuota..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Urrà!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations si aspetta un solo argomento, invece di %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Comando sconosciuto: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Questa derivazione non è compilabile, prova ad eseguila usando nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Creando la configurazione iniziale di Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Rimuovere tutte le generazioni Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Tutte le generazioni sono ora pronte per essere cestinate."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "Abbandono le generazioni, ma possono essere ancora cestinate."

215
home-manager/po/ja.po Normal file
View File

@@ -0,0 +1,215 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-05-13 06:48+0000\n"
"Last-Translator: Markus Amano <markus.a.amano@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/home-manager/"
"cli/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "%s に設定ファイルが見つかりません"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Home Managerの %s の %s への保管は非推奨となりました\n"
"%s へ移動させてください"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "設定ファイルがありません。ファイルを %s に作ってください"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
"適切なプロファイル ディレクトリが見つかりませんでした。%s と %s を試しました"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "flake設定のオプションを検査できません"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: 不明なオプション '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "'%s --help' でヘルプを参照することができます"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "%s は既に存在します。変更せずに続行しています..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "%s を作成中です..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Home Managerの世代を初期化しています..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"全てが完了しました! Home-managerはインストール済みで、\n"
"\n"
" %s\n"
"\n"
"でHome Managerの設定を編集することができるはずです。利用可能なオプションを参"
"照するには\n"
"'man home-configuration.nix' を実行してください。"
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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の欠陥によって生"
"じたと考えられる場合は、\n"
"\n"
" %s\n"
"\n"
"というissueを立ててください。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "flake設定を初期化できません"
#: home-manager/home-manager:521
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] ""
"未読のお知らせが%d件あります。\n"
"\"%s news\"コマンドで確認できます。"
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "\"news.display\"に\"%s\"という設定は存在しません。"
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "$EDITOR環境変数を設定してください"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "読み込み専用ディレクトリ内ではbuild作成できません"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "ID %s を持つ世代はありません"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "現在使用中の世代 %s は削除できません"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "世代 %s を削除中です"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "期限切れで削除される世代はありません"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "home-managerパッケージがインストールされていないようです。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "不明な引数 %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "この操作によってHome Managerはシステムから削除されます。"
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "これはdry run (予行練習)で、実際にはアンインストールは行われません。"
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "本当にHome Managerをアンインストールしますか"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "空のHome Managerの設定に切り替えています..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "イェイ!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
"Home Managerはアンインストールされましたが、home.nixはそのまま残してありま"
"す。"
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
"expire-generations は一つしか引数を取らないところ、%d 個が与えられました。"
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "不明なコマンド: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "この派生はビルドできません。nix-shellを使って実行してください。"
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Home Managerの設定を初期化しています..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Home-managerの全ての世代を削除しますか"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "全ての世代がガベージコレクションの対象になりました。"
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "世代を残すようにしますが、やはりガベージコレクションで回収されるかもしれま"
#~ "せん。"

213
home-manager/po/ko.po Normal file
View File

@@ -0,0 +1,213 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-19 15:49+0000\n"
"Last-Translator: Suwon Park <sepiabrown@naver.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/home-manager/cli/"
"ko/>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "%s에서 설정 파일을 찾을 수 없음"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"홈 매니저 %s 을 %s 안에 선언하는 것은 더 이상 사용되지 않습니다.\n"
"%s로 옮겨주십시오"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "설정 파일을 찾을 수 없음. %s에 설정 파일을 생성하십시오"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "%s와 %s를 시도했지만, 적합한 프로파일 디렉토리를 찾을 수 없습니다"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "flake 설정의 옵션들을 검사할 수 없음"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: 알 수 없는 옵션 '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "도움말을 보려면 '%s --help'를 실행하십시오"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "%s 파일은 이미 존재하므로, 수정하지 않음..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "%s를 생성하는 중..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "최초의 홈 매니저 세대를 생성하는 중..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"완료! 홈 매니저 도구들이 설치 되었고 이제 \n"
"\n"
" %s\n"
"\n"
"파일을 수정해서 홈 매니저를 설정할 수 있습니다. 'man home-configuration."
"nix'를\n"
"실행해서 가능한 모든 옵션을 살펴보십시오."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"이런, 설치가 실패했습니다! 만약 에러가 홈 매니저의 문제라고 생각된다면\n"
"\n"
" %s\n"
"\n"
"위 사이트에서 이슈를 생성하십시오."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "flake 설정을 인스턴스화 할 수 없음"
#: home-manager/home-manager:521
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] ""
"읽지 않은 관련된 뉴스 항목들이 %d 개 있습니다.\n"
"\"%s news\" 명령어를 실행해 읽어보십시오."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "알 수 없는 \"news.display\"의 설정 \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "환경변수 $EDITOR를 설정하십시오"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "읽기전용 폴더에서 빌드를 실행할 수 없습니다"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "ID %s를 갖는 세대가 존재하지 않음"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "현재 세대인 %s를 삭제할 수 없음"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "%s 세대를 삭제하는 중"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "유효 기간이 지난 세대가 없음"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "홈 매니저 패키지들이 설치되지 않은 것으로 보입니다."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr "죄송합니다만, 이 명령어는 아직 flake 환경에서 지원되지 않습니다"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "알 수 없는 매개변수 %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "시스템에서 홈 매니저를 삭제할 것입니다."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "모의 실행 중으로, 아무것도 실제로 설치되지 않습니다."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "정말로 홈 매니저를 삭제할까요?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "빈 홈 매니저 설정으로 바꾸는 중..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "야호!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "홈 매니저는 삭제되지만 home.nix 파일은 남겨집니다."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
"expire-generations 명령어는 매개변수가 한 개 필요한데, %d 개가 입력되었습니"
"다."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "알 수 없는 명령어: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"이 derivation은 빌드 할 수 없습니다. nix-shell을 이용해서 실행해 주십시오."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "최초의 홈 매니저 설정을 생성하는 중..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "모든 홈 매니저 세대를 지울까요?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "이제 모든 세대가 쓰레기 수집(가비지 컬렉션)의 대상이 됩니다."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "세대들을 그대로 놔두지만 그들은 여전히 쓰레기 수집(가비지 컬렉션) 될 수 있"
#~ "습니다."

208
home-manager/po/lt.po Normal file
View File

@@ -0,0 +1,208 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-01-09 11:33+0000\n"
"Last-Translator: Kornelijus Tvarijanavičius <kornelijus@tvaria.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/home-manager/"
"cli/lt/>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > "
"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? "
"1 : 2);\n"
"X-Generator: Weblate 4.15.1-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Nerastas konfigūracijos failas %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Nerastas konfigūracijos failas. Sukurkite jį adresu %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Negalima patikrinti flake konfigūracijos pasirinkimų"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: nežinomas pasirinkimas „%s“"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Paleiskite „%s --help“, kad gautumėte naudojimosi instrukcijas"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Kuriama pradinė Home Manager generacija..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Viskas baigta! Įrankis home-manager turėtų būti įdiegtas ir dabar galite "
"redaguoti\n"
"\n"
". . . .%s\n"
"\n"
", kad konfigūruotumėte Home Manager. Paleiskite „man home-configuration."
"nix“,\n"
"jei norite pamatyti visus pasirinkimus."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
" %s\n"
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Negalima sukurti pradinės flake konfigūracijos"
#: home-manager/home-manager:521
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] ""
"Yra %d neperskaityta ir aktuali naujiena.\n"
"Perskaitykite ją paleidus komandą \"%s news\"."
msgstr[1] ""
"Yra %d neperskaitytos ir aktualios naujienos.\n"
"Perskaitykite jas paleidus komandą \"%s news\"."
msgstr[2] ""
"Yra %d neperskaitytų ir aktualių naujienų.\n"
"Perskaitykite jas paleidus komandą \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Nežinomas \"news.display\" nustatymas \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Prašome nustatyti $EDITOR aplinkos kintamąjį"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr ""
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Nėra generacijos su ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Negalima pašalinti esamos generacijos %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Pašalinama generacija %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr ""
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Nėra instaliuotų home-manager paketų."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Nežinomas argumentas %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Tai pašalins Home Manager iš jūsų sistemos."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Tai bandomasis paleidimas, niekas nebus ištrinta."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Tikrai išdiegti Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Perjungiama į tuščią Home Manager konfigūraciją..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Valio!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager yra išdiegtas, bet jūsų home.nix liko nepaliestas."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations tikisi vieno argumento, gauta %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Nežinoma komanda: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Kuriama pradinė Home Manager konfigūracija..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Pašalinti visas Home Manager generacijas?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Visos generacijos jau tinkamos šiukšlių surinkimui (garbage collection)."

209
home-manager/po/nb_NO.po Normal file
View File

@@ -0,0 +1,209 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-03-08 07:22+0000\n"
"Last-Translator: \"Kim A. Ødegaard\" <kim@dyktig.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/home-"
"manager/cli/nb_NO/>\n"
"Language: nb_NO\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.16.2-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Fant ingen oppsettsfil i %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Fant ikke noen oppsettsfil. Opprett en i %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Kan ikke inspisere alternativer for et flake-oppsett"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: ukjent alternativ «%s»"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Kjør «%s --help» for brukshjelp"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Oppretter ny Home Manager-generasjon..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Ferdig! `home-manager`-verktøyet skal nå være installert og du kan redigere\n"
"\n"
" %s\n"
"\n"
"for å konfigurere Home Manager. Kjør 'man home-configuration.nix' for å\n"
"se alle tilgjengelige innstillinger."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Oops, installasjonen feilet! Vennligst opprett en sak på\n"
"\n"
" %s\n"
"\n"
"hvis du tror feilen er forårsaket av Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Kan ikke igangsette flak-oppsett"
#: home-manager/home-manager:521
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] ""
"Det er %d ulest og relevant nyhetssak.\n"
"Les den ved å kjøre kommandoen «%s news»."
msgstr[1] ""
"Det er %d uleste og relevante nyhetssaker.\n"
"Les dem ved å kjøre kommandoen «%s news»."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Ukjent «news.display»-innstilling «%s»."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Sett «$EDITOR»-miljøvariabelen"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Kan ikke kjøre bygg i skrivebeskyttet mappe"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Ingen generering med ID-en %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Kan ikke fjerne nåværende generering %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Fjerner generering %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Ingen genereringer til utløp"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Ingen «home-manager»-pakker ser ut til å være installert."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Ukjent parameter %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Dette vil fjerne Home Manager fra systemet ditt."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Vil du avinstallere Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Bytter til tomt Home Manager-oppsett …"
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Hurra!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "«expire-generations» forventet ett argument, mottok %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Ukjent kommando: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "Denne avledningen kan ikke bygges, vennligst kjør den i nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Oppretter ny Home Manager-konfigurasjon..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Fjern alle Home Manager-genereringer?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Alle genereringer er nå satt ut til søppelhenting."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Levner genereringer, men de kan fremdeles ryddes opp av søppelinnsamleren."

214
home-manager/po/nl.po Normal file
View File

@@ -0,0 +1,214 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-10 11:48+0000\n"
"Last-Translator: Pablo Bollansee <pablo.bollansee@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/home-manager/cli/"
"nl/>\n"
"Language: nl\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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Geen configuratiebestand gevonden op %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Je Home Manager %s bestand opslaan in %s is niet langer ondersteund,\n"
"gelieve het te verplaatsen naar %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Geen configuratiebestand gevonden, maak er alstublieft een aan op %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Kan de opties van een flake configuratie niet inspecteren"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: onbekende keuze '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Voer '%s --help' in om gebruiksinfo te zien"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Het bestand %s bestaat al, het zal niet aangepast worden..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "%s aan het aanmaken..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Initiële Home Manager generatie aan het maken..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Helemaal klaar! De home-manager tool zou nu geïnstalleerd moeten zijn en je "
"kan\n"
"\n"
" %s\n"
"\n"
"aanpassen om Home Manager te configureren. Draai 'man home-configuration."
"nix' om\n"
"alle opties te zien."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 nee, de installatie is mislukt. Gelieve een ticket aan te maken in\n"
"\n"
" %s\n"
"\n"
"als de error de schuld van Home Manager lijkt te zijn."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Het is niet gelukt om de flake-configuratie te creëren"
#: home-manager/home-manager:521
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] ""
"Er is %d ongelezen and relevant nieuws artikel.\n"
"Lees het door het commando \"%s news\" uit te voeren."
msgstr[1] ""
"Er zijn %d ongelezen and relevante nieuws artikelen.\n"
"Lees ze door het commando \"%s news\" uit te voeren."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Onbekende \"new.display\" instelling \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Gelieve de $EDITOR omgevingsvariabele in te stellen"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Het is niet mogelijk om te bouwen in een read-only map"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Geen generatie met de ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Het is niet mogelijk om de huidige generatie %s te verwijderen"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Generatie %s aan het verwijderen"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Geen generatie om te beëindigen"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Er lijkt geen home-manager pakket geïnstalleerd te zijn."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Onbekend argument %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Dit zal Home Manager van jouw systeem verwijderen."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Dit is een oefening, niets wordt werkelijk geïnstalleerd."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Wilt u zeker Home Manager verwijderen?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Naar een lege Home Manager configuratie aan het veranderen..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Joepie!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager is verwijdert maar jouw home.nix is onaangeraakt."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations verwacht één argument, maar kreeg er %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Onbekende opdracht: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Deze afleiding kan niet gebouwd worden, voer het alstublieft uit met nix-"
"shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Initiële Home Manager configuratie aan het maken..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Alle Home Manager generaties verwijderen?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Alle generaties zijn nu in aanmerking voor afvalinzameling."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "Generaties blijven momenteel bestaan maar worden later opgekuist."

220
home-manager/po/pl.po Normal file
View File

@@ -0,0 +1,220 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-05-03 19:48+0000\n"
"Last-Translator: Eryk Michalak <gnu.ewm@protonmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/home-manager/cli/"
"pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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.18-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Przechowywanie Home Manager %s w %s jest przestarzałe,\n"
"proszę przenieść go do %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Nie znaleziono pliku konfiguracyjnego. Proszę utworzyć plik %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Nie można znaleźć odpowiedniego katalogu profilu, próbowano %s i %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Nie mogę sprawdzić konfiguracji flake'a"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: nieznana opcja „%s”"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Uruchom „%s --help” by otrzymać pomoc"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Plik %s już istnieje, pozostawianie go bez zmian..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Tworzenie %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Tworzenie pierwotnej generacji Home Managera..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Skończone! Narzędzie home-manager powinno być zainstalowane i może edytować\n"
"\n"
" %s\n"
"\n"
"by skonfigurować Home Managera. Uruchom „man home-configuration.nix” aby\n"
"sprawdzić wszystkie możliwe opcje konfiguracyjne."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Ojoj, instalacja nie powiodła się! Proszę opisz problem na\n"
"\n"
" %s\n"
"\n"
"jeśli myślisz, że problem spowodowany jest przez błąd Home Managera."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Nie mogę zinstancjować konfiguracji flake'a"
#: home-manager/home-manager:521
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] ""
"Jest %d nieodczytana wiadomość.\n"
"Możesz ją odczytać uruchamiając „%s news”."
msgstr[1] ""
"Jest %d nieodczytanych wiadomości.\n"
"Możesz je odczytać uruchamiając „%s news”."
msgstr[2] ""
"Jest %d nieodczytanych wiadomości.\n"
"Możesz je odczytać uruchamiając „%s news”."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Nieznane ustawienie „%s” „news.display”."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Proszę ustawić zmienną środowiskową $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Nie mogę uruchomić budowania w katalogu tylko-do-odczytu"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Brak generacji z ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Nie mogę usunąć bieżącej generacji %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Usuwanie generacji %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Brak wygasających generacji"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Pakiety home-manager nie wydają się być zainstalowane."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
"Przepraszamy, ta komenda nie jest jeszcze obsługiwana w konfiguracji flake"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Nieznany argument %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "To usunie Home Managera z twojego systemu."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Jesteś pewien usunięcia Home Managera?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Przełączanie do pustej konfiguracji Home Managera..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Jej!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations oczekuje jednego argumentu, otrzymane %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Nieznana komenda: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Ta paczka (derivation) nie da się budować, proszę uruchom używając nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Tworzenie pierwotnej konfiguracji Home Managera..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Usunąć wszystkie generacje Home Managera?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Wszystkie generacje są uwzględnione przy oczyszczaniu (garbage "
#~ "collection)."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Zostawiam generacje ale wciąż mogą zostać usunięte (garbage collection)."

213
home-manager/po/pt.po Normal file
View File

@@ -0,0 +1,213 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-02-19 10:19+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/home-manager/"
"cli/pt/>\n"
"Language: pt\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.16-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Nenhum ficheiro de configuração encontrado no %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Ficheiro de configuração não encontrado. Por favor crie um em %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Não é possivel inspecionar a opção de configuração do flake"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: opção não reconhecida '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Execute '%s --help' para instruções de uso"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Criando a geração inicial do Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Pronto! O home-manager agora deve ser instalado e poderá editar o ficheiro\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/home-manager:437
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 ""
"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."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Não foi possível instanciar a configuração de flake"
#: home-manager/home-manager:521
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] ""
"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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Por favor defina a variável de ambiente $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Não é possível fazer o build num diretório somente leitura"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Nenhuma geração com ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Não foi possível remover a geração atual %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "A remover a geração %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Nenhuma geração a expirar"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Nenhum pacote parece instalado com home-manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Argumento desconhecido %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Isto irá remover o Home Manager do seu sistema."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Essa é uma execução de teste, nada de fato será desinstalado."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Confirma a desinstalação do Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Trocando para configuração vazia do Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Boa!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera um argumento, recebeu %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Comando não reconhecido: %s"
#: home-manager/install.nix:18
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."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Criando a configuração inicial do Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Remover todas as gerações do Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Todas gerações agora são elegíveis para coleta do garbage collector."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Deixando gerações, entretanto elas ainda poderão ser limpas pelo garbage "
#~ "collector."

214
home-manager/po/pt_BR.po Normal file
View File

@@ -0,0 +1,214 @@
# 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: 2023-05-27 09:08+0200\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:71
msgid "No configuration file found at %s"
msgstr "Nenhum arquivo de configuração encontrado no %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Arquivo de configuração não encontrado. Por favor crie um em %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Não é possivel inspecionar a opção de configuração do flake"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: opção não reconhecida '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Execute '%s --help' para instruções de uso"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Criando a geração inicial do Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"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/home-manager:437
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 ""
"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."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Não foi possível instanciar a configuração de flake"
#: home-manager/home-manager:521
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] ""
"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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Valor \"%s\" para configuração \"news.display\" não reconhecido."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Por favor defina a variável de ambiente $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Não é possível fazer o build em um diretório somente leitura"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Nenhuma geração com ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Não foi possível remover a geração atual %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Removendo geração %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Nenhuma geração a expirar"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Nenhum pacote parece instalado com home-manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Argumento desconhecido %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Isso irá remover o Home Manager do seu sistema."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Essa é uma execução de teste, nada de fato será desinstalado."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Confirma a desinstalação do Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Trocando para configuração vazia do Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Boa!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager foi desinstalado, mas o seu home.nix foi deixado intacto."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations espera um argumento, recebeu %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Comando não reconhecido: %s"
#: home-manager/install.nix:18
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."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Criando a configuração inicial do Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Remover todas as gerações do Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr ""
#~ "Todas gerações agora são elegíveis para coleta do garbage collector."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr ""
#~ "Deixando gerações, entretanto elas ainda poderão ser limpas pelo garbage "
#~ "collector."

180
home-manager/po/ro.po Normal file
View File

@@ -0,0 +1,180 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr ""
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr ""
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr ""
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr ""
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr ""
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr ""
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
msgid ""
"All done! The home-manager tool should now be installed and you can edit\n"
"\n"
" %s\n"
"\n"
"to configure Home Manager. Run 'man home-configuration.nix' to\n"
"see all available options."
msgstr ""
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
msgid ""
"Uh oh, the installation failed! Please create an issue at\n"
"\n"
" %s\n"
"\n"
"if the error seems to be the fault of Home Manager."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr ""
#: home-manager/home-manager:521
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr ""
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr ""
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr ""
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr ""
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr ""
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr ""
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr ""
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr ""
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr ""
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr ""
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr ""
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr ""
#: home-manager/home-manager:795
msgid "Yay!"
msgstr ""
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr ""
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr ""
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr ""
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""

213
home-manager/po/ru.po Normal file
View File

@@ -0,0 +1,213 @@
# 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: 2023-05-27 09:08+0200\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/"
"ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Не найден файл конфигурации в %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Не найден файл конфигурации. Пожалуйста, создайте его в %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Не могу получить опции для flake-конфигурации"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: неизвестная опция '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Выполните '%s --help', чтобы получить справку"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Создаю начальное поколение Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Готово! Теперь вам должна быть доступна утилита home-manager,\n"
"и вы можете отредактировать настройки в файле\n"
"\n"
" %s\n"
"\n"
"Выполните 'man home-configuration.nix', чтобы увидеть доступные опции."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Ой, установка не удалась! Пожалуйста, создайте тему в багтрекере\n"
"\n"
" %s\n"
"\n"
"если считаете, что в ошибке виноват Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Не могу создать экземляр для flake-конфигурации"
#: home-manager/home-manager:521
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] ""
"У вас есть %d непрочитанная и релевантная новость.\n"
"Прочтите её, выполнив команду \"%s news\"."
msgstr[1] ""
"У вас есть %d непрочитанные и релевантные новости.\n"
"Прочтите их, выполнив команду \"%s news\"."
msgstr[2] ""
"У вас есть %d непрочитанных и релевантных новостей.\n"
"Прочтите их, выполнив команду \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Неизвестное значение \"news.display\": \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Пожалуйста, определите переменную среды $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Не могу начать сборку в директории, защищённой от записи"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Поколение под номером %s не существует"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Не могу удалить текущее поколение %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Удаляю поколение %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Нет поколений, которые можно просрочить"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Не обнаружено пакетов, установленных через home-manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Неизвестный аргумент %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Это удалит Home Manager из вашей системы."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Это пробный запуск, на самом деле ничего не удаляется."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Действительно хотите удалить Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Переключаюсь на пустую конфигурацию Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Ура!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager удалён, но ваш home.nix остался нетронутым."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations требует один аргумент, но передано %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Это определение нельзя собрать. Пожалуйста, запустите его через nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Создаю начальную конфигурацию Home Manager..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Удалить все поколения Home Manager?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Теперь все поколения готовы к удалению сборщиком мусора."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "Поколения остаются, но их ещё можно удалить сборщиком мусора."

211
home-manager/po/sv.po Normal file
View File

@@ -0,0 +1,211 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-11 20:41+0000\n"
"Last-Translator: Robert Helgesson <robert@rycee.net>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/home-manager/cli/"
"sv/>\n"
"Language: sv\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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Det finns ingen konfigurationsfil i %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Att behålla din Home Manager %s i %s är föråldrat,\n"
"snälla flytta den till %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Hittade ingen konfigurationsfil. Skapa en i %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Kunde inte hitta lämplig profil-katalog, försökte med %s och %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Kan inte granska alternativ i en flake-konfiguration"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: okänt val '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Kör '%s --help' för användarhjälp"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Filen %s finns redan, lämnar den orörd..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Skapar %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Skapar initial Home Manager-generation..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Färdig! Verktyget home-manager borde nu vara installerat och du kan editera\n"
"\n"
" %s\n"
"\n"
"för att konfigurera Home Manager. Kör 'man home-configuration.nix' för\n"
"att se alla tillgängliga alternativ."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Ajdå, installationen misslyckades! Skapa gärna en rapport på\n"
"\n"
" %s\n"
"\n"
"om problemet verkar bero på något Home Manager gör fel."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Kan inte instansera en flake-konfiguration"
#: home-manager/home-manager:521
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] ""
"Det finns %d oläst och relevant nyhet.\n"
"Läs den genom att köra kommandot \"%s news\"."
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:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Okänt \"news.display\"-värde \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Vänligen tilldela miljövariablen $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Kan inte bygga i katalog med bara läsrättigheter"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Ingen generation med ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Kan inte ta bort nuvarande generation %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Tar bort generation %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Ingen generation att förfalla"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Paketet home-manager verkar inte vara installerat."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
"Ursäkta, för tillfället stödjs detta kommando inte när Nix flakes används"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Okänt argument %s"
#: home-manager/home-manager:755
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:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Verkligen avinstallera Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Byter till tom Home Manager-konfiguration..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Hurra!"
#: home-manager/home-manager:800
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:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expect-generations förväntar sig ett argument, fick %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Okänt kommando: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "Denna derivation är inte byggbar, kör den med nix-shell istället."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Skapar initial Home Manager-konfiguration..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Ta bort alla Home Manager-generationer?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Alla generationer kan nu skräpsamlas."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "Låter generationer vara kvar men de kan fortfarande skräpsamlas."

211
home-manager/po/tr.po Normal file
View File

@@ -0,0 +1,211 @@
# 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: 2023-05-27 09:08+0200\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"
"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:71
msgid "No configuration file found at %s"
msgstr "%s konumunda yapılandırma dosyası bulunamadı"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr ""
"Yapılandırma dosyası bulunamadı. Lütfen %s konumunda bir tane oluşturun"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Flake yapılandırmasının ayarları incelenemiyor"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: Bilinmeyen komut '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Yardım için '%s --help'"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "İlk Home Manager inşası oluşturuluyor..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Herşey tamam! home-manager aracı kuruldu. Home Manager'ı yapılandırmak için\n"
"\n"
" %s\n"
"\n"
"dosyasını düzenleyin. Kullanılabilir seçenekleri görmek için:\n"
"'man home-configuration.nix'."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Eyvah, kurulum başarısız! Eğer hatanın Home Manager'dan kaynaklandığını "
"düşünüyorsanız\n"
"\n"
" %s\n"
"\n"
"adresinden bildirin."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Flake yapılandırması örneklendirilemiyor"
#: home-manager/home-manager:521
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] ""
"%d tane okunmamış ilgili haber bulunmakta.\n"
"Okumak için \"%s news\"."
msgstr[1] ""
"%d tane okunmamış ilgili haberler bulunmakta.\n"
"Okumak için \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Bilinmeyen \"news.display\" seçeneği \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Lütfen $EDITOR ortam değişkenini tanımlayın"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "İnşa, sadece okunabilir bir klasörde çalıştırılamaz"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "%s ID'sine sahip inşa bulunamadı"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Kullanımda olan %s inşası silinemez"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "İnşa siliniyor %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Süresi dolacak inşa yok"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Galiba home-manager paketi kurulu değil."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Bilinmeyen argüman %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Bu, sisteminizden Home Manager'ı kaldıracak."
#: home-manager/home-manager:758
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:762
msgid "Really uninstall Home Manager?"
msgstr "Home Manager'ı silmek istediğinize emin misiniz?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Boş Home Manager yapılandırmasına geçiliyor..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Güzel!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager kaldırıldı ama home.nix dosyasına dokunulmadı."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations bir argüman istiyor, %d tane girildi."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Bu türetim inşa edilebilir değil, lütfen onu nix-shell kullanarak çalıştırın."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "İlk Home Manager yapılandırması oluşturuluyor..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "Tüm Home Manager inşaları kaldırılsın mı?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "Artık tüm inşalar çöp olarak toplanabilir."
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "İnşalar yine de çöp olarak toplanabilir."

207
home-manager/po/uk.po Normal file
View File

@@ -0,0 +1,207 @@
# 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: 2023-05-27 09:08+0200\n"
"PO-Revision-Date: 2023-04-13 13:47+0000\n"
"Last-Translator: Dan <denqwerta@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/home-manager/"
"cli/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"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.17-dev\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "Файл конфігурації не знайдено в %s"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
"Збереження вашого Home Manager %s у %s є застарілим,\n"
"будь ласка, перемістіть його до %s"
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "Файл конфігурації не знайдено. Будь ласка, створіть його в %s"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr "Не вдалося знайти відповідний каталог профілю, спробував %s і %s"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "Неможливо перевірити параметри flake-конфігурації"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s: невідомий параметр '%s'"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "Запустіть '%s --help' для отримання довідки про використання"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr "Файл %s вже існує, залишаючи його незмінним..."
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr "Створення %s..."
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "Створення початкової генерації Home Manager..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"Все готово! Інструмент Home-manager тепер повинен бути встановлений, і ви "
"можете редагувати\n"
"\n"
" %s,\n"
"\n"
"щоб налаштувати Home Manager. Запустіть 'man home-configuration.nix', щоб\n"
"переглянути всі доступні варіанти."
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 ""
"Ой, не вдалося встановити! Будь ласка, створіть проблему на\n"
"\n"
" %s\n"
"\n"
"якщо здається, що помилка сталася через Home Manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "Не вдається створити екземпляр flake-конфігурації"
#: home-manager/home-manager:521
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] ""
"Є %d непрочитана і ревалентна новина.\n"
"Прочитайте її, виконавши команду \"%s news\"."
msgstr[1] ""
"Є %d непрочитані і ревалентні новини.\n"
"Прочитайте їх, виконавши команду \"%s news\"."
msgstr[2] ""
"Є %d непрочитаних і ревалентних новин.\n"
"Прочитайте їх, виконавши команду \"%s news\"."
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "Невідоме налаштування \"news.display\" \"%s\"."
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "Будь ласка, встановіть змінну середовища $EDITOR"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "Неможливо запустити збірку в каталозі, доступному лише для читання"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "Немає генерації з ID %s"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "Не вдається видалити поточну генерацію %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "Видалення генерації %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "Немає генерацій, термін дії яких закінчується"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "Здається, не встановлено жодних пакунків home-manager."
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr "На жаль, ця команда ще не підтримується в налаштуваннях flake"
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "Невідомий аргумент %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "Це призведе до видалення Home Manager з вашої системи."
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "Це пробний запуск, насправді нічого не буде видалено."
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "Дійсно видаліть Home Manager?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "Перехід до порожньої конфігурації Home Manager..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "Ура!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager буде видалено, але ваш home.nix залишиться недоторканим."
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generation очікує один аргумент, отримав %d."
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "Невідома команда: %s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr ""
"Цю похідну не можна зібрати, будь ласка, запустіть її за допомогою nix-shell."
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "Створення початкової конфігурації Home Manager..."

205
home-manager/po/zh_Hans.po Normal file
View File

@@ -0,0 +1,205 @@
# 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: 2023-05-27 09:08+0200\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/"
"home-manager/cli/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.10.1\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "未在 %s 找到配置文件"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "未找到配置文件。请在 %s 处创建一份"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "无法检查 flake 配置中的选项"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s未知选项 %s"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "运行 %s --help 获取用法帮助"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "正在创建初始 Home Manager 世代 ..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"全部工作完成了home-manager 工具现应已安装,您可以编辑\n"
"\n"
" %s\n"
"\n"
"来配置 Home Manager。运行 man home-configuration.nix\n"
"来查看所有可用选项。"
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 造成的错误,请在下方\n"
"\n"
" %s\n"
"\n"
"处创建 Issue 告知我们。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "无法创建 flake 配置实例"
#: home-manager/home-manager:521
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] ""
"有 %d 条未读的相关新闻或消息。\n"
"可运行 “%s news” 命令进行阅读。"
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "未知的 “news.display” 设置项 “%s”。"
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "请设定 $EDITOR 环境变量"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "无法在只读目录中运行构建"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "没有 ID 为 %s 的世代"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "无法移除当前世代 %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "正在移除世代 %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "没有即将过期的世代"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "似乎没有安装 home-manager 软件包。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "未知参数 %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "这将会从系统中移除 Home Manager。"
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "这是试运行结果,没有实际卸载任何软件包。"
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "确定要卸载 Home Manager 吗?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "正在切换至空的 Home Manager 配置 ..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "好耶!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager 已卸载,但未改动您的 home.nix 配置文件。"
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations 须要一个参数,但获取到了 %d 个。"
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "未知命令:%s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "此配置文件/变体不可构建,请在 nix-shell 中运行它。"
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "正在创建初始 Home Manager 配置 ..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "要移除所有 Home Manager 配置世代吗?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "所有世代现在均符合垃圾回收的条件。"
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "保留世代,但它们仍然可能被垃圾回收。"

205
home-manager/po/zh_Hant.po Normal file
View File

@@ -0,0 +1,205 @@
# 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: 2023-05-27 09:08+0200\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/"
"home-manager/cli/zh_Hant/>\n"
"Language: zh_Hant\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.10.1\n"
#: home-manager/home-manager:71
msgid "No configuration file found at %s"
msgstr "未在 %s 處找到配置檔案"
#. translators: The first '%s' specifier will be replaced by either
#. 'home.nix' or 'flake.nix'.
#: home-manager/home-manager:88 home-manager/home-manager:92
#: home-manager/home-manager:154
msgid ""
"Keeping your Home Manager %s in %s is deprecated,\n"
"please move it to %s"
msgstr ""
#: home-manager/home-manager:99
msgid "No configuration file found. Please create one at %s"
msgstr "未找到配置檔案。請在 %s 處建立一份"
#: home-manager/home-manager:136
msgid "Could not find suitable profile directory, tried %s and %s"
msgstr ""
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:191
msgid "Can't inspect options of a flake configuration"
msgstr "無法檢查 flake 配置中的選項"
#: home-manager/home-manager:253 home-manager/home-manager:276
#: home-manager/home-manager:973
msgid "%s: unknown option '%s'"
msgstr "%s未知選項 %s"
#: home-manager/home-manager:258 home-manager/home-manager:974
msgid "Run '%s --help' for usage help"
msgstr "執行 %s --help 獲取用法幫助"
#: home-manager/home-manager:284 home-manager/home-manager:383
msgid "The file %s already exists, leaving it unchanged..."
msgstr ""
#: home-manager/home-manager:286 home-manager/home-manager:385
msgid "Creating %s..."
msgstr ""
#: home-manager/home-manager:427
msgid "Creating initial Home Manager generation..."
msgstr "正在建立初始 Home Manager 世代 ..."
#. translators: The "%s" specifier will be replaced by a file path.
#: home-manager/home-manager:432
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 ""
"全部工作完成了home-manager 工具現應已安裝,您可以編輯\n"
"\n"
" %s\n"
"\n"
"來配置 Home Manager。執行 man home-configuration.nix\n"
"來檢視所有可用選項。"
#. translators: The "%s" specifier will be replaced by a URL.
#: home-manager/home-manager:437
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 造成的錯誤,請在下方\n"
"\n"
" %s\n"
"\n"
"處建立 Issue 告知我們。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:448
msgid "Can't instantiate a flake configuration"
msgstr "無法建立 flake 配置例項"
#: home-manager/home-manager:521
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] ""
"有 %d 條未讀的相關新聞或訊息。\n"
"可執行 “%s news” 命令進行閱讀。"
#: home-manager/home-manager:535
msgid "Unknown \"news.display\" setting \"%s\"."
msgstr "未知的 “news.display” 設定項 “%s”。"
#: home-manager/home-manager:542
#, sh-format
msgid "Please set the $EDITOR environment variable"
msgstr "請設定 $EDITOR 環境變數"
#: home-manager/home-manager:557
msgid "Cannot run build in read-only directory"
msgstr "無法在只讀目錄中執行構建"
#: home-manager/home-manager:641
msgid "No generation with ID %s"
msgstr "沒有 ID 為 %s 的世代"
#: home-manager/home-manager:643
msgid "Cannot remove the current generation %s"
msgstr "無法移除當前世代 %s"
#: home-manager/home-manager:645
msgid "Removing generation %s"
msgstr "正在移除世代 %s"
#: home-manager/home-manager:664
msgid "No generations to expire"
msgstr "沒有即將過期的世代"
#: home-manager/home-manager:675
msgid "No home-manager packages seem to be installed."
msgstr "似乎沒有安裝 home-manager 軟體包。"
#. translators: Here "flake" is a noun that refers to the Nix Flakes feature.
#: home-manager/home-manager:702
msgid "Sorry, this command is not yet supported in flake setup"
msgstr ""
#: home-manager/home-manager:739
msgid "Unknown argument %s"
msgstr "未知引數 %s"
#: home-manager/home-manager:755
msgid "This will remove Home Manager from your system."
msgstr "這將會從系統中移除 Home Manager。"
#: home-manager/home-manager:758
msgid "This is a dry run, nothing will actually be uninstalled."
msgstr "這是試執行結果,沒有實際解除安裝任何軟體包。"
#: home-manager/home-manager:762
msgid "Really uninstall Home Manager?"
msgstr "確定要解除安裝 Home Manager 嗎?"
#: home-manager/home-manager:768
msgid "Switching to empty Home Manager configuration..."
msgstr "正在切換至空的 Home Manager 配置 ..."
#: home-manager/home-manager:795
msgid "Yay!"
msgstr "好耶!"
#: home-manager/home-manager:800
msgid "Home Manager is uninstalled but your home.nix is left untouched."
msgstr "Home Manager 已解除安裝,但未改動您的 home.nix 配置檔案。"
#: home-manager/home-manager:1011
msgid "expire-generations expects one argument, got %d."
msgstr "expire-generations 須要一個引數,但獲取到了 %d 個。"
#: home-manager/home-manager:1033
msgid "Unknown command: %s"
msgstr "未知命令:%s"
#: home-manager/install.nix:18
msgid "This derivation is not buildable, please run it using nix-shell."
msgstr "此配置檔案/變體不可構建,請在 nix-shell 中執行它。"
#~ msgid "Creating initial Home Manager configuration..."
#~ msgstr "正在建立初始 Home Manager 配置 ..."
#~ msgid "Remove all Home Manager generations?"
#~ msgstr "要移除所有 Home Manager 配置世代嗎?"
#~ msgid "All generations are now eligible for garbage collection."
#~ msgstr "所有世代現在均符合垃圾回收的條件。"
#~ msgid "Leaving generations but they may still be garbage collected."
#~ msgstr "保留世代,但它們仍然可能被垃圾回收。"

85
lib/bash/home-manager.sh Normal file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env bash
#
# This file contains a number of utilities for use by the home-manager tool and
# the generated Home Manager activation scripts. No guarantee is made about
# backwards or forward compatibility.
#
# Sets up colors suitable for the `errorEcho`, `warnEcho`, and `noteEcho`
# functions.
#
# The check for terminal output and color support is heavily inspired by
# https://unix.stackexchange.com/a/10065.
#
# The setup respects the `NO_COLOR` environment variable.
function setupColors() {
normalColor=""
errorColor=""
warnColor=""
noteColor=""
# Enable colors for terminals, and allow opting out.
if [[ ! -v NO_COLOR && -t 1 ]]; then
# See if it supports colors.
local ncolors
ncolors=$(tput colors 2> /dev/null || echo 0)
if [[ -n "$ncolors" && "$ncolors" -ge 8 ]]; then
normalColor="$(tput sgr0)"
errorColor="$(tput bold)$(tput setaf 1)"
warnColor="$(tput setaf 3)"
noteColor="$(tput bold)$(tput setaf 6)"
fi
fi
}
setupColors
function errorEcho() {
echo "${errorColor}$*${normalColor}"
}
function warnEcho() {
echo "${warnColor}$*${normalColor}"
}
function noteEcho() {
echo "${noteColor}$*${normalColor}"
}
function _i() {
local msgid="$1"
shift
# shellcheck disable=2059
printf "$(gettext "$msgid")\n" "$@"
}
function _ip() {
local msgid="$1"
local msgidPlural="$2"
local count="$3"
shift 3
# shellcheck disable=2059
printf "$(ngettext "$msgid" "$msgidPlural" "$count")\n" "$@"
}
function _iError() {
echo -n "${errorColor}"
_i "$@"
echo -n "${normalColor}"
}
function _iWarn() {
echo -n "${warnColor}"
_i "$@"
echo -n "${normalColor}"
}
function _iNote() {
echo -n "${noteColor}"
_i "$@"
echo -n "${normalColor}"
}

View File

@@ -44,6 +44,28 @@ let
'';
};
delimiter = mkOption {
type = types.str;
default = ''
--
'';
example = literalExpression ''
~*~*~*~*~*~*~*~*~*~*~*~
'';
description = ''
The delimiter used between the document and the signature.
'';
};
command = mkOption {
type = with types; nullOr path;
default = null;
example = literalExpression ''
pkgs.writeScript "signature" "echo This is my signature"
'';
description = "A command that generates a signature.";
};
showSignature = mkOption {
type = types.enum [ "append" "attach" "none" ];
default = "none";
@@ -71,7 +93,7 @@ let
};
certificatesFile = mkOption {
type = types.path;
type = types.nullOr types.path;
default = config.accounts.email.certificatesFile;
defaultText = "config.accounts.email.certificatesFile";
description = ''
@@ -114,6 +136,38 @@ let
};
};
jmapModule = types.submodule {
options = {
host = mkOption {
type = types.nullOr types.str;
default = null;
example = "jmap.example.org";
description = ''
Hostname of JMAP server.
</para><para>
If both this option and <xref
linkend="opt-accounts.email.accounts._name_.jmap.sessionUrl"/> are specified,
<code>host</code> is preferred by applications when establishing a
session.
'';
};
sessionUrl = mkOption {
type = types.nullOr types.str;
default = null;
example = "https://jmap.example.org:443/.well-known/jmap";
description = ''
URL for the JMAP Session resource.
</para><para>
If both this option and <xref
linkend="opt-accounts.email.accounts._name_.jmap.host"/> are specified,
<code>host</code> is preferred by applications when establishing a
session.
'';
};
};
};
smtpModule = types.submodule {
options = {
host = mkOption {
@@ -188,7 +242,14 @@ let
};
flavor = mkOption {
type = types.enum [ "plain" "gmail.com" "runbox.com" ];
type = types.enum [
"plain"
"gmail.com"
"runbox.com"
"fastmail.com"
"yandex.com"
"outlook.office365.com"
];
default = "plain";
description = ''
Some email providers have peculiar behavior that require
@@ -196,7 +257,7 @@ let
indicate the nature of the provider.
</para><para>
When this indicates a specific provider then, for example,
the IMAP and SMTP server configuration may be set
the IMAP, SMTP, and JMAP server configuration may be set
automatically.
'';
};
@@ -225,7 +286,7 @@ let
default = null;
description = ''
The server username of this account. This will be used as
the SMTP and IMAP user name.
the SMTP, IMAP, and JMAP user name.
'';
};
@@ -260,7 +321,7 @@ let
};
drafts = mkOption {
type = types.str;
type = types.nullOr types.str;
default = "Drafts";
description = ''
Relative path of the drafts mail folder.
@@ -290,6 +351,14 @@ let
'';
};
jmap = mkOption {
type = types.nullOr jmapModule;
default = null;
description = ''
The JMAP configuration to use for this account.
'';
};
signature = mkOption {
type = signatureModule;
default = { };
@@ -329,10 +398,67 @@ let
maildir = mkOptionDefault { path = "${name}"; };
}
(mkIf (config.flavor == "yandex.com") {
userName = mkDefault config.address;
imap = {
host = "imap.yandex.com";
port = 993;
tls.enable = true;
};
smtp = {
host = "smtp.yandex.com";
port = 465;
tls.enable = true;
};
})
(mkIf (config.flavor == "outlook.office365.com") {
userName = mkDefault config.address;
imap = {
host = "outlook.office365.com";
port = 993;
tls.enable = true;
};
smtp = {
host = "smtp.office365.com";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
})
(mkIf (config.flavor == "fastmail.com") {
userName = mkDefault config.address;
imap = {
host = "imap.fastmail.com";
port = 993;
};
smtp = {
host = "smtp.fastmail.com";
port = if config.smtp.tls.useStartTls then 587 else 465;
};
jmap = {
host = "fastmail.com";
sessionUrl = "https://jmap.fastmail.com/.well-known/jmap";
};
})
(mkIf (config.flavor == "gmail.com") {
userName = mkDefault config.address;
imap = { host = "imap.gmail.com"; };
imap = {
host = "imap.gmail.com";
port = 993;
};
smtp = {
host = "smtp.gmail.com";
@@ -351,7 +477,7 @@ let
in {
options.accounts.email = {
certificatesFile = mkOption {
type = types.path;
type = types.nullOr types.path;
default = "/etc/ssl/certs/ca-certificates.crt";
description = ''
Path to default file containing certificate authorities that

View File

@@ -0,0 +1,158 @@
{ config, options, lib, pkgs, ... }:
with lib;
let
cfg = config.home.pointerCursor;
pointerCursorModule = types.submodule {
options = {
package = mkOption {
type = types.package;
example = literalExpression "pkgs.vanilla-dmz";
description = "Package providing the cursor theme.";
};
name = mkOption {
type = types.str;
example = "Vanilla-DMZ";
description = "The cursor name within the package.";
};
size = mkOption {
type = types.int;
default = 32;
example = 64;
description = "The cursor size.";
};
x11 = {
enable = mkEnableOption ''
x11 config generation for <option>home.pointerCursor</option>
'';
defaultCursor = mkOption {
type = types.str;
default = "left_ptr";
example = "X_cursor";
description = "The default cursor file to use within the package.";
};
};
gtk = {
enable = mkEnableOption ''
gtk config generation for <option>home.pointerCursor</option>
'';
};
};
};
cursorPath = "${cfg.package}/share/icons/${escapeShellArg cfg.name}/cursors/${
escapeShellArg cfg.x11.defaultCursor
}";
in {
meta.maintainers = [ maintainers.polykernel maintainers.league ];
imports = [
(mkAliasOptionModule [ "xsession" "pointerCursor" "package" ] [
"home"
"pointerCursor"
"package"
])
(mkAliasOptionModule [ "xsession" "pointerCursor" "name" ] [
"home"
"pointerCursor"
"name"
])
(mkAliasOptionModule [ "xsession" "pointerCursor" "size" ] [
"home"
"pointerCursor"
"size"
])
(mkAliasOptionModule [ "xsession" "pointerCursor" "defaultCursor" ] [
"home"
"pointerCursor"
"x11"
"defaultCursor"
])
({ ... }: {
warnings = optional (any (x:
getAttrFromPath
([ "xsession" "pointerCursor" ] ++ [ x ] ++ [ "isDefined" ])
options) [ "package" "name" "size" "defaultCursor" ]) ''
The option `xsession.pointerCursor` has been merged into `home.pointerCursor` and will be removed
in the future. Please change to set `home.pointerCursor` directly and enable `home.pointerCursor.x11.enable`
to generate x11 specific cursor configurations. You can refer to the documentation for more details.
'';
})
];
options = {
home.pointerCursor = mkOption {
type = types.nullOr pointerCursorModule;
default = null;
description = ''
Cursor configuration. Set to <literal>null</literal> to disable.
</para><para>
Top-level options declared under this submodule are backend independent
options. Options declared under namespaces such as <literal>x11</literal>
are backend specific options. By default, only backend independent cursor
configurations are generated. If you need configurations for specific
backends, you can toggle them via the enable option. For example,
<xref linkend="opt-home.pointerCursor.x11.enable"/>
will enable x11 cursor configurations.
'';
};
};
config = mkIf (cfg != null) (mkMerge [
{
assertions = [
(hm.assertions.assertPlatform "home.pointerCursor" pkgs platforms.linux)
];
home.packages = [ cfg.package ];
# Set name in icons theme, for compatibility with AwesomeWM etc. See:
# https://github.com/nix-community/home-manager/issues/2081
# https://wiki.archlinux.org/title/Cursor_themes#XDG_specification
xdg.dataFile."icons/default/index.theme".text = ''
[icon theme]
Name=Default
Comment=Default Cursor Theme
Inherits=${cfg.name}
'';
# Set directory to look for cursors in, needed for some applications
# that are unable to find cursors otherwise. See:
# https://github.com/nix-community/home-manager/issues/2812
# https://wiki.archlinux.org/title/Cursor_themes#Environment_variable
home.sessionVariables = {
XCURSOR_PATH = mkDefault ("$XCURSOR_PATH\${XCURSOR_PATH:+:}"
+ "${config.home.profileDirectory}/share/icons");
XCURSOR_SIZE = mkDefault cfg.size;
XCURSOR_THEME = mkDefault cfg.name;
};
}
(mkIf cfg.x11.enable {
xsession.initExtra = ''
${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cursorPath} ${
toString cfg.size
}
'';
xresources.properties = {
"Xcursor.theme" = cfg.name;
"Xcursor.size" = cfg.size;
};
})
(mkIf cfg.gtk.enable {
gtk.cursorTheme = mkDefault { inherit (cfg) package name size; };
})
]);
}

View File

@@ -36,7 +36,7 @@ let
in {
meta.maintainers = with maintainers; [ midchildan ];
config = {
config = mkIf pkgs.stdenv.hostPlatform.isLinux {
# For shell sessions.
home.sessionVariables = localeVars;

View File

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

View File

@@ -4,7 +4,7 @@ with lib;
let
cfg = config.home.file;
cfg = filterAttrs (n: f: f.enable) config.home.file;
homeDirectory = config.home.homeDirectory;
@@ -28,7 +28,7 @@ in
home.file = mkOption {
description = "Attribute set of files to link into the user home.";
default = {};
type = fileType "<envar>HOME</envar>" homeDirectory;
type = fileType "home.file" "<envar>HOME</envar>" homeDirectory;
};
home-files = mkOption {
@@ -39,6 +39,28 @@ in
};
config = {
assertions = [(
let
dups =
attrNames
(filterAttrs (n: v: v > 1)
(foldAttrs (acc: v: acc + v) 0
(mapAttrsToList (n: v: { ${v.target} = 1; }) cfg)));
dupsStr = concatStringsSep ", " dups;
in {
assertion = dups == [];
message = ''
Conflicting managed target files: ${dupsStr}
This may happen, for example, if you have a configuration similar to
home.file = {
conflict1 = { source = ./foo.nix; target = "baz"; };
conflict2 = { source = ./bar.nix; target = "baz"; };
}'';
})
];
lib.file.mkOutOfStoreSymlink = path:
let
pathStr = toString path;
@@ -53,16 +75,16 @@ in
# Paths that should be forcibly overwritten by Home Manager.
# Caveat emptor!
forcedPaths =
concatMapStringsSep " " (p: ''"$HOME/${p}"'')
concatMapStringsSep " " (p: ''"$HOME"/${escapeShellArg p}'')
(mapAttrsToList (n: v: v.target)
(filterAttrs (n: v: v.force) cfg));
check = pkgs.writeText "check" ''
. ${./lib-bash/color-echo.sh}
${config.lib.bash.initHomeManagerLib}
# A symbolic link whose target path matches this pattern will be
# considered part of a Home Manager generation.
homeFilePattern="$(readlink -e "${builtins.storeDir}")/*-home-manager-files/*"
homeFilePattern="$(readlink -e ${escapeShellArg builtins.storeDir})/*-home-manager-files/*"
forcedPaths=(${forcedPaths})
@@ -84,7 +106,12 @@ in
$VERBOSE_ECHO "Skipping collision check for $targetPath"
elif [[ -e "$targetPath" \
&& ! "$(readlink "$targetPath")" == $homeFilePattern ]] ; then
if [[ ! -L "$targetPath" && -n "$HOME_MANAGER_BACKUP_EXT" ]] ; then
# The target file already exists and it isn't a symlink owned by Home Manager.
if cmp -s "$sourcePath" "$targetPath"; then
# First compare the files' content. If they're equal, we're fine.
warnEcho "Existing file '$targetPath' is in the way of '$sourcePath', will be skipped since they are the same"
elif [[ ! -L "$targetPath" && -n "$HOME_MANAGER_BACKUP_EXT" ]] ; then
# Next, try to move the file to a backup location if configured and possible
backup="$targetPath.$HOME_MANAGER_BACKUP_EXT"
if [[ -e "$backup" ]]; then
errorEcho "Existing file '$backup' would be clobbered by backing up '$targetPath'"
@@ -93,6 +120,7 @@ in
warnEcho "Existing file '$targetPath' is in the way of '$sourcePath', will be moved to '$backup'"
fi
else
# Fail if nothing else works
errorEcho "Existing file '$targetPath' is in the way of '$sourcePath'"
collision=1
fi
@@ -100,7 +128,7 @@ in
done
if [[ -v collision ]] ; then
errorEcho "Please move the above files and try again or use -b <ext> to move automatically."
errorEcho "Please move the above files and try again or use 'home-manager switch -b backup' to back up existing files automatically."
exit 1
fi
'';
@@ -140,27 +168,36 @@ in
# source and target generation.
home.activation.linkGeneration = hm.dag.entryAfter ["writeBoundary"] (
let
link = pkgs.writeText "link" ''
link = pkgs.writeShellScript "link" ''
newGenFiles="$1"
shift
for sourcePath in "$@" ; do
relativePath="''${sourcePath#$newGenFiles/}"
targetPath="$HOME/$relativePath"
if [[ -e "$targetPath" && ! -L "$targetPath" && -n "$HOME_MANAGER_BACKUP_EXT" ]] ; then
# The target exists, back it up
backup="$targetPath.$HOME_MANAGER_BACKUP_EXT"
$DRY_RUN_CMD mv $VERBOSE_ARG "$targetPath" "$backup" || errorEcho "Moving '$targetPath' failed!"
fi
$DRY_RUN_CMD mkdir -p $VERBOSE_ARG "$(dirname "$targetPath")"
$DRY_RUN_CMD ln -nsf $VERBOSE_ARG "$sourcePath" "$targetPath"
if [[ -e "$targetPath" && ! -L "$targetPath" ]] && cmp -s "$sourcePath" "$targetPath" ; then
# The target exists but is identical don't do anything.
$VERBOSE_ECHO "Skipping '$targetPath' as it is identical to '$sourcePath'"
else
# Place that symlink, --force
# This can still fail if the target is a directory, in which case we bail out.
$DRY_RUN_CMD mkdir -p $VERBOSE_ARG "$(dirname "$targetPath")"
$DRY_RUN_CMD ln -Tsf $VERBOSE_ARG "$sourcePath" "$targetPath" || exit 1
fi
done
'';
cleanup = pkgs.writeText "cleanup" ''
. ${./lib-bash/color-echo.sh}
cleanup = pkgs.writeShellScript "cleanup" ''
${config.lib.bash.initHomeManagerLib}
# A symbolic link whose target path matches this pattern will be
# considered part of a Home Manager generation.
homeFilePattern="$(readlink -e "${builtins.storeDir}")/*-home-manager-files/*"
homeFilePattern="$(readlink -e ${escapeShellArg builtins.storeDir})/*-home-manager-files/*"
newGenFiles="$1"
shift 1
@@ -194,7 +231,7 @@ in
in
''
function linkNewGen() {
echo "Creating home file links in $HOME"
_i "Creating home file links in %s" "$HOME"
local newGenFiles
newGenFiles="$(readlink -e "$newGenPath/home-files")"
@@ -203,11 +240,11 @@ in
}
function cleanOldGen() {
if [[ ! -v oldGenPath ]] ; then
if [[ ! -v oldGenPath || ! -e "$oldGenPath/home-files" ]] ; then
return
fi
echo "Cleaning up orphan links from $HOME"
_i "Cleaning up orphan links from %s" "$HOME"
local newGenFiles oldGenFiles
newGenFiles="$(readlink -e "$newGenPath/home-files")"
@@ -223,11 +260,24 @@ in
cleanOldGen
if [[ ! -v oldGenPath || "$oldGenPath" != "$newGenPath" ]] ; then
echo "Creating profile generation $newGenNum"
$DRY_RUN_CMD nix-env $VERBOSE_ARG --profile "$genProfilePath" --set "$newGenPath"
$DRY_RUN_CMD ln -Tsf $VERBOSE_ARG "$newGenPath" "$newGenGcPath"
_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 nix-store --realise "$newGenPath" --add-root "$newGenGcPath" > "$DRY_RUN_NULL"
if [[ -e "$legacyGenGcPath" ]]; then
$DRY_RUN_CMD rm $VERBOSE_ARG "$legacyGenGcPath"
fi
else
echo "No change so reusing latest profile generation $oldGenNum"
_i "No change so reusing latest profile generation %s" "$oldGenNum"
fi
linkNewGen
@@ -235,7 +285,9 @@ in
);
home.activation.checkFilesChanged = hm.dag.entryBefore ["linkGeneration"] (
''
let
homeDirArg = escapeShellArg homeDirectory;
in ''
function _cmp() {
if [[ -d $1 && -d $2 ]]; then
diff -rq "$1" "$2" &> /dev/null
@@ -244,11 +296,15 @@ in
fi
}
declare -A changedFiles
'' + concatMapStrings (v: ''
_cmp "${sourceStorePath v}" "${homeDirectory}/${v.target}" \
&& changedFiles["${v.target}"]=0 \
|| changedFiles["${v.target}"]=1
'') (filter (v: v.onChange != "") (attrValues cfg))
'' + concatMapStrings (v:
let
sourceArg = escapeShellArg (sourceStorePath v);
targetArg = escapeShellArg v.target;
in ''
_cmp ${sourceArg} ${homeDirArg}/${targetArg} \
&& changedFiles[${targetArg}]=0 \
|| changedFiles[${targetArg}]=1
'') (filter (v: v.onChange != "") (attrValues cfg))
+ ''
unset -f _cmp
''
@@ -256,20 +312,23 @@ in
home.activation.onFilesChange = hm.dag.entryAfter ["linkGeneration"] (
concatMapStrings (v: ''
if [[ ${"$\{changedFiles"}["${v.target}"]} -eq 1 ]]; then
${v.onChange}
if (( ''${changedFiles[${escapeShellArg v.target}]} == 1 )); then
if [[ -v DRY_RUN || -v VERBOSE ]]; then
echo "Running onChange hook for" ${escapeShellArg v.target}
fi
if [[ ! -v DRY_RUN ]]; then
${v.onChange}
fi
fi
'') (filter (v: v.onChange != "") (attrValues cfg))
);
# Symlink directories and files that have the right execute bit.
# Copy files that need their execute bit changed.
home-files = pkgs.runCommand
home-files = pkgs.runCommandLocal
"home-manager-files"
{
nativeBuildInputs = [ pkgs.xorg.lndir ];
preferLocalBuild = true;
allowSubstitutes = false;
}
(''
mkdir -p $out
@@ -283,6 +342,15 @@ in
local executable="$3"
local recursive="$4"
# If the target already exists then we have a collision. Note, this
# should not happen due to the assertion found in the 'files' module.
# We therefore simply log the conflict and otherwise ignore it, mainly
# to make the `files-target-config` test work as expected.
if [[ -e "$realOut/$relTarget" ]]; then
echo "File conflict for file '$relTarget'" >&2
return
fi
# Figure out the real absolute path to the target.
local target
target="$(realpath -m "$realOut/$relTarget")"

View File

@@ -4,6 +4,8 @@ with lib;
let
inherit (config.home) stateVersion;
cfg = config.home;
languageSubModule = types.submodule {
@@ -115,7 +117,7 @@ let
if versionAtLeast config.home.stateVersion "19.09"
then null
else "us";
defaultText = literalExample "null";
defaultText = literalExpression "null";
description = ''
Keyboard layout. If <literal>null</literal>, then the system
configuration will be used.
@@ -149,7 +151,7 @@ let
if versionAtLeast config.home.stateVersion "19.09"
then null
else "";
defaultText = literalExample "null";
defaultText = literalExpression "null";
example = "colemak";
description = ''
X keyboard variant. If <literal>null</literal>, then the
@@ -182,7 +184,7 @@ in
options = {
home.username = mkOption {
type = types.str;
defaultText = literalExample ''
defaultText = literalExpression ''
"$USER" for state version < 20.09,
undefined for state version 20.09
'';
@@ -192,7 +194,7 @@ in
home.homeDirectory = mkOption {
type = types.path;
defaultText = literalExample ''
defaultText = literalExpression ''
"$HOME" for state version < 20.09,
undefined for state version 20.09
'';
@@ -203,12 +205,13 @@ in
home.profileDirectory = mkOption {
type = types.path;
defaultText = "~/.nix-profile";
internal = true;
defaultText = literalExpression ''
"''${home.homeDirectory}/.nix-profile" or
"/etc/profiles/per-user/''${home.username}"
'';
readOnly = true;
description = ''
The profile directory where Home Manager generations are
installed.
The profile directory where Home Manager generations are installed.
'';
};
@@ -220,16 +223,40 @@ in
home.keyboard = mkOption {
type = types.nullOr keyboardSubModule;
default = {};
default = if versionAtLeast stateVersion "21.11" then null else { };
defaultText = literalExpression ''
"{ }" for state version < 21.11,
"null" for state version 21.11
'';
description = ''
Keyboard configuration. Set to <literal>null</literal> to
disable Home Manager keyboard management.
'';
};
home.shellAliases = mkOption {
type = with types; attrsOf str;
default = { };
example = literalExpression ''
{
g = "git";
"..." = "cd ../..";
}
'';
description = ''
An attribute set that maps aliases (the top level attribute names
in this option) to command strings or directly to build outputs.
</para><para>
This option should only be used to manage simple aliases that are
compatible across all shells. If you need to use a shell specific
feature then make sure to use a shell specific option, for example
<xref linkend="opt-programs.bash.shellAliases"/> for Bash.
'';
};
home.sessionVariables = mkOption {
default = {};
type = types.attrs;
type = with types; lazyAttrsOf (oneOf [ str path int float ]);
example = { EDITOR = "emacs"; GS_OPTIONS = "-sPAPERSIZE=a4"; };
description = ''
Environment variables to always set at login.
@@ -264,15 +291,34 @@ in
'';
};
home.sessionVariablesPackage = mkOption {
type = types.package;
internal = true;
description = ''
The package containing the
<filename>hm-session-vars.sh</filename> file.
'';
};
home.sessionPath = mkOption {
type = with types; listOf str;
default = [ ];
example = [
".git/safe/../../bin"
"$HOME/.local/bin"
"\${xdg.configHome}/emacs/bin"
"~/.local/bin"
".git/safe/../../bin"
];
description = "Extra directories to add to <envar>PATH</envar>.";
description = ''
Extra directories to add to <envar>PATH</envar>.
</para><para>
These directories are added to the <envar>PATH</envar> variable in a
double-quoted context, so expressions like <code>$HOME</code> are
expanded by the shell. However, since expressions like <code>~</code> or
<code>*</code> are escaped, they will end up in the <envar>PATH</envar>
verbatim.
'';
};
home.sessionVariablesExtra = mkOption {
@@ -309,19 +355,25 @@ in
home.emptyActivationPath = mkOption {
internal = true;
default = false;
type = types.bool;
default = versionAtLeast stateVersion "22.11";
defaultText = literalExpression ''
false for state version < 22.11,
true for state version 22.11
'';
description = ''
Whether the activation script should start with an empty
<envar>PATH</envar> variable. When <literal>false</literal>
then the user's <envar>PATH</envar> will be used.
<envar>PATH</envar> variable. When <literal>false</literal> then the
user's <envar>PATH</envar> will be accessible in the script. It is
recommended to keep this at <literal>true</literal> to avoid
uncontrolled use of tools found in PATH.
'';
};
home.activation = mkOption {
type = hm.types.dagOf types.str;
default = {};
example = literalExample ''
example = literalExpression ''
{
myActivationAction = lib.hm.dag.entryAfter ["writeBoundary"] '''
$DRY_RUN_CMD ln -s $VERBOSE_ARG \
@@ -346,7 +398,7 @@ in
unexpected state is found. For example, the
<literal>checkLinkTargets</literal> script block checks for
collisions between non-managed files and files defined in
<varname><link linkend="opt-home.file">home.file</link></varname>.
<xref linkend="opt-home.file"/>.
</para><para>
@@ -373,6 +425,16 @@ in
description = "The package containing the complete activation script.";
};
home.extraActivationPath = mkOption {
internal = true;
type = types.listOf types.package;
default = [ ];
description = ''
Extra packages to add to <envar>PATH</envar> within the activation
script.
'';
};
home.extraBuilderCommands = mkOption {
type = types.lines;
default = "";
@@ -390,6 +452,21 @@ in
Extra commands to run in the Home Manager profile builder.
'';
};
home.enableNixpkgsReleaseCheck = mkOption {
type = types.bool;
default = false; # Temporarily disabled until release stabilizes.
description = ''
Determines whether to check for release version mismatch between Home
Manager and Nixpkgs. Using mismatched versions is likely to cause errors
and unexpected behavior. It is therefore highly recommended to use a
release of Home Manager than corresponds with your chosen release of
Nixpkgs.
</para><para>
When this option is enabled and a mismatch is detected then a warning
will be printed when the user configuration is being built.
'';
};
};
config = {
@@ -404,6 +481,31 @@ in
}
];
warnings =
let
hmRelease = fileContents ../.release;
nixpkgsRelease = pkgs.lib.trivial.release;
releaseMismatch =
config.home.enableNixpkgsReleaseCheck
&& hmRelease != nixpkgsRelease;
in
optional releaseMismatch ''
You are using
Home Manager version ${hmRelease} and
Nixpkgs version ${nixpkgsRelease}.
Using mismatched versions is likely to cause errors and unexpected
behavior. It is therefore highly recommended to use a release of Home
Manager than corresponds with your chosen release of Nixpkgs.
If you insist then you can disable this warning by adding
home.enableNixpkgsReleaseCheck = false;
to your configuration.
'';
home.username =
mkIf (versionOlder config.home.stateVersion "20.09")
(mkDefault (builtins.getEnv "USER"));
@@ -415,8 +517,14 @@ in
if config.submoduleSupport.enable
&& config.submoduleSupport.externalPackageInstall
then "/etc/profiles/per-user/${cfg.username}"
else if config.nix.enable && (config.nix.settings.use-xdg-base-directories or false)
then "${config.xdg.stateHome}/nix/profile"
else cfg.homeDirectory + "/.nix-profile";
programs.bash.shellAliases = cfg.shellAliases;
programs.zsh.shellAliases = cfg.shellAliases;
programs.fish.shellAliases = cfg.shellAliases;
home.sessionVariables =
let
maybeSet = n: v: optionalAttrs (v != null) { ${n} = v; };
@@ -445,24 +553,22 @@ in
//
(maybeSet "LC_MEASUREMENT" cfg.language.measurement);
home.packages = [
# Provide a file holding all session variables.
(
pkgs.writeTextFile {
name = "hm-session-vars.sh";
destination = "/etc/profile.d/hm-session-vars.sh";
text = ''
# Only source this once.
if [ -n "$__HM_SESS_VARS_SOURCED" ]; then return; fi
export __HM_SESS_VARS_SOURCED=1
# Provide a file holding all session variables.
home.sessionVariablesPackage = pkgs.writeTextFile {
name = "hm-session-vars.sh";
destination = "/etc/profile.d/hm-session-vars.sh";
text = ''
# Only source this once.
if [ -n "$__HM_SESS_VARS_SOURCED" ]; then return; fi
export __HM_SESS_VARS_SOURCED=1
${config.lib.shell.exportAll cfg.sessionVariables}
'' + lib.optionalString (cfg.sessionPath != [ ]) ''
export PATH="$PATH''${PATH:+:}${concatStringsSep ":" cfg.sessionPath}"
'' + cfg.sessionVariablesExtra;
}
)
];
${config.lib.shell.exportAll cfg.sessionVariables}
'' + lib.optionalString (cfg.sessionPath != [ ]) ''
export PATH="$PATH''${PATH:+:}${concatStringsSep ":" cfg.sessionPath}"
'' + cfg.sessionVariablesExtra;
};
home.packages = [ config.home.sessionVariablesPackage ];
# A dummy entry acting as a boundary between the activation
# script's "check" and the "write" phases.
@@ -487,37 +593,78 @@ 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 $HOME/.nix-profile/manifest.json ]] ; then
nix profile list \
| { grep 'home-manager-path$' || test $? = 1; } \
| 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
cat <<EOF
function nixReplaceProfile() {
local oldNix="$(command -v nix)"
Oops, nix-env failed to install your new Home Manager profile!
nix profile list \
| { grep 'home-manager-path$' || test $? = 1; } \
| cut -d ' ' -f 4 \
| xargs -t $DRY_RUN_CMD nix profile remove $VERBOSE_ARG
Perhaps there is a conflict with a package that was installed using
'nix-env -i'? Try running
$DRY_RUN_CMD $oldNix profile install $1
}
nix-env -q
if [[ -e $HOME/.nix-profile/manifest.json ]] ; then
INSTALL_CMD="nix profile install"
INSTALL_CMD_ACTUAL="nixReplaceProfile"
LIST_CMD="nix profile list"
REMOVE_CMD_SYNTAX='nix profile remove {number | store path}'
else
INSTALL_CMD="nix-env -i"
INSTALL_CMD_ACTUAL="$DRY_RUN_CMD nix-env -i"
LIST_CMD="nix-env -q"
REMOVE_CMD_SYNTAX='nix-env -e {package name}'
fi
and if there is a conflicting package you can remove it with
nix-env -e {package name}
Then try activating your Home Manager configuration again.
EOF
if ! $INSTALL_CMD_ACTUAL ${cfg.path} ; then
echo
_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 -f nixReplaceProfile
unset INSTALL_CMD INSTALL_CMD_ACTUAL LIST_CMD REMOVE_CMD_SYNTAX
''
);
# Text containing Bash commands that will initialize the Home Manager Bash
# library. Most importantly, this will prepare for using translated strings
# in the `hm-modules` text domain.
lib.bash.initHomeManagerLib =
let
domainDir = pkgs.runCommand "hm-modules-messages" {
nativeBuildInputs = [ pkgs.buildPackages.gettext ];
} ''
for path in ${./po}/*.po; do
lang="''${path##*/}"
lang="''${lang%%.*}"
mkdir -p "$out/$lang/LC_MESSAGES"
msgfmt -o "$out/$lang/LC_MESSAGES/hm-modules.mo" "$path"
done
'';
in
''
export TEXTDOMAIN=hm-modules
export TEXTDOMAINDIR=${domainDir}
source ${../lib/bash/home-manager.sh}
'';
home.activationPackage =
let
mkCmd = res: ''
noteEcho Activating ${res.name}
_iNote "Activating %s" "${res.name}"
${res.data}
'';
sortedCommands = hm.dag.topoSort cfg.activation;
@@ -530,15 +677,27 @@ in
# Programs that always should be available on the activation
# script's PATH.
activationBinPaths = lib.makeBinPath [
pkgs.bash
pkgs.coreutils
pkgs.diffutils # For `cmp` and `diff`.
pkgs.findutils
pkgs.gnugrep
pkgs.gnused
pkgs.ncurses # For `tput`.
]
activationBinPaths = lib.makeBinPath (
with pkgs; [
bash
coreutils
diffutils # For `cmp` and `diff`.
findutils
gettext
gnugrep
gnused
ncurses # For `tput`.
]
++ config.home.extraActivationPath
)
+ (
# Add path of the Nix binaries, if a Nix package is configured, then
# use that one, otherwise grab the path of the nix-env tool.
if config.nix.enable && config.nix.package != null then
":${config.nix.package}/bin"
else
":$(${pkgs.coreutils}/bin/dirname $(${pkgs.coreutils}/bin/readlink -m $(type -p nix-env)))"
)
+ optionalString (!cfg.emptyActivationPath) "\${PATH:+:}$PATH";
activationScript = pkgs.writeShellScript "activation-script" ''
@@ -548,11 +707,13 @@ in
cd $HOME
export PATH="${activationBinPaths}"
. ${./lib-bash/color-echo.sh}
${config.lib.bash.initHomeManagerLib}
${builtins.readFile ./lib-bash/activation-init.sh}
checkUsername ${escapeShellArg config.home.username}
checkHomeDirectory ${escapeShellArg config.home.homeDirectory}
${activationCmds}
'';
in
@@ -560,11 +721,12 @@ in
"home-manager-generation"
{
preferLocalBuild = true;
allowSubstitutes = false;
}
''
mkdir -p $out
echo "${config.home.version.full}" > $out/hm-version
cp ${activationScript} $out/activate
mkdir $out/bin

View File

@@ -0,0 +1,102 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.i18n.inputMethod;
gtk2Cache = pkgs.runCommandLocal "gtk2-immodule.cache" {
buildInputs = [ pkgs.gtk2 cfg.package ];
} ''
mkdir -p $out/etc/gtk-2.0/
GTK_PATH=${cfg.package}/lib/gtk-2.0/ \
gtk-query-immodules-2.0 > $out/etc/gtk-2.0/immodules.cache
'';
gtk3Cache = pkgs.runCommandLocal "gtk3-immodule.cache" {
buildInputs = [ pkgs.gtk3 cfg.package ];
} ''
mkdir -p $out/etc/gtk-3.0/
GTK_PATH=${cfg.package}/lib/gtk-3.0/ \
gtk-query-immodules-3.0 > $out/etc/gtk-3.0/immodules.cache
'';
in {
imports = [ ./fcitx5.nix ./hime.nix ./kime.nix ./nabi.nix ./uim.nix ];
options.i18n = {
inputMethod = {
enabled = mkOption {
type = types.nullOr
(types.enum [ "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" ]);
default = null;
example = "fcitx5";
description = ''
Select the enabled input method. Input methods is a software to input
symbols that are not available on standard input devices.
</para><para>
Input methods are specially used to input Chinese, Japanese and Korean
characters.
</para><para>
Currently the following input methods are available in Home Manager:
<variablelist>
<varlistentry>
<term><literal>fcitx5</literal></term>
<listitem><para>
A customizable lightweight input method.
The next generation of fcitx,
addons (including engines, dictionaries, skins) can be added using
<literal>i18n.inputMethod.fcitx5.addons</literal>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>nabi</literal></term>
<listitem><para>
A Korean input method based on XIM. Nabi doesn't support Qt 5.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>uim</literal></term>
<listitem><para>
The universal input method, is a library with a XIM bridge.
uim mainly support Chinese, Japanese and Korean.
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>hime</literal></term>
<listitem><para>An extremely easy-to-use input method framework.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>kime</literal></term>
<listitem><para>A Korean IME.</para></listitem>
</varlistentry>
</variablelist>
'';
};
package = mkOption {
internal = true;
type = types.nullOr types.path;
default = null;
description = ''
The input method method package.
'';
};
};
};
config = mkIf (cfg.enabled != null) {
assertions = [
(hm.assertions.assertPlatform "i18n.inputMethod" pkgs platforms.linux)
{
assertion = cfg.enabled != "fcitx";
message = "fcitx has been removed, please use fcitx5 instead";
}
];
home.packages = [ cfg.package gtk2Cache gtk3Cache ];
};
meta.maintainers = with lib; [ hm.maintainers.kranzes ];
}

View File

@@ -0,0 +1,43 @@
{ config, pkgs, lib, ... }:
with lib;
let
im = config.i18n.inputMethod;
cfg = im.fcitx5;
fcitx5Package = pkgs.fcitx5-with-addons.override { inherit (cfg) addons; };
in {
options = {
i18n.inputMethod.fcitx5 = {
addons = mkOption {
type = with types; listOf package;
default = [ ];
example = literalExpression "with pkgs; [ fcitx5-rime ]";
description = ''
Enabled Fcitx5 addons.
'';
};
};
};
config = mkIf (im.enabled == "fcitx5") {
i18n.inputMethod.package = fcitx5Package;
home.sessionVariables = {
GLFW_IM_MODULE = "ibus"; # IME support in kitty
GTK_IM_MODULE = "fcitx";
QT_IM_MODULE = "fcitx";
XMODIFIERS = "@im=fcitx";
};
systemd.user.services.fcitx5-daemon = {
Unit = {
Description = "Fcitx5 input method editor";
PartOf = [ "graphical-session.target" ];
};
Service.ExecStart = "${fcitx5Package}/bin/fcitx5";
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

View File

@@ -0,0 +1,23 @@
{ config, pkgs, lib, ... }:
with lib; {
config = mkIf (config.i18n.inputMethod.enabled == "hime") {
i18n.inputMethod.package = pkgs.hime;
home.sessionVariables = {
GTK_IM_MODULE = "hime";
QT_IM_MODULE = "hime";
XMODIFIERS = "@im=hime";
};
systemd.user.services.hime-daemon = {
Unit = {
Description = "Hime input method editor";
PartOf = [ "graphical-session.desktop" ];
};
Service.ExecStart = "${pkgs.hime}/bin/hime";
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

View File

@@ -0,0 +1,59 @@
{ config, pkgs, lib, generators, ... }:
with lib;
let
cfg = config.i18n.inputMethod.kime;
yamlFormat = pkgs.formats.yaml { };
in {
options = {
i18n.inputMethod.kime = {
config = mkOption {
type = yamlFormat.type;
default = { };
example = literalExpression ''
{
daemon = {
modules = ["Xim" "Indicator"];
};
indicator = {
icon_color = "White";
};
engine = {
hangul = {
layout = "dubeolsik";
};
};
}
'';
description = ''
kime configuration. Refer to
<link xlink:href="https://github.com/Riey/kime/blob/develop/docs/CONFIGURATION.md"/>
for details on supported values.
'';
};
};
};
config = mkIf (config.i18n.inputMethod.enabled == "kime") {
i18n.inputMethod.package = pkgs.kime;
home.sessionVariables = {
GTK_IM_MODULE = "kime";
QT_IM_MODULE = "kime";
XMODIFIERS = "@im=kime";
};
xdg.configFile."kime/config.yaml".text =
replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.config);
systemd.user.services.kime-daemon = {
Unit = {
Description = "Kime input method editor";
PartOf = [ "graphical-session.target" ];
};
Service.ExecStart = "${pkgs.kime}/bin/kime";
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

View File

@@ -0,0 +1,23 @@
{ config, pkgs, lib, ... }:
with lib; {
config = mkIf (config.i18n.inputMethod.enabled == "nabi") {
i18n.inputMethod.package = pkgs.nabi;
home.sessionVariables = {
GTK_IM_MODULE = "nabi";
QT_IM_MODULE = "nabi";
XMODIFIERS = "@im=nabi";
};
systemd.user.services.nabi-daemon = {
Unit = {
Description = "Nabi input method editor";
PartOf = [ "graphical-session.desktop" ];
};
Service.ExecStart = "${pkgs.nabi}/bin/nabi";
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

View File

@@ -0,0 +1,45 @@
{ config, pkgs, lib, ... }:
with lib;
let cfg = config.i18n.inputMethod.uim;
in {
options = {
i18n.inputMethod.uim = {
toolbar = mkOption {
type = types.enum [ "gtk" "gtk3" "gtk-systray" "gtk3-systray" "qt4" ];
default = "gtk";
example = "gtk-systray";
description = ''
Selected UIM toolbar.
'';
};
};
};
config = mkIf (config.i18n.inputMethod.enabled == "uim") {
i18n.inputMethod.package = pkgs.uim;
home.sessionVariables = {
GTK_IM_MODULE = "uim";
QT_IM_MODULE = "uim";
XMODIFIERS = "@im=uim";
};
systemd.user.services.uim-daemon = {
Unit = {
Description = "Uim input method editor";
PartOf = [ "graphical-session.desktop" ];
};
Service.ExecStart = toString
(pkgs.writeShellScript "start-uim-xim-and-uim-toolbar" ''
${pkgs.uim}/bin/uim-xim &
${pkgs.uim}/bin/uim-toolbar-${cfg.toolbar}
'');
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

215
modules/launchd/default.nix Normal file
View File

@@ -0,0 +1,215 @@
{ 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 /bin/launchctl bootout "$domain/$agentName" || err=$?
if [[ -v DRY_RUN ]]; then
break
fi
if (( err != 9216 )) &&
! /bin/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 /bin/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 /bin/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
'';
})
];
}

902
modules/launchd/launchd.nix Normal file
View File

@@ -0,0 +1,902 @@
# launchd option type from nix-darwin
#
# Original Source:
# https://github.com/LnL7/nix-darwin/blob/14a12e9/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;
{
freeformType = with types; attrsOf anything; # added by Home Manager
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 running
system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration
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 necessarily
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 criteria
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.hostname
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.hostname
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 invocation.
'';
};
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.
'';
};
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.
'';
};
AfterInitialDemand = mkOption {
type = types.nullOr types.bool;
default = null;
};
};
}));
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 dictionary
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 (HardResourceLimits)
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 (HardResourceLimits)
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. Interactive
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. Setting
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 bootstrap_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.
'';
};
};
});
};
LaunchEvents = mkOption {
type = types.nullOr (types.attrs);
default = null;
description = ''
Specifies higher-level event types to be used as launch-on-demand event
sources. Each sub-dictionary defines events for a particular event
subsystem, such as "com.apple.iokit.matching", which can be used to
launch jobs based on the appearance of nodes in the IORegistry. Each
dictionary within the sub-dictionary specifies an event descriptor that
is specified to each event subsystem. With this key, the job promises to
use the xpc_set_event_stream_handler(3) API to consume events. See
xpc_events(3) for more details on event sources.
'';
example = {
"com.apple.iokit.matching" = {
"com.apple.usb.device" = {
IOMatchLaunchStream = true;
IOProviderClass = "IOUSBDevice";
idProduct = "*";
idVendor = "*";
};
};
};
};
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 application
developer to use to differentiate which descriptors correspond to which application level protocols
(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 inherited
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 SockServiceName.
'';
};
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 SockFamily
family also be set, otherwise the results are undefined.
'';
};
};
}));
};
};
config = { };
}

View File

@@ -1,77 +1,149 @@
#!/usr/bin/env bash
# Moves the existing profile from /nix or $XDG_STATE_HOME/home-manager to
# $XDG_STATE_HOME/nix to match changed behavior in Nix 2.14. See
# https://github.com/NixOS/nix/pull/5226.
function migrateProfile() {
declare -r stateHome="${XDG_STATE_HOME:-$HOME/.local/state}"
declare -r userNixStateDir="$stateHome/nix"
declare -r hmStateDir="$stateHome/home-manager"
declare -r globalNixStateDir="${NIX_STATE_DIR:-/nix/var/nix}"
declare -r globalProfilesDir="$globalNixStateDir/profiles/per-user/$USER"
if [[ -e $globalProfilesDir/home-manager ]]; then
declare -r oldProfilesDir="$globalProfilesDir"
elif [[ -e $hmStateDir/profiles/home-manager ]]; then
declare -r oldProfilesDir="$hmStateDir/profiles"
fi
declare -r newProfilesDir="$userNixStateDir/profiles"
if [[ -v oldProfilesDir && -e $newProfilesDir ]]; then
if [[ ! -e $newProfilesDir/home-manager ]]; then
_i 'Migrating profile from %s to %s' "$oldProfilesDir" "$newProfilesDir"
for p in "$oldProfilesDir"/home-manager-*; do
declare name="${p##*/}"
nix-store --realise "$p" --add-root "$newProfilesDir/$name" > /dev/null
done
cp -P "$oldProfilesDir/home-manager" "$newProfilesDir"
fi
rm "$oldProfilesDir/home-manager" "$oldProfilesDir"/home-manager-*
fi
}
function setupVars() {
local nixStateDir="${NIX_STATE_DIR:-/nix/var/nix}"
local profilesPath="$nixStateDir/profiles/per-user/$USER"
local gcPath="$nixStateDir/gcroots/per-user/$USER"
declare -r stateHome="${XDG_STATE_HOME:-$HOME/.local/state}"
declare -r userNixStateDir="$stateHome/nix"
declare -r hmGcrootsDir="$stateHome/home-manager/gcroots"
genProfilePath="$profilesPath/home-manager"
newGenPath="@GENERATION_DIR@";
newGenGcPath="$gcPath/current-home"
declare -r globalNixStateDir="${NIX_STATE_DIR:-/nix/var/nix}"
declare -r globalProfilesDir="$globalNixStateDir/profiles/per-user/$USER"
declare -r globalGcrootsDir="$globalNixStateDir/gcroots/per-user/$USER"
local greatestGenNum
# If the user Nix profiles path exists, then place the HM profile there.
# Otherwise, if the global Nix per-user state directory exists then use
# that. If neither exists, then we give up.
#
# shellcheck disable=2174
if [[ -d $userNixStateDir/profiles ]]; then
declare -r profilesDir="$userNixStateDir/profiles"
elif [[ -d $globalProfilesDir ]]; then
declare -r profilesDir="$globalProfilesDir"
else
_iError 'Could not find suitable profile directory, tried %s and %s' \
"$userNixStateDir/profiles" "$globalProfilesDir" >&2
exit 1
fi
declare -gr genProfilePath="$profilesDir/home-manager"
declare -gr newGenPath="@GENERATION_DIR@";
declare -gr newGenGcPath="$hmGcrootsDir/current-home"
declare -gr legacyGenGcPath="$globalGcrootsDir/current-home"
declare greatestGenNum
greatestGenNum=$( \
nix-env --list-generations --profile "$genProfilePath" \
| tail -1 \
| sed -E 's/ *([[:digit:]]+) .*/\1/')
if [[ -n $greatestGenNum ]] ; then
oldGenNum=$greatestGenNum
newGenNum=$((oldGenNum + 1))
declare -gr oldGenNum=$greatestGenNum
declare -gr newGenNum=$((oldGenNum + 1))
else
newGenNum=1
declare -gr newGenNum=1
fi
if [[ -e $profilesPath/home-manager ]] ; then
oldGenPath="$(readlink -e "$profilesPath/home-manager")"
if [[ -e $genProfilePath ]] ; then
declare -g oldGenPath
oldGenPath="$(readlink -e "$genProfilePath")"
fi
$VERBOSE_ECHO "Sanity checking oldGenNum and oldGenPath"
$VERBOSE_RUN _i "Sanity checking oldGenNum and oldGenPath"
if [[ -v oldGenNum && ! -v oldGenPath
|| ! -v oldGenNum && -v oldGenPath ]]; then
errorEcho "Invalid profile number and current profile values! These"
errorEcho "must be either both empty or both set but are now set to"
errorEcho " '${oldGenNum:-}' and '${oldGenPath:-}'"
errorEcho "If you don't mind losing previous profile generations then"
errorEcho "the easiest solution is probably to run"
errorEcho " rm $profilesPath/home-manager*"
errorEcho " rm $gcPath/current-home"
errorEcho "and trying home-manager switch again. Good luck!"
_i $'The previous generation number and path are in conflict! These\nmust be either both empty or both set but are now set to\n\n \'%s\' and \'%s\'\n\nIf you don\'t mind losing previous profile generations then\nthe easiest solution is probably to run\n\n rm %s/home-manager*\n rm %s/current-home\n\nand trying home-manager switch again. Good luck!' \
"${oldGenNum:-}" "${oldGenPath:-}" \
"$profilesDir" "$hmGcrootsDir"
exit 1
fi
}
function checkUsername() {
local expectedUser="$1"
if [[ "$USER" != "$expectedUser" ]]; then
_iError 'Error: USER is set to "%s" but we expect "%s"' "$USER" "$expectedUser"
exit 1
fi
}
function checkHomeDirectory() {
local expectedHome="$1"
if ! [[ $HOME -ef $expectedHome ]]; then
_iError 'Error: HOME is set to "%s" but we expect "%s"' "$HOME" "$expectedHome"
exit 1
fi
}
if [[ -v VERBOSE ]]; then
export VERBOSE_ECHO=echo
export VERBOSE_ARG="--verbose"
export VERBOSE_RUN=""
else
export VERBOSE_ECHO=true
export VERBOSE_ARG=""
export VERBOSE_RUN=true
fi
echo "Starting home manager activation"
_i "Starting Home Manager activation"
# Verify that we can connect to the Nix store and/or daemon. This will
# also create the necessary directories in profiles and gcroots.
$VERBOSE_ECHO "Sanity checking Nix"
$VERBOSE_RUN _i "Sanity checking Nix"
nix-build --expr '{}' --no-out-link
# Also make sure that the Nix profiles path is created.
nix-env -q > /dev/null 2>&1 || true
migrateProfile
setupVars
if [[ -v DRY_RUN ]] ; then
echo "This is a dry run"
_i "This is a dry run"
export DRY_RUN_CMD=echo
export DRY_RUN_NULL=/dev/stdout
else
$VERBOSE_ECHO "This is a live run"
$VERBOSE_RUN _i "This is a live run"
export DRY_RUN_CMD=""
export DRY_RUN_NULL=/dev/null
fi
if [[ -v VERBOSE ]]; then
echo -n "Using Nix version: "
nix-env --version
_i 'Using Nix version: %s' "$(nix-env --version)"
fi
$VERBOSE_ECHO "Activation variables:"
$VERBOSE_RUN _i "Activation variables:"
if [[ -v oldGenNum ]] ; then
$VERBOSE_ECHO " oldGenNum=$oldGenNum"
$VERBOSE_ECHO " oldGenPath=$oldGenPath"
@@ -81,5 +153,6 @@ else
fi
$VERBOSE_ECHO " newGenPath=$newGenPath"
$VERBOSE_ECHO " newGenNum=$newGenNum"
$VERBOSE_ECHO " newGenGcPath=$newGenGcPath"
$VERBOSE_ECHO " genProfilePath=$genProfilePath"
$VERBOSE_ECHO " newGenGcPath=$newGenGcPath"
$VERBOSE_ECHO " legacyGenGcPath=$legacyGenGcPath"

View File

@@ -1,39 +0,0 @@
# The check for terminal output and color support is heavily inspired
# by https://unix.stackexchange.com/a/10065.
#
# Allow opt out by respecting the `NO_COLOR` environment variable.
function setupColors() {
normalColor=""
errorColor=""
warnColor=""
noteColor=""
# Enable colors for terminals, and allow opting out.
if [[ ! -v NO_COLOR && -t 1 ]]; then
# See if it supports colors.
local ncolors
ncolors=$(tput colors)
if [[ -n "$ncolors" && "$ncolors" -ge 8 ]]; then
normalColor="$(tput sgr0)"
errorColor="$(tput bold)$(tput setaf 1)"
warnColor="$(tput setaf 3)"
noteColor="$(tput bold)$(tput setaf 6)"
fi
fi
}
setupColors
function errorEcho() {
echo "${errorColor}$*${normalColor}"
}
function warnEcho() {
echo "${warnColor}$*${normalColor}"
}
function noteEcho() {
echo "${noteColor}$*${normalColor}"
}

View File

@@ -0,0 +1,14 @@
{ lib }:
{
assertPlatform = module: pkgs: platforms: {
assertion = lib.elem pkgs.stdenv.hostPlatform.system platforms;
message = let
platformsStr = lib.concatStringsSep "\n"
(map (p: " - ${p}") (lib.sort (a: b: a < b) platforms));
in ''
The module ${module} does not support your platform. It only supports
${platformsStr}'';
};
}

5
modules/lib/booleans.nix Normal file
View File

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

View File

@@ -4,40 +4,38 @@
#
# - not specific to strings, i.e., any payload is OK,
#
# - the addition of the function `dagEntryBefore` indicating a
# "wanted by" relationship.
# - the addition of the function `entryBefore` indicating a "wanted
# by" relationship.
{ lib }:
with lib;
rec {
emptyDag = { };
let inherit (lib) all filterAttrs head hm mapAttrs length tail toposort;
in {
empty = { };
isEntry = e: e ? data && e ? after && e ? before;
isDag = dag:
let isEntry = e: (e ? data) && (e ? after) && (e ? before);
in builtins.isAttrs dag && all (x: x) (mapAttrsToList (n: isEntry) dag);
builtins.isAttrs dag && all hm.dag.isEntry (builtins.attrValues dag);
# Takes an attribute set containing entries built by
# dagEntryAnywhere, dagEntryAfter, and dagEntryBefore to a
# topologically sorted list of entries.
# Takes an attribute set containing entries built by entryAnywhere,
# entryAfter, and entryBefore to a topologically sorted list of
# entries.
#
# Internally this function uses the `toposort` function in
# `<nixpkgs/lib/lists.nix>` and its value is accordingly.
#
# Specifically, the result on success is
#
# { result = [{name = ?; data = ?;} …] }
# { result = [ { name = ?; data = ?; } … ] }
#
# For example
#
# nix-repl> dagTopoSort {
# a = dagEntryAnywhere "1";
# b = dagEntryAfter ["a" "c"] "2";
# c = dagEntryBefore ["d"] "3";
# d = dagEntryBefore ["e"] "4";
# e = dagEntryAnywhere "5";
# nix-repl> topoSort {
# a = entryAnywhere "1";
# b = entryAfter [ "a" "c" ] "2";
# c = entryBefore [ "d" ] "3";
# d = entryBefore [ "e" ] "4";
# e = entryAnywhere "5";
# } == {
# result = [
# { data = "1"; name = "a"; }
@@ -52,66 +50,80 @@ rec {
# And the result on error is
#
# {
# cycle = [ {after = ?; name = ?; data = ?} … ];
# loops = [ {after = ?; name = ?; data = ?} … ];
# cycle = [ { after = ?; name = ?; data = ? } … ];
# loops = [ { after = ?; name = ?; data = ? } … ];
# }
#
# For example
#
# nix-repl> dagTopoSort {
# a = dagEntryAnywhere "1";
# b = dagEntryAfter ["a" "c"] "2";
# c = dagEntryAfter ["d"] "3";
# d = dagEntryAfter ["b"] "4";
# e = dagEntryAnywhere "5";
# nix-repl> topoSort {
# a = entryAnywhere "1";
# b = entryAfter [ "a" "c" ] "2";
# c = entryAfter [ "d" ] "3";
# d = entryAfter [ "b" ] "4";
# e = entryAnywhere "5";
# } == {
# cycle = [
# { after = ["a" "c"]; data = "2"; name = "b"; }
# { after = ["d"]; data = "3"; name = "c"; }
# { after = ["b"]; data = "4"; name = "d"; }
# { after = [ "a" "c" ]; data = "2"; name = "b"; }
# { after = [ "d" ]; data = "3"; name = "c"; }
# { after = [ "b" ]; data = "4"; name = "d"; }
# ];
# loops = [
# { after = ["a" "c"]; data = "2"; name = "b"; }
# { after = [ "a" "c" ]; data = "2"; name = "b"; }
# ];
# } == {}
# }
# true
dagTopoSort = dag:
topoSort = dag:
let
dagBefore = dag: name:
mapAttrsToList (n: v: n)
(filterAttrs (n: v: any (a: a == name) v.before) dag);
builtins.attrNames
(filterAttrs (n: v: builtins.elem name v.before) dag);
normalizedDag = mapAttrs (n: v: {
name = n;
data = v.data;
after = v.after ++ dagBefore dag n;
}) dag;
before = a: b: any (c: a.name == c) b.after;
sorted = toposort before (mapAttrsToList (n: v: v) normalizedDag);
before = a: b: builtins.elem a.name b.after;
sorted = toposort before (builtins.attrValues normalizedDag);
in if sorted ? result then {
result = map (v: { inherit (v) name data; }) sorted.result;
} else
sorted;
# Applies a function to each element of the given DAG.
dagMap = f: dag: mapAttrs (n: v: v // { data = f n v.data; }) dag;
map = f: mapAttrs (n: v: v // { data = f n v.data; });
entryBetween = before: after: data: { inherit data before after; };
# Create a DAG entry with no particular dependency information.
dagEntryAnywhere = data: {
inherit data;
before = [ ];
after = [ ];
};
entryAnywhere = hm.dag.entryBetween [ ] [ ];
dagEntryBetween = before: after: data: { inherit data before after; };
entryAfter = hm.dag.entryBetween [ ];
entryBefore = before: hm.dag.entryBetween before [ ];
dagEntryAfter = after: data: {
inherit data after;
before = [ ];
};
dagEntryBefore = before: data: {
inherit data before;
after = [ ];
};
# Given a list of entries, this function places them in order within the DAG.
# Each entry is labeled "${tag}-${entry index}" and other DAG entries can be
# added with 'before' or 'after' referring these indexed entries.
#
# The entries as a whole can be given a relation to other DAG nodes. All
# generated nodes are then placed before or after those dependencies.
entriesBetween = tag:
let
go = i: before: after: entries:
let
name = "${tag}-${toString i}";
i' = i + 1;
in if entries == [ ] then
hm.dag.empty
else if length entries == 1 then {
"${name}" = hm.dag.entryBetween before after (head entries);
} else
{
"${name}" = hm.dag.entryAfter after (head entries);
} // go (i + 1) before [ name ] (tail entries);
in go 0;
entriesAnywhere = tag: hm.dag.entriesBetween tag [ ] [ ];
entriesAfter = tag: hm.dag.entriesBetween tag [ ];
entriesBefore = tag: before: hm.dag.entriesBetween tag before [ ];
}

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