Commit graph

2215 commits

Author SHA1 Message Date
Ludovic Courtès
46135ce4ce
packages: Add 'package-with-c-toolchain'.
* guix/build-system.scm (build-system-with-c-toolchain): New procedure.
* guix/packages.scm (package-with-c-toolchain): New procedure.
* tests/packages.scm ("package-with-c-toolchain"): New test.
* doc/guix.texi (package Reference): Document 'package-with-c-toolchain'.
(Build Systems): Mention it.
2020-10-12 18:23:47 +02:00
Maxim Cournoyer
5918cb5341
doc: Sync the client and daemon --rounds options documentation.
Fixes <https://issues.guix.gnu.org/40867>.

* doc/guix.texi (Common Build Options): Suggest using '--keep-failed' to keep
differing build results in the store rather than 'guix archive'.

Reported-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2020-10-09 16:57:14 -04:00
Efraim Flashner
9c1b8390ba
doc: Document missing openssh configure option.
* doc/guix.texi (Networking Services): Document configuration option to
specify the openssh package for the openssh-service-type.
2020-10-09 16:46:24 +03:00
Maxim Cournoyer
efbf5fdd01
offload: Improve load normalization and configurability.
Fixes <https://issues.guix.gnu.org/43773>.

The computed normalized load was previously obtained by dividing the load
average as found in /proc/loadavg by the number of parallel builds defined for
a build machine.

This normalized load didn't allow to compare machines with different number of
cores, as the load average reported by /proc/loadavg can be as high as the
number of cores; thus comparing that value to a fixed threshold of 2.0 would
mean machines with multiple cores were more likely to be flagged as overloaded
compared to single core machines.

This can be fixed by normalizing using the available number of cores instead
of the number of parallel jobs.

* guix/scripts/offload.scm (<build-machine>)[overload-threshold]: New field.
(node-load): Modify to return a normalized load value between 0 and 1, taking
into account the number of cores available.
(normalized-load): Remove procedure.
(report-load): New procedure.
(choose-build-machine): Adjust to use the modified 'node-load' and the new
'report-load' and 'build-machine-overload-threshold' procedures.
(check-machine-status): Adjust.
* doc/guix.texi (Daemon Offload Setup): Document the offload scheduler and the
new 'overload-threshold' field.
2020-10-08 10:57:12 -04:00
Ludovic Courtès
9022861dc0
doc: Clarify that guix-daemon doesn't have to be launched from the checkout.
Suggested by Emmanuel Agullo.

* doc/contributing.texi (Running Guix Before It Is Installed): Move the
"./pre-inst-env guix-daemon" snippet at the bottom.  Make it clear that
it's necessary only when hacking on guix-daemon or when guix-daemon is
not already running.
2020-10-08 12:26:56 +02:00
Ludovic Courtès
6f406e5d15
doc: Developers don't need to run "make install" in Guix.
Suggested by Emmanuel Agullo.

* doc/contributing.texi (Building from Git): Mention that running "make
install" is unnecessary.
2020-10-08 12:26:56 +02:00
Ludovic Courtès
e463ee4c7b
doc: Improve choice of options in service examples.
* doc/guix.texi (Using the Configuration System): In example, set
'substitute-urls' rather than 'use-substitutes?', and set 'auto-login'
for 'mingetty-configuration'.
(Service Types and Services): In example, show 'extra-options' rather
than 'use-substitutes?'.
2020-10-08 12:26:56 +02:00
Danny Milosavljevic
34d1c0a03b
services: dnsmasq: Add TFTP configuration fields.
* gnu/services/dns.scm (<dnsmasq-configuration>): Add TFTP configuration
fields.
(dnsmasq-shepherd-service): Use them.
* doc/guix.texi (DNS Services): Document them.
2020-10-06 08:13:39 +02:00
Christopher Baines
c14714cbbf
services: guix: Add guix-build-coordinator-queue-builds-service-type.
* gnu/services/guix.scm (<guix-build-coordinator-queue-builds-configuration>):
New record type.
(guix-build-coordinator-queue-builds-configuration,
guix-build-coordinator-queue-builds-configuration?,
guix-build-coordinator-queue-builds-configuration-package,
guix-build-coordinator-queue-builds-configuration-user,
guix-build-coordinator-queue-builds-coordinator,
guix-build-coordinator-queue-builds-configuration-systems,
guix-build-coordinator-queue-builds-configuration-system-and-targets,
guix-build-coordinator-queue-builds-configuration-guix-data-service,
guix-build-coordinator-queue-builds-configuration-processed-commits-file,
guix-build-coordinator-queue-builds-shepherd-services,
guix-build-coordinator-queue-builds-activation,
guix-build-coordinator-queue-builds-account): New procedures.
(guix-build-coordinator-queue-builds-service-type): New variable.
* doc/guix.texi (Guix Services): Document it.
2020-10-05 18:10:48 +01:00
Christopher Baines
98ab323a24
services: guix: Add guix-build-coordinator-agent-service-type.
* gnu/services/guix.scm (<guix-build-coordinator-agent-configuration>): New
record type.
(guix-build-coordinator-agent-configuration,
guix-build-coordinator-agent-configuration?,
guix-build-coordinator-agent-configuration-package,
guix-build-coordinator-agent-configuration-user,
guix-build-coordinator-agent-configuration-coordinator,
guix-build-coordinator-agent-configuration-uuid),
guix-build-coordinator-agent-configuration-password,
guix-build-coordinator-agent-configuration-password-file,
guix-build-coordinator-agent-configuration-systems,
guix-build-coordinator-agent-configuration-max-parallel-builds,
guix-build-coordinator-agent-configuration-derivation-substitute-urls,
guix-build-coordinator-agent-configuration-non-derivation-substitute-urls,
guix-build-coordinator-agent-shepherd-services,
guix-build-coordinator-agent-activation,
guix-build-coordinator-agent-account): New procedures.
(guix-build-coordinator-agent-service-type): New variable.
* doc/guix.texi (Guix Services): Document it.
2020-10-05 18:10:48 +01:00
Christopher Baines
15955e9b54
services: guix: Add guix-build-coordinator-service-type.
* gnu/services/guix.scm (<guix-build-coordinator-configuration>): New record
type.
(guix-build-coordinator-configuration, guix-build-coordinator-configuration?,
guix-build-coordinator-configuration-package,
guix-build-coordinator-configuration-user,
guix-build-coordinator-configuration-group,
guix-build-coordinator-configuration-datastore-uri-string,
guix-build-coordinator-configuration-agent-communication-uri-string,
guix-build-coordinator-configuration-client-communication-uri-string,
guix-build-coordinator-configuration-allocation-strategy,
guix-build-coordinator-configuration-hooks,
guix-build-coordinator-configuration-guile,
make-guix-build-coordinator-start-script,
guix-build-coordinator-shepherd-services, guix-build-coordinator-activation,
guix-build-coordinator-account): New procedures.
(guix-build-coordinator-service-type): New variable.
* gnu/tests/guix.scm (%test-guix-build-coordinator): New variable.
* doc/guix.texi (Guix Services): Document it.
2020-10-05 18:10:48 +01:00
Ludovic Courtès
8e1907a724
guix package: Re-apply package transformation when upgrading.
* guix/scripts/package.scm (transaction-upgrade-entry)[upgrade]: Add
'transform' parameter.  Pass PKG through it.  Use
'manifest-entry-with-transformations'.
Call 'options->transformation' to get the transformation procedure.
* tests/guix-package.sh: Add 'guix package -u' test.
* tests/packages.scm ("transaction-upgrade-entry, transformation options preserved"):
New test.
* doc/guix.texi (Invoking guix package): Mention that transformations
are preserved across upgrades.
(Package Transformation Options): Likewise.
2020-10-02 23:28:09 +02:00
Florian Pelz
3c01fcc1bb
doc: Explain why '--without-tests' may fail with modified 'check' phase.
* doc/guix.texi (Package Transformation Options): Explain.
2020-10-02 20:03:55 +00:00
Oleg Pykhalov
da6aec32cf
gnu: Add webssh service.
* gnu/services/ssh.scm:
(<webssh-configuration>): New record type.
(%webssh-configuration-nginx, webssh-service-type): New variables.
(webssh-account, webssh-activation, webssh-shepherd-service): New procedures.
* doc/guix.texi: Document this.
2020-10-01 10:15:29 +03:00
Mathieu Othacehe
313f492657
scripts: system: Add support for image-type.
* guix/scripts/system.scm (list-image-types): New procedure,
(%options): add "image-type" and "list-image-types" options, remove
"file-system-type" option,
(show-help): adapt accordingly,
(%default-options): also adapt, and set the default "image-type" to "raw",
(perform-action): add image-type argument and remove file-system-type argument,
(process-action):  adapt perform-action call,
(system-derivation-for-action): remove base-image
argument, add image-type argument, and use it to create the image passed to
"system-image".
* tests/guix-system.sh: Adapt accordingly and add a test for
"--list-image-types" command.
* doc/guix.texi (Building the Installation Image,
Invoking guix system): Adapt accordingly.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-09-30 10:47:59 +02:00
Ludovic Courtès
37283f9f3e
services: hurd-vm: Initialize the guest's SSH/Guix keys at activation time.
* gnu/services/virtualization.scm (initialize-hurd-vm-substitutes)
(hurd-vm-activation): New procedures.
(hurd-vm-service-type)[extensions]: Add ACTIVATION-SERVICE-TYPE
extension.
* doc/guix.texi (Transparent Emulation with QEMU): Mention GNU/Hurd.
(The Hurd in a Virtual Machine): Explain which files are automatically
installed and mention offloading.
2020-09-29 21:56:27 +02:00
Ludovic Courtès
d367a7f3d0
services: guix: Generate key pair if needed during activation.
* gnu/services/base.scm (guix-activation): Invoke "guix archive
--generate-key".
* doc/guix.texi (Invoking guix archive)
(Invoking guix deploy): Mention that 'guix-service-type' takes care of
generating the key pair.
2020-09-29 21:56:27 +02:00
Tobias Geerinckx-Rice
4c698cd512
services: Add elogind ‘handle-lid-switch-external-power’.
* gnu/services/desktop.scm <elogind-configuration>: Add an
handle-lid-switch-external-power field, mapping to the
HandleLidSwitchExternalPower logind.conf setting.
* doc/guix.texi (Desktop Services): ‘Document’ it.
2020-09-28 16:00:49 +02:00
Ludovic Courtès
09ffacd455
doc: Clarify how to choose a user account shell.
* doc/guix.texi (User Accounts): Add example with custom shell and
custom home directory.  Add examples of shell gexps.
2020-09-28 11:43:47 +02:00
Ludovic Courtès
8e2d5a0c0d
doc: Move channel @cindex within their nodes.
* doc/guix.texi (Channels): Move @cindex at the beginning of the node
they refer to from the end of the previous node.
2020-09-27 22:42:40 +02:00
Ludovic Courtès
3b7bd8cc90
doc: Move "Primary URL" after "Specifying Channel Authorizations".
* doc/guix.texi (Primary URL): Move after "Specifying Channel
Authorizations" since the audience is channel authors who've already
taken care of authorizations.
2020-09-27 22:39:49 +02:00
zimoun
12871cc8db
doc: Promote "Channels" as chapter and reorder.
The sectioning becomes:

1.  Specifying Additional Channels     (was 3.)
2.  Using a Custom Guix Channel        (was 2.)
3.  Replicating Guix                   (was 9.)
4.  Channel Authentication             (was 1.)
5.  Primary URL                        (was 7.)
6.  Creating a Channel                 (reworded)
7.  Package Modules in a Sub-directory (was 5.)
8.  Declaring Channel Dependencies     (was 4.)
9.  Specifying Channel Authorizations  (was 6.)
10. Writing Channel News               (was 8.)

* doc/guix.texi (Channels): Move section to chapter.
Reorder the chapter.
Minor tweaks to keep uniformity.
Update the master menu.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-27 22:35:03 +02:00
zimoun
fa18db48ae
doc: Update the master menu.
* doc/guix.texi: Update the master menu.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-27 22:34:55 +02:00
Ludovic Courtès
8819551c8d
packages: 'package-input-rewriting' has a #:deep? parameter.
* guix/packages.scm (package-input-rewriting): Add #:deep? and pass it
to 'package-mapping'.
[replacement-property]: New variable.
[rewrite]: Check it.
[cut?]: New procedure.
* tests/packages.scm ("package-input-rewriting"): Pass #:deep? #f and
ensure implicit inputs were not rewritten.  Avoid 'eq?' comparisons.
("package-input-rewriting, deep"): New test.
* gnu/packages/guile.scm (package-for-guile-2.0, package-for-guile-3.0):
Pass #:deep? #f.
2020-09-27 21:41:15 +02:00
Ludovic Courtès
2bf6f962b9
packages: 'package-input-rewriting/spec' can rewrite implicit dependencies.
With this change, '--with-input', '--with-graft', etc. also apply to
implicit dependencies.  Thus, it's now possible to do:

  guix build python-itsdangerous --with-input=python-wrapper=python@2

or:

  guix build hello --with-graft=glibc=glibc@2.29

Additionally, before, implicit inputs were not rewritten, which could
lead to duplicates in the output of 'bag-transitive-inputs' (packages
that are not 'eq?' but lead to the same derivation).  This in turn would
lead to unnecessary rebuilds when using '--with-input' & co.  This
change fixes it by ensuring even implicit inputs are rewritten.

Fixes <https://bugs.gnu.org/42156>.

* guix/packages.scm (package-input-rewriting/spec): Add #:deep?
defaulting to #true, and pass it to 'package-mapping'.
[replacement-property]: New variable.
[rewrite]: Check that property and set it on the result of PROC.
[cut?]: New procedure.
* tests/packages.scm ("package-input-rewriting/spec"): Ensure implicit
inputs were unchanged.
("package-input-rewriting/spec, partial match"): Pass #:deep? #f.
("package-input-rewriting/spec, deep")
("package-input-rewriting/spec, no duplicates"): New tests.
(package/inherit): Move before use.
* tests/guix-build.sh: Add tests.
* tests/scripts-build.scm ("options->transformation, with-graft"):
Compare dependencies by package name or derivation file name.
* doc/guix.texi (Defining Packages): Adjust accordingly.
2020-09-27 21:41:08 +02:00
Ludovic Courtès
ff39361c80
packages: 'package-mapping' can recurse on implicit inputs.
* guix/packages.scm (build-system-with-package-mapping): New procedure.
(package-mapping): Add #:deep? and honor it.
* tests/packages.scm ("package-mapping"): Compare the direct inputs of
the bag of P0 and that of P1.
("package-mapping, deep"): New test.
2020-09-27 21:41:05 +02:00
Ludovic Courtès
f458cfbcc5
guix build: Add '--without-tests'.
* guix/scripts/build.scm (transform-package-tests): New procedure.
(%transformations, %transformation-options)
show-transformation-options-help): Add it.
* tests/scripts-build.scm ("options->transformation, without-tests"):
New test.
* doc/guix.texi (Package Transformation Options): Document it.
2020-09-27 21:32:09 +02:00
Stefan
740fd97ebe
doc: Document new bootloader grub-efi-netboot-bootloader.
* doc/guix.texi (Bootloader Configuration)[bootloader]: Add
grub-efi-netboot-bootloader.
[target]: Document TFTP root directory for grub-efi-netboot-bootloader.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2020-09-27 13:39:28 +02:00
Ludovic Courtès
a0d4aa2457
doc: Use @var for meta-syntactic variables.
* doc/guix.texi (Transparent Emulation with QEMU): Use @var instead of
angle brackets for meta-syntactic variables.
2020-09-25 23:26:22 +02:00
Ludovic Courtès
e71d7b5e23
doc: Remove "--hda" from non-volatile childhurd example.
Reported by Andreas Enge.

* doc/guix.texi (Transparent Emulation with QEMU): Remove "--hda" in
'image' example.
2020-09-25 23:26:22 +02:00
Ludovic Courtès
13a2272d1a
doc: Explain how to connect to a childhurd.
* doc/guix.texi (The Hurd in a Virtual Machine): Add instructions for
VNC and SSH access.  Mention childhurd secrets and /etc/childhurd.
2020-09-25 23:26:22 +02:00
André Batista
fd67774d27
doc: Fix outdated info and add missing space.
* doc/guix.texi (Messaging Services): Fix outdated info and add
missing space.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-09-25 14:07:06 +02:00
Marius Bakke
d48b17adb9
services: WPA Supplicant: Conditionally depend on D-Bus.
Fixes <https://bugs.gnu.org/43567>.
Reported by calcium <calcium@disroot.org>.

* gnu/services/networking.scm (<wpa-supplicant-configuration>)[requirement]:
Remove 'dbus-system.
(wpa-supplicant-shepherd-service)[requirement]: Add 'dbus-system when DBUS? is true.
* doc/guix.texi (Networking Services)[wpa-supplicant-service-type]: Adjust
accordingly.
2020-09-24 20:18:20 +02:00
Mathieu Othacehe
80e26d7429
services: cuirass: Add web SQL queries logging support.
* gnu/services/cuirass.scm (<cuirass-configuration>)[web-queries-log-file]:
New field.
(cuirass-shepherd-service): Honor it.
(cuirass-log-rotations): If defined, add the web queries log file to the log
rotation.
2020-09-24 11:28:59 +02:00
Mathieu Othacehe
92e507c963
services: cuirass: Add SQL queries logging support.
* gnu/services/cuirass.scm (<cuirass-configuration>)[queries-log-file]: New
field.
(cuirass-shepherd-service): Honor it.
(cuirass-log-rotations): If defined, add the queries log file to the log
rotation.
2020-09-24 10:47:22 +02:00
Ludovic Courtès
9b65281de5
environment: '--link-profile' uses ~/.guix-profile for environment variables.
Before this patch, we had:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /gnu/store/…-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /gnu/store/…-profile

After this patch:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /home/ludo/.guix-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /home/ludo/.guix-profile

* guix/scripts/environment.scm (launch-environment/container): When
LINK-PROFILE? is true, pass ~/.guix-profile as the second argument to
'launch-environment'.
* tests/guix-environment-container.sh: Adjust test accordingly.
* doc/guix.texi (Invoking guix environment): Update accordingly.
2020-09-21 23:05:38 +02:00
Greg Hogan
aa9ba865de
doc: Fix broken hyperlinks in the contribution instructions.
* doc/contributing.texi (Packaging Guidelines, Submitting Patches):
Change URLs from relative to absolute links.
2020-09-18 14:33:17 -04:00
Florian Pelz
125fc37e5f
doc: Clarify what propagated inputs are.
Fixes <https://bugs.gnu.org/26170>.

* doc/guix.texi (package Reference)[package-propagated-inputs]: Clarify.
2020-09-18 09:03:38 +00:00
Oleg Pykhalov
f6dfe42129
services: docker: Fix service definition.
This commit follows a404716d41.

* gnu/services/docker.scm
(docker-configuration)[docker-cli]: New record field.
(docker-service-type): Use this.
* doc/guix.texi (Miscellaneous Services)[Docker Service]: Document this.
2020-09-15 01:10:55 +03:00
Efraim Flashner
ef7381f463
doc: Fix docker configuration options.
* doc/guix.texi (Docker Service): Fix typo in enable-proxy? default.
2020-09-14 17:21:12 +03:00
Timotej Lazar
11a962e653
services: certbot: Support registration without email.
* gnu/services/certbot.scm (certbot-configuration): Add default for the
email option.
(certbot-command): Pass email for registration only when specified.
* doc/guix.texi (Certificate Services): "mandatory"→"optional" email.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-13 23:34:23 +02:00
Maxim Cournoyer
71e746cc63
doc: Document the use of snippets vs phases.
* doc/contributing.texi (Snippets versus phases): New section.
2020-09-12 02:01:35 -04:00
Tobias Geerinckx-Rice
d9d88c2ff0
Revert "services: dovecot: Use modules via symlink to system profile."
This reverts commit bcfe0f0c1e for now.

It breaks most current use(r)s of the Dovecot service and needs to be
combined with an extra modules configuration field of some kind.

See <https://issues.guix.gnu.org/43347>.
2020-09-11 22:38:08 +02:00
Ludovic Courtès
7a68d3ccad
doc: Distinguish the "nar bundle" format from "nar".
* doc/guix.texi (Invoking guix archive): Introduce the term "nar bundle"
and clarify what the output of "guix archive --export" really is.
* guix/nar.scm (restore-one-item, restore-file-set): Use the term "nar
bundle" in docstrings.
2020-09-11 17:53:58 +02:00
Jelle Licht
bba0533115
services: php-fpm: Add 'php-ini-file' configuration.
* gnu/services/web.scm: (<php-fpm-configuration>)[php-ini-file]: New record field.
(php-fpm-shepherd-service): Use it.
* doc/guix.texi (Web Services): Document it.
2020-09-10 09:46:03 +02:00
Alexey Abramov
bcfe0f0c1e
services: dovecot: Use modules via symlink to system profile.
* gnu/services/mail.scm (%dovecot-activation): Link the location with multiple
plugins (dovecot-pigeonhole, etc), to a place where dovecot can find them.
* gnu/services/mail.scm (dovecot-configuration): Use the symlink.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2020-09-09 20:37:07 +02:00
Joshua Branson
191e79dab2
doc: cookbook: Adding a section "Running Guix on a Linode Server"
* doc/guix-cookbook.texi (Running Guix on a Linode Server):
I added a section that explains how to run guix on a linode server.
Thanks Chris Webber!

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-09 09:28:12 +02:00
Ludovic Courtès
4678767a16
doc: Tweak .texi to avoid po4a-translate infinite loop.
* doc/guix.texi (Requirements): Keep @uref on one line as splitting it
would lead po4a-translate to enter an infinite loop.
2020-09-08 09:12:18 +02:00
Ludovic Courtès
b5eb901ab5
Remove (guix json) and require Guile-JSON 4.3.0+.
This is a followup to 4071879c86.

* guix/json.scm: Remove.
* Makefile.am (MODULES): Adjust accordingly.
* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): Check for 'define-json-mapping'.
* doc/guix.texi (Requirements): Require Guile-JSON 4.3.0+.
* guix/ci.scm, guix/cve.scm, guix/import/cpan.scm,
guix/import/crate.scm, guix/swh.scm: Remove (guix json) import.
* guix/import/gem.scm, guix/import/pypi.scm: Likewise, and import (json).
* guix/self.scm (specification->package): Switch to GUILE-JSON-4.
* guix/git-download.scm (git-fetch): Likewise.
2020-09-08 00:47:35 +02:00
Ludovic Courtès
2fc8337a14
doc: Document 'file-system-label' and 'uuid'.
* doc/guix.texi (File Systems): Document 'file-system-label' and 'uuid'.
2020-09-04 11:29:51 +02:00