Skip to content

A framework for managing daemons from Haskell and libraries for use with postgresql and nix

License

Notifications You must be signed in to change notification settings

BeFunctional/gargoyle

 
 

Repository files navigation

gargoyle

Haskell Hackage Hackage CI Github CI BSD3 License

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 is gargoyleMain. The name of this executable should match the executable name specified in the _gargoyle_exec field of the Gargoyle.
  • 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'

About

A framework for managing daemons from Haskell and libraries for use with postgresql and nix

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 81.1%
  • Nix 18.9%