Merge branch 'master' into core-updates
linux-initrd: Add virtio drivers by default. * gnu/system/linux-initrd.scm (base-initrd): Change #:virtio? default to #t. This will facilitate the use of GuixSD in VM guests.
system: Take kernel modules from the user-specified kernel. * gnu/system/linux-initrd.scm (base-initrd): Add #:linux option to specify the linux kernel to use. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Propagate #:linux to base-initrd. * gnu/system.scm (operating-system-initrd-file): Pass #:linux to 'make-initrd'. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
linux-initrd: Add 'isci' module, needed for some SAS controllers. Encountered on a Dell Precision T3600. * gnu/system/linux-initrd.scm (base-initrd)[linux-modules]: Add isci.
linux-initrd: Add USB kernel modules to the default initrd. * gnu/system/linux-initrd.scm (base-initrd)[linux-modules]: Add usb-storage, uas, usbkbd, and usbhid. * gnu/system/vm.scm (system-disk-image): Remove #:extra-modules argument to 'base-initrd'.
monads: Move '%store-monad' and related procedures where they belong. This turns (guix monads) into a generic module for monads, and moves the store monad and related monadic procedures in their corresponding module. * guix/monads.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file, package-file, package->derivation, package->cross-derivation, origin->derivation, imported-modules, compiled, modules, built-derivations, run-with-store): Move to... * guix/store.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file): ... here. (%guile-for-build): New variable. (run-with-store): Moved from monads.scm. Remove default value for #:guile-for-build. * guix/packages.scm (default-guile): Export. (set-guile-for-build): New procedure. (package-file, package->derivation, package->cross-derivation, origin->derivation): Moved from monads.scm. * guix/derivations.scm (%guile-for-build): Remove. (imported-modules): Rename to... (%imported-modules): ... this. (compiled-modules): Rename to... (%compiled-modules): ... this. (built-derivations, imported-modules, compiled-modules): New procedures. * gnu/services/avahi.scm, gnu/services/base.scm, gnu/services/dbus.scm, gnu/services/dmd.scm, gnu/services/networking.scm, gnu/services/ssh.scm, gnu/services/xorg.scm, gnu/system/install.scm, gnu/system/linux-initrd.scm, gnu/system/shadow.scm, guix/download.scm, guix/gexp.scm, guix/git-download.scm, guix/profiles.scm, guix/svn-download.scm, tests/monads.scm: Adjust imports accordingly. * guix/monad-repl.scm (default-guile-derivation): New procedure. (store-monad-language, run-in-store): Use it. * build-aux/hydra/gnu-system.scm (qemu-jobs): Add explicit 'set-guile-for-build' call. * guix/scripts/archive.scm (derivation-from-expression): Likewise. * guix/scripts/build.scm (options/resolve-packages): Likewise. * guix/scripts/environment.scm (guix-environment): Likewise. * guix/scripts/system.scm (guix-system): Likewise. * doc/guix.texi (The Store Monad): Adjust module names accordingly.
Merge branch 'master' into 'core-updates'.
linux-initrd: Add the 'virtio_console' module for QEMU guests. * gnu/system/linux-initrd.scm (base-initrd)[virtio-modules]: Add "virtio_console".
linux-initrd: Remove the ".ko" suffix from module names in 'base-initrd'. * gnu/system/linux-initrd.scm (base-initrd): Remove the .ko suffix from module names.
linux-initrd: Remove now redundant module names. * gnu/system/linux-initrd.scm (base-initrd)[virtio-modules]: Remove "virtio.ko" and "virtio_ring.ko". [virtio-9p-modules]: Remove "fscache.ko" and "9pnet.ko". [linux-modules]: Remove "libahci.ko".
linux-boot: Load modules and their dependencies, à la 'modprobe'. * gnu/build/linux-boot.scm: Use (gnu build linux-modules). (load-linux-module*): Remove. (boot-system): Add #:linux-module-directory parameter. [lookup-module]: New procedure. Call 'current-module-debugging-port'. Pass #:lookup-module to 'load-linux-module*'. Map LOOKUP-MODULE on LINUX-MODULES. * gnu/system/linux-initrd.scm (base-initrd): Adjust 'boot-system' call accordingly. Adjust #:modules argument as well. * gnu/system.scm (operating-system-activation-script)[%modules]: Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.
linux-initrd: Copy modules and their dependencies to the initrd. * gnu/system/linux-initrd.scm (flat-linux-module-directory)[build-exp]: Add 'lookup' procedure. Use 'recursive-module-dependencies' to compute the list of modules to copy. Adjust #:modules parameter.
linux-initrd: Add modules for ATA controllers by default. Reported by th3kent on #guix. * gnu/system/linux-initrd.scm (base-initrd)[linux-modules]: Add pata_acpi.ko and pata_atiixp.ko.
system: Add support for boot-time mapped devices. * gnu/build/linux-boot.scm (boot-system): Add #:pre-mount parameter and honor it. * gnu/system/linux-initrd.scm (base-initrd): Add #:mapped-devices parameter. Add 'device-mapping-commands' variable, and use it to build the #:pre-mount argument of 'boot-system'. * gnu/system.scm (mapped-device-user, operating-system-user-mapped-devices, operating-system-boot-mapped-devices): New procedures. (device-mapping-services): Use 'operating-system-user-mapped-devices' instead of 'operating-system-mapped-devices'. (operating-system-initrd-file): Call the initrd with #:mapped-devices.
linux-initrd: Remove now obsolete #:guile-modules-in-chroot? parameter. * gnu/build/linux-boot.scm (boot-system): Remove #:guile-modules-in-chroot? and related code. * gnu/system/linux-initrd.scm (base-initrd): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Remove #:guile-modules-in-chroot? argument in 'base-initrd' call.
Merge branch 'master' into core-updates Conflicts: gnu/packages/image.scm
system: Add support for Linux-style mapped devices. * gnu/system/file-systems.scm (<mapped-device>): New record type. * gnu/system.scm (<operating-system>)[mapped-devices]: New field. (luks-device-mapping): New procedure. (other-file-system-services)[device-mappings, requirements]: New procedures. Pass #:requirements to 'file-system-service'. (device-mapping-services): New procedure. (essential-services): Use it. Append its result to the return value. (operating-system-initrd-file): Add comment. * gnu/services/base.scm (file-system-service): Add #:requirements parameter and honor it. (device-mapping-service): New procedure. * gnu/system/linux-initrd.scm (base-initrd): Add comment.
linux-initrd: Store Linux modules in a normal store directory. * gnu/system/linux-initrd.scm (expression->initrd): Remove #:linux and #:linux-modules parameters. Remove call to 'float-linux-module-directory'. (base-initrd): Add call to 'float-linux-module-directory'. Use it in #:linux-modules argument in the gexp. Remove #:linux and #:linux-modules arguments to 'expression->initrd'. * gnu/build/linux-initrd.scm (build-initrd): Remove #:linux-module-directory parameter. Don't create 'modules' sub-directory. * gnu/build/linux-boot.scm (boot-system): Mentin that LINUX-MODULES is a list of absolute file names. Don't prepend "/modules/" to LINUX-MODULES. * doc/guix.texi (Initial RAM Disk): Adjust accordingly.
linux-initrd: Remove #:to-copy argument of 'expression->initrd'. * gnu/system/linux-initrd.scm (expression->initrd): Remove #:to-copy parameter. Remove 'graph-files', and adjust #:references-graphs arguments to just list INIT. (base-initrd): Remove #:to-copy argument. * doc/guix.texi (Initial RAM Disk): Adjust accordingly.
linux-initrd: Move initrd creation code to (guix build linux-initrd). * gnu/build/linux-initrd.scm (cache-compiled-file-name, compile-to-cache, build-initrd): New procedures. * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Remove code now moved above. Use 'build-initrd'.