diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs new file mode 100644 index 0000000..f4d1030 --- /dev/null +++ b/src/Propellor/Property/Mount.hs @@ -0,0 +1,23 @@ +module Propellor.Property.Mount where + +import Propellor +import Utility.SafeCommand + +type FsType = String +type Source = String + +mountPoints :: IO [FilePath] +mountPoints = lines <$> readProcess "findmnt" ["-rn", "--output", "target"] + +getFsType :: FilePath -> IO (Maybe FsType) +getFsType mnt = catchDefaultIO Nothing $ + headMaybe . lines + <$> readProcess "findmnt" ["-n", mnt, "--output", "fstype"] + +umountLazy :: FilePath -> IO () +umountLazy mnt = + unlessM (boolSystem "umount" [ Param "-l", Param mnt ]) $ + errorMessage $ "failed unmounting " ++ mnt + +mount :: FsType -> Source -> FilePath -> IO Bool +mount fs src mnt = boolSystem "mount" [Param "-t", Param fs, Param src, Param mnt]