doc: cookbook: Fix overlong lines.
Fixes <https://issues.guix.gnu.org/63680>. Thanks to Nigko Yerden for telling me ExecStart lines can be multi-line <https://lists.gnu.org/archive/html/bug-guix/2024-05/msg00153.html>. * doc/guix-cookbook.texi (System Configuration) [Customizing the Kernel]: Split lines. [Customizing a Window Manager]<StumpWM>: Likewise. [Setting up a bind mount]: Move comments. [Getting substitutes from Tor]: Split line with backslash. [Music Server with Bluetooth Audio]: Likewise. (Advanced package management)[Guix Profiles in Practice] <Basic setup with manifests>: Likewise. <Reproducible profiles>: Likewise. (Environment management)[Guix environment via direnv]: Likewise. (Installing Guix on a Cluster)[Setting Up a Head Node]: On Info and PDF, split ExecStart= command with backslash. Change-Id: I31ef5b0417b319c3f6946d65f83edafb86c8f36b
This commit is contained in:
		
							parent
							
								
									0685042c46
								
							
						
					
					
						commit
						9c3a8a380b
					
				
					 1 changed files with 48 additions and 19 deletions
				
			
		| 
						 | 
					@ -23,7 +23,8 @@ Copyright @copyright{} 2020 Christine Lemmer-Webber@*
 | 
				
			||||||
Copyright @copyright{} 2021 Joshua Branson@*
 | 
					Copyright @copyright{} 2021 Joshua Branson@*
 | 
				
			||||||
Copyright @copyright{} 2022, 2023 Maxim Cournoyer@*
 | 
					Copyright @copyright{} 2022, 2023 Maxim Cournoyer@*
 | 
				
			||||||
Copyright @copyright{} 2023-2024 Ludovic Courtès@*
 | 
					Copyright @copyright{} 2023-2024 Ludovic Courtès@*
 | 
				
			||||||
Copyright @copyright{} 2023 Thomas Ieong
 | 
					Copyright @copyright{} 2023 Thomas Ieong@*
 | 
				
			||||||
 | 
					Copyright @copyright{} 2024 Florian Pelz@*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is granted to copy, distribute and/or modify this document
 | 
					Permission is granted to copy, distribute and/or modify this document
 | 
				
			||||||
under the terms of the GNU Free Documentation License, Version 1.3 or
 | 
					under the terms of the GNU Free Documentation License, Version 1.3 or
 | 
				
			||||||
| 
						 | 
					@ -1693,7 +1694,8 @@ declared like this:
 | 
				
			||||||
  (make-linux-libre* linux-libre-5.15-version
 | 
					  (make-linux-libre* linux-libre-5.15-version
 | 
				
			||||||
                     linux-libre-5.15-gnu-revision
 | 
					                     linux-libre-5.15-gnu-revision
 | 
				
			||||||
                     linux-libre-5.15-source
 | 
					                     linux-libre-5.15-source
 | 
				
			||||||
                     '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
 | 
					                     '("x86_64-linux" "i686-linux" "armhf-linux"
 | 
				
			||||||
 | 
					                       "aarch64-linux" "riscv64-linux")
 | 
				
			||||||
                     #:configuration-file kernel-config))
 | 
					                     #:configuration-file kernel-config))
 | 
				
			||||||
@end lisp
 | 
					@end lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2405,9 +2407,11 @@ Then you need to add the following code to a StumpWM configuration file
 | 
				
			||||||
@lisp
 | 
					@lisp
 | 
				
			||||||
(require :ttf-fonts)
 | 
					(require :ttf-fonts)
 | 
				
			||||||
(setf xft:*font-dirs* '("/run/current-system/profile/share/fonts/"))
 | 
					(setf xft:*font-dirs* '("/run/current-system/profile/share/fonts/"))
 | 
				
			||||||
(setf clx-truetype:+font-cache-filename+ (concat (getenv "HOME") "/.fonts/font-cache.sexp"))
 | 
					(setf clx-truetype:+font-cache-filename+ (concat (getenv "HOME")
 | 
				
			||||||
 | 
					                                                 "/.fonts/font-cache.sexp"))
 | 
				
			||||||
(xft:cache-fonts)
 | 
					(xft:cache-fonts)
 | 
				
			||||||
(set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11))
 | 
					(set-font (make-instance 'xft:font :family "DejaVu Sans Mono"
 | 
				
			||||||
 | 
					                                   :subfamily "Book" :size 11))
 | 
				
			||||||
@end lisp
 | 
					@end lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@node Session lock
 | 
					@node Session lock
 | 
				
			||||||
| 
						 | 
					@ -2963,13 +2967,14 @@ should be defined, so that the bind mount can depend on it.
 | 
				
			||||||
   (file-system
 | 
					   (file-system
 | 
				
			||||||
    (device (uuid "UUID goes here"))
 | 
					    (device (uuid "UUID goes here"))
 | 
				
			||||||
    (mount-point "/path-to-spinning-disk-goes-here")
 | 
					    (mount-point "/path-to-spinning-disk-goes-here")
 | 
				
			||||||
    (type "ext4"))) ;; Make sure to set this to the appropriate type for your drive.
 | 
					    (type "ext4"))) ;Make sure to set this to the appropriate type for your drive.
 | 
				
			||||||
@end lisp
 | 
					@end lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The source folder must also be defined, so that guix will know it's not
 | 
					The source folder must also be defined, so that guix will know it's not
 | 
				
			||||||
a regular block device, but a folder.
 | 
					a regular block device, but a folder.
 | 
				
			||||||
@lisp
 | 
					@lisp
 | 
				
			||||||
(define (%source-directory) "/path-to-spinning-disk-goes-here/tmp") ;; "source-directory" can be named any valid variable name.
 | 
					;; "source-directory" can be named any valid variable name.
 | 
				
			||||||
 | 
					(define (%source-directory) "/path-to-spinning-disk-goes-here/tmp")
 | 
				
			||||||
@end lisp
 | 
					@end lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Finally, inside the @code{file-systems} definition, we must add the
 | 
					Finally, inside the @code{file-systems} definition, we must add the
 | 
				
			||||||
| 
						 | 
					@ -2980,14 +2985,18 @@ mount itself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ...<other drives omitted for clarity>...
 | 
					                ...<other drives omitted for clarity>...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                source-drive ;; Must match the name you gave the source drive in the earlier definition.
 | 
					                ;; Must match the name you gave the source drive in the earlier definition.
 | 
				
			||||||
 | 
					                source-drive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                (file-system
 | 
					                (file-system
 | 
				
			||||||
                 (device (%source-directory)) ;; Make sure "source-directory" matches your earlier definition.
 | 
					                 ;; Make sure "source-directory" matches your earlier definition.
 | 
				
			||||||
 | 
					                 (device (%source-directory))
 | 
				
			||||||
                 (mount-point "/tmp")
 | 
					                 (mount-point "/tmp")
 | 
				
			||||||
                 (type "none") ;; We are mounting a folder, not a partition, so this type needs to be "none"
 | 
					                 ;; We are mounting a folder, not a partition, so this type needs to be "none"
 | 
				
			||||||
 | 
					                 (type "none")
 | 
				
			||||||
                 (flags '(bind-mount))
 | 
					                 (flags '(bind-mount))
 | 
				
			||||||
                 (dependencies (list source-drive)) ;; Ensure "source-drive" matches what you've named the variable for the drive.
 | 
					                 ;; Ensure "source-drive" matches what you've named the variable for the drive.
 | 
				
			||||||
 | 
					                 (dependencies (list source-drive))
 | 
				
			||||||
                 )
 | 
					                 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 ...<other drives omitted for clarity>...
 | 
					                 ...<other drives omitted for clarity>...
 | 
				
			||||||
| 
						 | 
					@ -3036,8 +3045,8 @@ follow:
 | 
				
			||||||
          config => (guix-configuration
 | 
					          config => (guix-configuration
 | 
				
			||||||
                      (inherit config)
 | 
					                      (inherit config)
 | 
				
			||||||
                      ;; ci.guix.gnu.org's Onion service
 | 
					                      ;; ci.guix.gnu.org's Onion service
 | 
				
			||||||
                      (substitute-urls
 | 
					                      (substitute-urls "\
 | 
				
			||||||
                       "@value{SUBSTITUTE-TOR-URL}")
 | 
					@value{SUBSTITUTE-TOR-URL}")
 | 
				
			||||||
                      (http-proxy "http://localhost:9250")))))))
 | 
					                      (http-proxy "http://localhost:9250")))))))
 | 
				
			||||||
@end lisp
 | 
					@end lisp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3279,12 +3288,14 @@ that should accomplish the above-mentioned tasks:
 | 
				
			||||||
              #~(string-append "\
 | 
					              #~(string-append "\
 | 
				
			||||||
# Declare Bluetooth audio device type \"bluealsa\" from bluealsa module
 | 
					# Declare Bluetooth audio device type \"bluealsa\" from bluealsa module
 | 
				
			||||||
pcm_type.bluealsa @{
 | 
					pcm_type.bluealsa @{
 | 
				
			||||||
    lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_pcm_bluealsa.so") "\"
 | 
					    lib \""
 | 
				
			||||||
 | 
					#$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_pcm_bluealsa.so") "\"
 | 
				
			||||||
@}
 | 
					@}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Declare control device type \"bluealsa\" from the same module
 | 
					# Declare control device type \"bluealsa\" from the same module
 | 
				
			||||||
ctl_type.bluealsa @{
 | 
					ctl_type.bluealsa @{
 | 
				
			||||||
    lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_ctl_bluealsa.so") "\"
 | 
					    lib \""
 | 
				
			||||||
 | 
					#$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_ctl_bluealsa.so") "\"
 | 
				
			||||||
@}
 | 
					@}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Define the actual Bluetooth audio device.
 | 
					# Define the actual Bluetooth audio device.
 | 
				
			||||||
| 
						 | 
					@ -4076,7 +4087,8 @@ We can create a manifest specification per profile and install them this way:
 | 
				
			||||||
@example
 | 
					@example
 | 
				
			||||||
GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
 | 
					GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
 | 
				
			||||||
mkdir -p "$GUIX_EXTRA_PROFILES"/my-project # if it does not exist yet
 | 
					mkdir -p "$GUIX_EXTRA_PROFILES"/my-project # if it does not exist yet
 | 
				
			||||||
guix package --manifest=/path/to/guix-my-project-manifest.scm --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
					guix package --manifest=/path/to/guix-my-project-manifest.scm \
 | 
				
			||||||
 | 
					 --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
				
			||||||
@end example
 | 
					@end example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Here we set an arbitrary variable @samp{GUIX_EXTRA_PROFILES} to point to the directory
 | 
					Here we set an arbitrary variable @samp{GUIX_EXTRA_PROFILES} to point to the directory
 | 
				
			||||||
| 
						 | 
					@ -4149,7 +4161,8 @@ for the command line options.
 | 
				
			||||||
To upgrade a profile, simply install the manifest again:
 | 
					To upgrade a profile, simply install the manifest again:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@example
 | 
					@example
 | 
				
			||||||
guix package -m /path/to/guix-my-project-manifest.scm -p "$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
					guix package -m /path/to/guix-my-project-manifest.scm \
 | 
				
			||||||
 | 
					 -p "$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
				
			||||||
@end example
 | 
					@end example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To upgrade all profiles, it's easy enough to loop over them.  For instance,
 | 
					To upgrade all profiles, it's easy enough to loop over them.  For instance,
 | 
				
			||||||
| 
						 | 
					@ -4159,7 +4172,8 @@ of the profile (e.g.@: "project1"), you could do the following in Bourne shell:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@example
 | 
					@example
 | 
				
			||||||
for profile in "$GUIX_EXTRA_PROFILES"/*; do
 | 
					for profile in "$GUIX_EXTRA_PROFILES"/*; do
 | 
				
			||||||
  guix package --profile="$profile" --manifest="$HOME/.guix-manifests/guix-$profile-manifest.scm"
 | 
					  guix package --profile="$profile" \
 | 
				
			||||||
 | 
					   --manifest="$HOME/.guix-manifests/guix-$profile-manifest.scm"
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
@end example
 | 
					@end example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4337,7 +4351,9 @@ mkdir -p "$GUIX_EXTRA"/my-project
 | 
				
			||||||
guix pull --channels=channel-specs.scm --profile="$GUIX_EXTRA/my-project/guix"
 | 
					guix pull --channels=channel-specs.scm --profile="$GUIX_EXTRA/my-project/guix"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkdir -p "$GUIX_EXTRA_PROFILES/my-project"
 | 
					mkdir -p "$GUIX_EXTRA_PROFILES/my-project"
 | 
				
			||||||
"$GUIX_EXTRA"/my-project/guix/bin/guix package --manifest=/path/to/guix-my-project-manifest.scm --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
					"$GUIX_EXTRA"/my-project/guix/bin/guix package \
 | 
				
			||||||
 | 
					 --manifest=/path/to/guix-my-project-manifest.scm \
 | 
				
			||||||
 | 
					 --profile="$GUIX_EXTRA_PROFILES"/my-project/my-project
 | 
				
			||||||
@end example
 | 
					@end example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
It's safe to delete the Guix channel profile you've just installed with the
 | 
					It's safe to delete the Guix channel profile you've just installed with the
 | 
				
			||||||
| 
						 | 
					@ -5071,7 +5087,8 @@ use_guix()
 | 
				
			||||||
    PACKAGES=(help2man guile-sqlite3 guile-gcrypt)
 | 
					    PACKAGES=(help2man guile-sqlite3 guile-gcrypt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Thanks <https://lists.gnu.org/archive/html/guix-devel/2016-09/msg00859.html>
 | 
					    # Thanks <https://lists.gnu.org/archive/html/guix-devel/2016-09/msg00859.html>
 | 
				
			||||||
    eval "$(guix environment --search-paths --root="$gcroot" --pure guix --ad-hoc $@{PACKAGES[@@]@} $@{PACKAGES_MAINTENANCE[@@]@} "$@@")"
 | 
					    eval "$(guix shell --search-paths --root="$gcroot" --pure guix \
 | 
				
			||||||
 | 
					     $@{PACKAGES[@@]@} $@{PACKAGES_MAINTENANCE[@@]@} "$@@")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Predefine configure flags.
 | 
					    # Predefine configure flags.
 | 
				
			||||||
    configure()
 | 
					    configure()
 | 
				
			||||||
| 
						 | 
					@ -5178,9 +5195,21 @@ startup file for @command{guix-daemon},
 | 
				
			||||||
@code{--listen} argument to the @code{ExecStart} line so that it looks
 | 
					@code{--listen} argument to the @code{ExecStart} line so that it looks
 | 
				
			||||||
something like this:
 | 
					something like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@c Since Debian Buster, \ is documented to split lines.
 | 
				
			||||||
 | 
					@c https://manpages.debian.org/buster/systemd/systemd.exec.5.en.html
 | 
				
			||||||
 | 
					@c Use it in PDF and Info versions to avoid cut-off at the page border.
 | 
				
			||||||
 | 
					@ifnothtml
 | 
				
			||||||
 | 
					@example
 | 
				
			||||||
 | 
					ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
 | 
				
			||||||
 | 
					    --build-users-group=guixbuild \
 | 
				
			||||||
 | 
					    --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
 | 
				
			||||||
 | 
					@end example
 | 
				
			||||||
 | 
					@end ifnothtml
 | 
				
			||||||
 | 
					@ifhtml
 | 
				
			||||||
@example
 | 
					@example
 | 
				
			||||||
ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
 | 
					ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
 | 
				
			||||||
@end example
 | 
					@end example
 | 
				
			||||||
 | 
					@end ifhtml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For these changes to take effect, the service needs to be restarted:
 | 
					For these changes to take effect, the service needs to be restarted:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue