aboutsummaryrefslogtreecommitdiff
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
guix-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