From 6f436c54d6d9698e62639de31a845cd9b9167423 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 14:59:24 +0200 Subject: system: Define '%base-packages' and use it. * gnu/system.scm ()[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. --- build-aux/hydra/demo-os.scm | 14 ++------------ doc/guix.texi | 31 ++++++++++++------------------- gnu/system.scm | 27 +++++++++++++++++---------- gnu/system/install.scm | 15 +++------------ 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 @@ (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 @@ (define-module (gnu system) #: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 @@ (define-module (gnu system) operating-system-derivation operating-system-profile - operating-system-grub.cfg)) + operating-system-grub.cfg + + %base-packages)) ;;; Commentary: ;;; @@ -97,15 +102,7 @@ (define-record-type* operating-system (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 @@ (define (operating-system-services 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 @@ (define-module (gnu system install) #: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 @@ (define installation-os ;; 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 -- cgit v1.2.3