diff options
Diffstat (limited to '')
-rw-r--r-- | systems/installer.scm | 102 |
1 files changed, 7 insertions, 95 deletions
diff --git a/systems/installer.scm b/systems/installer.scm index 0fa161c..74fe087 100644 --- a/systems/installer.scm +++ b/systems/installer.scm @@ -1,110 +1,22 @@ ; base system for creating installer images (use-modules (freya system) - (gnu packages disk) - (gnu packages linux) - (gnu packages cryptsetup) - (gnu packages file-systems) - (gnu services shepherd) - (guix modules) + (freya services cow) (gnu)) -; copy over installer disk utilites - -(define %installer-disk-utilities - (list parted gptfdisk ddrescue - lvm2-static - cryptsetup mdadm - dosfstools - btrfs-progs - e2fsprogs - f2fs-tools - jfsutils - xfsprogs)) - -; copy over cow store - -(define %backing-directory - ;; Sub-directory used as the backing store for copy-on-write. - "/tmp/guix-inst") - -(define cow-store-service-type - (shepherd-service-type - 'cow-store - (lambda _ - (define (import-module? module) - ;; Since we don't use deduplication support in 'populate-store', don't - ;; import (guix store deduplication) and its dependencies, which - ;; includes Guile-Gcrypt. - (and (guix-module-name? module) - (not (equal? module '(guix store deduplication))))) - - (shepherd-service - (requirement '(root-file-system user-processes)) - (provision '(cow-store)) - (documentation - "Make the store copy-on-write, with writes going to \ -the given target.") - - ;; This is meant to be explicitly started by the user. - (auto-start? #f) - - (modules `((gnu build install) - ,@%default-modules)) - (start - (with-imported-modules (source-module-closure - '((gnu build install)) - #:select? import-module?) - #~(case-lambda - ((target) - (mount-cow-store target #$%backing-directory) - target) - (else - ;; Do nothing, and mark the service as stopped. - #f)))) - (stop #~(lambda (target) - ;; Delete the temporary directory, but leave everything - ;; mounted as there may still be processes using it since - ;; 'user-processes' doesn't depend on us. The 'user-file-systems' - ;; service will unmount TARGET eventually. - (delete-file-recursively - (string-append target #$%backing-directory)))))) - (description "Make the store copy-on-write, with writes going to \ -the given target."))) - -(define (cow-store-service) - "Return a service that makes the store copy-on-write, such that writes go to -the user's target storage device rather than on the RAM disk." - ;; See <http://bugs.gnu.org/18061> for the initial report. - (service cow-store-service-type 'mooooh!)) - ; installer system (operating-system - (inherit base-operating-system) + (inherit %base-freya-operating-system) (host-name "installer") - - (file-systems - (append %base-live-file-systems - %base-file-systems)) - - (users (list (user-account - (name "root") - (group "root") - (supplementary-groups '("wheel")) ; allow use of sudo - (password "") - (comment "root")))) - + (file-systems (append %base-live-file-systems + %base-file-systems)) (pam-services ;; Explicitly allow for empty passwords. (base-pam-services #:allow-empty-passwords? #t)) - - (packages (append %installer-disk-utilities - %freya-base-packages)) - - (services (append %freya-base-services - (list (cow-store-service)))) - + (services (cons* (cow-store-service) + (operating-system-services + %base-freya-operating-system))) (bootloader (bootloader-configuration (bootloader grub-bootloader) (targets '("/dev/sda"))))) |