~ruther/guix-local

0aa45f18543552f2396414ab130dab40f8969d27 — Ludovic Courtès 1 year, 3 months ago f68060a
home: Define ‘%base-home-services’.

* gnu/home.scm (%base-home-services): New variable.
(<home-environment>)[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
M doc/guix.texi => doc/guix.texi +1 -0
@@ 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

M doc/he-config-bare-bones.scm => doc/he-config-bare-bones.scm +14 -13
@@ 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)))


M gnu/home.scm => gnu/home.scm +9 -2
@@ 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

M guix/scripts/home/import.scm => guix/scripts/home/import.scm +5 -3
@@ 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

M tests/home-import.scm => tests/home-import.scm +21 -19
@@ 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"