I have a bunch of properties that need to know what my login name is on a host. I have a pure info property `SPW.myAccountIs` to set this as host info. I have a function getMyAcc :: Propellor User which looks up this info or returns the default value 'spwhitton' if I didn't set a username on a host. It's easy to use `getMyAcc` in writing my own properties, but I want to use it with existing properties. I'd like to write withMyAcc :: IsProp p => (User -> p) -> p so that for example I could say & (withMyAcc $ \u -> User.accountFor u) Even better, I'd like to be able to say stdMachine = propertyListWithAcc "standard Debian setup" $ \u -> props & User.accountFor u & Sudo.enabledFor u It seems like this ought to be possible; a property is something that does some stuff in the `Propellor` monad and has a few other attributes, and those monadic actions can be conditional on some data not yet provided. However, I can't figure out how to do this with propellor's type system. If it's possible, I'd welcome hints. --spwhitton