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: I31ef5b0417b319c3f6946d65f83edafb86c8f36bmaster
parent
0685042c46
commit
9c3a8a380b
|
@ -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 New Issue