summary refs log tree commit diff
path: root/gnu/system
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/file-systems.scm47
-rw-r--r--gnu/system/install.scm6
-rw-r--r--gnu/system/shadow.scm2
-rw-r--r--gnu/system/vm.scm3
4 files changed, 36 insertions, 22 deletions
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index ece8fb41e6..003eb443d1 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -37,6 +37,7 @@
             file-system-options
             file-system-check?
             file-system-create-mount-point?
+            file-system-dependencies
 
             file-system->spec
             string->uuid
@@ -97,7 +98,10 @@
   (check?           file-system-check?            ; Boolean
                     (default #t))
   (create-mount-point? file-system-create-mount-point? ; Boolean
-                       (default #f)))
+                       (default #f))
+  (dependencies     file-system-dependencies      ; list of strings (mount
+                                                  ; points depended on)
+                    (default '())))
 
 (define-inlinable (file-system-needed-for-boot? fs)
   "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root
@@ -153,8 +157,10 @@ UUID representation."
       ((_ str)
        (string? (syntax->datum #'str))
        ;; A literal string: do the conversion at expansion time.
-       (with-syntax ((bv (string->uuid (syntax->datum #'str))))
-         #''bv))
+       (let ((bv (string->uuid (syntax->datum #'str))))
+         (unless bv
+           (syntax-violation 'uuid "invalid UUID" s))
+         (datum->syntax #'str bv)))
       ((_ str)
        #'(string->uuid str)))))
 
@@ -231,21 +237,26 @@ UUID representation."
     (flags '(read-only bind-mount))))
 
 (define %control-groups
-  (cons (file-system
-          (device "cgroup")
-          (mount-point "/sys/fs/cgroup")
-          (type "tmpfs")
-          (check? #f))
-        (map (lambda (subsystem)
-               (file-system
-                 (device "cgroup")
-                 (mount-point (string-append "/sys/fs/cgroup/" subsystem))
-                 (type "cgroup")
-                 (check? #f)
-                 (options subsystem)
-                 (create-mount-point? #t)))
-             '("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
-               "blkio" "perf_event" "hugetlb"))))
+  (let ((parent (file-system
+                  (device "cgroup")
+                  (mount-point "/sys/fs/cgroup")
+                  (type "tmpfs")
+                  (check? #f))))
+    (cons parent
+          (map (lambda (subsystem)
+                 (file-system
+                   (device "cgroup")
+                   (mount-point (string-append "/sys/fs/cgroup/" subsystem))
+                   (type "cgroup")
+                   (check? #f)
+                   (options subsystem)
+                   (create-mount-point? #t)
+
+                   ;; This must be mounted after, and unmounted before the
+                   ;; parent directory.
+                   (dependencies (list parent))))
+               '("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
+                 "blkio" "perf_event" "hugetlb")))))
 
 (define %base-file-systems
   ;; List of basic file systems to be mounted.  Note that /proc and /sys are
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 359d1265e5..e7e5d4ae9d 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -75,6 +75,7 @@ under /root/.guix-profile where GUIX is installed."
           (with-directory-excursion %root
             (zero? (system* "tar" "--xz" "--format=gnu"
                             "--owner=root:0" "--group=root:0"
+                            "--mtime=@0"          ;for files in /var/guix
                             "--check-links"
                             "-cvf" #$output
                             ;; Avoid adding / and /var to the tarball,
@@ -273,8 +274,9 @@ You have been warned.  Thanks for being so brave.
           (guix-service #:authorize-hydra-key? #t)
 
           ;; Start udev so that useful device nodes are available.
-          ;; Use device-mapper rules for cryptsetup & co.
-          (udev-service #:rules (list lvm2))
+          ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
+          ;; regulations-compliant WiFi access.
+          (udev-service #:rules (list lvm2 crda))
 
           ;; Add the 'cow-store' service, which users have to start manually
           ;; since it takes the installation directory as an argument.
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index ae6229229b..f033109614 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -156,7 +156,7 @@ fi
 # Adjust the prompt depending on whether we're in 'guix environment'.
 if [ -n \"$GUIX_ENVIRONMENT\" ]
 then
-    export PS1='\\u@\\h \\w\\ [env]$ '
+    export PS1='\\u@\\h \\w [env]\\$ '
 else
     export PS1='\\u@\\h \\w\\$ '
 fi
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 2520493e2e..b293009127 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -493,7 +493,8 @@ exec " #$qemu "/bin/" #$(qemu-command (%current-system))
        #~(" -kernel " #$(operating-system-kernel os) "/bzImage \
             -initrd " #$os-drv "/initrd \
             -append \"" #$(if graphic? "" "console=ttyS0 ")
-            "--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1\" "))
+            "--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1 "
+            (string-join (list #+@(operating-system-kernel-arguments os))) "\" "))
 #$(common-qemu-options image
                        (map file-system-mapping-source
                             (cons %store-mapping mappings)))