;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
((btrfs) "btrfs")
((fat16) "fat16")
((fat32) "fat32")
- ((jfs) "jfs")
+ ((jfs) "jfs")
+ ((ntfs) "ntfs")
((swap) "linux-swap")))
(define (user-fs-type->mount-type fs-type)
((btrfs) "btrfs")
((fat16) "fat")
((fat32) "vfat")
- ((jfs) "jfs")))
+ ((jfs) "jfs")
+ ((ntfs) "ntfs")))
(define (partition-filesystem-user-type partition)
"Return the filesystem type of PARTITION, to be stored in the FS-TYPE field
((string=? name "fat16") 'fat16)
((string=? name "fat32") 'fat32)
((string=? name "jfs") 'jfs)
+ ((string=? name "ntfs") 'ntfs)
((or (string=? name "swsusp")
(string=? name "linux-swap(v0)")
(string=? name "linux-swap(v1)"))
(with-null-output-ports
(invoke "jfs_mkfs" "-f" partition)))
+(define (create-ntfs-file-system partition)
+ "Create a JFS file-system for PARTITION file-name."
+ (with-null-output-ports
+ (invoke "mkfs.ntfs" "-F" "-f" partition)))
+
(define (create-swap-partition partition)
"Set up swap area on PARTITION file-name."
(with-null-output-ports
(call-with-luks-key-file
password
(lambda (key-file)
+ (syslog "formatting and opening LUKS entry ~s at ~s~%"
+ label file-name)
(system* "cryptsetup" "-q" "luksFormat" file-name key-file)
(system* "cryptsetup" "open" "--type" "luks"
"--key-file" key-file file-name label)))))
(define (luks-close user-partition)
"Close the encrypted partition pointed by USER-PARTITION."
(let ((label (user-partition-crypt-label user-partition)))
+ (syslog "closing LUKS entry ~s~%" label)
(system* "cryptsetup" "close" label)))
(define (format-user-partitions user-partitions)
(and need-formatting?
(not (eq? type 'extended))
(create-jfs-file-system file-name)))
+ ((ntfs)
+ (and need-formatting?
+ (not (eq? type 'extended))
+ (create-ntfs-file-system file-name)))
((swap)
(create-swap-partition file-name))
(else
(file-name
(user-partition-upper-file-name user-partition)))
(mkdir-p target)
+ (syslog "mounting ~s on ~s~%" file-name target)
(mount file-name target mount-type)))
sorted-partitions)))
(target
(string-append (%installer-target-dir)
mount-point)))
+ (syslog "unmounting ~s~%" target)
(umount target)
(when crypt-label
(luks-close user-partition))))