summary refs log tree commit diff
path: root/gnu/system.scm
AgeCommit message (Collapse)Author
2019-12-07services: Add 'provenance-service-type'.Ludovic Courtès
* 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-01system: vm: Support cross-compilation.Mathieu Othacehe
* 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-10-06Merge branch 'master' into core-updatesRicardo Wurmus
2019-10-06system: Add 'mount' and 'umount' to '%setuid-programs'.Ludovic Courtès
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-09-06Merge branch 'master' into core-updatesMark H Weaver
2019-08-30system: Add 'bootloader-menu-entries' field to <boot-parameters>.Ludovic Courtès
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-07-16system: Write the timezone to /etc/timezone.Timothy Sample
* gnu/system.scm (operating-system-etc-service): Write the operating system timezone to /etc/timezone. Fixes <https://bugs.gnu.org/35746>.
2019-05-15system: Add 'operating-system-with-gc-roots'.Ludovic Courtès
* gnu/tests/install.scm (operating-system-with-gc-roots): Move to... * gnu/system.scm (operating-system-with-gc-roots): ... here. New procedure.
2019-05-10system: Export 'operating-system-default-essential-services'.Ludovic Courtès
* gnu/system.scm (essential-services): Rename to... (operating-system-default-essential-services): ... this. (<operating-system>)[essential-services]: Adjust accordingly.
2019-04-27system: Add boot file systems to /etc/fstab.Ludovic Courtès
* gnu/system.scm (essential-services): Pass FSTAB-SERVICE-TYPE the list of file systems that match 'file-system-needed-for-boot?'.
2019-04-25system: Add guile-readline and guile-colorized to %BASE-PACKAGES.Ludovic Courtès
This adds pretty much nothing to the system closure size. * gnu/system.scm (%base-packages): Add GUILE-READLINE and GUILE-COLORIZED.
2019-04-22system: Change default kernel-arguments to '("quiet").Christopher Baines
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-15system: Add 'label' field to <operating-system>.Ludovic Courtès
* 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-14system: Remove "beta" from GRUB menu entries.Ludovic Courtès
* gnu/system.scm (kernel->boot-label): Remove "(beta)".
2019-03-30system: Define 'this-operating-system'.Ludovic Courtès
* gnu/system.scm (<operating-system>): Choose 'this-operating-system' as the 'this' identifier. [essential-services]: Adjust accordingly.
2019-03-25system: Add 'essential-services' field to <operating-system>.Ludovic Courtès
* 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-24system: Initialize console keyboard layout in the initrd.Ludovic Courtès
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-22system: Fix misleading comments.Ludovic Courtès
* gnu/system.scm (<operating-system>)[skeletons, services]: Fix misleading type comments.
2019-01-17gnu: Add graphical installer support.Mathieu Othacehe
* 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-13system: Add sudoedit to %setuid-programs.Meiyo Peng
* gnu/system.scm (%setuid-programs): Add sudoedit. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-26system: Fix missing space in boot labels for kernels that are inferior packagesPkill -9
* 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-21system: 'kernel->boot-label' now accepts inferior packages.Pkill -9
* 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-11-21linux-initrd: 'expression->initrd' returns the complete file name.Ludovic Courtès
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-18system: De-monadify 'operating-system-bootcfg'.Ludovic Courtès
* 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-18system: Please Emacs.Ludovic Courtès
* gnu/system.scm (operating-system-bootcfg): Remove opening parenthesis at the beginning of the line in the docstring to placate Emacs.
2018-11-18system: De-monadify 'operating-system-boot-parameters'.Ludovic Courtès
* 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-18linux-initrd: Return file-like objects instead of monadic values.Ludovic Courtès
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-18system: Simplify kernel argument handling.Ludovic Courtès
* 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-18bootloader: De-monadify configuration file generators.Ludovic Courtès
* 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-09-26services: shepherd: Add workaround for 0.5.0 in containers.Ludovic Courtès
* gnu/services/shepherd.scm (%containerized-shepherd-service): New service. * gnu/system.scm (essential-services): Use it when CONTAINER? is true.
2018-06-21system: Mapped devices needed for boot do not yield Shepherd services.Ludovic Courtès
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-20services: boot: Take gexps instead of monadic gexps.Ludovic Courtès
* 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-20services: boot: Reverse the order of boot expressions.Ludovic Courtès
* 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-18system: Have /run/setuid-programs first in $PATH.Ludovic Courtès
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-12system: Move ~/.config/guix/current first in PATH and INFOPATH.Ludovic Courtès
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-09system: Honor ~/.config/guix/current in /etc/profile.Ludovic Courtès
* 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-01Merge branch 'master' into core-updatesLudovic Courtès
2018-05-31system: 'read-boot-parameters' provides a more meaningful warning.Ludovic Courtès
'system' here was bound to Guile's 'system' procedure. * gnu/system.scm (read-boot-parameters): Fix argument for fallback warning.
2018-05-28Merge branch 'master' into core-updatesMark H Weaver
2018-05-28file-systems: Remove 'title' field and add <file-system-label>.Ludovic Courtès
The 'title' field was easily overlooked and was an endless source of confusion. Now, the value of the 'device' field is self-contained. * gnu/system/file-systems.scm (<file-system>): Change constructor name to '%file-system'. [title]: Remove. (<file-system-label>): New record type with printer. (report-deprecation, device-expression) (process-file-system-declaration, file-system): New macros. (file-system-title): New procedure. (file-system->spec, spec->file-system): Adjust to handle <file-system-label>. * gnu/system.scm (bootable-kernel-arguments): Add case for 'file-system-label?'. (read-boot-parameters): Likewise. (mapped-device-user): Avoid 'file-system-title'. (fs->boot-device): Remove. (operating-system-boot-parameters): Use 'file-system-device' instead of 'fs->boot-device'. (device->sexp): Add case for 'file-system-label?'. * gnu/bootloader/grub.scm (grub-root-search): Add case for 'file-system-label?'. * gnu/system/examples/bare-bones.tmpl, gnu/system/examples/beaglebone-black.tmpl, gnu/system/examples/lightweight-desktop.tmpl, gnu/system/examples/vm-image.tmpl: Remove uses of 'title'. * gnu/system/vm.scm (virtualized-operating-system): Remove uses of 'file-system-title'. * guix/scripts/system.scm (check-file-system-availability): Likewise, and adjust fix-it hint. (check-initrd-modules)[file-system-/dev]: Likewise. * gnu/build/file-systems.scm (canonicalize-device-spec): Remove 'title' parameter. [canonical-title]: Remove. Match on SPEC's type rather than on CANONICAL-TITLE. (mount-file-system): Adjust caller. * gnu/build/linux-boot.scm (boot-system): Interpret ROOT here. * gnu/services/base.scm (file-system->fstab-entry): Remove use of 'file-system-title'. * doc/guix.texi (File Systems): Remove documentation of the 'title' field. Rewrite documentation of 'device' and document 'file-system-label'.
2018-05-21Merge branch 'master' into core-updatesMark H Weaver
2018-05-19file-systems: Do not export <file-system>.Ludovic Courtès
* gnu/system/file-systems.scm (<file-system>): Do not export. * gnu/system.scm (operating-system-root-file-system): Use an accessor instead of 'match'.
2018-04-12Merge branch 'master' into core-updatesMark H Weaver
2018-04-11system: Provide a fall-back PATH for non-login shells started with su(1).Leo Famulari
* gnu/system.scm (operating-system-etc-service): Provide values for ENV_PATH and ENV_SUPATH in '/etc/login.defs'.
2018-03-29Merge branch 'master' into core-updatesMarius Bakke
2018-03-20gnu: util-linux: Fix CVE-2018-7738 without grafting.Leo Famulari
* gnu/packages/linux.scm (util-linux)[replacement]: Remove field. (util-linux-2.31.1): New variable. * gnu/system.scm (%base-packages): Use util-linux-2.31.1.
2018-03-07services: file-systems: Include 'user-file-systems' service.Ludovic Courtès
Previously the KNOWN-FS value used in 'essential-services' would be incomplete: it would lack all the file systems provided by services that extend 'file-system-service-type' (/sys/fs/cgroup, /proc/sys/fs/binfmt_misc, etc.) Consequently, upon shutdown, 'user-processes' would unmount these file systems before their corresponding service had been stopped; when their corresponding (e.g., 'file-system-/proc/sys/fs/binfmt_misc') was stopped, its 'umount' call would fail. This was harmless in practice, but this patch makes sure things work as intended and file systems are unmounted in the right order. * gnu/services/base.scm (file-system-shepherd-services): Instantiate 'user-file-systems' Shepherd service from here. (user-unmount-service-type, user-unmount-service): Remove. * gnu/system.scm (essential-services): Remove call to 'user-unmount-service'. * gnu/system/install.scm (cow-store-service-type): Adjust comment.
2018-03-02system: Add 'initrd-modules' field.Ludovic Courtès
* gnu/system.scm (<operating-system>)[initrd-modules]: New field. (operating-system-initrd-file): Pass #:linux-modules to 'make-initrd'. * gnu/system/linux-initrd.scm (default-initrd-modules): New procedure. (%base-initrd-modules): New macro. (base-initrd): Add #:linux-modules and honor it. * gnu/system/install.scm (embedded-installation-os): Use 'initrd-modules' instead of 'initrd'. * gnu/tests/install.scm (%raid-root-os): Likewise. * doc/guix.texi (operating-system Reference): Add 'initrd-modules'. (Initial RAM Disk): Document it. Adjust example to not use #:extra-modules.
2018-01-23Merge branch 'master' into core-updatesMark H Weaver
2018-01-21services: Missing services are automatically instantiated.Ludovic Courtès
This simplifies OS configuration: users no longer need to be aware of what a given service depends on. See the discussion at <https://lists.gnu.org/archive/html/guix-devel/2018-01/msg00114.html>. * gnu/services.scm (missing-target-error): New procedure. (service-back-edges): Use it. (instantiate-missing-services): New procedure. * gnu/system.scm (operating-system-services): Call 'instantiate-missing-services'. * tests/services.scm ("instantiate-missing-services") ("instantiate-missing-services, no default value"): New tests. * gnu/services/version-control.scm (cgit-service-type)[extensions]: Add FCGIWRAP-SERVICE-TYPE. * gnu/tests/version-control.scm (%cgit-os): Remove NGINX-SERVICE-TYPE and FCGIWRAP-SERVICE-TYPE instances. * doc/guix.texi (Log Rotation): Remove 'mcron-service-type' in example. (Miscellaneous Services): Remove 'nginx-service-type' and 'fcgiwrap-service-type' in Cgit example.