Automatically spin up and spin down local daemons.
Gargoyle is a framework for managing daemons from Haskell. In the current release the only requirement is that the daemon be able to communicate over a Unix domain socket. See gargoyle-postgresql for a fully worked out example.
To use Gargoyle the client must:
Define a value of the
Gargoyle
type which specifies how to administer the daemon.Create an executable whose
main
isgargoyleMain
. The name of this executable should match the executable name specified in the_gargoyle_exec
field of theGargoyle
.The client will run their code with
withGargoyle
to gain access to the daemon.
gargoyle
Gargoyle is a framework for managing daemons from Haskell. Currently, the only requirement is that the daemon be able to communicate over a Unix domain socket. See gargoyle-postgresql for an example that uses gargoyle to manage postgresql.
To use Gargoyle the client must:
- Define a value of the 'Gargoyle' type which specifies how to administer the daemon.
- Create an executable whose
main
isgargoyleMain
. The name of this executable should match the executable name specified in the_gargoyle_exec
field of theGargoyle
. - The client will run their code with
withGargoyle
to gain access to the daemon.
Importing into Haskell package set
haskellPackages.override {
overrides = self: super:
let gargoylePkgs = import ./path/to/gargoyle-repo { haskellPackages = self; };
in gargoylePkgs // {
# .. your overrides
};
}
By default gargoyle-postgresql-nix
will use the postgresql
of the pkgs
used by your haskellPackages
. To override this, pass postgresql
by changing the above line to look more like
gargoylePkgs = import ./path/to/gargoyle-repo { haskellPackages = self; postgresql = myCustomVersion; }
Hacking
Do something like this:
nix-shell -A gargoyle-postgresql.env --run 'cd gargoyle-postgresql && cabal new-repl'