summaryrefslogtreecommitdiff
path: root/gnu/system.scm
Commit message (Collapse)AuthorAgeFilesLines
* system: Use (guix profiles) to build the system profile.Ludovic Courtès2014-08-111-27/+4
| | | | | | * gnu/system.scm (union): Remove. (operating-system-profile): Use 'profile-derivation' and related procedures instead of 'union'.
* system: Add the 'system?' field for user groups.Ludovic Courtès2014-07-251-1/+2
| | | | | | | | | | | | Suggested by Mark H. Weaver. * gnu/system/shadow.scm (<user-group>)[system?]: New field. (%base-groups): Introduce 'system-group' macro, and use it. * gnu/system.scm (user-group->gexp): Pass the 'system?' field. * guix/build/activation.scm (add-group): Add #:system? and honor it. (activate-users+groups): Handle the 'system?' field. * gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000. * doc/guix.texi (User Accounts): Document the 'system?' field.
* system: Recognize more file system flags.Ludovic Courtès2014-07-231-1/+2
| | | | | | | | | | | | | * guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New variables. (mount-flags->bit-mask): New procedure. (mount-file-system)[flags->bit-mask]: Remove. Use 'mount-flags->bit-mask' instead. In /etc/mtab, use the empty string when OPTIONS is false. * gnu/services/base.scm (file-system-service): Add #:flags parameter and honor it. * gnu/system.scm (other-file-system-services): Pass FLAGS to 'file-system-service'.
* system: Add 'create-mount-point?' file system option.Ludovic Courtès2014-07-231-1/+2
| | | | | | | | | | * gnu/system/file-systems.scm (<file-system>)[create-mount-point?]: New field. * gnu/services/base.scm (file-system-service): Add #:create-mount-point? parameter and honor it. * gnu/system.scm (other-file-system-services): Update 'file-system-service' call accordingly. * doc/guix.texi (File Systems): Document it.
* system: Add e2fsprogs to the base packages.Ludovic Courtès2014-07-161-1/+1
| | | | * gnu/system.scm (%base-packages): Add E2FSPROGS.
* system: Use kmod instead of module-init-tools.Ludovic Courtès2014-07-161-1/+6
| | | | | * gnu/system.scm (%base-packages): Use kmod instead of module-init-tools.
* system: Add 'nano' and 'lsof' to the base packages.Ludovic Courtès2014-07-141-1/+4
| | | | * gnu/system.scm (%base-packages): Add NANO and LSOF.
* system: Add 'which' to the base packages.Ludovic Courtès2014-07-121-1/+2
| | | | * gnu/system.scm (%base-packages): Add WHICH.
* system: Remove erroneous system binding in profile maker.Ludovic Courtès2014-07-121-2/+1
| | | | | | | Partly fixes <http://bugs.gnu.org/18002>. Reported by David Thompson <dthompson2@worcester.edu>. * gnu/system.scm (union): Remove #:system parameter, which was unused.
* linux-initrd: Rename 'qemu-initrd' to 'base-initrd'.Ludovic Courtès2014-07-011-1/+1
| | | | | | | | * gnu/system/linux-initrd.scm (qemu-initrd): Rename to... (base-initrd): ... this. * gnu/system.scm (<operating-system>)[initrd]: Update accordingly. * gnu/system/vm.scm (expression->derivation-in-linux-vm, system-disk-image, virtualized-operating-system): Likewise.
* system: Set $LINUX_MODULE_DIRECTORY as a function or /run/booted-system.Ludovic Courtès2014-06-291-6/+2
| | | | | | * gnu/system.scm (etc-directory): Remove #:kernel parameter. Set LINUX_MODULE_DIRECTORY as a function or /run/booted-system. (operating-system-etc-directory): Update accordingly.
* system: Add a 'system?' field to user accounts.Ludovic Courtès2014-06-271-1/+2
| | | | | | | | | | | | | | * gnu/system/shadow.scm (<user-account>)[system?]: New field. * gnu/system.scm (user-account->gexp): Add it. * guix/build/activation.scm (add-user): Add #:system? parameter and honor it. (activate-users+groups): Handle the 'system?' part of user tuples. Pass it to 'add-user'. Don't create PROFILE-DIR when SYSTEM? is true. * gnu/services/dbus.scm (dbus-service): Add 'system?' field for "messagebus" account. * gnu/services/base.scm (guix-build-accounts): Likewise. * gnu/services/avahi.scm (avahi-service): Likewise.
* system: Adjust the set of fields with default values.Ludovic Courtès2014-06-271-3/+3
| | | | | * gnu/system.scm (<operating-system>)[file-systems]: Remove default. [locale]: Add default value.
* guix system: Add 'reconfigure' action.Ludovic Courtès2014-06-271-0/+1
| | | | | | | | | | * guix/scripts/system.scm (%system-profile): New variable. (switch-to-system, previous-grub-entries): New procedures. (unless-file-not-found): New macro. (show-help): Add 'reconfigure'. (guix-system): Handle it. * gnu/system.scm: Export 'operating-system-activation-script'. * doc/guix.texi (Invoking guix system): Document it.
* system: Support the addition of old entries in the GRUB menu.Ludovic Courtès2014-06-251-3/+5
| | | | | | | * gnu/system.scm (operating-system-grub.cfg): Add 'old-entries' parameter. Pass it to 'grub-configuration-file'. * gnu/system/grub.scm (grub-configuration-file): Add #:old-entries parameter. Honor it.
* system: Store boot parameters in the system derivation.Ludovic Courtès2014-06-251-1/+17
| | | | | * gnu/system.scm (operating-system-parameters-file): New procedure. (operating-system-derivation): Use it to produce a 'parameters' files.
* system: Factorize GRUB menu entry label.Ludovic Courtès2014-06-251-4/+8
| | | | | * gnu/system.scm (kernel->grub-label): New procedure. (operating-system-grub.cfg): Use it.
* services: Add udev service, and add it to '%base-services'.Ludovic Courtès2014-06-241-1/+1
| | | | | | * gnu/services/base.scm (udev-service): New procedure. (%base-services): Use it. * gnu/system.scm (%base-packages): Add UDEV.
* system: Augment the default set of groups.Ludovic Courtès2014-06-221-3/+1
| | | | | * gnu/system/shadow.scm (%base-groups): New variable. * gnu/system.scm (<operating-system>)[groups]: Use it as the default.
* system: Prefer packages from %FINAL-INPUTS.Ludovic Courtès2014-06-191-6/+10
| | | | | | * gnu/packages/base.scm (canonical-package): New procedure. * gnu/system.scm (%base-packages): Pass BASH, COREUTILS, FINDUTILS, GREP, and SED through 'canonical-package'.
* system: Tell module-init-tools where to look for modules.Ludovic Courtès2014-06-041-1/+8
| | | | | | | | | | * gnu/packages/linux.scm (module-init-tools)[source](patches): New field. * gnu/packages/patches/module-init-tools-moduledir.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/system.scm (etc-directory): Add #:kernel parameter. Set 'LINUX_MODULE_DIRECTORY' in bashrc. (operating-system-etc-directory): Pass #:kernel to 'etc-directory'.
* system: Rename activation script.Ludovic Courtès2014-06-041-1/+1
| | | | | * gnu/system.scm (operating-system-activation-script): Change file name to "activate".
* system: Define '%base-packages' and use it.Ludovic Courtès2014-06-041-10/+17
| | | | | | | | | | * gnu/system.scm (<operating-system>)[packages]: Change default value to %BASE-PACKAGES. (%base-packages): New variable. * gnu/system/install.scm (installation-os): Use it when defining the 'packages' field. * doc/guix.texi (Using the Configuration System): Use %BASE-PACKAGES in example. Remove now unneeded module imports. Explain this.
* system: Make sure /run/setuid-programs comes first in $PATH.Ludovic Courtès2014-06-031-2/+2
| | | | | * gnu/system.scm (etc-directory) <bashrc>: Move /run/setuid-programs first in $PATH.
* system: File system sources can be marked as labels or devices.Ludovic Courtès2014-06-031-4/+7
| | | | | | | | | | | | | | | | | * gnu/system/file-systems.scm (<file-system>)[title]: New field. * gnu/services/base.scm (file-system-service): Add #:title parameter. In 'start' gexp, use 'canonicalize-device-spec' and honor TITLE. * gnu/system.scm (other-file-system-services, operating-system-root-file-system, operating-system-initrd-file): Adjust accordingly. * gnu/system/linux-initrd.scm (file-system->spec): Likewise. * gnu/system/vm.scm (system-disk-image): Add 'title' field for the root file system. * guix/build/linux-initrd.scm (mount-file-system): Expect the second element of SPEC to be the title. (boot-system)[root-mount-point?, root-fs-type]: Likewise. * gnu/services/dmd.scm (dmd-configuration-file): Select 'canonicalize-device-spec'.
* system: Add 'issue' field.Ludovic Courtès2014-05-311-9/+11
| | | | | | | | * gnu/system.scm (<operating-system>)[issue]: New field. (%default-issue): New variable. (etc-directory): Add #:issue parameter and honor it. (operating-system-etc-directory): Adjust call accordingly. * build-aux/hydra/demo-os.scm: Add 'issue' field.
* system: Add 'fusermount' to the default setuid programs.Ludovic Courtès2014-05-291-1/+3
| | | | * gnu/system.scm (%setuid-programs): Add 'fusermount'.
* services: Support per-service activation scripts.Ludovic Courtès2014-05-241-0/+11
| | | | | | * gnu/services.scm (<service>)[activate]: New field. * gnu/system.scm (operating-system-activation-script)[service-activations]: New procedure. Use it, and primitive-load each activation.
* system: Separate the activation script from the boot script.Ludovic Courtès2014-05-241-5/+22
| | | | | | | | | * gnu/system.scm (operating-system-activation-script): New procedure, containing most of the former 'operating-system-boot-script'. (operating-system-boot-script): Call it, and 'primitive-load' its result. * guix/build/activation.scm (%booted-system): Remove. (activate-current-system): Remove #:boot? parameter and related code.
* Add (gnu system file-systems).Ludovic Courtès2014-05-201-51/+2
| | | | | | | | | | | | | This fixes a circular dependency between (gnu system) and (gnu system linux-initrd), where the latter could end up being compiled before 'file-system-type' was defined as a macro. * gnu/system.scm (<file-system>, %fuse-control-file-system, %binary-format-file-system): Move to... * gnu/system/file-systems.scm: ... here. New file. * build-aux/hydra/demo-os.scm, gnu/system/linux-initrd.scm, gnu/system/vm.scm: Use it. * gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* system: Add 'grub-configuration' record.Ludovic Courtès2014-05-181-6/+5
| | | | | | | | | | | * gnu/system/grub.scm (<grub-configuration>): New record type. (grub-configuration-file): Add 'config' parameter; remove #:default-entry and #:timeout. Honor CONFIG. * gnu/system.scm (<operating-system>): Remove 'bootloader-entries' field; remove default value for 'bootloader' field. (operating-system-grub.cfg): Pass the 'bootloader' field to 'grub-configuration-file'. * build-aux/hydra/demo-os.scm (bootloader): New field.
* system: Make /run/current-system at activation time.Ludovic Courtès2014-05-181-20/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/system.scm (etc-directory): Change default value of #:profile. Change contents of SHELLS. Use /run/current-system/profile/{s,}bin in BASHRC. (operating-system-boot-script)[%modules]: Add (guix build linux-initrd). Add call to 'activate-current-system' in gexp. (operating-system-initrd-file, operating-system-grub.cfg): New procedures. (operating-system-derivation): Don't build grub.cfg here and remove it from the file union. * gnu/system/vm.scm (qemu-image): Remove #:populate. (operating-system-build-gid, operating-system-default-contents): Remove. (system-qemu-image): Remove call to 'operating-system-default-contents'. Use 'operating-system-grub.cfg' to get grub.cfg. Add GRUB.CFG to #:inputs. (system-qemu-image/shared-store): Likewise, but don't add GRUB.CFG to #:inputs. (system-qemu-image/shared-store-script): Pass --system kernel option. * guix/build/activation.scm (%booted-system, %current-system): New variables. (boot-time-system, activate-current-system): New procedures. * guix/build/install.scm (evaluate-populate-directive): Add case for ('directory name uid gid mode). (directives, populate-root-file-system): New procedures. * guix/build/vm.scm (initialize-hard-disk): Replace calls to 'evaluate-populate-directive' by a call to 'populate-root-file-system'. * gnu/services/dmd.scm (dmd-configuration-file): Use /run/current-system/profile/bin. * gnu/services/xorg.scm (slim-service): Likewise.
* system: Provide declarations for the 'fusectl' and 'binfmt_misc' file systems.Ludovic Courtès2014-05-141-1/+25
| | | | | | * gnu/system.scm (%fuse-control-file-system, %binary-format-file-system): New variables. * build-aux/hydra/demo-os.scm (file-systems): New field.
* system: Move skeleton code to (gnu system shadow).Ludovic Courtès2014-05-141-45/+0
| | | | | * gnu/system.scm (default-skeletons, skeleton-directory): Move to... * gnu/system/shadow.scm: ... here.
* system: Add skeleton '.gdbinit'.Ludovic Courtès2014-05-141-2/+6
| | | | * gnu/system.scm (default-skeletons): Add .gdbinit.
* system: Populate /etc/skel.Ludovic Courtès2014-05-121-2/+61
| | | | | | | | | * gnu/system.scm (<operating-system>)[skeletons]: New field. (default-skeletons, skeleton-directory): New procedures. (etc-directory): Add #:skeletons parameter. Call 'skeleton-directory', and produce the 'skel' sub-directory. (operating-system-etc-directory): Pass #:skeletons to 'etc-directory'.
* system: Make accounts and groups at activation time.Ludovic Courtès2014-05-111-31/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/services/base.scm (guix-build-accounts): Remove #:gid parameter; add #:group. Remove 'password' and 'gid' fields in 'user-account' form, and add 'group'. (guix-service): Remove #:build-user-gid parameter. Remove 'id' field in 'user-group' form. * gnu/system.scm (etc-directory): Remove #:groups and #:accounts. No longer produce files "passwd", "shadow", and "group". Adjust caller accordingly. (%root-account): New variable. (operating-system-accounts): Add 'users' variable. Add %ROOT-ACCOUNT only of 'operating-system-users' doesn't already contain a root account. (user-group->gexp, user-account->gexp): New procedures. (operating-system-boot-script): Add calls to 'setenv' and 'activate-users+groups' in gexp. * gnu/system/linux.scm (base-pam-services): Add PAM services for "user{add,del,mode}" and "group{add,del,mod}". * gnu/system/shadow.scm (<user-account>)[gid]: Rename to... [group]: ... this. [supplementary-groups]: New field. [uid, password]: Default to #f. (<user-group>)[id]: Default to #f. (group-file, passwd-file): Remove. * gnu/system/vm.scm (operating-system-default-contents)[user-directories]: Remove. Add "/home" to the directives. * guix/build/activation.scm (add-group, add-user, activate-users+groups): New procedures.
* services: Add 'file-system-service'.Ludovic Courtès2014-05-101-5/+25
| | | | | | | | | | * gnu/services/base.scm (file-system-service): New procedure. (user-processes-service): Add 'requirements' parameter. * gnu/services/dmd.scm (dmd-configuration-file): Use (guix build linux-initrd). * guix/build/linux-initrd.scm (guix): Export 'check-file-system'. * gnu/system.scm (file-union): New procedure. (essential-services): Use it. Add that to the returned list.
* system: Automatically add essential services.Ludovic Courtès2014-05-091-7/+24
| | | | | | | | | | | | | * gnu/services/base.scm (%base-services): Remove calls to 'host-name-service', 'user-processes-service', and 'root-file-system-service'. * gnu/system.scm (<operating-system>)[operating-system-services]: Rename to... [operating-system-user-services]: ... this. (essential-services, operating-system-services): New procedures. (operating-system-accounts, operating-system-etc-directory, operating-system-boot-script, operating-system-derivation): Adjust to new 'operating-system-services' return type.
* linux-initrd: Delete files from the initrd ramfs when switching roots.Ludovic Courtès2014-05-061-0/+9
| | | | | | | | | * guix/build/linux-initrd.scm (switch-root): Delete file from the old root. Chdir to / after 'chroot' call. Re-open file descriptors 0, 1, and 2. (boot-system): Move 'loading' message after the 'switch-root' call. * gnu/system.scm (operating-system-boot-script): Add loop that closes file descriptor before calling 'execl'.
* linux-initrd: Check the root and other early file systems.Ludovic Courtès2014-05-041-2/+4
| | | | | | | | | | | | | | | | | | | | * gnu/system.scm (operating-system-derivation)[boot-file-systems]: Keep "/". * gnu/system/linux-initrd.scm (file-system->spec): Keep the 'check?' flag. (qemu-initrd)[helper-packages]: New variable. Pass it as #:to-copy. <gexp>: Add 'set-path-environment-variable' call. Remove #:unionfs argument for 'boot-system'. * gnu/system/vm.scm (%linux-vm-file-systems): Add 'check?' field/ (virtualized-operating-system): Likewise for the "9p" file system. * guix/build/linux-initrd.scm (mount-root-file-system): Change #:unionfs default. Call 'check-file-system' before mounting ROOT, when VOLATILE-ROOT? is false. (check-file-system): New procedure. (mount-file-system): Honor 'check?' element in list; add 'check-file-system' call. (boot-system): Remove #:root-fs-type and #:unionfs parameters. [root-mount-point?, root-fs-type]: New variables. Call 'mount-file-system' on all MOUNTS but "/".
* system: Add first-class file system declarations.Ludovic Courtès2014-05-031-5/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/system.scm (<operating-system>)[initrd]: Default to 'qemu-initrd'. (<file-system>): New record type. (operating-system-root-file-system): New procedure. (operating-system-derivation): Take the device name for GRUB from 'operating-system-root-file-system'. Pass the 'operating-system-initrd' procedure the list of boot file systems. * gnu/system/linux-initrd.scm (file-system->spec): New procedure. (qemu-initrd): Add 'file-systems' parameter, and remove #:mounts parameter. [file-system-type-predicate]: New procedure. [linux-modules]: Use it. Adjust #:mounts argument in 'boot-system' call. (gnu-system-initrd): Remove. * gnu/system/vm.scm (%linux-vm-file-systems): New variable. (expression->derivation-in-linux-vm): Adjust call to 'qemu-initrd'. (virtualized-operating-system): New procedure. (system-qemu-image/shared-store-script)[initrd]: Remove. Use 'virtualized-operating-system'. Get the 'initrd' file from OS-DRV. * guix/build/linux-initrd.scm (mount-qemu-smb-share, mount-qemu-9p): Remove. (MS_RDONLY, MS_BIND): New global variables. (bind-mount): Remove local 'MS_BIND' definition. (mount-root-file-system): New procedure, with code formerly in 'boot-system'. (mount-file-system): New procedure. (boot-system): Add #:root-fs-type parameter. Remove 'MS_RDONLY' local variable. Use 'mount-root-file-system' and 'mount-file-system'. * doc/guix.texi (Using the Configuration System): Add 'file-system' declaration.
* system: Add 'sudo' to the setuid programs, and handle /etc/sudoers.Ludovic Courtès2014-05-011-9/+21
| | | | | | | | | | | | | | * gnu/system.scm (<operating-system>)[groups]: Change default to just the 'root' group. [sudoers]: New field. (etc-directory): Add #:sudoers parameter. Add 'sudoers' to the file union. (operating-system-etc-directory): Pass #:sudoers to 'etc-directory'. (%setuid-programs): Add 'sudo'. (%sudoers-specification): New variable. * gnu/system/linux.scm (base-pam-services): Add 'sudo'. * build-aux/hydra/demo-os.scm: Add 'groups' field; add 'guest' to the 'wheel' group.
* system: Add support for setuid binaries.Ludovic Courtès2014-04-301-5/+28
| | | | | | | | | | | | | | | * gnu/system.scm (<operating-system>)[pam-services, setuid-programs]: New fields. (etc-directory)[bashrc]: Prepend /run/setuid-programs to $PATH. (operating-system-etc-directory): Honor 'operating-system-pam-services'. (%setuid-programs): New variable. (operating-system-boot-script): Add (guix build utils) to the set of imported modules. Call 'activate-setuid-programs' in boot script. * gnu/system/linux.scm (base-pam-services): New procedure. * guix/build/activation.scm (%setuid-directory): New variable. (activate-setuid-programs): New procedure. * build-aux/hydra/demo-os.scm: Add 'pam-services' field.
* system: Add (guix build activation).Ludovic Courtès2014-04-301-3/+18
| | | | | | | | | * gnu/services/dmd.scm (dmd-configuration-file): Remove 'etc' parameter. Move /etc activation code to... * guix/build/activation.scm: ... here; new file. * gnu/system.scm (operating-system-boot-script): Augment script: add (guix build activation) to the load path; call 'activate-etc'. * Makefile.am (MODULES): Add guix/build/activation.scm.
* system: Rewrite 'union' using gexps.Ludovic Courtès2014-04-281-29/+14
| | | | * gnu/system.scm (union): Rewrite using 'gexp->derivation'.
* system: grub: Rewrite using gexps.Ludovic Courtès2014-04-281-8/+7
| | | | | | * gnu/system/grub.scm (grub-configuration-file): Rewrite using 'gexp->derivation'. * gnu/system.scm (operating-system-derivation): Adjust accordingly.
* system: Change 'file-union' to use gexps.Ludovic Courtès2014-04-281-81/+37
| | | | | | | * gnu/system.scm (file-union): Make 'name' the first parameter; remove 'inputs' parameter. Rewrite using 'gexp->derivation'. (etc-directory): Adjust accordingly. (operating-system-derivation): Ditto.
* services: Rewrite using gexps.Ludovic Courtès2014-04-281-36/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/services.scm (<service>)[inputs]: Remove. * gnu/system.scm (links): Remove. (etc-directory): Add PASSWD and SHADOW to #:inputs. (operating-system-boot-script): Pass ETC to 'dmd-configuration-file'. (operating-system-derivation): Remove EXTRAS from the union. * gnu/system/linux.scm (pam-service->configuration): Rewrite in terms of 'gexp->derivation'. Compute the contents on the build side. Expect 'arguments' to contain a list of gexps. (pam-services->directory): Rewrite in terms of 'gexp->derivation'. (unix-pam-service): Change 'arguments' to a list of one gexp. * gnu/system/shadow.scm (<user-account>)[inputs]: Remove. [shell]: Change default value to a gexp. (passwd-file): Rewrite in terms of 'gexp->derivation'. Compute contents on the build side. * gnu/services/base.scm (host-name-service, mingetty-service, nscd-service, syslog-service, guix-service): Change 'start' and 'stop' to gexps; remove 'inputs' field. (guix-build-accounts): Change 'shell' field to a gexp. * gnu/services/networking.scm (static-networking-service): Change 'start' and 'stop' to gexps; remove 'inputs' field. * gnu/services/xorg.scm (slim-service): Likewise. * gnu/services/dmd.scm (dmd-configuration-file): Expect ETC to be a derivation. Change 'config' to a gexp. Use 'gexp->file' instead of 'text-file'. * doc/guix.texi (Defining Services): Update nscd example with gexps, and without 'inputs'. Add xref to "G-Expressions".
* vm: Rewrite support procedures to use gexps.Ludovic Courtès2014-04-281-10/+5
| | | | | | | | | | | | | | * gnu/system/vm.scm (%imported-modules): Remove. (expression->derivation-in-linux-vm): Remove 'inputs' parameter. Rename 'imported-modules' to 'modules'. Rewrite using gexps and 'gexp->derivation'. (qemu-image): Add 'qemu' parameter. Pass NAME to 'expression->derivation-in-linux-vm'. Rewrite using gexps. Remove #:inputs argument to 'expression->derivation-in-linux-vm'. (operating-system-default-contents): Rewrite using gexps. * gnu/system.scm (operating-system-profile-derivation): Rename to... (operating-system-profile): ... this. Adjust callers. (operating-system-profile-directory): Remove.