summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-05-09 22:58:46 +0200
committerLudovic Courtès <ludo@gnu.org>2014-05-09 22:59:18 +0200
commit217a5b852e02775123a30131f63684c09bd6ac77 (patch)
tree89563dcc30851ee21da7f07ce04fc22b069dbea9
parente5c66f8c7bfb1f8c4162d19b3d01526164cfe2a4 (diff)
downloadpatches-217a5b852e02775123a30131f63684c09bd6ac77.tar
patches-217a5b852e02775123a30131f63684c09bd6ac77.tar.gz
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>)[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.
-rw-r--r--gnu/services/base.scm9
-rw-r--r--gnu/system.scm31
2 files changed, 25 insertions, 15 deletions
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 @@ This is the GNU operating system, welcome!\n\n")))
(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 @@
#: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 @@
operating-system-packages
operating-system-timezone
operating-system-locale
- operating-system-services
operating-system-file-systems
operating-system-derivation
@@ -112,7 +112,7 @@
(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 @@ file."
(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 @@ alias ll='ls -l'
(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 @@ alias ll='ls -l'
(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 @@ we're running in the final root."
(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 @@ we're running in the final root."
(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))