From 0aa45f18543552f2396414ab130dab40f8969d27 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 13 Dec 2024 23:37:03 +0100 Subject: home: Define ‘%base-home-services’. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/home.scm (%base-home-services): New variable. ()[services]: Change default to ‘%base-home-services’. * guix/scripts/home/import.scm (manifest+configuration-files->code): Use ‘%base-home-services’ by default. * tests/home-import.scm (match-home-environment-no-services) (match-home-environment-transformations) (match-home-environment-no-services-nor-packages) (match-home-environment-bash-service) (match-home-environment-bash-service-with-alias): Adjust accordingly. * doc/he-config-bare-bones.scm: Use ‘%base-home-services’. * doc/guix.texi (Declaring the Home Environment): Add index entry for ‘%base-home-services’. Change-Id: Id95ede62b97a976aad138bfc4b63fc0bdf37c7de --- doc/guix.texi | 1 + doc/he-config-bare-bones.scm | 27 ++++++++++++++------------- gnu/home.scm | 11 +++++++++-- guix/scripts/home/import.scm | 8 +++++--- tests/home-import.scm | 40 +++++++++++++++++++++------------------- 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 ; @@ -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 ;;; Copyright © 2021 Andrew Tropin -;;; Copyright © 2021-2022 Ludovic Courtès +;;; Copyright © 2021-2022, 2024 Ludovic Courtès ;;; Copyright © 2022 Arjan Adriaanse ;;; Copyright © 2022 Antero Mejr ;;; @@ -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" -- cgit v1.2.3