diff --git a/system/options.nix b/system/options.nix index 7ee54f955c2..ed4fc3d0c78 100644 --- a/system/options.nix +++ b/system/options.nix @@ -1693,6 +1693,17 @@ here is an interface... "; }; + authentication = mkOption { + default = '' + # Generated file; do not edit! + local all all ident sameuser + host all all 127.0.0.1/32 md5 + host all all ::1/128 md5 + ''; + description = " + Hosts (except localhost), who you allow to connect. + "; + }; allowedHosts = mkOption { default = []; description = " diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 161e1b90ab4..63779263f4e 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -177,8 +177,6 @@ let ++ optional config.services.postgresql.enable (import ../upstart-jobs/postgresql.nix { inherit config pkgs; - startDependency = if config.services.gw6c.enable then - "gw6c" else "network-interfaces"; }) # EJabberd service diff --git a/upstart-jobs/postgresql.nix b/upstart-jobs/postgresql.nix index 48076ae0fe3..8979239fc56 100644 --- a/upstart-jobs/postgresql.nix +++ b/upstart-jobs/postgresql.nix @@ -1,30 +1,48 @@ -args: with args; +{pkgs, config}: let -cfg = config.services.postgresql; -postgresqlService = import ../services/postgresql { - inherit (pkgs) stdenv postgresql su; - inherit (cfg) port logDir dataDir - subServices allowedHosts - authMethod; - serverUser = "postgres"; -}; + cfg = config.services.postgresql; + + postgresql = pkgs.postgresql; + + startDependency = if config.services.gw6c.enable then + "gw6c" else "network-interfaces"; + + run = "${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh postgres"; in + { - name = "postgresql"; - users = [ { - name = "postgres"; - description = "PostgreSQL server user"; - } ]; - groups = [{name = "postgres";}]; - job = " -description \"PostgreSQL server\" + name = "postgresql"; -start on ${startDependency}/started -stop on shutdown + users = [ + { name = "postgres"; + description = "PostgreSQL server user"; + } + ]; -respawn ${postgresqlService}/bin/control start - "; + groups = [ + { name = "postgres"; } + ]; + + extraPath = [postgresql]; + + job = '' + description "PostgreSQL server" + + start on ${startDependency}/started + stop on shutdown + + start script + if ! test -e ${cfg.dataDir}; then + mkdir -m 0700 -p ${cfg.dataDir} + chown -R postgres ${cfg.dataDir} + ${run} -c '${postgresql}/bin/initdb -D ${cfg.dataDir} -U root' + fi + cp -f ${pkgs.writeText "pg_hba.conf" cfg.authentication} ${cfg.dataDir}/pg_hba.conf + end script + + respawn ${run} -c '${postgresql}/bin/postgres -D ${cfg.dataDir}' + ''; }