Hello Joey,

I try to setup a debomatic service on one of my computer.
So I created a data which will store on which host it was installed

    data DebOMaticHostMirror = DebOMaticHostMirror Url
	deriving (Eq, Show, Typeable)

So now I try to create a property which get the hostname and set the info, 
BUT I did not find the right way to do this. Here an attempt

    debomaticHostMirror :: Property (HasInfo + UnixLike)
    debomaticHostMirror = property' desc $ \w -> do
      hostname <- asks hostName
      ensureProperty $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname))
        where
          desc = "setup the Deb-O-Matic host name for other properties"

but I get this error message

    src/propellor-config.hs:935:3: error:
    • Couldn't match expected type ‘Propellor Result’
                  with actual type ‘Property
                                      (Propellor.Types.MetaTypes.MetaTypes inner0)
                                    -> Propellor Result’
    • In a stmt of a 'do' block:
        ensureProperty
        $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname))
      In the expression:
        do { hostname <- asks hostName;
             ensureProperty
             $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname)) }
      In the second argument of ‘($)’, namely
        ‘\ w
           -> do { hostname <- asks hostName;
                   ensureProperty
                   $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname)) }’

    src/propellor-config.hs:935:20: error:
    • Couldn't match expected type ‘OuterMetaTypesWitness outer0’
                  with actual type ‘Property (HasInfo + UnixLike)’
    • In the second argument of ‘($)’, namely
        ‘pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname))’
      In a stmt of a 'do' block:
        ensureProperty
        $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname))
      In the expression:
        do { hostname <- asks hostName;
             ensureProperty
             $ pureInfoProperty desc (InfoVal (DebOMaticHostMirror hostname)) }

the Idea after is to create a property which will take the DeboMatic Info and generate the
/etc/apt/sourses.list.d/debomatic.list on a bunch of hosts.

Maybe we could have a

    typeclass Mirror a where
       toSourceListDLines :: a -> [Line]

    instance Mirror DebOMaticHostMirror where
       toSourceListDLines (DebOMaticHostMirror hostname) = ...

then the stdSourceListD property should be change to use toSourceListDLines

but this is another story :)
