~ruther/guix-local

c5df183956016cf3205971f4fa30aa834dca3281 — Ludovic Courtès 12 years ago eb7ccb1
Add (gnu system file-systems).

This fixes a circular dependency between (gnu system) and (gnu system
linux-initrd), where the latter could end up being compiled before
'file-system-type' was defined as a macro.

* gnu/system.scm (<file-system>, %fuse-control-file-system,
  %binary-format-file-system): Move to...
* gnu/system/file-systems.scm: ... here.  New file.
* build-aux/hydra/demo-os.scm, gnu/system/linux-initrd.scm,
  gnu/system/vm.scm: Use it.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
M build-aux/hydra/demo-os.scm => build-aux/hydra/demo-os.scm +2 -0
@@ 36,6 36,8 @@
             (gnu system grub)                    ; 'grub-configuration'
             (gnu system shadow)                  ; 'user-account'
             (gnu system linux)                   ; 'base-pam-services'
             (gnu system file-systems)            ; 'file-systems'

             (gnu services base)
             (gnu services networking)
             (gnu services xorg))

M gnu-system.am => gnu-system.am +1 -0
@@ 248,6 248,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/services/xorg.scm				\
						\
  gnu/system.scm				\
  gnu/system/file-systems.scm			\
  gnu/system/grub.scm				\
  gnu/system/linux.scm				\
  gnu/system/linux-initrd.scm			\

M gnu/system.scm => gnu/system.scm +2 -51
@@ 34,6 34,7 @@
  #:use-module (gnu system shadow)
  #:use-module (gnu system linux)
  #:use-module (gnu system linux-initrd)
  #:use-module (gnu system file-systems)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)


@@ 56,20 57,7 @@

            operating-system-derivation
            operating-system-profile
            operating-system-grub.cfg

            <file-system>
            file-system
            file-system?
            file-system-device
            file-system-mount-point
            file-system-type
            file-system-needed-for-boot?
            file-system-flags
            file-system-options

            %fuse-control-file-system
            %binary-format-file-system))
            operating-system-grub.cfg))

;;; Commentary:
;;;


@@ 131,43 119,6 @@


;;;
;;; File systems.
;;;

;; File system declaration.
(define-record-type* <file-system> file-system
  make-file-system
  file-system?
  (device           file-system-device)           ; string
  (mount-point      file-system-mount-point)      ; string
  (type             file-system-type)             ; string
  (flags            file-system-flags             ; list of symbols
                    (default '()))
  (options          file-system-options           ; string or #f
                    (default #f))
  (needed-for-boot? file-system-needed-for-boot?  ; Boolean
                    (default #f))
  (check?           file-system-check?            ; Boolean
                    (default #t)))

(define %fuse-control-file-system
  ;; Control file system for Linux' file systems in user-space (FUSE).
  (file-system
    (device "fusectl")
    (mount-point "/sys/fs/fuse/connections")
    (type "fusectl")
    (check? #f)))

(define %binary-format-file-system
  ;; Support for arbitrary executable binary format.
  (file-system
    (device "binfmt_misc")
    (mount-point "/proc/sys/fs/binfmt_misc")
    (type "binfmt_misc")
    (check? #f)))


;;;
;;; Derivation.
;;;


A gnu/system/file-systems.scm => gnu/system/file-systems.scm +72 -0
@@ 0,0 1,72 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system file-systems)
  #:use-module (guix records)
  #:export (<file-system>
            file-system
            file-system?
            file-system-device
            file-system-mount-point
            file-system-type
            file-system-needed-for-boot?
            file-system-flags
            file-system-options

            %fuse-control-file-system
            %binary-format-file-system))

;;; Commentary:
;;;
;;; Declaring file systems to be mounted.
;;;
;;; Code:

;; File system declaration.
(define-record-type* <file-system> file-system
  make-file-system
  file-system?
  (device           file-system-device)           ; string
  (mount-point      file-system-mount-point)      ; string
  (type             file-system-type)             ; string
  (flags            file-system-flags             ; list of symbols
                    (default '()))
  (options          file-system-options           ; string or #f
                    (default #f))
  (needed-for-boot? file-system-needed-for-boot?  ; Boolean
                    (default #f))
  (check?           file-system-check?            ; Boolean
                    (default #t)))

(define %fuse-control-file-system
  ;; Control file system for Linux' file systems in user-space (FUSE).
  (file-system
    (device "fusectl")
    (mount-point "/sys/fs/fuse/connections")
    (type "fusectl")
    (check? #f)))

(define %binary-format-file-system
  ;; Support for arbitrary executable binary format.
  (file-system
    (device "binfmt_misc")
    (mount-point "/proc/sys/fs/binfmt_misc")
    (type "binfmt_misc")
    (check? #f)))

;;; file-systems.scm ends here

M gnu/system/linux-initrd.scm => gnu/system/linux-initrd.scm +1 -1
@@ 30,7 30,7 @@
  #:use-module (gnu packages guile)
  #:use-module ((gnu packages make-bootstrap)
                #:select (%guile-static-stripped))
  #:use-module (gnu system)                       ; for 'file-system'
  #:use-module (gnu system file-systems)
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (srfi srfi-1)

M gnu/system/vm.scm => gnu/system/vm.scm +1 -0
@@ 42,6 42,7 @@
  #:use-module (gnu system linux)
  #:use-module (gnu system linux-initrd)
  #:use-module (gnu system grub)
  #:use-module (gnu system file-systems)
  #:use-module (gnu system)
  #:use-module (gnu services)