Commit graph

330 commits

Author SHA1 Message Date
Ludovic Courtès
0e5c2d5e14
services: system: Initial entries are non-monadic.
* gnu/system.scm (operating-system-directory-base-entries): Return a
regular, non-monadic value.
* gnu/services.scm (system-derivation): Adjust accordingly.
* gnu/system/linux-container.scm (container-essential-services): Likewise.
2020-04-26 22:49:49 +02:00
Ludovic Courtès
cda751105e
system: 'operating-system-directory-base-entries' uses 'profile'.
* gnu/system.scm (operating-system-directory-base-entries): Use a
declarative profile instead of 'profile-derivation'.
2020-04-26 22:49:48 +02:00
Danny Milosavljevic
f91ad0b13d
system: Automatically adjust linux-module packages to use the
operating-system's kernel.

* gnu/system.scm (package-for-kernel): New procedure.
(operating-system-directory-base-entries): Use it.
* gnu/tests/linux-module.scm: Test it.
2020-04-22 22:59:39 +02:00
Brice Waegeneire
93664feee1
system: Split %BASE-PACKAGES in smaller parts.
* gnu/system.scm: (%base-packages-interactive, %base-packages-linux,
%base-packages-networking, %base-packages-utils): New variables.
(%base-packages): Use those new variables.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-04-22 19:23:57 +02:00
Ludovic Courtès
2e37d1583a
system: 'operating-system-boot-parameters-file' uses 'scheme-file'.
* gnu/system.scm (operating-system-boot-parameters-file): Use
'scheme-file' instead of 'gexp->file'.
(operating-system-directory-base-entries): Adjust accordingly.
2020-04-22 19:23:57 +02:00
Ludovic Courtès
71977a6c59
Revert "system: Don’t create a module database when no modules are available."
This reverts commit b2fff3b5de.

Fixes <https://bugs.gnu.org/40713>.
Reported by pkill9 <pkill9@runbox.com>.

This commit is incorrect: its effect depends on whether KERNEL's build
output is already available in the store, it breaks with non-package
kernels as reported at <https://bugs.gnu.org/40713>, and the
LINUX-MODULE-DATABASE hook is required at all times since
5c79f23863 removed the relevant bits from
the 'linux-libre' package.
2020-04-21 00:06:40 +02:00
Ivan Kozlov
b2fff3b5de
system: Don’t create a module database when no modules are available.
* gnu/system.scm (operating-system-directory-base-entries): Don't create
a module database when no modules are available.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2020-04-04 21:13:26 +02:00
Brice Waegeneire
a9f2c210f3
system: Export 'operating-system-kernel-loadable-modules'.
* gnu/system.scm: Export 'operating-system-kernel-loadable-modules'.

Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
2020-03-23 18:52:31 +01:00
Danny Milosavljevic
5c79f23863
system: Add kernel-loadable-modules to operating-system.
* gnu/system.scm (<operating-system>): Add kernel-loadable-modules.
(operating-system-directory-base-entries): Use it.
* doc/guix.texi (operating-system Reference): Document
KERNEL-LOADABLE-MODULES.
* gnu/build/linux-modules.scm (depmod): New procedure.
(make-linux-module-directory): New procedure.  Export it.
* guix/profiles.scm (linux-module-database): New procedure.  Export it.
* gnu/tests/linux-modules.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/linux.scm (make-linux-libre*)[arguments]<#:phases>[install]:
Disable depmod.  Remove "build" and "source" symlinks.
[native-inputs]: Remove kmod.
2020-03-22 12:51:50 +01:00
Maxim Cournoyer
f6b950319c
gnu: system: Export %sudoers-specification.
Exporting this variable allows reusing the default value of the `sudoers-file'
field when configuring it.

* gnu/system.scm (gnu): Export %sudoers-specification.
* doc/guix.texi (Invoking guix deploy): Document an example, to use with 'guix
deploy'.
2020-03-17 23:01:07 -04:00
Brice Waegeneire
9ef37e81d6
system: Export 'operating-system' missing fields.
* gnu/system.scm: Export 'operating-system-firmware',
'operating-system-keyboard-layout',
'operating-system-name-service-switch', 'operating-system-pam-services',
'operating-system-setuid-programs', 'operating-system-skeletons',
'operating-system-sudoers-file', 'operating-system-swap-devices'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-03-08 21:21:57 +01:00
Maxim Cournoyer
99e676db43
file-systems: Add a 'file-system-device->string' procedure.
* gnu/system/file-systems.scm (file-system-device->string): New procedure.
* gnu/system.scm (bootable-kernel-arguments): Use it.
* gnu/system/vm.scm (operating-system-uuid): Likewise.
* guix/scripts/system.scm (display-system-generation): Likewise.
2020-03-02 23:24:47 -05:00
Simon Josefsson
58236d301c
system: Drop net-tools from %BASE-PACKAGES (replaced by iproute2).
* gnu/system.scm (%base-packages): Remove net-tools.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-01-12 00:19:09 +01:00
Marius Bakke
01bb039e7b
system: Use the udev-enabled util-linux variant.
Fixes <https://bugs.gnu.org/37931>.
Reported by Bengt Richter <bokr@bokr.com>.

* gnu/system.scm (%base-packages): Change from UTIL-LINUX to UTIL-LINUX+UDEV.
2020-01-08 20:04:12 +01:00
Ludovic Courtès
33b7cb7a59
services: Add 'provenance-service-type'.
* gnu/services.scm (object->pretty-string)
(channel->code, channel->sexp, provenance-file)
(provenance-entry): New procedures.
(provenance-service-type): New variable.
* gnu/system.scm (operating-system-with-provenance): New procedure.
* doc/guix.texi (Service Reference): Document 'provenance-service-type'.
2019-12-07 00:59:56 +01:00
Mathieu Othacehe
d4ddf22d54
system: vm: Support cross-compilation.
* gnu/system.scm (system-linux-image-file-name): Add support for cross-built
systems. Remove system argument that was ignored,
(operating-system-kernel-file): adapt by removing ignored os argument.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add target
argument and turn inputs into native-inputs. Pass target to qemu-command
and gexp->derivation calls.
(iso9660-image): Add target argument and pass it to
expression->derivation-in-linux-vm. Remove qemu from inputs as it
is not necessary.
(qemu-image): Add target argument, also remove qemu from inputs. Pass
target argument to expression->derivation-in-linux-vm call.
2019-12-01 16:51:40 +01:00
Ricardo Wurmus
e08902d3cb
Merge branch 'master' into core-updates 2019-10-06 22:02:20 +02:00
Ludovic Courtès
1994422752
system: Add 'mount' and 'umount' to '%setuid-programs'.
Fixes <https://bugs.gnu.org/37569>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.

* gnu/system.scm (%setuid-programs): Add "mount" and "umount" from
util-linux.
2019-10-06 14:45:35 +02:00
Mark H Weaver
65542a8852
Merge branch 'master' into core-updates 2019-09-06 20:46:00 -04:00
Ludovic Courtès
a28cfee841
system: Add 'bootloader-menu-entries' field to <boot-parameters>.
This allows us to keep track of the extra menu entries specified in the
OS configuration.

* gnu/system.scm (<boot-parameters>)[bootloader-menu-entries]: New field.
(read-boot-parameters): Initialize it.
(operating-system-boot-parameters): Likewise.
(operating-system-boot-parameters-file): Serialize it.
* gnu/bootloader.scm (menu-entry->sexp, sexp->menu-entry): New
procedures.
2019-08-30 01:33:45 +02:00
Timothy Sample
2a80d9e552
system: Write the timezone to /etc/timezone.
* gnu/system.scm (operating-system-etc-service): Write the operating
system timezone to /etc/timezone.

Fixes <https://bugs.gnu.org/35746>.
2019-07-16 21:53:05 -04:00
Ludovic Courtès
9fcfe30d28
system: Add 'operating-system-with-gc-roots'.
* gnu/tests/install.scm (operating-system-with-gc-roots): Move to...
* gnu/system.scm (operating-system-with-gc-roots): ... here.  New
procedure.
2019-05-15 16:36:21 +02:00
Ludovic Courtès
f8885ecab6
system: Export 'operating-system-default-essential-services'.
* gnu/system.scm (essential-services): Rename to...
(operating-system-default-essential-services): ... this.
(<operating-system>)[essential-services]: Adjust accordingly.
2019-05-10 23:29:18 +02:00
Ludovic Courtès
aea1a42e00
system: Add boot file systems to /etc/fstab.
* gnu/system.scm (essential-services): Pass FSTAB-SERVICE-TYPE the list
of file systems that match 'file-system-needed-for-boot?'.
2019-04-27 00:11:52 +02:00
Ludovic Courtès
01ac0e6be1
system: Add guile-readline and guile-colorized to %BASE-PACKAGES.
This adds pretty much nothing to the system closure size.

* gnu/system.scm (%base-packages): Add GUILE-READLINE and
GUILE-COLORIZED.
2019-04-25 00:45:34 +02:00
Christopher Baines
5582aa8e31
system: Change default kernel-arguments to '("quiet").
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.
2019-04-22 22:18:00 +01:00
Ludovic Courtès
3f03a198b2
system: Add 'label' field to <operating-system>.
* 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.
2019-04-15 12:24:14 +02:00
Ludovic Courtès
4ce3a32680
system: Remove "beta" from GRUB menu entries.
* gnu/system.scm (kernel->boot-label): Remove "(beta)".
2019-04-14 23:40:52 +02:00
Ludovic Courtès
d8bead6c5d
system: Define 'this-operating-system'.
* gnu/system.scm (<operating-system>): Choose 'this-operating-system' as
the 'this' identifier.
[essential-services]: Adjust accordingly.
2019-03-30 11:08:39 +01:00
Ludovic Courtès
69cae3d335
system: Add 'essential-services' field to <operating-system>.
* 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'.
2019-03-25 23:37:06 +01:00
Ludovic Courtès
ae7a316b9d
system: Initialize console keyboard layout in the initrd.
Partially fixes <https://bugs.gnu.org/25453>.

* gnu/system.scm (<operating-system>)[keyboard-layout]: New field.
(operating-system-initrd-file): Pass #:keyboard-layout to MAKE-INITRD.
* gnu/system/linux-initrd.scm (raw-initrd): Add #:keyboard-layout.
Pass #:keymap-file to 'boot-system'.
(base-initrd): Add #:keyboard-layout.
[helper-packages]: Add LOADKEYS-STATIC when KEYBOARD-LAYOUT is true.
Pass #:keyboard-layout to 'raw-initrd'.
* gnu/build/linux-boot.scm (boot-system): Add #:keymap-file and honor
it.
* doc/guix.texi (operating-system Reference): Document the
'keyboard-layout' field.
(Initial RAM Disk): Update 'raw-initrd' and 'base-initrd' documentation.
2019-03-24 23:06:12 +01:00
Ludovic Courtès
ac3c14fb07
system: Fix misleading comments.
* gnu/system.scm (<operating-system>)[skeletons, services]: Fix
misleading type comments.
2019-03-22 22:49:35 +01:00
Mathieu Othacehe
d0f3a672dc
gnu: Add graphical installer support.
* configure.ac: Require that guile-newt is available.
* gnu/installer.scm: New file.
* gnu/installer/aux-files/logo.txt: New file.
* gnu/installer/build-installer.scm: New file.
* gnu/installer/connman.scm: New file.
* gnu/installer/keymap.scm: New file.
* gnu/installer/locale.scm: New file.
* gnu/installer/newt.scm: New file.
* gnu/installer/newt/ethernet.scm: New file.
* gnu/installer/newt/hostname.scm: New file.
* gnu/installer/newt/keymap.scm: New file.
* gnu/installer/newt/locale.scm: New file.
* gnu/installer/newt/menu.scm: New file.
* gnu/installer/newt/network.scm: New file.
* gnu/installer/newt/page.scm: New file.
* gnu/installer/newt/timezone.scm: New file.
* gnu/installer/newt/user.scm: New file.
* gnu/installer/newt/utils.scm: New file.
* gnu/installer/newt/welcome.scm: New file.
* gnu/installer/newt/wifi.scm: New file.
* gnu/installer/steps.scm: New file.
* gnu/installer/timezone.scm: New file.
* gnu/installer/utils.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add previous files.
* gnu/system.scm: Export %root-account.
* gnu/system/install.scm (%installation-services): Use kmscon instead of linux
VT for all tty.
(installation-os)[users]: Add the graphical installer as shell of the root
account.
[packages]: Add font related packages.
* po/guix/POTFILES.in: Add installer files.
2019-01-17 14:04:20 +01:00
Meiyo Peng
5144df2c6c
system: Add sudoedit to %setuid-programs.
* gnu/system.scm (%setuid-programs): Add sudoedit.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-01-13 23:30:15 +01:00
Pkill -9
b12f8720f5
system: Fix missing space in boot labels for kernels that are inferior packages
* gnu/system.scm (kernel->boot-label): Add a missing space between
the kernel's package name and package version for inferior packages.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-26 18:40:49 +01:00
Pkill -9
bdc61ff97d
system: 'kernel->boot-label' now accepts inferior packages.
* gnu/system.scm (kernel->boot-label): Get package name and version
using the functions for inferior packages if the kernel is an
inferior package. Return "GNU" if the kernel is not a package.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-21 18:07:28 +01:00
Ludovic Courtès
d422cbb3d6
linux-initrd: 'expression->initrd' returns the complete file name.
Previously 'expression->initrd' would return the directory that contains
the 'initrd' file; now it returns the complete file name for that file.

* gnu/system/linux-initrd.scm (expression->initrd)[builder]: Change
output file name to "initrd.cpio.gz".  Tail-call 'file-append' to return
the complete file name.
* gnu/system.scm (operating-system-initrd-file): Remove 'file-append'
call.
* gnu/build/linux-initrd.scm (write-cpio-archive): Check whether OUTPUT
already has the ".gz" suffix; rename if before invoking GZIP if it does,
and otherwise after.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[builder]: Do
not append "/initrd" to #$initrd.
2018-11-21 23:26:59 +01:00
Ludovic Courtès
9782c82217
system: De-monadify 'operating-system-bootcfg'.
* gnu/system.scm (operating-system-bootcfg): Remove 'mlet*' and
'lower-object' call.
* gnu/system/vm.scm (system-disk-image)
(system-qemu-image/shared-store): Adjust accordingly.
* guix/scripts/system.scm (perform-action): Add 'lower-object' call for
BOOTCFG.
2018-11-18 23:37:45 +01:00
Ludovic Courtès
5ece56dc73
system: Please Emacs.
* gnu/system.scm (operating-system-bootcfg): Remove opening parenthesis
at the beginning of the line in the docstring to placate Emacs.
2018-11-18 23:37:44 +01:00
Ludovic Courtès
35b4468127
system: De-monadify 'operating-system-boot-parameters'.
* gnu/system.scm (operating-system-boot-parameters): Turn to direct
style instead of monadic.
(operating-system-bootcfg): Adjust accordingly.
(operating-system-boot-parameters-file): Likewise.
2018-11-18 23:37:44 +01:00
Ludovic Courtès
e34ae75dc1
linux-initrd: Return file-like objects instead of monadic values.
This is an incompatible change visible to users via the 'initrd' field
of 'operating-system'.  However, assuming the user's 'initrd' value
tail-calls to 'raw-initrd' or 'base-initrd', the switch to non-monadic
style is invisible.

* gnu/system/linux-initrd.scm (expression->initrd): Use 'computed-file'
instead of 'gexp->derivation'.
(raw-initrd, base-initrd): Adjust docstring to mention non-monadic
return.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust
accordingly.
* gnu/system.scm (operating-system-directory-base-entries)
(operating-system-initrd-file)
(operating-system-boot-parameters): Adjust accordingly.
* doc/guix.texi (operating-system Reference)
(Initial RAM Disk): Update.
2018-11-18 23:37:44 +01:00
Ludovic Courtès
a7ef45d9de
system: Simplify kernel argument handling.
* gnu/system.scm (bootable-kernel-arguments): Remove 'kernel-arguments'
parameter and return only the base list of kernel arguments.  Rename
'system.drv' to 'system'.
(operating-system-kernel-arguments): Adjust accordingly and remove
'system.drv' parameter.
(read-boot-parameters-file): Adjust accordingly.  Remove 'if params'
since dominating code assumed PARAMS is always true.
(operating-system-boot-parameters): Remove 'system.drv' parameter; add
 #:system-kernel-arguments? instead and honor it.
(operating-system-bootcfg): Adjust accordingly.
(operating-system-boot-parameters-file): Likewise.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Remove
'os-drv' variable.  Adjust call to 'operating-system-kernel-arguments'.
2018-11-18 23:37:44 +01:00
Ludovic Courtès
46c296dcc4
bootloader: De-monadify configuration file generators.
* gnu/bootloader/extlinux.scm: Remove unneeded imports.
(extlinux-configuration-file): Use 'computed-file' instead of
'gexp->derivation'.
* gnu/bootloader/grub.scm (svg->png): Likewise.
(grub-background-image, eye-candy): Adjust accordingly, return
non-monadically.
(grub-configuration-file): Likewise, and use 'computed-file' instead of
'gexp->derivation'.
* gnu/bootloader/u-boot.scm: Remove unneeded imports.
* gnu/system.scm: Add 'lower-object' call.
2018-11-18 23:37:44 +01:00
Ludovic Courtès
a56c4eb8f4
services: shepherd: Add workaround for 0.5.0 in containers.
* gnu/services/shepherd.scm (%containerized-shepherd-service): New service.
* gnu/system.scm (essential-services): Use it when CONTAINER? is true.
2018-09-26 23:40:36 +02:00
Ludovic Courtès
68a58775e0
system: Mapped devices needed for boot do not yield Shepherd services.
Fixes <https://bugs.gnu.org/31889>.
Reported by Taylan Kammer <taylanbayirli@gmail.com>.

* gnu/system.scm (non-boot-file-system-service)[mapped-devices-for-boot]:
New variable.
Remove dependencies of FS that are members of MAPPED-DEVICES-FOR-BOOT.
(mapped-device-user): Rename to...
(mapped-device-users): ... this.  Use 'filter' instead of 'find'.
(operating-system-user-mapped-devices)
(operating-system-boot-mapped-devices): Use 'any
file-system-needed-for-boot?' instead of looking at the first user.
* tests/system.scm ("non-boot-file-system-service"): New test.
2018-06-21 23:54:15 +02:00
Ludovic Courtès
378daa8cb6
services: boot: Take gexps instead of monadic gexps.
* gnu/services.scm (compute-boot-script): Rename 'mexps' to 'gexps' and
remove 'mlet' form.
(boot-service-type): Update comment.
(cleanup-gexp): Remove 'with-monad' and 'return'.
(activation-script): Rewrite in non-monadic style: use 'scheme-file'
instead of 'gexp->file'.
(gexps->activation-gexp): Remove 'mlet', return a gexp.
* gnu/services/shepherd.scm (shepherd-boot-gexp): Remove 'with-monad'
and 'return'.
* gnu/system.scm (operating-system-boot-script): Remove outdated comment.
* gnu/tests/base.scm (%cleanup-os): For 'dirty-service', remove
'with-monad' and 'return'.
2018-06-20 23:47:08 +02:00
Ludovic Courtès
661c237b4d
services: boot: Reverse the order of boot expressions.
* gnu/services.scm (compute-boot-script): Reverse MEXPS.
* gnu/system.scm (essential-services): Reverse order of
%SHEPHERD-ROOT-SERVICE, %ACTIVATION-SERVICE, and CLEANUP-SERVICE-TYPE.
2018-06-20 10:05:18 +02:00
Ludovic Courtès
a854525a34
system: Have /run/setuid-programs first in $PATH.
Fixes <https://bugs.gnu.org/31814>.
Reported by Clément Lassieur <clement@lassieur.org>.

* gnu/system.scm (operating-system-etc-service)["profile"]: Arrange so
that /run/setuid-programs comes first in $PATH.
2018-06-18 23:19:51 +02:00
Ludovic Courtès
8d09bfe218
system: Move ~/.config/guix/current first in PATH and INFOPATH.
Fixes <https://bugs.gnu.org/31770>.
Reported by iyzsong@member.fsf.org (宋文武).

* gnu/system.scm (operating-system-etc-service)["profile"]: Arrange so
that ~/.config/guix/current comes first in PATH and INFOPATH.
2018-06-12 15:23:34 +02:00
Ludovic Courtès
cdc5b9320f
system: Honor ~/.config/guix/current in /etc/profile.
* gnu/system.scm (operating-system-etc-service)[profile]: Add
~/.config/guix/current/share/info to INFOPATH.  Treat ~/.guix-profile
and ~/.config/guix/current in the same way.
2018-06-09 12:02:28 +02:00