mirror of
https://github.com/LnL7/nix-darwin.git
synced 2025-03-13 20:30:02 +00:00
Merge pull request #135 from marsam/feature/postgresql-plugins
postgresql: Add support for extraPlugins
This commit is contained in:
commit
51ecc4151f
1 changed files with 35 additions and 3 deletions
|
@ -5,6 +5,25 @@ with lib;
|
|||
let
|
||||
cfg = config.services.postgresql;
|
||||
|
||||
postgresqlAndPlugins = pg:
|
||||
if cfg.extraPlugins == [] then pg
|
||||
else pkgs.buildEnv {
|
||||
name = "postgresql-and-plugins-${(builtins.parseDrvName pg.name).version}";
|
||||
paths = [ pg pg.lib ] ++ cfg.extraPlugins;
|
||||
# We include /bin to ensure the $out/bin directory is created which is
|
||||
# needed because we'll be removing files from that directory in postBuild
|
||||
# below.
|
||||
pathsToLink = [ "/" "/bin" ];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
rm $out/bin/{pg_config,postgres,pg_ctl}
|
||||
cp --target-directory=$out/bin ${pg}/bin/{postgres,pg_config,pg_ctl}
|
||||
wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib
|
||||
'';
|
||||
};
|
||||
|
||||
postgresql = postgresqlAndPlugins cfg.package;
|
||||
|
||||
configFile = pkgs.writeText "postgresql.conf"
|
||||
''
|
||||
log_destination = 'stderr'
|
||||
|
@ -52,6 +71,19 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
extraPlugins = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
example = literalExample "[ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }) ]";
|
||||
description = ''
|
||||
When this list contains elements a new store path is created.
|
||||
PostgreSQL and the elements are symlinked into it. Then pg_config,
|
||||
postgres and pg_ctl are copied to make them use the new
|
||||
$out/lib directory as pkglibdir. This makes it possible to use postgis
|
||||
without patching the .sql files which reference $libdir/postgis-1.5.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
|
@ -62,10 +94,10 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
environment.systemPackages = [ postgresql ];
|
||||
|
||||
launchd.user.agents.postgresql =
|
||||
{ path = [ cfg.package ];
|
||||
{ path = [ postgresql ];
|
||||
script = ''
|
||||
# Initialise the database.
|
||||
if ! test -e ${cfg.dataDir}/PG_VERSION; then
|
||||
|
@ -73,7 +105,7 @@ in
|
|||
fi
|
||||
${pkgs.coreutils}/bin/ln -sfn ${configFile} ${cfg.dataDir}/postgresql.conf
|
||||
|
||||
exec ${cfg.package}/bin/postgres -D ${cfg.dataDir} ${optionalString cfg.enableTCPIP "-i"}
|
||||
exec ${postgresql}/bin/postgres -D ${cfg.dataDir} ${optionalString cfg.enableTCPIP "-i"}
|
||||
'';
|
||||
|
||||
serviceConfig.KeepAlive = true;
|
||||
|
|
Loading…
Add table
Reference in a new issue