Commit graph

2993 commits

Author SHA1 Message Date
Ludovic Courtès
11a454f9da
gexp: #:references-graphs accepts and honors <gexp-input> records.
* guix/gexp.scm (lower-reference-graphs)[tuple->gexp-input]: Add
‘gexp-input?’ case.
(gexp->derivation): Update docstring.
* doc/guix.texi (G-Expressions): Adjust accordingly.
* tests/gexp.scm ("references-file, non-default output"): New test.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I595cb75da0867ab8ab44552887dc06ed1d23315e
2023-12-22 00:31:40 +01:00
Ludovic Courtès
d9190abbd2
gexp: Add compiler for <gexp-input>.
* guix/gexp.scm (gexp-input-compiler): New procedure.
* tests/gexp.scm ("gexp references non-existent output")
("gexp-input, as first-class input"): New tests.
* doc/guix.texi (G-Expressions): Document it.

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I95b58d6e4d77a54364026b4324fbb00125a9402e
2023-12-22 00:31:40 +01:00
Nicolas Graves
9dab758791
build-system: Add ‘composer-build-system’.
* guix/build-system/composer.scm: New file.
* guix/build/composer-build-system.scm: New file.
* gnu/packages/aux-files/findclass.php: New file.
* Makefile.am: Add them.
* doc/guix.texi (Build Systems): Document it.

Co-authored-by: Julien Lepiller <julien@lepiller.eu>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: Ie6a05b42ff04d3ad774a0a20278a77e4820bb8f6
2023-12-18 23:16:55 +01:00
Nicolas Graves
b7e3945283
guix: import: Add composer importer.
* guix/import/composer.scm: New file.
* guix/scripts/import/composer.scm: New file.
* guix/tests/composer.scm: New file.
* Makefile.am: Add them.
* guix/scripts/import.scm: Add composer importer.
* doc/guix.texi (Invoking guix import): Mention it.

Change-Id: I44a89b8cc80ef5b4a3cd15e8fbba4a18c1cea0b1

Co-authored-by: Julien Lepiller <julien@lepiller.eu>
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-12-18 23:16:28 +01:00
Efraim Flashner
f8c93ea712
doc: Document the rust-target platform field.
* doc/guix.texi (platform Reference): Document the rust-target platform
field.

Change-Id: I31642bbc64f6d4f2bfeed4a4000f95f853580444
2023-12-18 08:14:16 +02:00
Thomas Ieong
b681e339fa
services: Add rspamd-service-type.
* gnu/services/mail.scm (rspamd-service-type): New variable.
* gnu/tests/mail.scm (%test-rspamd): New variable.
* doc/guix.texi: Document it.

Co-authored-by: Saku Laesvuori <saku@laesvuori.fi>
Change-Id: I7196643f087ffe9fc91aab231b69d5ed8dc9d198
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-12-14 23:12:24 +01:00
Saku Laesvuori
59d65f66c5
services: guix: Allow gexps evaluating to a list of build-machines.
* gnu/services/base.scm (guix-machines-files-installation): Handle
machines being a mixed list of build-machines and lists of
build-machines.
* doc/guix.texi (Base Services): Document it.

Change-Id: Ie404562ca0b564413233c3a624046da831893dc3
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-12-14 23:12:24 +01:00
Ludovic Courtès
4348947c74
weather: Report unauthorized substitute servers.
The goal is to make it easier to diagnose substitute
misconfiguration (where we’re passing a substitute URL whose
corresponding key is not authorized).

Suggested by Emmanuel Agullo.

* guix/scripts/weather.scm (check-narinfo-authorization): New procedure.
(report-server-coverage): Use it.
* doc/guix.texi (Invoking guix weather): Document it.
(Getting Substitutes from Other Servers): Add “Troubleshooting” frame.

Change-Id: I0a049c39eefb10d6a06634c8b16aa86902769791
2023-12-11 23:19:04 +01:00
Ludovic Courtès
7e11369586
weather: Use the same substitute URLs as guix-daemon.
* guix/scripts/weather.scm (%default-options): Remove ‘substitute-urls’.
(guix-weather): Call ‘substitute-urls’ when OPTS doesn’t have it.  Warn
when ‘substitute-urls’ returns #f.
* doc/guix.texi (Invoking guix weather): Adjust accordingly.

Change-Id: I3e9100074f2ad559e5c408660db70430d64f2bef
2023-12-11 23:19:00 +01:00
Jean-Pierre De Jesus DIAZ
be5ec2ebb4
guix: Add avr platform.
* Makefile.am (MODULES): Add avr platform module.
* doc/guix.texi: Add documentation for avr platform.
* guix/platforms/avr.scm (avr): New variable.

Change-Id: I0f425eac61a71390b618e093f5a034ad4205a6f4
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2023-12-11 11:53:54 +02:00
Ludovic Courtès
3178b1a442
monad-repl: Add REPL commands to inspect package arguments.
* guix/monad-repl.scm (keyword-argument-value, package-argument-command):
New procedures.
(phases, configure-flags, make-flags): New REPL commands.
* doc/guix.texi (package Reference): Link to “Using Guix Interactively”.
(Defining Package Variants): Add “Tips” quotation.
(Build Phases): Add “Tip” quotation.
(Using Guix Interactively): Document the new REPL commands.

Change-Id: I7049c1d8aa9241e07d7c921aa396e578a1b4ef16
2023-12-04 22:26:38 +01:00
Aleksandr Vityazev
c6141a3da8
doc: Update yggdrasil related documentation.
* doc/guix.texi (Networking Services): Update the sample yggdrasil-private.conf.
Remove obsolete options that may contain a file whose path is specified in the
config-file field of yggdrasil-configuration.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-11-25 23:35:03 +01:00
Ludovic Courtès
5149bf99ba
doc: Fix childhurd host SSH port number.
Fixes <https://issues.guix.gnu.org/66739>.

* doc/guix.texi (Virtualization Services): Fix childhurd host SSH port
number.

Reported-by: Nathan Dehnel <ncdehnel@gmail.com>
Change-Id: I032b3447c7061ada8ba6d6f15c5454eab0e277d9
2023-11-25 16:29:25 +01:00
Giacomo Leidi
267786721b
services: Add oci-container-service-type.
* gnu/services/docker.scm (oci-container-configuration): New variable;
(oci-container-shepherd-service): new variable;
(oci-container-service-type): new variable.
* doc/guix.texi (Miscellaneous Services): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I17cede1975051a9fdd0e0a13b2191d8055266f80
2023-11-23 12:56:42 +01:00
Jonathan Scoresby
8882ec71dd
build-system: Add vim-build-system.
* guix/build-system/vim.scm,
* guix/build/vim-build-system.scm: New modules.
* Makefile.am (MODULES): Register new files.
* doc/guix.texi: Document it.

Co-authored-by: Efraim Flashner <efraim@flashner.co.il>
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2023-11-08 12:03:05 +02:00
Maxim Cournoyer
a4db19d8e0
git-download: Add support for Git Large File Storage (LFS).
* guix/build/git.scm (git-fetch) [lfs?]: New argument, doc and setup code.
(git-fetch-with-fallback) [lfs?]: New argument.  Pass it to git-fetch.
* guix/git-download.scm (git-lfs-package): New procedure.
(git-fetch/in-band*): New procedure, made of the logic of git-fetch/in-band,
with new git-lfs specifics, with the following changes:
New #:git-lfs argument.
<inputs>: Remove labels.  Conditionally add git-lfs.
<build>: Read "git lfs?" environment
variable and pass its value to the #:lfs? argument of git-fetch-with-fallback.
Use INPUTS directly; update comment.
<gexp->derivation>: Add "git lfs?" to #:env-vars.
(git-fetch/in-band): Express in terms of git-fetch/in-band*.
(git-fetch/lfs): New procedure.
* doc/guix.texi (origin Reference): Document it.

Change-Id: I5b233b8642a7bdb8737b9d9b740e7254a89ccb25
Reviewed-by: Ludovic Courtès <ludo@gnu.org>
2023-11-07 12:33:26 -05:00
Ludovic Courtès
08d94fe20e
home: services: Add 'x11-display' service.
* gnu/home/services/desktop.scm (x11-shepherd-service): New procedure.
(home-x11-service-type): New variable.
(redshift-shepherd-service): Add 'requirement' field.
(home-redshift-service-type): Extend 'home-x11-service-type'.
* doc/guix.texi (Desktop Home Services): Document it.

Change-Id: Ibd46d71cbb80fcdff8dbf3e8dbcfc3b24163bdb6
2023-11-05 23:23:23 +01:00
Ludovic Courtès
569c085927
doc: Mention Guix Home in “Getting Started”.
* doc/guix.texi (Getting Started): Mention Guix Home.
(Home Configuration): Remove “still under development” note.
2023-10-24 18:06:20 +02:00
Ludovic Courtès
978b9619a8
doc: Move “System Troubleshooting Tips” below.
So far this section would appear before “Getting Started”.  This moves
it right after “System Configuration”.

* doc/guix.texi (System Troubleshooting Tips): Move after “System
Configuration”.
2023-10-24 18:06:20 +02:00
Ekaitz Zarraga
e011961f99
build-system: Add zig-build-system.
* guix/build-system/zig.scm: New file.
* guix/build/zig-build-system.scm: New file.
* Makefile.am: Add them.
* doc/guix.texi: Document it.
* etc/snippets/yas/scheme-mode/guix-package (build-system): Add
  zig-build-system.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-21 00:27:25 +02:00
Christina O'Donnell
8d6b3dd0b8
doc: Expand origin-Reference section
* doc/guix.texi (origin Reference): Add references for hg-reference,
svn-reference, bzr-fetch, and bzr-reference.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-18 23:11:32 +02:00
Gabriel Wicki
e80022ff3a
doc: Clarify partition LBA compatibility.
* doc/guix.texi (partition Reference): Clarify LBA compatibility.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2023-10-17 15:11:12 +02:00
Bruno Victal
fec8e51380
doc: Use herd for cerbot deploy hook example.
* doc/guix.texi (Certificate Services): Replace PID file based example with
one using (gnu services herd). Rename %nginx-deploy-hook to
%certbot-deploy-hook.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-14 22:41:44 +02:00
Sören Tempel
373ec2cf8c
pack: Allow setting a custom image tag for Docker images
Previously, the image repository name was automatically computed from
the packages in the manifest without allowing the user to set a custom
one. As such, changing the packages in the manifest would result in a
new image name. Thereby requiring updating documentation et cetera when
using `docker load` directory on the resulting image.

Inspired by `docker build -t`, this commit adds a new Docker-specific
option to `guix pack` which allows setting a custom repository name for
the resulting image. If this option is not specified, pack falls back
to computing the name from the manifest. Therefore, this change is
entirely backwards compatible.

* guix/scripts/pack.scm (guix-pack): Add --image-tag option.
(%docker-format-options): New constant.
(show-docker-format-options): New procedure.
(show-docker-format-options/detailed): New procedure.
(docker-image): Allow setting a custom
repository name for the created docker image via extra-options.
* doc/guix.texi (Invoking guix pack)[docker]: Document --image-tag option.

Signed-off-by: Sören Tempel <soeren@soeren-tempel.net>
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2023-10-14 15:31:30 +02:00
Efraim Flashner
4ec6fd7817
doc: Document specification->package+output.
Reported by nutcase on IRC.

* doc/guix.texi (Using the Configuration System): Add a section about
using specification->package+output.
2023-10-13 11:48:43 +03:00
Ludovic Courtès
5a3fb30653
services: cuirass: Add ‘log-expiry’ option for ‘remote-server’.
* gnu/services/cuirass.scm (<cuirass-remote-server-configuration>)[log-expiry]:
New field.
(cuirass-shepherd-service): Honor it.
* doc/guix.texi (Continuous Integration): Document it.
2023-10-12 22:14:34 +02:00
Ludovic Courtès
6a82ff6329
doc: Fix typo.
* doc/guix.texi (Derivations): Fix typo.
2023-10-12 18:53:06 +02:00
Alexey Abramov
670d985cab
services: static-networking: Add support for bonding.
* gnu/services/base.scm (<network-link>): Add mac-address field. Set
type field to #f by default, so it won't be mandatory. network-link
without a type will be used for existing interfaces.
(assert-network-link-mac-address, mac-address?): Add sanitizer. Allow
valid mac-address or #f.
(assert-network-link-type): Add sanitizer. Allow symbol or #f.
* gnu/services/base.scm (network-set-up/linux,
network-tear-down/linux): Adapt to new structure.
* doc/guix.texi (Networking Setup): Document it.
* gnu/tests/networking.scm (run-static-networking-advanced-test): New
variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-11 18:51:07 +02:00
Ludovic Courtès
96b40c3eba
doc: Fix typo.
* doc/guix.texi (GNU Privacy Guard): Fix typo.
2023-10-08 23:43:49 +02:00
Bruno Victal
00a28bc435
services: configuration: Add some commonly used predicates.
* gnu/services/configuration.scm (list-of-packages?, list-of-symbols?): New
predicate.
* gnu/services/audio.scm (list-of-symbol?): Remove.
* gnu/services/telephony.scm (string-list?): Remove.
(serialize-string-list): Rename to …
(serialize-list-of-strings): … this.
(account-fingerprint-list?, jami-account-list?): Use list-of.
* doc/guix.texi: Update it.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-10-07 12:41:06 -04:00
Bruno Victal
3872ecf274
doc: Rewrite define-configuration.
Rewrite this section to make it easier to document later syntactical
changes.

* doc/guix.texi (Complex Configurations): Rewrite define-configuration
documentation. Fix simple serializer example.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-10-07 12:41:05 -04:00
Nikolaos Chatzikonstantinou
3d4d7fec05
doc: Fix channel name typo.
When the manual has "variant-personal-packages", it actually refers to the
channel "variant-packages", as it is named so elsewhere.

To correct this, I ran the command

    grep -r -l variant-personal-packages | xargs \
    sed -i 's/variang-personal-packages/variant-packages/g'

* doc/guix.texi (Specifying Additional Channels): Fix channel name typo.
* po/doc/guix-manual.de.po: Fix channel name typo.
* po/doc/guix-manual.es.po: Fix channel name typo.
* po/doc/guix-manual.fr.po: Fix channel name typo.
* po/doc/guix-manual.pt_BR.po: Fix channel name typo.
* po/doc/guix-manual.ru.po: Fix channel name typo.
* po/doc/guix-manual.zh_CN.po: Fix channel name typo.

Signed-off-by: Nikolaos Chatzikonstantinou <nchatz314@gmail.com>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-05 23:14:54 +02:00
Ludovic Courtès
953c65ffdd
services: hurd-vm: Implement zero-configuration offloading.
This allows for zero-configuration offloading to a childhurd.

* gnu/services/virtualization.scm (operating-system-with-offloading-account):
New procedure.
(<hurd-vm-configuration>)[offloading?]: New field.
(hurd-vm-disk-image): Define ‘transform’ and use it.
(hurd-vm-activation): Generate SSH key for user ‘offloading’ and add
authorize it via /etc/childhurd/etc/ssh/authorized_keys.d.
(hurd-vm-configuration-offloading-ssh-key)
(hurd-vm-guix-extension): New procedures.
(hurd-vm-service-type): Add GUIX-SERVICE-TYPE extension.
* gnu/tests/virtualization.scm (run-childhurd-test)[import-module?]: New
procedure.
[os]: Add (gnu build install) and its closure to #:import-modules.
[test]: Add “copy-on-write store” and “offloading” tests.
* doc/guix.texi (Virtualization Services): Document it.
2023-10-01 22:58:20 +02:00
Ludovic Courtès
990d20d4a8
doc: Give an example showing how to add an account in the childhurd.
* doc/guix.texi (Virtualization Services): Give an example showing how
to add an account.
2023-10-01 22:58:20 +02:00
Ludovic Courtès
c3a19cc2ac
services: hurd-vm: Disable password-based authentication for root.
With offloading to a childhurd is enabled, allowing password-less root
login in the childhurd to anyone amounts to providing write access to
the host’s store to anyone.  Thus, disable password-based root logins in
the childhurd.

* gnu/services/virtualization.scm (%hurd-vm-operating-system): Change
‘permit-root-login’ to 'prohibit-password.
* gnu/tests/virtualization.scm (%childhurd-os): Provide a custom ‘os’
field for ‘hurd-vm-configuration’.
* doc/guix.texi (Virtualization Services): Remove mention of
password-less root login.
2023-10-01 22:58:20 +02:00
Ludovic Courtès
bab6434f58
services: hurd-vm: ‘image’ field has to be an <image> record.
* gnu/services/virtualization.scm (<hurd-vm-configuration>)[image]:
Document as being an <image> record.
(hurd-vm-disk-image): Remove call to ‘system-image’.
(hurd-vm-shepherd-service): Add call to ‘system-image’.
* gnu/tests/virtualization.scm (hurd-vm-disk-image-raw): Remove call to
‘system-image’.
* doc/guix.texi (Virtualization Services): Adjust accordingly.
2023-10-01 22:58:19 +02:00
Ludovic Courtès
aa40b085dc
services: guix: Support declarative offloading setup.
* gnu/services/base.scm (guix-machines-files-installation): New
procedure.
(<guix-configuration>)[build-machines]: New field.
(guix-activation): Call ‘ guix-machines-files-installation’.
(<guix-extension>)[build-machines]: New field.
(guix-extension-merge): Handle it.
(guix-service-type)[extend]: Likewise.
* doc/guix.texi (Daemon Offload Setup): Add note linking to
‘guix-configuration’.
(Base Services): Document ‘build-machines’ field of <guix-configuration>
and of <guix-extension>.
(Virtualization Services): Add ‘hurd-vm’ anchor.
2023-10-01 22:58:19 +02:00
Ludovic Courtès
f651a35969
build: Add dependency on Git.
* configure.ac: Check for ‘git’ and substitute ‘GIT’.
* guix/config.scm.in (%git): New variable.
* guix/self.scm (compiled-guix): Define ‘git’ and pass it to
‘make-config.scm’.
(make-config.scm): Add #:git; emit a ‘%git’ variable.
* doc/guix.texi (Requirements): Add it.
2023-09-26 17:36:58 +02:00
Liliana Marie Prikler
cdbd81ce14
Merge branch 'master' into emacs-team 2023-09-22 23:54:34 +02:00
Mathieu Othacehe
e5ed1712da
image: Introduce the mbr-hybrid-raw image type.
Until 209204e23b and
d57cab7641, the default image type used by "guix
system image" was an MBR image with an ESP partition.

Having both an MBR image and an ESP partition is handy because the image will
boot on most x86 based systems using legacy BIOS and/or UEFI.

We now have a distinction between MBR images and EFI images. Introduce a new
MBR hybrid image type and default to it to restore the default behaviour.

This also fixes the images section of (gnu ci) that was trying to install a
BIOS bootloader on an EFI, GPT image and failing to do so.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2023-09-20 09:38:36 +02:00
Ludovic Courtès
a839bb9777
doc: Fix typo.
* doc/guix.texi (Specifying Channel Authorizations): Remove extra
hyphen.
2023-09-18 23:14:00 +02:00
Alexey Abramov
04f71edb73
services: dhcp-client-configuration: Allow provision override.
* gnu/services/networking.scm (<dhcp-client-configuration>)[shepherd-provision]:
New field.
(dhcp-client-shepherd-service): Honor it.
* doc/guix.texi (Networking Setup): Document it.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-09-17 15:31:03 +02:00
Liliana Marie Prikler
94ca5b4357
Merge branch 'master' into emacs-team 2023-09-09 12:22:14 +02:00
Maxim Cournoyer
b02ad19305
gnu: emacs: Reload subdirs.el files in ‘guix-emacs-autoload-packages’.
This fixes a regression introduced with 79cfe30f3 ("build-system: emacs: Use
subdirectories again.") which caused the 'guix-emacs-autoload-packages' to no
longer be able to autoload all packages.

* gnu/packages/aux-files/emacs/guix-emacs.el
(guix-emacs-autoload-packages): Reload subdirs.el files unless NO-RELOAD is
provided.  Update docstring.
* doc/guix.texi (Application Setup): Document that
‘guix-emacs-autoload-packages’ can be invoked interactively to auto-reload
newly installed Emacs packages.
* gnu/packages/emacs.scm (emacs)[arguments]<#:phases>: Call
guix-emacs-autoload-packages with an argument in the site-start.el file.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2023-09-07 20:25:07 +02:00
Aleksandr Vityazev
73958f7f04
doc: Fix typo.
* doc/guix.texi (VNC Services): Fix typo.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-09-05 23:28:13 -04:00
Arun Isaac
e0397faf6f
doc: Document mumi command-line interface.
* doc/contributing.texi (Debbugs User Interfaces)[Command-line interface]: New
subsubsection.  Update menus.
* doc/guix.texi: Bump copyright year.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-09-05 19:50:42 -04:00
Josselin Poiret
9f68a2a9c4
doc: Note that guix shell should contain base language packages.
* doc/guix.texi (Invoking guix shell): Explain that python must be included in
the invocation even if it is already available in the external environment.

Suggested-by: Skyler <skyvine@protonmail.com>
2023-08-25 15:16:19 +02:00
David Thompson
e9a5eebc78
gnu: system: Add home-directory-permissions field to <user-account>.
* gnu/system/accounts.scm (<user-account>)[home-directory-permissions]: New
field.
(user-account-home-directory-permissions): New accessor.
* gnu/build/activation.scm (activate-users+groups): Use home directory
permission bits from the user account object.
* doc/guix.texi (User Accounts): Document new field.

Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
2023-08-25 15:12:54 +02:00
Josselin Poiret
d57cab7641
image: Add mbr-raw-image-type and use by default.
* gnu/system/image.scm (mbr-disk-image, mbr-raw-image-type): New variables.
(qcow2-image-type): Inherit mbr-disk-image.
* guix/scripts/system.scm (%default-options): Use mbr-raw-image-type by
default.
* gnu/tests/install.scm (run-install): Use mbr-raw in the tests.
* doc/guix-cookbook.texi (Guix System Image API): Update the list of image
types.
* doc/guix.texi (Invoking guix system, System Images, image-type Reference):
Add mbr-raw and switch documented default to it.
2023-08-25 14:24:21 +02:00
Ludovic Courtès
2274d71f94
services: file-database: Clarify 'excluded-directories' description.
* gnu/services/admin.scm (file-database-configuration)[excluded-directories]:
Mention that these are regexps.
(%default-file-database-excluded-directories): Likewise.
* doc/guix.texi (File Search Services): Adjust accordingly.
2023-08-22 11:17:53 +02:00