summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi1
-rw-r--r--doc/he-config-bare-bones.scm27
-rw-r--r--gnu/home.scm11
-rw-r--r--guix/scripts/home/import.scm8
-rw-r--r--tests/home-import.scm40
5 files changed, 50 insertions, 37 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 01a2ca19d0..be7472714c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -46272,6 +46272,7 @@ it manually. (@pxref{Configuring the Shell}).
@end quotation
@findex home-environment
+@vindex %base-home-services
@lisp
@include he-config-bare-bones.scm
@end lisp
diff --git a/doc/he-config-bare-bones.scm b/doc/he-config-bare-bones.scm
index f948d85277..844d666110 100644
--- a/doc/he-config-bare-bones.scm
+++ b/doc/he-config-bare-bones.scm
@@ -7,19 +7,20 @@
(home-environment
- (packages (list htop))
- (services
- (list
- (service home-bash-service-type
- (home-bash-configuration
- (guix-defaults? #t)
- (bash-profile (list (plain-file "bash-profile" "\
+ (packages (list htop))
+ (services
+ (append (list
+ (service home-bash-service-type
+ (home-bash-configuration
+ (guix-defaults? #t)
+ (bash-profile (list (plain-file "bash-profile" "\
export HISTFILE=$XDG_CACHE_HOME/.bash_history")))))
- (simple-service 'test-config
- home-xdg-configuration-files-service-type
- (list `("test.conf"
- ,(plain-file "tmp-file.txt"
- "the content of
- ~/.config/test.conf")))))))
+ (simple-service 'test-config
+ home-xdg-configuration-files-service-type
+ (list `("test.conf"
+ ,(plain-file "tmp-file.txt"
+ "the content of
+ ~/.config/test.conf")))))
+ %base-home-services)))
diff --git a/gnu/home.scm b/gnu/home.scm
index b390c8d534..042d2e67de 100644
--- a/gnu/home.scm
+++ b/gnu/home.scm
@@ -23,6 +23,7 @@
#:use-module (gnu home services shells)
#:use-module (gnu home services xdg)
#:use-module (gnu home services fontutils)
+ #:use-module (gnu home services admin)
#:use-module (gnu services)
#:use-module (guix records)
#:use-module (guix diagnostics)
@@ -43,7 +44,9 @@
home-environment-with-provenance
- home-generation-base))
+ home-generation-base
+
+ %base-home-services))
;;; Comment:
;;;
@@ -67,7 +70,7 @@
this-home-environment)))
(services home-environment-user-services
- (default '())
+ (default %base-home-services)
(sanitize validate-service-list))
(location home-environment-location ; <location>
@@ -75,6 +78,10 @@
source-properties->location))
(innate)))
+(define %base-home-services
+ ;; Non-essential but useful services to have by default.
+ '())
+
(define (home-environment-default-essential-services he)
"Return the list of essential services for home environment."
(list
diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index fd263c0699..15b4bc9798 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
-;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;;
@@ -160,7 +160,8 @@ user's files to CONFIGURATION-DIRECTORY; the generated sexp refers to them."
(home-environment
(packages ,packages)
- (services (list ,@services)))))))
+ (services (append (list ,@services)
+ %base-home-services)))))))
(('begin ('specifications->manifest packages))
(match (configurations+modules configuration-directory)
(((services . modules) ...)
@@ -183,7 +184,8 @@ user's files to CONFIGURATION-DIRECTORY; the generated sexp refers to them."
,(comment (G_ "\
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.\n"))
- (services (list ,@services)))))))))
+ (services (append (list ,@services)
+ %base-home-services)))))))))
(define* (import-manifest
manifest destination-directory
diff --git a/tests/home-import.scm b/tests/home-import.scm
index 04b7b76156..57a3d62a72 100644
--- a/tests/home-import.scm
+++ b/tests/home-import.scm
@@ -115,7 +115,7 @@ corresponding file."
('specifications->packages
('list "guile@2.0.9" "gcc:lib" "glibc@2.19")))
('services
- ('list)))))
+ ('append ('list) '%base-home-services)))))
(define-home-environment-matcher match-home-environment-transformations
('begin
@@ -131,7 +131,7 @@ corresponding file."
('list (transform ('specification->package "guile@2.0.9"))
('list ('specification->package "gcc") "lib")
('specification->package "glibc@2.19")))
- ('services ('list)))))
+ ('services ('append ('list) '%base-home-services)))))
(define-home-environment-matcher match-home-environment-no-services-nor-packages
('begin
@@ -143,7 +143,7 @@ corresponding file."
('packages
('specifications->packages ('list)))
('services
- ('list)))))
+ ('append ('list) '%base-home-services)))))
(define-home-environment-matcher match-home-environment-bash-service
('begin
@@ -157,13 +157,14 @@ corresponding file."
('packages
('specifications->packages ('list)))
('services
- ('list ('service
- 'home-bash-service-type
- ('home-bash-configuration
- ('aliases ('quote ()))
- ('bashrc
- ('list ('local-file "/tmp/guix-config/.bashrc"
- "bashrc"))))))))))
+ (append ('list ('service
+ 'home-bash-service-type
+ ('home-bash-configuration
+ ('aliases ('quote ()))
+ ('bashrc
+ ('list ('local-file "/tmp/guix-config/.bashrc"
+ "bashrc"))))))
+ '%base-home-services)))))
(define-home-environment-matcher match-home-environment-bash-service-with-alias
('begin
@@ -177,15 +178,16 @@ corresponding file."
('packages
('specifications->packages ('list)))
('services
- ('list ('service
- 'home-bash-service-type
- ('home-bash-configuration
- ('aliases
- ('quote (("grep" . "grep --exclude-from=\"$HOME/.grep-exclude\"")
- ("ls" . "ls -p"))))
- ('bashrc
- ('list ('local-file "/tmp/guix-config/.bashrc"
- "bashrc"))))))))))
+ ('append ('list ('service
+ 'home-bash-service-type
+ ('home-bash-configuration
+ ('aliases
+ ('quote (("grep" . "grep --exclude-from=\"$HOME/.grep-exclude\"")
+ ("ls" . "ls -p"))))
+ ('bashrc
+ ('list ('local-file "/tmp/guix-config/.bashrc"
+ "bashrc"))))))
+ '%base-home-services)))))
(test-assert "manifest->code: No services"