summary refs log tree commit diff
path: root/gnu/system
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-07-24 22:45:24 +0200
committerLudovic Courtès <ludo@gnu.org>2014-07-24 23:02:27 +0200
commit1dac85663858c8323a0d2483fb675aa5820d4d0e (patch)
treef9455f18fe09495f5af9c34b89187140a4869134 /gnu/system
parent0a90af153199b03deced53da7ef7f50f0e561f80 (diff)
downloadguix-1dac85663858c8323a0d2483fb675aa5820d4d0e.tar.gz
install: Add a configuration template to the image.
* gnu/system/os-config.tmpl: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it
* gnu/system/install.scm (configuration-template-service): New
  procedure.
  (installation-services): Call it.
* doc/guix.texi (System Installation): Mention
  configuration-template.scm, and @include gnu/system/os-config.tmpl.
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/install.scm24
-rw-r--r--gnu/system/os-config.tmpl31
2 files changed, 55 insertions, 0 deletions
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index d3539b3f84..567934e4c1 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -115,6 +115,27 @@ the given target.")
                        (delete-file-recursively
                         (string-append target #$%backing-directory))))))))
 
+(define (configuration-template-service)
+  "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/os-config.tmpl"))
+
+  (mlet %store-monad ((template (interned-file template)))
+    (return (service
+             (requirement '(root-file-system))
+             (provision '(os-config-template))
+             (documentation
+              "This dummy service installs an OS configuration template.")
+             (start #~(const #t))
+             (stop  #~(const #f))
+             (activate
+              #~(unless (file-exists? #$local-template)
+                  (copy-file #$template #$local-template)))))))
+
 (define (installation-services)
   "Return the list services for the installation image."
   (let ((motd (text-file "motd" "
@@ -144,6 +165,9 @@ You have been warned.  Thanks for being so brave.
                             #:auto-login "guest"
                             #:login-program (log-to-info))
 
+          ;; Documentation add-on.
+          (configuration-template-service)
+
           ;; A bunch of 'root' ttys.
           (normal-tty "tty3")
           (normal-tty "tty4")
diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl
new file mode 100644
index 0000000000..ad58606f67
--- /dev/null
+++ b/gnu/system/os-config.tmpl
@@ -0,0 +1,31 @@
+;; This is an operating system configuration template.
+
+(use-modules (gnu))
+
+(operating-system
+  (host-name "antelope")
+  (timezone "Europe/Paris")
+  (locale "en_US.UTF-8")
+
+  ;; Assuming /dev/sdX is the target hard disk, and "root" is
+  ;; the label of the target root file system.
+  (bootloader (grub-configuration (device "/dev/sdX")))
+  (file-systems (cons (file-system
+                        (device "root")
+                        (title 'label)
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  ;; This is where user accounts are specified.  The "root"
+  ;; account is implicit, and is initially created with the
+  ;; empty password.
+  (users (list (user-account
+                (name "alice")
+                (comment "Bob's sister")
+                (group "users")
+
+                ;; Adding the account to the "wheel" group
+                ;; makes it a sudoer.
+                (supplementary-groups '("wheel"))
+                (home-directory "/home/alice")))))