diff options
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/committer.scm.in | 26 | ||||
-rw-r--r-- | etc/completion/bash/guix | 86 | ||||
-rw-r--r-- | etc/completion/zsh/_guix | 1 | ||||
-rw-r--r-- | etc/disarchive-manifest.scm | 2 | ||||
-rw-r--r-- | etc/git/gitconfig | 5 | ||||
-rw-r--r-- | etc/guix-gc.service.in | 20 | ||||
-rw-r--r-- | etc/guix-gc.timer | 15 | ||||
-rwxr-xr-x | etc/guix-install.sh | 28 | ||||
-rw-r--r-- | etc/news.scm | 377 | ||||
-rw-r--r-- | etc/release-manifest.scm | 9 |
10 files changed, 512 insertions, 57 deletions
diff --git a/etc/committer.scm.in b/etc/committer.scm.in index e81ce16611..1ad83e37d7 100755 --- a/etc/committer.scm.in +++ b/etc/committer.scm.in @@ -5,6 +5,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -288,6 +289,15 @@ ChangeLog entry." (break-string-with-newlines message/f 72) (break-string-with-newlines changelog/f 72)))) +(define (add-copyright-line line) + "Add the copyright line on LINE to the previous commit." + (let ((author (match:substring + (string-match "^\\+;;; Copyright ©[^[:alpha:]]+(.*)$" line) + 1))) + (format + (current-output-port) "Amend and add copyright line for ~a~%" author) + (system* "git" "commit" "--amend" "--no-edit"))) + (define (group-hunks-by-sexp hunks) "Return a list of pairs associating all hunks with the S-expression they are modifying." @@ -370,15 +380,23 @@ modifying." (error "Cannot apply"))) (usleep %delay)) hunks) - (change-commit-message* (hunk-file-name (first hunks)) - old new) - (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-"))) + (define copyright-line + (any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line) + (const line))) + (hunk-diff-lines (first hunks)))) + (cond + (copyright-line + (add-copyright-line copyright-line)) + (else + (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-"))) + (change-commit-message* (hunk-file-name (first hunks)) + old new) (change-commit-message* (hunk-file-name (first hunks)) old new port) (usleep %delay) (unless (eqv? 0 (status:exit-val (close-pipe port))) - (error "Cannot commit"))))) + (error "Cannot commit"))))))) ;; XXX: we recompute the hunks here because previous ;; insertions lead to offsets. (new+old+hunks (diff-info))))))) diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix index a9386e7794..f262d4d95a 100644 --- a/etc/completion/bash/guix +++ b/etc/completion/bash/guix @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> # Copyright © 2021 Tobias Geerinck-Rice <me@tobias.gr> # # This file is part of GNU Guix. @@ -28,11 +28,12 @@ _guix_complete_command () if [ -z "$_guix_commands" ] then # Cache the list of commands to speed things up. - _guix_commands="$(guix --help 2> /dev/null \ + _guix_commands="$(${COMP_WORDS[0]} --help 2> /dev/null \ | grep '^ ' \ | sed '-es/^ *\([a-z-]\+\).*$/\1/g')" fi - COMPREPLY=($(compgen -W "$_guix_commands" -- "$word_at_point")) + + COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point")) } _guix_complete_subcommand () @@ -41,7 +42,7 @@ _guix_complete_subcommand () local subcommands="$(${COMP_WORDS[0]} $command --help 2> /dev/null \ | grep '^ [a-z]' \ | sed -e's/^ \+\([a-z-]\+\).*$/\1/g')" - COMPREPLY=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}")) + COMPREPLY+=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}")) } _guix_complete_available_package () @@ -54,7 +55,7 @@ _guix_complete_available_package () _guix_available_packages="$(${COMP_WORDS[0]} package -A 2> /dev/null \ | cut -f1)" fi - COMPREPLY=($(compgen -W "$_guix_available_packages" -- "$prefix")) + COMPREPLY+=($(compgen -W "$_guix_available_packages" -- "$prefix")) } _guix_complete_installed_package () @@ -64,22 +65,28 @@ _guix_complete_installed_package () local prefix="$1" local packages="$(${COMP_WORDS[0]} package -I "^$prefix" 2> /dev/null \ | cut -f1)" - COMPREPLY=($(compgen -W "$packages" -- "$prefix")) + COMPREPLY+=($(compgen -W "$packages" -- "$prefix")) } _guix_complete_option () { local command="${COMP_WORDS[$1]}" local subcommand="${COMP_WORDS[$(($1 + 1))]}" - if _guix_is_option "$subcommand" + + if [ $1 -le 1 ] + then + command="" + subcommand="" + elif _guix_is_option "$subcommand" then subcommand="" fi + local options="$(${COMP_WORDS[0]} $command $subcommand --help 2> /dev/null \ | grep '^ \+-' \ | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')" compopt -o nospace - COMPREPLY=($(compgen -W "$options" -- "$2")) + COMPREPLY+=($(compgen -W "$options" -- "$2")) } _guix_is_option () @@ -171,10 +178,22 @@ _guix_complete_file () COMPREPLY=() } +_guix_complete_available_package_or_store_file () +{ + _guix_complete_available_package "$@" + + # The current _guix_complete_file implementation doesn't compose (append to + # COMPREPLY), so we suggest file names only if no package names matched. + if [[ -z "$COMPREPLY" ]] + then + _guix_complete_file # TODO: restrict to store files + fi +} + _guix_complete_pid () { local pids="$(cd /proc; echo [0-9]*)" - COMPREPLY=($(compgen -W "$pids" -- "$1")) + COMPREPLY+=($(compgen -W "$pids" -- "$1")) } _guix_complete () @@ -203,7 +222,7 @@ _guix_complete () if [[ "$word" = "--" ]] then case "$command" in - environment) + environment|shell) break ;; time-machine) @@ -216,6 +235,7 @@ _guix_complete () case $COMP_CWORD in $command_index) _guix_complete_command + _guix_complete_option 0 "$word_at_point" ;; *) if [[ "$command" = "package" ]] @@ -237,15 +257,7 @@ _guix_complete () else _guix_complete_available_package "$word_at_point" fi - elif [[ "$command" = "remove" ]] - then - if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p - then - _guix_complete_file - else - _guix_complete_installed_package "$word_at_point" - fi - elif [[ "$command" = "upgrade" ]] + elif [[ "$command" = "upgrade" || "$command" = "remove" ]] then if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p then @@ -259,26 +271,33 @@ _guix_complete () then _guix_complete_file else - _guix_complete_available_package "$word_at_point" + _guix_complete_available_package_or_store_file "$word_at_point" fi - elif [[ "$command" = "environment" ]] + elif [[ "$command" = "environment" || "$command" = "shell" ]] then - if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l - then - _guix_complete_file + if _guix_is_dash_f && [[ "$command" = "shell" ]] + then + # The otherwise identical ‘guix environment’ lacks the ‘-f’ option. + _guix_complete_file + elif _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l + then + _guix_complete_file elif _guix_is_option "$word_at_point" then _guix_complete_option "$command_index" "$word_at_point" else _guix_complete_available_package "$word_at_point" fi - elif [[ "$command" = "download" ]] + elif [[ "$command" = "download" || "$command" = "gc" || "$command" = "hash" ]] + then + _guix_complete_file + elif [[ "$command" = "size" ]] then - _guix_complete_file + _guix_complete_available_package_or_store_file "$word_at_point" elif [[ "$command" = "system" ]] then - case $COMP_CWORD in - 2) _guix_complete_subcommand;; + case $((COMP_CWORD - command_index)) in + 1) _guix_complete_subcommand;; *) _guix_complete_file;; # TODO: restrict to *.scm esac elif [[ "$command" = "pull" ]] @@ -297,22 +316,21 @@ _guix_complete () fi elif [[ "$command" = "container" ]] then - case $COMP_CWORD in - 2) _guix_complete_subcommand;; - 3) _guix_complete_pid "$word_at_point";; + case $((COMP_CWORD - command_index)) in + 1) _guix_complete_subcommand;; + 2) _guix_complete_pid "$word_at_point";; *) _guix_complete_file;; esac elif [[ "$command" = "import" ]] then _guix_complete_subcommand - elif [[ "$command" = "hash" || "$command" = "gc" ]] - then - _guix_complete_file elif [[ "$command" = "weather" ]] then if _guix_is_dash_m then _guix_complete_file + else + _guix_complete_available_package "$word_at_point" fi else _guix_complete_available_package "$word_at_point" diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix index bbc13c6ca1..9b1f16c664 100644 --- a/etc/completion/zsh/_guix +++ b/etc/completion/zsh/_guix @@ -58,6 +58,7 @@ _guix_list_available_packages() if ( [[ ${+_guix_available_packages} -eq 0 ]] || _cache_invalid GUIX_AVAILABLE_PACKAGES ) \ && ! _retrieve_cache GUIX_AVAILABLE_PACKAGES; then _guix_available_packages=(${${(f)"$(guix package -A | cut -f1)"}}) + _guix_available_packages=("${_guix_available_packages[@]// /}") _store_cache GUIX_AVAILABLE_PACKAGES _guix_available_packages fi } diff --git a/etc/disarchive-manifest.scm b/etc/disarchive-manifest.scm index 5cc59f5e2a..60edee8eac 100644 --- a/etc/disarchive-manifest.scm +++ b/etc/disarchive-manifest.scm @@ -108,5 +108,5 @@ an empty directory if ORIGIN could not be disassembled." (manifest (list (manifest-entry (name "disarchive-collection") - (version (length origins)) + (version (number->string (length origins))) (item (disarchive-collection origins)))))) diff --git a/etc/git/gitconfig b/etc/git/gitconfig new file mode 100644 index 0000000000..c9ebdc8fa8 --- /dev/null +++ b/etc/git/gitconfig @@ -0,0 +1,5 @@ +[diff "scheme"] + xfuncname = "^(\\(define.*)$" + +[diff "texinfo"] + xfuncname = "^@node[[:space:]]+([^,]+).*$" diff --git a/etc/guix-gc.service.in b/etc/guix-gc.service.in new file mode 100644 index 0000000000..2f1ca6584b --- /dev/null +++ b/etc/guix-gc.service.in @@ -0,0 +1,20 @@ +# This is a "service unit file" for the systemd init system to perform a +# one-shot 'guix gc' operation. It is meant to be triggered by a timer. +# Drop it in /etc/systemd/system or similar together with 'guix-gc.timer' +# to set it up. + +[Unit] +Description=Discard unused Guix store items + +[Service] +Type=oneshot +# Customize the 'guix gc' arguments to fit your needs. +ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix gc -d 1m -F 10G +PrivateDevices=yes +PrivateNetwork=yes +PrivateUsers=no +ProtectKernelTunables=yes +ProtectKernelModules=yes +ProtectControlGroups=yes +MemoryDenyWriteExecute=yes +SystemCallFilter=@default @file-system @basic-io @system-service diff --git a/etc/guix-gc.timer b/etc/guix-gc.timer new file mode 100644 index 0000000000..192132fbda --- /dev/null +++ b/etc/guix-gc.timer @@ -0,0 +1,15 @@ +# This is a "timer unit file" for the systemd init system to trigger +# 'guix-gc.service' periodically. Drop it in /etc/systemd/system or similar +# together with 'guix-gc.service' to set it up. + +[Unit] +Description=Discard unused Guix store items + +[Timer] +OnCalendar=weekly +AccuracySec=1h +Persistent=true +RandomizedDelaySec=6000 + +[Install] +WantedBy=timers.target diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 4f0f89100d..cd1a1c34c1 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -139,12 +139,12 @@ chk_gpg_keyring() required to verify the Guix binary signature: $gpg_key_id. Would you like me to fetch it for you? (yes/no)"; then wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \ - -qO - | gpg --import - + --no-verbose -O- | gpg --import - else _err "${ERR}Missing OpenPGP public key ($gpg_key_id). Fetch it with this command: - wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | \ + wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \ sudo -i gpg --import -" exit_flag=yes fi @@ -272,7 +272,7 @@ guix_get_bin_list() _debug "--- [ ${FUNCNAME[0]} ] ---" # Filter only version and architecture - bin_ver_ls=("$(wget -qO- "$gnu_url" \ + bin_ver_ls=("$(wget "$gnu_url" --no-verbose -O- \ | sed -n -e 's/.*guix-binary-\([0-9.]*[a-z0-9]*\)\..*.tar.xz.*/\1/p' \ | sort -Vu)") @@ -305,7 +305,7 @@ guix_get_bin() _msg "${INF}Downloading Guix release archive" wget --help | grep -q '\--show-progress' \ - && wget_args=("-q" "--show-progress") + && wget_args=("--no-verbose" "--show-progress") if wget "${wget_args[@]}" -P "$dl_path" \ "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then @@ -345,11 +345,11 @@ sys_create_store() mv "${tmp_path}/gnu" / _msg "${INF}Linking the root user's profile" - mkdir -p "~root/.config/guix" + mkdir -p ~root/.config/guix ln -sf /var/guix/profiles/per-user/root/current-guix \ - "~root/.config/guix/current" + ~root/.config/guix/current - GUIX_PROFILE="~root/.config/guix/current" + GUIX_PROFILE=~root/.config/guix/current # shellcheck disable=SC1090 source "${GUIX_PROFILE}/etc/profile" _msg "${PAS}activated root profile at ${GUIX_PROFILE}" @@ -405,7 +405,7 @@ sys_enable_guix_daemon() case "$INIT_SYS" in upstart) { initctl reload-configuration; - cp "~root/.config/guix/current/lib/upstart/system/guix-daemon.conf" \ + cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \ /etc/init/ && configure_substitute_discovery /etc/init/guix-daemon.conf && start guix-daemon; } && @@ -415,15 +415,15 @@ sys_enable_guix_daemon() { # systemd .mount units must be named after the target directory. # Here we assume a hard-coded name of /gnu/store. # XXX Work around <https://issues.guix.gnu.org/41356> until next release. - if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then - cp "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" \ + if [ -f ~root/.config/guix/current/lib/systemd/system/gnu-store.mount ]; then + cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \ /etc/systemd/system/; chmod 664 /etc/systemd/system/gnu-store.mount; systemctl daemon-reload && systemctl enable gnu-store.mount; fi - cp "~root/.config/guix/current/lib/systemd/system/guix-daemon.service" \ + cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ /etc/systemd/system/; chmod 664 /etc/systemd/system/guix-daemon.service; @@ -447,7 +447,7 @@ sys_enable_guix_daemon() ;; sysv-init) { mkdir -p /etc/init.d; - cp "~root/.config/guix/current/etc/init.d/guix-daemon" \ + cp ~root/.config/guix/current/etc/init.d/guix-daemon \ /etc/init.d/guix-daemon; chmod 775 /etc/init.d/guix-daemon; @@ -460,7 +460,7 @@ sys_enable_guix_daemon() ;; openrc) { mkdir -p /etc/init.d; - cp "~root/.config/guix/current/etc/openrc/guix-daemon" \ + cp ~root/.config/guix/current/etc/openrc/guix-daemon \ /etc/init.d/guix-daemon; chmod 775 /etc/init.d/guix-daemon; @@ -492,7 +492,7 @@ sys_authorize_build_farms() if prompt_yes_no "Permit downloading pre-built package binaries from the \ project's build farm? (yes/no)"; then guix archive --authorize \ - < "~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub" \ + < ~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub \ && _msg "${PAS}Authorized public key for ci.guix.gnu.org" else _msg "${INF}Skipped authorizing build farm public keys" diff --git a/etc/news.scm b/etc/news.scm index b4a08067c5..16e61bbc32 100644 --- a/etc/news.scm +++ b/etc/news.scm @@ -15,6 +15,8 @@ ;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;; Copyright © 2021 Andrew Tropin <andrew@trop.in> +;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;; ;; Copying and distribution of this file, with or without modification, are ;; permitted in any medium without royalty provided the copyright notice and @@ -23,9 +25,355 @@ (channel-news (version 0) + (entry (commit "223f1b1eb3707f1d3ef91200dd616ee6c8b77db0") + (title + (en "Improved static networking support on Guix System") + (de "Bessere Unterstützung für statische Netzwerkanbindungen auf Guix System") + (fr "Meilleure prise en charge de réseaux statiques sur Guix System")) + (body + (en "Support for declarative static networking setup on Guix System +has been improved. It now allows you to list IPv4 and IPv6 addresses in +routes in a flexible way, similar to what you would do with the @command{ip} +command, but in a declarative fashion, as in this example: + +@lisp +;; Static networking for one NIC, IPv4-only. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device \"eno1\") + (value \"10.0.2.15/24\")))) + (routes + (list (network-route + (destination \"default\") + (gateway \"10.0.2.2\")))) + (name-servers '(\"10.0.2.3\"))))) +@end lisp + +The @code{static-networking-service} procedure remains available but is +deprecated. Run @command{info \"(guix) Networking Setup\"} for more +information.") + (de "Die deklarative Konfiguration für statische Netzwerkanbindungen +auf Guix System wurde verbessert. Sie können jetzt die IPv4- und +IPv6-Adressen in Routen flexibel auflisten, ähnlich wie Sie es mit dem +@command{ip}-Befehl tun würden, aber auf deklarative Weise wie in diesem +Beispiel: + +@lisp +;; Statische Netzwerkkonfiguration mit einer Netzwerkkarte, nur IPv4. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device \"eno1\") + (value \"10.0.2.15/24\")))) + (routes + (list (network-route + (destination \"default\") + (gateway \"10.0.2.2\")))) + (name-servers '(\"10.0.2.3\"))))) +@end lisp + +Die Prozedur @code{static-networking-service} gibt es noch, aber sie gilt als +veraltet. Führen Sie @command{info \"(guix) Networking Setup\"} aus für +weitere Informationen.") + (fr "La configuration déclarative et statique du réseau est mieux +prise en charge sur Guix System. Il est maintenant possible d'énumérer des +adresses IPv6 et IPv4 et les chemins avec plus de flexibilité, un peu comme ce +qu'on peut faire avec la commande @command{ip} mais de manière déclarative, +comme dans cet exemple : + +@lisp +;; Réseau statique à une seule interface, IPv4 seulement. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device \"eno1\") + (value \"10.0.2.15/24\")))) + (routes + (list (network-route + (destination \"default\") + (gateway \"10.0.2.2\")))) + (name-servers '(\"10.0.2.3\"))))) +@end lisp + +La procédure @code{static-networking-service} reste disponible mais elle est +obsolète. Lancer @command{info \"(guix) Networking Setup\"} pour plus +d'informations."))) + + (entry (commit "52cb5cf5b852117b5151a67af187d80764849ad3") + (title + (en "Icedove 91: profile folder moved to @file{~/.thunderbird}") + (de "Icedove 91: Profilordner jetzt unter @file{~/.thunderbird}")) + (body + (en "Icedove 91 expects your profile folder under @file{~/.thunderbird}. +You need to manually copy your Icedove profiles from @file{~/.icedove} to +@file{~./thunderbird}. It may be required to start Icedove with +@option{--ProfileManager} for the first time after the migration.") + (de "Icedove 91 erwartet Ihren Profilordner unter @file{~/.thunderbird}. +Dafür müssen sie Ihre Icedove-Profile von @file{~/.icedove} nach +@file{~/.thunderbird} kopieren. Eventuell muss Icedove das erste Mal nach der +Migration mit @option{--ProfileManager} gestartet werden."))) + + (entry (commit "746584e0ca200e7bf51b139ceb36c19ea81d6ef1") + (title + (en "New @command{guix shell} command supersedes @command{guix +environment}") + (de "Neuer Befehl @command{guix shell} löst @command{guix +environment} ab") + (fr "Nouvelle commande @command{guix shell} en remplacement de +@command{guix environment}")) + (body + (en "A new @command{guix shell} command is now available. It is +similar to @command{guix environment}, but with a more convenient interface +(@command{guix environment} is deprecated but will remain available until May, +1st 2023). The main difference compared to @command{guix environment} is that +the \"ad hoc\" mode is the default. Thus, to create an interactive +environment containing Python, NumPy, and SciPy, you would run: + +@example +guix shell python python-numpy python-scipy +@end example + +To get a development environment for, say, Inkscape, pass the @option{-D} +flag: + +@example +guix shell -D inkscape +@end example + +Another difference is that running @command{guix shell} without arguments +loads @file{manifest.scm} or @file{guix.scm} for the current directory or an +ancestor, provided you allowed it. The command maintains a cache to speed up +access to such environments. + +Run @command{info \"(guix) Invoking guix shell\"} for more information.") + (de "Ein neuer Befehl @command{guix shell} ist ab jetzt +verfügbar. Er ähnelt @command{guix environment}, ist aber leichter zu +benutzen (@command{guix environment} gilt als veraltet, bleibt aber +bis zum 1.@: Mai 2023 verfügbar). Der größte Unterschied ist, dass das +Verhalten mit @option{--ad-hoc} nun der Normalfall ist. D.h.@: um eine +interaktive Umgebung mit Python, NumPy und SciPy zu bekommen, lautet +der Befehl: + +@example +guix shell python python-numpy python-scipy +@end example + +Wenn Sie eine Entwicklungsumgebung für, sagen wir, Inkscape schaffen +wollen, übergeben Sie die Option @option{-D}: + +@example +guix shell -D inkscape +@end example + +Noch ein Unterschied ist, dass wenn Sie @command{guix shell} ohne +Argumente ausführen, @file{manifest.scm} oder @file{guix.scm} aus dem +aktuellen Arbeitsverzeichnis oder einem übergeordneten Verzeichnis +geladen wird, wenn Sie die Berechtigung dazu erteilt haben. Für den +Befehl wird ein Zwischenspeicher vorgehalten, damit Sie schneller auf +solche Umgebungen zugreifen können. + +Führen Sie @command{info \"(guix) Invoking guix shell\"} aus, um mehr +zu erfahren.") + (fr "Une nouvelle commande, @command{guix shell}, est maintenant +disponible. Elle est similaire à @command{guix environment}, mais avec une +interface plus pratique (@command{guix environment} est désuet mais restera +disponible jusqu'au 1er mai 2023). La principale différence par rapport à +@command{guix environment} est que le mode par défaut est le mode \"ad hoc\". +Pour créer un environnement interactif contenant Python, NumPy et SciPy, il +faut donc lancer : + +@example +guix shell python python-numpy python-scipy +@end example + +Pour obtenir un environnement de développement pour Inkscape, par exemple, +passer l'option @option{-D} : + +@example +guix shell -D inkscape +@end example + +Une autre différence est qu'en lançant @command{guix shell} sans argument, le +fichier @file{manifest.scm} ou @file{guix.scm} du répertoire courant ou d'un +parent est automatiquement chargé, à condition de l'avoir autorisé. La +commande garde un cache pour accélérer l'accès à ces environnements. + +Lancer @command{info \"(guix.fr) Invoquer guix shell\"} pour plus +d'informations."))) + + (entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e") + (title + (en "Guix Home is a part of GNU Guix") + (de "Guix Home ist jetzt Teil von GNU Guix") + (ru "Guix Home теперь поставляется в составе GNU Guix")) + (body + (en "Guix Home splitted out from rde project and now is a part of +Guix proper. It is available as a @emph{technology preview} and thus subject +to change. + +The new @command{guix home} command with its actions allows users to +manage their packages and configurations (aka. dotfiles) in a declarative way, +similar to how many people manage their system with @command{guix system}. + +Take a look at available actions and arguments: +@example +guix home --help +@end example + +See @command{info \"(guix) Home Configuration\"} for more information.") + (de "Guix Home ist aus dem rde-Projekt ins offizielle Guix übernommen +worden. Es ist als @emph{Technologievorschau} bereits verfügbar, aber die +Schnittstelle kann sich in Zukunft noch ändern. + +Der neue Befehl @command{guix home} ermöglicht es, die Pakete und +Konfigurationsdateien (Dotfiles) für ein Benutzerkonto im deklarativen Stil zu +verwalten. Es ist analog dazu, wie man @command{guix system} benutzen kann, um +sein System zu verwalten. + +Werfen Sie einen Blick auf die verfügbaren Aktionen und Argumente: +@example +guix home --help +@end example + +Führen Sie für mehr Informationen @command{info \"(guix) Home Configuration\"} +aus.") + (ru "Guix Home отделился от проекта rde и теперь является частью +Guix. Новая команда @command{guix home} даёт возможность пользователям +управлять их пакетами и конфигурациями (дотфайлами) для них в декларативном +стиле, аналогично тому, как многие люди управляют своими системами с помощью +@command{guix system}. + +Чтобы получить список доступных действий и аргументов: +@example +guix home --help +@end example + +Смотрите @command{info \"(guix) Home Configuration\"} для получения более +детальных сведений."))) + + (entry (commit "5b32ad4f6f555d305659cee825879df075b06331") + (title + (en "New @option{--max-depth} option for @command{guix graph}") + (de "Neue Option @option{--max-depth} für @command{guix graph}") + (fr "Nouvelle option @option{--max-depth} pour @command{guix graph}")) + (body + (en "The @command{guix graph} command has a new @option{--max-depth} +(or @option{-M}) option, which allows you to restrict a graph to the given +depth---very useful when visualizing large graphs. For example, the command +below displays, using the @code{xdot} package, the dependency graph of +LibreOffice, including only nodes that are at most at distance 2 of +LibreOffice itself: + +@example +guix graph -M 2 libreoffice | xdot - +@end example + +See @command{info \"(guix) Invoking guix graph\"} for more information.") + (de "Der Befehl @command{guix graph} verfügt über eine neue +Befehlszeilenoption @option{--max-depth} (oder @option{-M}), mit der +Sie einen Graphen auf die angegebene Tiefe einschränken. Das ist vor +allem bei großen Graphen nützlich; zum Beispiel zeigt der folgende +Befehl, unter Verwendung des Pakets @code{xdot}, den +Abhängigkeitsgraphen von LibreOffice unter Ausschluss der Knoten, die +eine Distanz größer als 2 von LibreOffice selbst haben: + +@example +guix graph -M 2 libreoffice | xdot - +@end example + +Führen Sie @code{info \"(guix.de) Aufruf von guix graph\"} aus, um mehr zu +erfahren.") + (fr "La commande @command{guix graph} dispose d'une nouvelle option +@option{--max-depth} (ou @option{-M}) pour restreindre la profondeur d'un +graphe---très utile pour visualiser des gros graphes. Par exemple, la +commande ci-dessous affiche, en utilisant @code{xdot}, le graphe de dépendance +de LibreOffice en n'incluant que les nœuds qui sont au plus à distance 2 de +LibreOffice soi-même : + +@example +guix graph -M 2 libreoffice | xdot - +@end example + +Voir @command{info \"(guix.fr) Invoquer guix graph\"} pour plus +d'informations."))) + + (entry (commit "05f44c2d858a1e7b13c90362c35fa86bdc4d5a24") + (title + (en "Channel clones fall back to Software Heritage") + (de "Zum Klonen von Kanälen wird notfalls auf Software Heritage zurückgegriffen") + (fr "Les clones de canaux peuvent recourir à Software Heritage")) + (body + (en "When @command{guix time-machine} or @command{guix pull} fetches +a channel pinned to a specific commit, it now automatically falls back to +cloning it from the Software Heritage archive if the original URL is +unreachable. This contributes to long-term reproducibility. See +@command{info \"(guix) Replicating Guix\"}. + +Automatic fallback also works for other Git clones made on your behalf, such +as when using @option{--with-commit} and related package transformation +options.") + (de "Wenn bei @command{guix time-machine} oder @command{guix +pull} ein bestimmter Commit eines Kanals bezogen werden soll, wird +jetzt für den Fall, dass die ursprüngliche URL unerreichbar ist, +automatisch vom Software-Heritage-Archiv geklont. Das trägt zur +langfristigen Reproduzierbarkeit bei. Siehe @command{info \"(guix.de) +Guix nachbilden\"}. + +Der automatische Rückgriff auf Software Heritage findet auch +Verwendung bei anderen Arten von Git-Klon, die Guix durchführt, z.B.@: +wenn Sie @option{--with-commit} und ähnliche Paketumwandlungsoptionen +einsetzen.") + (fr "Quand la commande @command{guix time-machine} ou @command{guix +pull} récupère un canal fixé à une révision spécifique, elle est maintenant +capable de le cloner depuis l'archive Software Heritage si l'URL initiale +n'est plus disponible. Cela contribue à la reproductibilité à long terme. +Voir @command{info \"(guix.fr) Répliquer Guix\"}. + +Ce recours à Software Heritage fonctionne aussi pour les autres clones Git que +Guix peut faire, comme lorsqu'on utilise @option{--with-commit} et les options +de transformation de paquet similaires."))) + + (entry (commit "db4681a4c17d282a661552f2f57e5c453d02e414") + (title + (en "@code{gdm-service-type} now supports Wayland") + (de "@code{gdm-service-type} bietet nun Unterstützung für Wayland") + (fr "@code{gdm-service-type} prend maintenant en charge Wayland")) + (body + (en "@code{gdm-service-type} has been updated to support being launched +as a Wayland client, and to launch Wayland sessions. The @code{wayland?} boolean +field in @code{gdm-configuration} controls whether GDM starts in Wayland or X +mode. See @command{info \"(guix) X Window\"} for more information. + +Wayland mode for GDM will soon become the default in Guix, so if your +hardware doesn't support Wayland (Nvidia users are the most concerned here), +please consider disabling it now.") + (de "@code{gdm-service-type} wurde um Unterstützung dafür +aktualisiert, als Wayland-Client gestartet zu werden und Wayland-Sitzungen zu +starten. Der Boolesche Wert im Feld @code{wayland?} in +@code{gdm-configuration} bestimmt, ob GDM im Wayland- oder X-Modus gestartet +wird. Siehe @command{info \"(guix.de) X Window\"} für weitere Informationen. + +Bald wird der Wayland-Modus für GDM die Vorgabeeinstellung in Guix werden, +daher sollten Sie, wenn Ihre Hardware kein Wayland unterstützt (Nvidia-Nutzer +betrifft dies am ehesten), ihn jetzt ausdrücklich abschalten.") + (fr "@code{gdm-service-type} a été mis à jour et peut maintenant être +lancé comme client Wayland, ainsi que lancer des sessions Wayland. Le champ +booléen @code{wayland?} de @code{gdm-configuration} contrôle le mode dans lequel +GDM est lancé (Wayland ou X). Pour plus d'informations, voir +@command{info \"(guix) X Window\"} (en anglais). + +GDM sera bientôt lancé en mode Wayland par défaut sur Guix, donc si votre matériel +ne le prend pas en charge (les utilisateur·ices de cartes Nvidia sont les plus +concerné·es), merci de le désactiver dès maintenant."))) + (entry (commit "f23803af2018a148fb088f2516d79c20d6bf95f0") (title - (en "Input labels can now be omitted in package definitions")) + (en "Input labels can now be omitted in package definitions") + (de "Eingaben in Paketdefinitionen brauchen keine Bezeichnungen mehr")) (body (en "If you have written package definitions before, you may know that package inputs required a bit of boilerplate: each input needs to have an @@ -46,7 +394,32 @@ another package in build-side code. Additionally, the new replacing, adding inputs. To ease transition to the ``new style'', a new @command{guix style} command is -provided. Run @command{info \"(guix) Invoking guix style\"} for more info."))) +provided. Run @command{info \"(guix) Invoking guix style\"} for more info.") + (de "Wenn Sie bereits Paketdefinitionen verfasst haben, +erinnern Sie sich vielleicht, dass Sie für Paketeingaben manches +doppelt schreiben mussten: Jede Eingabe wird assoziiert mit einer +Bezeichnung (als Zeichenkette), auf die Sie sich in +„erstellungsseitigem Code“ beziehen können. + +Diese Eingabebezeichnungen sind @emph{nicht} mehr nötig. Sie können +jetzt solchen Code schreiben: + +@lisp +(package + ;; … + (inputs (list libunistring libffi libgc))) +@end lisp + +Achten Sie auf das gegenüber früher vereinfachte @code{inputs}-Feld. +Wenn nötig können Sie in erstellungsseitigem Code G-Ausdrücke (gexps) +benutzen, um andere Pakete zu referenzieren. Des Weiteren erleichtert +das Makro @code{modify-inputs} geläufige Operationen auf Eingaben — +das Löschen, Ersetzen, Hinzufügen von Eingaben. + +Um den Übergang zum „neuen Stil“ zu erleichtern, steht ein neuer +Befehl @command{guix style} zur Verfügung. Führen Sie @command{info +\"(guix) Invoking guix style\"} aus, um mehr Informationen zu +erhalten."))) (entry (commit "82daab42811a2e3c7684ebdf12af75ff0fa67b99") (title diff --git a/etc/release-manifest.scm b/etc/release-manifest.scm index 4375c9bf8b..e7e64efda4 100644 --- a/etc/release-manifest.scm +++ b/etc/release-manifest.scm @@ -125,8 +125,13 @@ TARGET." (define %system-manifest (manifest (append-map (lambda (system) - (map (cut package->manifest-entry* <> system) - %system-packages)) + ;; Some of %SYSTEM-PACKAGES are currently unsupported on some + ;; systems--e.g., GNOME on non-x86_64, due to Rust. Filter + ;; them out. + (filter-map (lambda (package) + (and (supported-package? package system) + (package->manifest-entry* package system))) + %system-packages)) '("x86_64-linux" "i686-linux")))) ;Guix System (define %cross-manifest |