This allows 'guix publish' to compress and advertise multiple
compression methods from which users can choose.
* guix/scripts/publish.scm (actual-compression): Rename to...
(actual-compressions): ... this. Expect REQUESTED to be a list, and
always return a list.
(%default-options): Remove 'compression.
(store-item->recutils): New procedure.
(narinfo-string): Change #:compression to #:compressions (plural).
Adjust accordingly.
(render-narinfo, render-narinfo/cached): Likewise.
(bake-narinfo+nar): Change #:compression to #:compressions.
[compressed-nar-size]: New procedure.
Call 'compress-nar' for each item returned by 'actual-compressions'.
Create a narinfo for each compression.
(effective-compression): New procedure.
(make-request-handler): Change #:compression to #:compressions.
Use 'effective-compression' to determine the applicable compression.
(guix-publish): Adjust handling of '--compression'.
Print a message for each compression that is enabled.
* tests/publish.scm ("/*.narinfo"): Adjust to new narinfo field
ordering.
("/*.narinfo with properly encoded '+' sign"): Likewise.
("/*.narinfo with lzip + gzip"): New test.
("with cache, lzip + gzip"): New test.
* doc/guix.texi (Invoking guix publish): Document it.
* gnu/service/web.scm (<patchwork-database-configuration>
<patchwork-settings-module>, <patchwork-configuration>): New record types.
(patchwork-virtualhost): New procedure.
(patchwork-service-type): New variable.
* gnu/tests/web.scm (%test-patchwork): New variable.
* doc/guix.text (Web Services): Document it.
Getmail is a mail retriever written in Python, this commit adds a service-type
to run getmail. I'm looking at this, as it's a convinient way of getting
mailing list messages in to Patchwork.
I initially tried putting this in the (gnu services mail) module, but due to
also trying to use the define-configuration pattern, it conflicted with the
dovecot service.
* gnu/services/getmail.scm: New file.
* gnu/local.mk: Add it.
* gnu/tests/mail.scm (%getmail-os, %test-getmail): New variables.
(run-getmail-test): New procedure.
* gnu/services/sddm.scm (sdm-pam-service): Set uid from CONFIG.
(sdm-autologin-pam-service): Set uid from CONFIG.
(sdm-pam-services): Pass CONFIG to 'sddm-pam-service' and
'sddm-autologin-pam-service'.
* doc/guix.texi (X Window): Adjust 'minimum-uid' documentation.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Previously, non-option arguments would be ignored. Now it puts them to
good use.
* guix/scripts/weather.scm (guix-weather)[package-list]: New procedure.
Use it.
* doc/guix.texi (Invoking guix weather): Adjust accordingly.
* guix/scripts/pack.scm (%options, show-help): Add "--root".
(guix-pack): Honor it.
* tests/guix-pack.sh: Test it.
* doc/guix.texi (Invoking guix pack): Document it.
This simplifies use of images created with 'guix system docker-image'.
* gnu/system/vm.scm (system-docker-image)[boot-program]: New variable.
[os]: Add it to the GC roots.
[build]: Pass #:entry-point to 'build-docker-image'.
* gnu/tests/docker.scm (run-docker-system-test): New procedure.
(%test-docker-system): New variable.
* doc/guix.texi (Invoking guix system): Remove GUIX_NEW_SYSTEM hack and
'--entrypoint' from the example. Mention 'docker create', 'docker
start', and 'docker exec'.
* gnu/system/linux-container.scm (container-essential-services): If network is
to be shared with the host, remove network configuration files from etc
service.
(containerized-operating-system): If network is to be shared with the host,
remove nscd service and map host's /var/run/nscd if it exists.
(container-script): If network is to be shared with the host, do not create
network namespace.
* guix/scripts/system.scm (system-derivation-for-action): Add
#:container-shared-network? argument.
(perform-action): Add #:container-shared-network? argument.
(show-help): Add "-N, --network" help information.
(%options): Add network option.
(process-action): Call perform-action with #container-shared-network? argument.
* doc/guix.texi (Invoking guix system): Document the "-N, --network" option.
Co-authored-by: Christopher Baines <mail@cbaines.net>
* gnu/services/mail.scm (dovecot-configuration)[auth-verbose-passwords?]:
Rename to auth-verbose-passwords, and change the type to a string, as this
parameter can take one of three string values.
* doc/guix.texi (Dovecot service): Update the corresponding documentation.
* doc/guix.texi (X Window): Mention 'display' and 'vt' fields of
'slim-configuration' and explain how to use them to add multiple SLiM
services to system services.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* doc/guix.texi (rakudo-build-system, libvirt-configuration,
pam-krb5): Missing period between sentences.
(gnu services vpn): Fix server spelling.
(agetty-configuration): Add missing subject in the sentence.
(udev-service): Fix markup for Scheme procedures.
({gnome,xfce,mate}-desktop-service): Add missing colon after default.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Fixes <https://bugs.gnu.org/35537>.
Reported by Andy Tai <atai@atai.org>.
* doc/guix.texi (Running Guix in a VM): Use @url and provide the actual
URL, without @var{system}.
* guix/scripts/search.scm: New file.
* Makefile.am (MODULES): Add it.
* po/guix/POTFILES.in: Add it.
* tests/guix-package-aliases.sh: Add test.
* doc/guix.texi (Invoking guix package): Document it and use it in a
couple of examples.
* guix/build/syscalls.scm (MS_NOATIME): New variable.
* gnu/build/file-systems.scm (mount-flags->bit-mask): Support it.
* doc/guix.texi (File Systems): Document it and add cross-references to
the relevant documentation.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Since our web site points to "Binary Installation", it's best to have
that note there.
* doc/guix.texi (Binary Installation): Add note about guix-install.sh.
* doc/guix.texi (Running Guix in a VM): Remove mentions of 'lsh-server';
mention 'openssh-service-type' and add a cross-reference.
* gnu/system/examples/vm-image.tmpl (services): Add a commented-out line
for 'openssh-service-type'.
* doc/guix.texi (BASE-URL): New variable.
(Binary Installation, USB Stick and DVD Installation)
(Running Guix in a VM): Use it instead of hard-coded URL.
* gnu/services/shepherd.scm (<shepherd-service>)[one-shot?]: New field.
(shepherd-service-file): Pass #:one-shot? to the <service> constructor.
* doc/guix.texi (Shepherd Services): Document it.
This improves the readability of the boot process, especially when using full
disk encryption where you're required to enter the passphrase at a particular
point.
* gnu/system.scm (<operating-system>)[kernel-arguments]: Change the default to
'("quiet").
* doc/guix.texi (operating-system Reference): Document this change.
* guix/scripts/build.scm (%default-options): Remove 'system'.
(%options) <--system>: Keep previous occurrences of 'system in RESULT.
(options->derivations)[system]: Remove.
[systems, things-to-build]: New variables.
[compute-derivation]: New procedure.
Iterate on all of SYSTEMS to compute the derivations of THINGS-TO-BUILD.
* tests/guix-build.sh: Add test for one and multiple '-s' flags.
* doc/guix.texi (Additional Build Options): Document this behavior.
* doc/guix.texi (Hardware Considerations, Service Types and Services)
(Service Reference, Shepherd Services, Security Updates): Use @code
instead of @var for things that are not meta-syntactic variables.
* gnu/system.scm (<operating-system>)[label]: New field.
(operating-system-default-label): New procedure.
(operating-system-boot-parameters): Use it instead of
'kernel->boot-label'.
* doc/guix.texi (operating-system Reference): Document it.
* guix/scripts/gc.scm (show-help, %options): Add
'--delete-generations'. Change '--delete' shorthand to '-D'.
(delete-old-generations): New procedure.
(guix-gc)[delete-generations]: New procedure.
Call it when ACTION is 'collect-garbage' and OPTS contains
'delete-generations.
* doc/guix.texi (Invoking guix gc): Document it.
* gnu/services/mail.scm (<imap4d-configuration>): New record type.
(imap4d-shepherd-service): New procedure.
(%default-imap4d-config-file, imap4d-service-type): New variables.
* gnu/services/mail.scm (Mail Services): Document it.
* gnu/services/xorg.scm (gdm-service-type)[compose, extend]: New fields.
(set-xorg-configuration): New procedure.
* doc/guix.texi (Keyboard Layout): Use it.
(X Window): Document it.
* gnu/system/examples/desktop.tmpl: Add 'keyboard-layout' fields.
* guix/scripts/environment.scm (launch-environment/container): Add UID
and GID. Use them in PASSWD and GROUPS. Pass them as #:guest-uid and
#:guest-gid to 'call-with-container'.
* tests/guix-environment-container.sh: Test the inner UID.
In '--user' test, replace hard-coded 0 with 1000.
* doc/guix.texi (Invoking guix environment): Adjust accordingly.
* doc/guix.texi (X Window): Document 'gdm-service-type' and
'gdm-configuration'. Take description of '.desktop' files from the
'slim-service-type' description.
* gnu/services/xorg.scm (gdm-service): Remove outdated comment.
This field has become unnecessary with the addition of 'this-package'.
* guix/packages.scm (<package>)[self-native-input?]: Remove.
(package->bag): Adjust accordingly.
* doc/guix.texi (package Reference): Remove 'self-native-input?'.
* gnu/services/desktop.scm (%desktop-services): Replace
SLIM-SERVICE-TYPE instance with an instance of GDM-SERVICE-TYPE.
* doc/guix.texi (Keyboard Layout): Change example to mention
GDM-SERVICE-TYPE.
(X Window): Mention GDM.
(Desktop Services): Adjust references to SLiM.
* gnu/system.scm (<operating-system>)[essential-services]: New field.
(operating-system-directory-base-entries): Remove #:container? keyword
and keep only the not-container branch.
(essential-services): Likewise.
(operating-system-services): Likewise, and call
'operating-system-essential-services' instead of 'essential-services'.
(operating-system-activation-script): Remove #:container?.
(operating-system-boot-script): Likewise.
(operating-system-derivation): Likewise.
* gnu/system/linux-container.scm (container-essential-services): New procedure.
(containerized-operating-system): Use it and set the
'essential-services' field.
(container-script): Remove call to 'operating-system-derivation'.
* gnu/system/vm.scm (system-docker-image): Likewise.
* doc/guix.texi (operating-system Reference): Document 'essential-services'.
* gnu/services/xorg.scm (<xorg-configuration>)[keyboard-layout]: New
field.
(xorg-configuration->file)[input-class-section]: New procedure.
Use it.
* doc/guix.texi (X Window): Document 'keyboard-layout' field.
Co-authored-by: nee <nee-git@hidamari.blue>
* gnu/bootloader/grub.scm (keyboard-layout-file): New procedure.
(grub-configuration-file)[keyboard-layout-file]: New variable.
[builder]: Use it.
* gnu/bootloader.scm (<bootloader-configuration>)[keyboard-layout]: New
field.
* doc/guix.texi (Bootloader Configuration): Document it.
Co-authored-by: nee <nee-git@hidamari.blue>
Suggested by Julien Lepiller.
* guix/scripts/graph.scm (%reverse-bag-node-type): New variable.
(%node-types): Add it.
* tests/graph.scm ("reverse bag DAG"): New test.
* doc/guix.texi (Invoking guix graph): Document it.
Add a service that runs inputattach as a daemon to translate events from
serial ports.
* gnu/services/desktop.scm (<inputattach-configuration>): New record type.
* gnu/services/desktop.scm (inputattach-service-type): New service type.
* doc/guix.texi (Miscellaneous Services): Add inputattach Service
subsubheading.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This allows us to combine several transformations on a given package, in
particular '--with-git-url' and '--with-branch'.
Previously transformations would ignore each other since they would all
take (specification->package SOURCE) as their replacement source,
compare it by identity, which doesn't work if a previous transformation
has already changed SOURCE.
* guix/scripts/build.scm (evaluate-replacement-specs): Adjust to produce
an alist as expected by 'package-input-rewriting/spec', with a package
spec as the first element of each pair.
(evaluate-git-replacement-specs): Likewise.
(transform-package-inputs): Adjust accordingly and use
'package-input-rewriting/spec'.
(transform-package-inputs/graft): Likewise.
(transform-package-source-branch, transform-package-source-commit): Use
'package-input-rewriting/spec'.
(transform-package-source-git-url): Likewise, and adjust the
REPLACEMENTS alist accordingly.
(options->transformation): Iterate over OPTS instead of over
%TRANSFORMATIONS. Invoke transformations one by one.
* tests/scripts-build.scm ("options->transformation, with-input"):
Adjust test to compare packages by name rather than by identity.
("options->transformation, with-git-url + with-branch"): New test.
* guix/scripts/build.scm (%not-equal): New variable.
(evaluate-git-replacement-specs): Use it instead of local variable
'not-equal'.
(transform-package-source-git-url): New procedure.
(%transformations): Add 'with-git-url'.
(%transformation-options, show-transformation-options-help): Add
'--with-git-url'.
* tests/scripts-build.scm ("options->transformation, with-git-url"):
New test.
* gnu/packages/aux-files/run-in-namespace.c (exec_with_proot): New
function.
(main): When 'clone' fails, call 'rm_rf'.
[PROOT_PROGRAM]: When 'clone' fails, call 'exec_with_proot'.
* guix/scripts/pack.scm (wrapped-package): Add #:proot?.
[proot]: New procedure.
[build]: Compile with -DPROOT_PROGRAM when PROOT? is true.
* guix/scripts/pack.scm (%options): Set the 'relocatable?' value to
'proot when "-R" is passed several times.
(guix-pack): Pass #:proot? to 'wrapped-package'.
* tests/guix-pack-relocatable.sh: Use "-RR" on Intel systems that lack
user namespace support.
* doc/guix.texi (Invoking guix pack): Document -RR.
This basically changes (guix build-system go) so that instead of looking
up its dependencies in a list of directories in $GOPATH, all the
Go dependencies are symlinked into a single directory.
Fixes <https://bugs.gnu.org/33620>.
* guix/build/go-build-system.scm (setup-go-environment): New variable.
(setup-environment, install-source): Remove variables.
(unpack): Unpack the source relative to $GOPATH.
(install): Do not install the compiled objects in the 'pkg' directory.
Install the source code in this phase, and only install the source of
the package named by IMPORT-PATH.
* doc/guix.texi (Build Systems): Adjust accordingly.
* gnu/packages/docker.scm (docker): Import (guix build union) on the build side
and adjust to build phase name changes in (guix build-system go).
* gnu/packages/shellutils.scm (direnv): Likewise.
* gnu/packages/databases.scm (mongo-tools)[arguments]:
Set '#:install-source #f'.
* gnu/packages/music.scm (demlo)[arguments]: Move the 'install-scripts'
phase after the 'install' phase.
* doc/guix.texi (Preparing for Installation): Rewrite to specify the two
installation modes.
(Guided Graphical Installation): New node.
(Manual Installation): New node, with the former sections.
(After System Installation): New node.
* doc/images/installer-network.png, doc/images/installer-partitions.png,
doc/images/installer-resume.png: New files.
* doc/local.mk (dist_infoimage_DATA): Add them.
Add a description and default value. Switch the documentation to mention the
service-type and the configuration record, rather than the upower-service
procedure.
* gnu/services/desktop.scm (upower-service-type)[description, default-value]:
Define these fields.
(%desktop-services): Change (upower-service) to (service upower-service-type).
* doc/guix.texi (Desktop Services): Update the upower service documentation.
* guix/scripts/environment.scm (purify-environment): Add 'white-list'
parameter and honor it.
(create-environment): Add #:white-list parameter and honor it.
(launch-environment): Likewise.
(launch-environment/fork): Likewise.
(show-help, %options): Add '--inherit'.
(guix-environment): Define 'white-list' and pass it to
'launch-environment/fork'.
* tests/guix-environment.sh: Test '--inherit'.
* doc/guix.texi (Invoking guix environment): Document it.
Suggested by Hartmut Goebel <h.goebel@crazy-compilers.com>.
* doc/guix.texi (Channels): Clarify how a channel author should structure the
files in their channel's Git repository.
* doc/contributing.texi (Submitting Patches): Document how to enable qemu
binfmt service and how to use it.
Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
* doc/guix.texi (Introduction): Add footnote about the change from
"GuixSD" to "Guix System".
Replace occurrences of "GuixSD" with "Guix System", "Guix", "system", or
other appropriate phrases.
Suggested by Giovanni Biscuolo <g@xelera.eu>.
* doc/guix.texi (Invoking guix system): Move note about /dev/kvm access
to the beginning of the 'vm' action description.
* doc/guix.texi (Preparing for Installation): /boot/efi is arbitrary.
Mention /boot/efi consistently.
(Proceeding with the Installation): Make it explicit that the EFI mount point
must both be mounted and be specified in the system configuration.
* doc/guix.texi (Introduction): Add note about Guix System.
[Managing Software the Guix Way]: New section heading.
[GNU Distribution]: New subsection of "Introduction". Mention "Guix
System" rather than "GuixSD" and update the list of supported systems.
(GNU Distribution): Remove as a chapter.
(System Installation, System Configuration, Documentation)
(Installing Debugging Files, Security Updates, Package Modules)
(Packaging Guidelines, Bootstrapping, Porting): Turn these sections
into chapters.