From 217a5b852e02775123a30131f63684c09bd6ac77 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 May 2014 22:58:46 +0200 Subject: system: Automatically add essential services. * 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-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. --- gnu/services/base.scm | 9 +-------- gnu/system.scm | 31 ++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index ae538ea41c..5157349aec 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -267,13 +267,6 @@ (define %base-services (mingetty-service "tty6" #:motd motd) (syslog-service) (guix-service) - (nscd-service) - - ;; FIXME: Make this an activation-time thing instead of a service. - (host-name-service "gnu") - - ;; The "root" services. - (user-processes-service) - (root-file-system-service)))) + (nscd-service)))) ;;; base.scm ends here diff --git a/gnu/system.scm b/gnu/system.scm index 8a5fe47b30..491e0ed7ae 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -40,6 +40,7 @@ (define-module (gnu system) #:export (operating-system operating-system? operating-system-services + operating-system-user-services operating-system-packages operating-system-bootloader-entries operating-system-host-name @@ -50,7 +51,6 @@ (define-module (gnu system) operating-system-packages operating-system-timezone operating-system-locale - operating-system-services operating-system-file-systems operating-system-derivation @@ -112,7 +112,7 @@ (define-record-type* operating-system (timezone operating-system-timezone) ; string (locale operating-system-locale) ; string - (services operating-system-services ; list of monadic services + (services operating-system-user-services ; list of monadic services (default %base-services)) (pam-services operating-system-pam-services ; list of PAM services @@ -184,6 +184,24 @@ (define builder (gexp->derivation name builder)) +(define (essential-services os) + "Return the list of essential services for OS. These are special services +that implement part of what's declared in OS are responsible for low-level +bookkeeping." + (mlet %store-monad ((procs (user-processes-service)) + (root-fs (root-file-system-service)) + (host-name (host-name-service + (operating-system-host-name os)))) + (return (list host-name procs root-fs)))) + +(define (operating-system-services os) + "Return all the services of OS, including \"internal\" services that do not +explicitly appear in OS." + (mlet %store-monad + ((user (sequence %store-monad (operating-system-user-services os))) + (essential (essential-services os))) + (return (append essential user)))) + (define* (etc-directory #:key (locale "C") (timezone "Europe/Paris") (accounts '()) @@ -254,8 +272,7 @@ (define (operating-system-profile os) (define (operating-system-accounts os) "Return the user accounts for OS, including an obligatory 'root' account." - (mlet %store-monad ((services (sequence %store-monad - (operating-system-services os)))) + (mlet %store-monad ((services (operating-system-services os))) (return (cons (user-account (name "root") (password "") @@ -269,7 +286,7 @@ (define (operating-system-accounts os) (define (operating-system-etc-directory os) "Return that static part of the /etc directory of OS." (mlet* %store-monad - ((services (sequence %store-monad (operating-system-services os))) + ((services (operating-system-services os)) (pam-services -> ;; Services known to PAM. (delete-duplicates @@ -310,7 +327,7 @@ (define %modules (guix build utils))) (mlet* %store-monad - ((services (sequence %store-monad (operating-system-services os))) + ((services (operating-system-services os)) (etc (operating-system-etc-directory os)) (modules (imported-modules %modules)) (compiled (compiled-modules %modules)) @@ -367,7 +384,7 @@ (define boot-file-systems (mlet* %store-monad ((profile (operating-system-profile os)) (etc (operating-system-etc-directory os)) - (services (sequence %store-monad (operating-system-services os))) + (services (operating-system-services os)) (boot (operating-system-boot-script os)) (kernel -> (operating-system-kernel os)) (initrd ((operating-system-initrd os) boot-file-systems)) -- cgit v1.2.3