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
mainisgargoyleMain. The name of this executable should match the executable name specified in the_gargoyle_execfield of theGargoyle. - The client will run their code with
withGargoyleto gain access to the daemon.
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; }Do something like this:
nix-shell -A gargoyle-postgresql.env --run 'cd gargoyle-postgresql && cabal new-repl'