propellor-3.2.3: property-based host configuration management in haskell

Safe HaskellNone
LanguageHaskell98

Propellor.Property.DiskImage.PartSpec

Description

Disk image partition specification and combinators.

Synopsis

Documentation

type PartSpec = (Maybe MountPoint, MountOpts, PartSize -> Partition) Source #

Specifies a mount point, mount options, and a constructor for a Partition.

The size that is eventually provided is the amount of space needed to hold the files that appear in the directory where the partition is to be mounted. Plus a fudge factor, since filesystems have some space overhead.

defSz :: PartSize Source #

Partitions that are not to be mounted (ie, LinuxSwap), or that have no corresponding directory in the chroot will have 128 MegaBytes provided as a default size.

fudge :: PartSize -> PartSize Source #

Add 2% for filesystem overhead. Rationalle for picking 2%: A filesystem with 1% overhead might just sneak by as acceptable. Double that just in case. Add an additional 3 mb to deal with non-scaling overhead of filesystems (eg, superblocks). Add an additional 200 mb for temp files, journals, etc.

swapPartition :: PartSize -> PartSpec Source #

Specifies a swap partition of a given size.

partition :: Fs -> PartSpec Source #

Specifies a partition with a given filesystem.

The partition is not mounted anywhere by default; use the combinators below to configure it.

mountedAt :: PartSpec -> FilePath -> PartSpec Source #

Specifies where to mount a partition.

mountOpt :: ToMountOpts o => PartSpec -> o -> PartSpec Source #

Specifies a mount option, such as "noexec"

errorReadonly :: MountOpts Source #

Mount option to make a partition be remounted readonly when there's an error accessing it.

addFreeSpace :: PartSpec -> PartSize -> PartSpec Source #

Adds additional free space to the partition.

setSize :: PartSpec -> PartSize -> PartSpec Source #

Forced a partition to be a specific size, instead of scaling to the size needed for the files in the chroot.

setFlag :: PartSpec -> PartFlag -> PartSpec Source #

Sets a flag on the partition.

extended :: PartSpec -> PartSpec Source #

Makes a MSDOS partition be Extended, rather than Primary.

data Partition Source #

A partition on the disk.

Instances

Show Partition Source # 

Methods

showsPrec :: Int -> Partition -> ShowS

show :: Partition -> String

showList :: [Partition] -> ShowS

newtype PartSize Source #

All partition sizing is done in megabytes, so that parted can automatically lay out the partitions.

Note that these are SI megabytes, not mebibytes.

Constructors

MegaBytes Integer 

Instances

Show PartSize Source # 

Methods

showsPrec :: Int -> PartSize -> ShowS

show :: PartSize -> String

showList :: [PartSize] -> ShowS

Monoid PartSize Source # 

data PartFlag Source #

Flags that can be set on a partition.

Instances

Show PartFlag Source # 

Methods

showsPrec :: Int -> PartFlag -> ShowS

show :: PartFlag -> String

showList :: [PartFlag] -> ShowS

data TableType Source #

Types of partition tables supported by parted.

Constructors

MSDOS 
GPT 
AIX 
AMIGA 
BSD 
DVH 
LOOP 
MAC 
PC98 
SUN 

Instances

Show TableType Source # 

Methods

showsPrec :: Int -> TableType -> ShowS

show :: TableType -> String

showList :: [TableType] -> ShowS

data Fs Source #

Filesystems etc that can be used for a partition.

Constructors

EXT2 
EXT3 
EXT4 
BTRFS 
REISERFS 
XFS 
FAT 
VFAT 
NTFS 
LinuxSwap 

Instances

Eq Fs Source # 

Methods

(==) :: Fs -> Fs -> Bool

(/=) :: Fs -> Fs -> Bool

Show Fs Source # 

Methods

showsPrec :: Int -> Fs -> ShowS

show :: Fs -> String

showList :: [Fs] -> ShowS

type MountPoint = FilePath Source #

A mount point for a filesystem.