Commit Graph

71 Commits

Author SHA1 Message Date
Andrew Tropin
6cdde65bb5
home: shepherd: Add daemonize? option to configuration.
* gnu/home/services/shepherd.scm (home-shepherd-configuration):
Add DAEMONIZE?.
(home-shepherd-configuration-file): Use CONFIG argument instead of two
separate SERVICES and SHEPHERD, respect DAEMONIZE?.
(ensure-shepherd-gexp, launch-shepherd-gexp,
shepherd-xdg-configuration-files): Adjust according to arguments changes in
HOME-SHEPHERD-CONFIGURATION-FILE.
2022-09-14 18:25:11 +03:00
Andrew Tropin
70d58d1556
home: shepherd: Add shepherd/init.scm to XDG_CONFIG_HOME.
* gnu/home/services/shepherd.scm (shepherd-xdg-configuration-files):
New variable.
(home-shepherd-service-type)[extensions]:
Add HOME-XDG-CONFIGURATION-FILES-SERVICE-TYPE extension.
2022-09-12 08:43:08 +03:00
Attila Lendvai
ee08277a70
services: Use the new maybe/unset API.
* gnu/home/services/ssh.scm (serialize-address-family): Use the public API of
the maybe infrastructure.
* gnu/services/file-sharing.scm (serialize-maybe-string): Use maybe-value.
(serialize-maybe-file-object): Use maybe-value-set?.
* gnu/services/getmail.scm (getmail-retriever-configuration): Don't use
internals in unset field declarations.
(getmail-destination-configuration): Ditto.
* gnu/services/messaging.scm (raw-content?): Use maybe-value-set?.
(prosody-configuration): Use %unset-value.
* gnu/services/telephony.scm (jami-shepherd-services): Use maybe-value-set?.
(archive-name->username): Use maybe-value-set?.
* tests/services/configuration.scm ("maybe type, no default"): Use
%unset-value.

Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-08-25 00:10:32 -04:00
Andrew Tropin
ffc391500a
home: Use absolute path for home in activation script.
* gnu/home/services.scm (compute-activation-script): Use absolute path for
home in activation script.
2022-08-19 18:55:40 +03:00
Maxim Cournoyer
d9a0ccf13f
home: ssh: Fix invalid value error for address-family.
Fixes <https://issues.guix.gnu.org/57110>, a regression introduced with
a2b89a3319dc1d621c546855f578acae5baaf6da.

* gnu/home/services/ssh.scm (address-family?): Replace *unspecified* with 'unset.
(serialize-address-family): Adjust accordingly.
(openssh-host): Adjust doc.

Reported-by: Oleg Pykhalov <go.wigust@gmail.com>
2022-08-10 09:10:45 -04:00
Andrew Tropin
3b1510b8b9
home: Use warning instead of display.
* gnu/home/services/xdg.scm (compute-on-first-login-script): Use warning
instead of display.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-08-05 15:28:03 +02:00
Andrew Tropin
b57c656f72
home: xdg: Skip mkdir XDG_RUNTIME_DIR in activation script.
* gnu/home/services/xdg.scm (ensure-xdg-base-dirs-on-activation): Skip mkdir
XDG_RUNTIME_DIR in activation script.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-08-05 15:28:02 +02:00
Andrew Tropin
a80edc0d82
home: xdg: Use a single @ instead of @@.
* gnu/home/services/xdg.scm (ensure-xdg-base-dirs-on-activation,
home-xdg-user-directories-files-service): Use single @ intsead of @@.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-08-05 15:28:02 +02:00
Andrew Tropin
9355d46329
home: Add explicit dependency on env to activation script.
* gnu/home/services.scm (compute-activation-script): Add explicit dependency
on env to activation script.

Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2022-08-02 16:53:29 +08:00
Ludovic Courtès
af4c103595
home: services: environment-variables: Double-quote values.
Fixes <https://issues.guix.gnu.org/54469>.
Reported by Maxime Devos <maximedevos@telenet.be>.

* gnu/home/services.scm (environment-variable-shell-definitions): New
procedure, with code formerly in 'serialize-posix-env-vars'.
(environment-variables->setup-environment-script): Change
"setup-environment" from 'mixed-text-file' to 'computed-file', and use
'environment-variable-shell-definitions'.
* tests/guix-home.sh: Test it.
* gnu/home/services/shells.scm (serialize-posix-env-vars): Delegate to
'environment-variable-shell-definitions'.
2022-07-14 01:05:34 +02:00
Ludovic Courtès
8af749224f
home: services: shells: Double-quote environment variable values.
Fixes <https://issues.guix.gnu.org/56540>.

Until now, environment variable values were emitted unquoted, producing
invalid shell code if the value contains spaces for example.

* gnu/home/services/shells.scm (serialize-posix-env-vars): Define
'shell-quote' procedure in staged code and use it for #$value.
* tests/guix-home.sh: Add test for PS1 variable with a value containing
spaces.
2022-07-14 01:05:34 +02:00
Ludovic Courtès
9e4cbb3076
home: services: shell: Do not use "setup" as a verb.
* gnu/home/services/shells.scm (zsh-file-zprofile)
(add-bash-configuration): Do not use "setup" as a word in generated
files.  End sentences with a period.
2022-07-14 01:05:34 +02:00
Ludovic Courtès
7a6302acb0
home: services: Fix typo.
* gnu/home/services.scm (environment-variables->setup-environment-script):
Fix spelling of 'warn-about-duplicate-definitions'.
2022-07-14 01:05:34 +02:00
Reily Siegel
8d922504b2
gnu: home: Add Guix channels service.
* gnu/home/services/guix.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add guix.scm.
* doc/guix.texi: Add documentation for home-channels-service.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-07-12 01:17:46 +02:00
(
75a520cca6
home: services: shells: Export Fish environment variables.
Variables set in the Fish configuration weren't previously being
exported.

* gnu/home/services/shells.scm (serialize-fish-env-vars): Output the
`set -x` command instead of `set`.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-29 20:40:36 +02:00
Ludovic Courtès
7f208f68de
home: Add OpenSSH service.
* gnu/home/services/ssh.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* po/guix/POTFILES.in: Add it.
* doc/guix.texi (Secure Shell): New section.
2022-06-17 23:39:32 +02:00
Attila Lendvai
8cb1a49a39
services: configuration: Use *unspecified* instead of 'disabled.
Use *unspecified* as a marker for field values that have not been set.

Rationale: 'disabled may easily clash with user values for boolean fields, is
confusing (i.e. its meaning is *not* boolean false, but unspecified) and it
also passes silently through the symbol? predicate of a field of type symbol.

* gnu/services/configuration.scm (configuration-missing-default-value):
Renamed from configuration-no-default-value.
(define-maybe-helper): Use *unspecified* instead of 'disabled, and make
the default value optional.
* gnu/home/services/desktop.scm (home-redshift-configuration):
Change (maybe-xyz 'disabled) to maybe-xyz.
* gnu/services/authentication.scm (nslcd-configuration): Likewise.
* gnu/services/cgit.scm (repository-cgit-configuration): Likewise.
* gnu/services/file-sharing.scm (serialize-maybe-string)
(serialize-maybe-file-object): Use 'unspecified?' instead of (eq? val
'disabled).
* gnu/services/messaging.scm (raw-content?): Likewise.
(ssl-configuration): Change (maybe-xyz 'disabled) to maybe-xyz.
(prosody-configuration): Likewise.
* gnu/services/file-sharing.scm (transmission-daemon-configuration):
Likewise.
* gnu/services/messaging.scm (define-all-configurations):
Use *unspecified* instead of 'disabled'.
* gnu/services/networking.scm (opendht-configuration): Likewise.
* gnu/services/pm.scm (tlp-configuration): Likewise.
* gnu/services/telephony.scm (jami-account): Likewise.
(jami-configuration): Likewise.
* gnu/services/vpn.scm (openvpn-client-configuration): Likewise.
* tests/services/configuration.scm ("maybe type, no default")
("maybe type, with default"): New tests.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-06-15 00:25:21 +02:00
Ludovic Courtès
8eb17cebc1
home: services: Add 'lookup-home-service-types' procedure.
* gnu/home/services.scm (lookup-home-service-types): New procedure.
* tests/home-services.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2022-06-04 12:04:24 +02:00
Bastien Rivière
2c408520f5
home: shells: Migrate fish to xdg-configuration-files.
* gnu/home/services/shells.scm (home-fish-service-type): Use new
xdg-configuration-files-service-type service.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-29 18:07:16 +02:00
Maya
f2eb0d3922
home: services: fish: Fix incorrect ".config" file name.
This is a followup to 5832d9fb601c7d4ec5380654db2b62b906bc658f.

* gnu/home/services/shells.scm (fish-files-service): Change "config/"
to ".config/".

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-29 00:33:45 +02:00
Ludovic Courtès
dd2ab92d9d
home: shepherd: Redirect input port to /dev/null.
Suggested by Aleksandr Vityazev <avityazev@posteo.org>.

* gnu/home/services/shepherd.scm (home-shepherd-configuration-file):
Redirect input port to /dev/null.
2022-04-21 00:02:21 +02:00
Ludovic Courtès
bc867b2ab0
home: shepherd: "shepherd.conf" returns one value.
Fixes <https://issues.guix.gnu.org/54779>.
Reported by Aleksandr Vityazev <avityazev@posteo.org>
and Nicolas Graves <ngraves@ngraves.fr>.

* gnu/home/services/shepherd.scm (home-shepherd-configuration-file):
Return one value.
2022-04-21 00:00:14 +02:00
Andrew Tropin
8805c7eab1
home: shepherd: Prevent launching the second instance.
Fixes <https://issues.guix.gnu.org/54545>.

* gnu/home/services/shepherd.scm (launch-shepherd-gexp): Launch shepherd
if and only if its socket file does not already exist.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-12 23:30:09 +02:00
Andrew Tropin
435e1cef00
home: symlink-manager: Handle non-existing directory during cleanup.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Handle
non-existing directory during cleanup.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11 00:25:33 +02:00
Andrew Tropin
ac8e987ce2
home: shells: Rename zsh related functions.
* gnu/home/services/shells.scm (home-zsh-service-type): Make zsh related
private functions more consistently named.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11 00:25:32 +02:00
Andrew Tropin
d6b9a3faa8
home: symlink-manager: Use no-follow version of file-exists?.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Use
no-follow version of file-exists?.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-10 00:17:40 +02:00
Andrew Tropin
20645d8467
home: Add home-xdg-data-files-service-type.
* gnu/home/services.scm (home-xdg-data-files-service-type): New variable.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Add a proper
handling for XDG_DATA_HOME value.
* gnu/home/services/xdg.scm (home-xdg-mime-applications-service-type): Use
home-xdg-data-files service.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-08 20:13:48 +02:00
Andrew Tropin
5832d9fb60
home: symlink-manager: Remove appending of leading dot.
* gnu/home/services.scm (xdg-configuration-files-directory): Add leading dot.
* gnu/home/services.scm (xdg-configuration-files-service-type): Change name.
* gnu/home/services/shells.scm (add-shell-profile-file,
zsh-get-configuration-files, add-zsh-dot-configuration,
add-zsh-xdg-configuration, add-bash-configuration): Add leading dots.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove
leading dot.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-08 20:13:45 +02:00
Ludovic Courtès
22ab901466
home: shepherd: Default to version 0.9.
* gnu/home/services/shepherd.scm (<home-shepherd-configuration>)[shepherd]:
Default to SHEPHERD-0.9.
(home-shepherd-configuration-file): Use 'start-in-the-background' when
it is defined.
2022-04-07 00:08:56 +02:00
Brian Kubisiak
032f2e261c
home: services: zsh: Fix zshenv creation.
Fixes a regression introduced by
4935501fd9f690d8990bb798237d51702b87fb3f that would skip generating
the user's ~/.config/zsh/.zshenv unless both of zshenv and
environment-variables are set in the configuration.

* gnu/home/services/shells.scm (zsh-get-configuration-files):
Generate ~/.config/zsh/.zshenv when only one of zshenv or
environment-variables is specified.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-03 12:42:18 +02:00
Andrew Tropin
92c2397070
home: symlink-manager: Respect XDG_CONFIG_HOME during activation.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Respect
XDG_CONFIG_HOME during activation.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
3c149de461
home: Migrate fountutils and xdg modules to xdg-configuration-files.
* gnu/home/services/fontutils.scm (home-fontconfig-service-type): Migrate to
xdg-configuration-files.
* gnu/home/services/xdg.scm (home-xdg-user-directories-service-type,
home-xdg-mime-applications-service-type): Migrate to xdg-configuration-files.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
4935501fd9
home: shells: Migrate zsh to xdg-configuration-files.
* gnu/home/services.scm (home-zsh-service-type): Additionally extend
home-xdg-configuration-files-service-type.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
e0089dc0e9
home: Add home-xdg-configuration-files service.
* gnu/home/services.scm (home-xdg-configuration-files): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
d3ef61ab17
home: Explicitly connect home-file and symlink-manager services.
* gnu/home/services.scm (home-files-directory): New variable.
* gnu/home/symlink-manager.scm (update-symlinks-script): Use
home-files-directory variable from (gnu home services).

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
d05954047f
home: symlink-manager: Add missing 'done' word in message.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Add missing
'done' word in message, keep code width below 80 column.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:41 +01:00
Andrew Tropin
9e86e58d6f
home: symlink-manager: Use existing home-directory symbol.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Use
existing home-directory symbol instead of additional getenv call.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-20 19:02:40 +01:00
angryrectangle
3a91c92547
home: services: Fix bash aliases without guix-defaults.
* gnu/home/services/shells.scm: Fix bash aliases not being added if
  guix-defaults? was #f. Also fix inaccuracy in documentation about placement
  of defaults.
* doc/guix.texi (Shells Home Services): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-18 16:03:34 +01:00
Ludovic Courtès
e607c377bb
home: services: Export record type accessors.
* gnu/home/services/shepherd.scm: Export <home-shepherd-configuration>
accessors.  Re-export <shepherd-service> accessors.
2022-03-18 16:03:33 +01:00
Ludovic Courtès
2a55f99aff
home: symlink-manager: Rename "path" to "file" where appropriate.
* gnu/home/services/symlink-manager.scm (update-symlinks-script):
[home-path]: Rename to...
[home-directory]: ... this.  Adjust users.
[backup-dir]: Rename to...
[backup-directory]: ... this.  Adjust user.
[get-target-path]: Rename to...
[target-file]: ... this.  Adjust users.
[get-backup-path]: Remove.
[backup-file]: Inline it.
[cleanup-symlinks](get-source-path): Rename to...
(source-file): ... this.  Adjust users.
Rename 'he-path' to 'home' and 'new-he-path' to 'pivot'.
2022-03-10 11:43:15 +01:00
Ludovic Courtès
1fb6ef0473
home: symlink-manager: 'create-symlinks' uses 'file-system-fold'.
This removes the need for two intermediate representations of the file
tree.

* gnu/home/services/symlink-manager.scm (update-symlinks-script)
[simplify-file-tree, file-tree-traverse]: Remove.
[create-symlinks]: Rewrite in terms of 'file-system-fold'.
2022-03-10 11:43:14 +01:00
Ludovic Courtès
5fa188e92e
home: symlink-manager: 'cleanup-symlinks' uses 'file-system-fold'.
* gnu/home/services/symlink-manager.scm (update-symlinks-script)[cleanup-symlinks]:
Take a home generation and iterate over its config files directly with
'file-system-fold'.  Adjuster caller accordingly.  Remove 'old-tree'.
2022-03-10 11:43:14 +01:00
Ludovic Courtès
a3a76a8384
home: symlink-manager: Avoid extra 'lstat' call.
* gnu/home/services/symlink-manager.scm (update-symlinks-script)[symlink-to-store?]:
Avoid extra 'lstat' call.
2022-03-10 11:43:14 +01:00
Ludovic Courtès
a81bb1e4bb
home: symlink-manager: Remove 'empty-directory?' and avoid TOCTTOU race.
This removes three 'stat' syscalls.

* gnu/home/services/symlink-manager.scm (update-symlinks-script)[empty-directory?]:
Remove.
[cleanup-symlinks]: Replace use of 'file-exists?', 'file-is-directory?',
and 'empty-directory?' by a single 'rmdir' call.
2022-03-10 11:43:14 +01:00
Ludovic Courtès
e1b38046a6
home: symlink-manager: Use 'file-is-directory?'.
* gnu/home/services/symlink-manager.scm (update-symlinks-script)[directory?]:
Remove.
Change callers to use 'file-is-directory?' instead.
2022-03-10 11:43:13 +01:00
Ludovic Courtès
cf803b71c7
home: symlink-manager: Use 'for-each' when used for effects.
* gnu/home/services/symlink-manager.scm (update-symlinks-script)[cleanup-symlinks]
[create-symlinks]: Use 'for-each' instead of 'map'.
2022-03-10 11:43:13 +01:00
Ludovic Courtès
7a8856f540
home: symlink-manager: Move helper procedures as top-level defines.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove
'config-home', which is unused.  Move 'home-path', 'backup-dir',
'get-target-path', 'get-backup-path', 'directory?', 'empty-directory?',
'symlink-to-store?', and 'backup-file' to the top level.  Move
'create-symlinks' and 'cleanup-symlinks' to the top level as well, and
add parameters.  Adjust callers.
2022-03-10 11:43:13 +01:00
Ludovic Courtès
66bf60a4cd
home: symlink-manager: Clarify module imports.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Wrap
body in 'with-imported-modules'.  Move (guix build utils) import to the
top.  Move #$%initialize-gettext after definitions.
2022-03-10 11:43:13 +01:00
Andrew Tropin
60c45fd9fd
home: xdg: Fix xdg-desktop-entry config field serialization.
[[PGP Signed Part:No public key for 2208D20958C1DEB0 created at 2022-03-01T06:09:14+0100 using RSA]]

* gnu/home/services/xdg.scm (serialize-xdg-desktop-entry): Use append instead
of identity to allow multiple alist values.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-01 12:33:07 +01:00
Ludovic Courtès
39e8025d3b
home: Add redshift service.
* gnu/home/services/desktop.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (Desktop Home Services): New node.
2022-02-07 00:05:59 +01:00