diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-09 23:34:01 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-09 23:53:36 +0200 |
commit | e1fbc32a0a1d027ec641ac0e249ad9aa1d5a8ffa (patch) | |
tree | 91327928ec074b90c8a8af3c4902e68c05c88e53 | |
parent | 36ffaca2469e6a98e23f59c4a7e82ed985710310 (diff) | |
download | gnu-guix-e1fbc32a0a1d027ec641ac0e249ad9aa1d5a8ffa.tar gnu-guix-e1fbc32a0a1d027ec641ac0e249ad9aa1d5a8ffa.tar.gz |
install: Have several OS config templates under /etc/configuration.
* gnu/system/install.scm (configuration-template-service): Remove
'local-template' and 'template'. Add 'search' and 'templates'.
[activate]: Copy all of TEMPLATES to /etc/configuration.
* doc/guix.texi (System Installation): Adjust file name accordingly.
-rw-r--r-- | doc/guix.texi | 2 | ||||
-rw-r--r-- | gnu/system/install.scm | 29 |
2 files changed, 23 insertions, 8 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index e2465ee823..ea4a5c7b7c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3927,7 +3927,7 @@ It is better to store that file on the target root file system, say, as A minimal operating system configuration, with just the bare minimum and only a root account would look like this (on the installation system, -this example is available as @file{/etc/configuration-template.scm}): +this example is available as @file{/etc/configuration/bare-bones.scm}): @example @include os-config.texi diff --git a/gnu/system/install.scm b/gnu/system/install.scm index bba2df5094..82793a6648 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -32,6 +32,8 @@ #:use-module (gnu packages grub) #:use-module (gnu packages texinfo) #:use-module (gnu packages compression) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) #:export (self-contained-tarball installation-os)) @@ -172,12 +174,17 @@ the given target.") "Return a dummy service whose purpose is to install an operating system configuration template file in the installation system." - (define local-template - "/etc/configuration-template.scm") - (define template - (search-path %load-path "gnu/system/examples/bare-bones.tmpl")) + (define search + (cut search-path %load-path <>)) + (define templates + (map (match-lambda + ((file '-> target) + (list (local-file (search file)) + (string-append "/etc/configuration/" target)))) + '(("gnu/system/examples/bare-bones.tmpl" -> "bare-bones.scm") + ("gnu/system/examples/desktop.tmpl" -> "desktop.scm")))) - (mlet %store-monad ((template (interned-file template))) + (with-monad %store-monad (return (service (requirement '(root-file-system)) (provision '(os-config-template)) @@ -186,8 +193,16 @@ configuration template file in the installation system." (start #~(const #t)) (stop #~(const #f)) (activate - #~(unless (file-exists? #$local-template) - (copy-file #$template #$local-template))))))) + #~(begin + (use-modules (ice-9 match) + (guix build utils)) + + (mkdir-p "/etc/configuration") + (for-each (match-lambda + ((file target) + (unless (file-exists? target) + (copy-file file target)))) + '#$templates))))))) (define %nscd-minimal-caches ;; Minimal in-memory caching policy for nscd. |