module Propellor.Property.Schroot where
import Propellor.Base
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import Utility.FileMode
overlaysInTmpfs :: Property DebianLike
overlaysInTmpfs = go `requires` installed
where
f = "/etc/schroot/setup.d/04tmpfs"
go :: Property UnixLike
go = f `File.hasContent`
[ "#!/bin/sh"
, ""
, "set -e"
, ""
, ". \"$SETUP_DATA_DIR/common-data\""
, ". \"$SETUP_DATA_DIR/common-functions\""
, ". \"$SETUP_DATA_DIR/common-config\""
, ""
, ""
, "if [ $STAGE = \"setup-start\" ]; then"
, " mount -t tmpfs overlay /var/lib/schroot/union/overlay"
, "elif [ $STAGE = \"setup-recover\" ]; then"
, " mount -t tmpfs overlay /var/lib/schroot/union/overlay"
, "elif [ $STAGE = \"setup-stop\" ]; then"
, " umount -f /var/lib/schroot/union/overlay"
, "fi"
]
`onChange` (f `File.mode` (combineModes (readModes ++ executeModes)))
`describe` "schroot overlays in tmpfs"
installed :: Property DebianLike
installed = Apt.installed ["schroot"]