summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-02-28Propellor now builds itself without needing the Makefile.Joey Hess
2015-02-27propellor spinJoey Hess
2015-02-27propellor spinJoey Hess
2015-02-27propellor spinJoey Hess
2015-02-27propellor spinJoey Hess
2015-02-25Add shebang to cron.daily etc files.Joey Hess
2015-02-19endpointJoey Hess
2015-02-16When running shimmed (eg in a docker container), improve process name ↵Joey Hess
visible in ps.
2015-02-13propellor spinJoey Hess
2015-02-12ssh user perm fixesJoey Hess
* Ssh.authorizedKey: Make the authorized_keys file and .ssh directory be owned by the user, not root. * Ssh.knownHost: Make the .ssh directory be owned by the user, not root.
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10Fix Git.daemonRunning to restart inetd after enabling the git server.Joey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-10propellor spinJoey Hess
2015-02-09propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-01-29propellor spinJoey Hess
2015-01-29propellor spinJoey Hess
2015-01-25store PropList reversed to optimise &Joey Hess
PropList is now an opaque type, to prevent misuse. Note that the PropAccum Host instance cannot use reversed order.
2015-01-25remove toSimplePropJoey Hess
It didn't do what I thought it did with a RevertableProperty; it always returned Nothing because even if the input properties to <!> are NoInfo, it casts them to HasInfo. Even if it had worked, it lost type safety. Better to export the Property NoInfo that is used in a RevertableProperty, so it can be used directly.
2015-01-25fix combines instanceJoey Hess
The old one caused the actions to run in the right order, but with the wrong description. This problem was found by comparing the [Host] between this branch and current joeyconfig, and printing out their properties, info, and also their list of child properties. The only other difference found is that onChange orders the child property list differently. That does not have any real effect and would be difficult to change, so I've left it as-is.
2015-01-25avoid needing to define Show twiceJoey Hess
2015-01-25improve docsJoey Hess
2015-01-24fix typoJoey Hess
2015-01-24GADT properties seem to work (untested)Joey Hess
* Property has been converted to a GADT, and will be Property NoInfo or Property HasInfo. This was done to make sure that ensureProperty is only used on properties that do not have Info. Transition guide: - Change all "Property" to "Property NoInfo" or "Property WithInfo" (The compiler can tell you if you got it wrong!) - To construct a RevertableProperty, it is useful to use the new (<!>) operator - Constructing a list of properties can be problimatic, since Property NoInto and Property WithInfo are different types and cannot appear in the same list. To deal with this, "props" has been added, and can built up a list of properties of different types, using the same (&) and (!) operators that are used to build up a host's properties.
2015-01-24use type level functions to fix type inference for `require`Joey Hess
2015-01-24moving to using the GADTJoey Hess
The problem this exposes has to do with requires. As implemented, requires yields either a Property HasInfo or a Property NoInfo depending on its inputs. That works. But look what happens when it's used: *Propellor.Types> let foo = IProperty "foo" (return NoChange) mempty mempty *Propellor.Types> let bar = IProperty "bar" (return NoChange) mempty mempty *Propellor.Types> foo `requires` bar <interactive>:17:5: No instance for (Requires (Property HasInfo) (Property HasInfo) r0) arising from a use of `requires' The type variable `r0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there is a potential instance available: instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires (Property HasInfo) (Property HasInfo) r0) In the expression: foo `requires` bar In an equation for `it': it = foo `requires` bar This can be avoided by specifying the result type: *Propellor.Types> (foo `requires` bar) :: Property HasInfo property "foo" But then when multiple `requires` are given, the result type has to be given each time: *Propellor.Types> (foo `requires` bar `requires` bar) :: Property HasInfo <interactive>:22:6: No instance for (Requires (Property HasInfo) (Property HasInfo) x0) arising from a use of `requires' The type variable `x0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there is a potential instance available: instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires (Property HasInfo) (Property HasInfo) x0) In the first argument of `requires', namely `foo `requires` bar' In the expression: (foo `requires` bar `requires` bar) :: Property HasInfo In an equation for `it': it = (foo `requires` bar `requires` bar) :: Property HasInfo <interactive>:22:21: No instance for (Requires x0 (Property HasInfo) (Property HasInfo)) arising from a use of `requires' The type variable `x0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there are several potential instances: instance Requires (Property NoInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:175:10 instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires x0 (Property HasInfo) (Property HasInfo)) In the expression: (foo `requires` bar `requires` bar) :: Property HasInfo In an equation for `it': it = (foo `requires` bar `requires` bar) :: Property HasInfo *Propellor.Types> (((foo `requires` bar) :: Property HasInfo) `requires` bar) :: Property HasInfo property "foo" Yuggh!
2015-01-24added GADT to determine between a property with info and withoutJoey Hess
Not yet used
2015-01-23OS.preserveNetwork finally writtenJoey Hess