summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-06-04 14:59:24 +0200
committerLudovic Courtès <ludo@gnu.org>2014-06-04 18:15:50 +0200
commit6f436c54d6d9698e62639de31a845cd9b9167423 (patch)
tree24e4d42578e85a24bb5493dfe23a5e04bacab2eb
parent39d4fde3bfd27607980eb58f0b17b837953b1e4c (diff)
downloadguix-6f436c54d6d9698e62639de31a845cd9b9167423.tar.gz
system: Define '%base-packages' and use it.
* 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.
-rw-r--r--build-aux/hydra/demo-os.scm14
-rw-r--r--doc/guix.texi31
-rw-r--r--gnu/system.scm27
-rw-r--r--gnu/system/install.scm15
4 files changed, 34 insertions, 53 deletions
diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm
index 0b41ec901f..bb8cd05fc2 100644
--- a/build-aux/hydra/demo-os.scm
+++ b/build-aux/hydra/demo-os.scm
@@ -24,15 +24,7 @@
 
 (use-modules (gnu)
 
-             (gnu packages zile)
              (gnu packages xorg)
-             (gnu packages admin)
-             (gnu packages guile)
-             (gnu packages bash)
-             (gnu packages linux)
-             (gnu packages less)
-             (gnu packages tor)
-             (gnu packages package-management)
              (gnu packages avahi)
 
              (gnu services networking)
@@ -98,7 +90,5 @@ You can log in as 'guest' or 'root' with no password.
  (pam-services
   ;; Explicitly allow for empty passwords.
   (base-pam-services #:allow-empty-passwords? #t))
- (packages (list bash coreutils findutils grep sed
-                 procps psmisc less
-                 guile-2.0 dmd guix util-linux inetutils avahi
-                 xterm zile)))
+
+ (packages (cons* xterm avahi %base-packages)))
diff --git a/doc/guix.texi b/doc/guix.texi
index cfdfcd8b78..4d5a5150e6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3116,14 +3116,8 @@ Linux-Libre kernel, initial RAM disk, and boot loader looks like this:
 @findex operating-system
 @lisp
 (use-modules (gnu)   ; for 'user-account', '%base-services', etc.
-             (gnu services ssh)    ; for 'lsh-service'
-             (gnu packages base)   ; Coreutils, grep, etc.
-             (gnu packages bash)   ; Bash
-             (gnu packages admin)  ; dmd, Inetutils
-             (gnu packages zile)   ; Zile
-             (gnu packages less)   ; less
-             (gnu packages guile)  ; Guile
-             (gnu packages linux)) ; procps, psmisc
+             (gnu packages emacs)  ; for 'emacs'
+             (gnu services ssh))   ; for 'lsh-service'
 
 (define komputilo
   (operating-system
@@ -3142,22 +3136,21 @@ Linux-Libre kernel, initial RAM disk, and boot loader looks like this:
                  (uid 1000) (gid 100)
                  (comment "Bob's sister")
                  (home-directory "/home/alice"))))
-   (packages (list coreutils bash guile-2.0
-                   guix dmd
-                   inetutils
-                   findutils grep sed
-                   procps psmisc
-                   zile less))
+   (packages (cons emacs %base-packages))
    (services (cons (lsh-service #:port 2222 #:allow-root-login? #t)
                    %base-services))))
 @end lisp
 
 This example should be self-describing.  The @code{packages} field lists
-packages provided by the various @code{(gnu packages ...)} modules above
-(@pxref{Package Modules}).  These are the packages that will be globally
-visible on the system, for all user accounts---i.e., in every user's
-@code{PATH} environment variable---in addition to the per-user profiles
-(@pxref{Invoking guix package}).
+packages that will be globally visible on the system, for all user
+accounts---i.e., in every user's @code{PATH} environment variable---in
+addition to the per-user profiles (@pxref{Invoking guix package}).  The
+@var{%base-packages} variables provides all the tools one would expect
+for basic user and administrator tasks---including the GNU Core
+Utilities, the GNU Networking Utilities, the GNU Zile lightweight text
+editor, @command{find}, @command{grep}, etc.  The example above adds
+Emacs to those, taken from the @code{(gnu packages emacs)} module
+(@pxref{Package Modules}).
 
 @vindex %base-services
 The @code{services} field lists @dfn{system services} to be made
diff --git a/gnu/system.scm b/gnu/system.scm
index ec54b8baf0..7b8e3890d7 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -28,6 +28,9 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages package-management)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages less)
+  #:use-module (gnu packages zile)
   #:use-module (gnu services)
   #:use-module (gnu services dmd)
   #:use-module (gnu services base)
@@ -59,7 +62,9 @@
 
             operating-system-derivation
             operating-system-profile
-            operating-system-grub.cfg))
+            operating-system-grub.cfg
+
+            %base-packages))
 
 ;;; Commentary:
 ;;;
@@ -97,15 +102,7 @@
          (default %default-issue))
 
   (packages operating-system-packages             ; list of (PACKAGE OUTPUT...)
-            (default (list coreutils              ; or just PACKAGE
-                           grep
-                           sed
-                           findutils
-                           guile
-                           bash
-                           (@ (gnu packages dmd) dmd)
-                           guix
-                           tzdata)))
+            (default %base-packages))             ; or just PACKAGE
 
   (timezone operating-system-timezone)            ; string
   (locale   operating-system-locale)              ; string
@@ -216,6 +213,16 @@ explicitly appear in OS."
 ;;; /etc.
 ;;;
 
+(define %base-packages
+  ;; Default set of packages globally visible.  It should include anything
+  ;; required for basic administrator tasks.
+  (list bash coreutils findutils grep sed
+        procps psmisc less zile
+        guile-final (@ (gnu packages admin) dmd) guix
+        util-linux inetutils isc-dhcp
+        net-tools                        ; XXX: remove when Inetutils suffices
+        module-init-tools kbd))
+
 (define %default-issue
   ;; Default contents for /etc/issue.
   "
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 8c67b73de6..c69e51b2b5 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -20,13 +20,8 @@
   #:use-module (gnu)
   #:use-module (guix gexp)
   #:use-module (guix monads)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages less)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages guile)
-  #:use-module (gnu packages admin)
   #:use-module (gnu packages package-management)
-  #:use-module (gnu packages zile)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages texinfo)
   #:export (installation-os))
@@ -137,13 +132,9 @@ Use Alt-F2 for documentation.
      ;; Explicitly allow for empty passwords.
      (base-pam-services #:allow-empty-passwords? #t))
 
-    (packages (list bash coreutils findutils grep sed
-                    procps psmisc less texinfo-4
-                    guile-2.0 dmd guix util-linux
-                    inetutils isc-dhcp net-tools
-                    parted fdisk ddrescue
-                    module-init-tools kbd
-                    zile))))
+    (packages (cons* texinfo-4                ; for the standalone Info reader
+                     parted fdisk ddrescue
+                     %base-packages))))
 
 ;; Return it here so 'guix system' can consume it directly.
 installation-os