nixos/postgresql: move postStart into separate unit
This avoids restarting the postgresql server, when only ensureDatabases or ensureUsers have been changed. It will also allow to properly wait for recovery to finish later. To wait for "postgresql is ready" in other services, we now provide a postgresql.target. Resolves #400018 Co-authored-by: Marcel <me@m4rc3l.de>
This commit is contained in:
parent
c119848700
commit
41c5662cbe
@ -259,13 +259,13 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
# note that if you are connecting to a postgres instance on a different host
|
# note that if you are connecting to a postgres instance on a different host
|
||||||
# postgresql.service should not be included in the requires.
|
# postgresql.target should not be included in the requires.
|
||||||
requires = [
|
requires = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
description = "my app";
|
description = "my app";
|
||||||
environment = {
|
environment = {
|
||||||
|
@ -1316,22 +1316,14 @@
|
|||||||
"module-services-postgres-initializing-extra-permissions": [
|
"module-services-postgres-initializing-extra-permissions": [
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions"
|
"index.html#module-services-postgres-initializing-extra-permissions"
|
||||||
],
|
],
|
||||||
"module-services-postgres-initializing-extra-permissions-superuser": [
|
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-superuser"
|
|
||||||
],
|
|
||||||
"module-services-postgres-initializing-extra-permissions-superuser-post-start": [
|
"module-services-postgres-initializing-extra-permissions-superuser-post-start": [
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-superuser-post-start"
|
"index.html#module-services-postgres-initializing-extra-permissions-superuser-post-start",
|
||||||
],
|
"index.html#module-services-postgres-initializing-extra-permissions-superuser",
|
||||||
"module-services-postgres-initializing-extra-permissions-superuser-oneshot": [
|
"index.html#module-services-postgres-initializing-extra-permissions-service-user-pre-start",
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-superuser-oneshot"
|
|
||||||
],
|
|
||||||
"module-services-postgres-initializing-extra-permissions-service-user": [
|
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-service-user"
|
"index.html#module-services-postgres-initializing-extra-permissions-service-user"
|
||||||
],
|
],
|
||||||
"module-services-postgres-initializing-extra-permissions-service-user-pre-start": [
|
"module-services-postgres-initializing-extra-permissions-superuser-oneshot": [
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-service-user-pre-start"
|
"index.html#module-services-postgres-initializing-extra-permissions-superuser-oneshot",
|
||||||
],
|
|
||||||
"module-services-postgres-initializing-extra-permissions-service-user-oneshot": [
|
|
||||||
"index.html#module-services-postgres-initializing-extra-permissions-service-user-oneshot"
|
"index.html#module-services-postgres-initializing-extra-permissions-service-user-oneshot"
|
||||||
],
|
],
|
||||||
"module-services-postgres-authentication": [
|
"module-services-postgres-authentication": [
|
||||||
|
@ -64,6 +64,8 @@
|
|||||||
|
|
||||||
- The `yeahwm` package and `services.xserver.windowManager.yeahwm` module were removed due to the package being broken and unmaintained upstream.
|
- The `yeahwm` package and `services.xserver.windowManager.yeahwm` module were removed due to the package being broken and unmaintained upstream.
|
||||||
|
|
||||||
|
- The `services.postgresql` module now sets up a systemd unit `postgresql.target`. Depending on `postgresql.target` guarantees that initial/ensure scripts were executed.
|
||||||
|
|
||||||
- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
|
- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
|
||||||
|
|
||||||
- `services.dwm-status.extraConfig` was replaced by [RFC0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)-compliant [](#opt-services.dwm-status.settings), which is used to generate the config file. `services.dwm-status.order` is now moved to [](#opt-services.dwm-status.settings.order), as it's a part of the config file.
|
- `services.dwm-status.extraConfig` was replaced by [RFC0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)-compliant [](#opt-services.dwm-status.settings), which is used to generate the config file. `services.dwm-status.order` is now moved to [](#opt-services.dwm-status.settings.order), as it's a part of the config file.
|
||||||
|
@ -182,7 +182,7 @@ in
|
|||||||
requires = [ "network.target" ];
|
requires = [ "network.target" ];
|
||||||
# we're adding this optionally so just in case there's any race it'll be caught
|
# we're adding this optionally so just in case there's any race it'll be caught
|
||||||
# in case postgres doesn't start, pgadmin will just start normally
|
# in case postgres doesn't start, pgadmin will just start normally
|
||||||
wants = [ "postgresql.service" ];
|
wants = [ "postgresql.target" ];
|
||||||
|
|
||||||
path = [
|
path = [
|
||||||
config.services.postgresql.package
|
config.services.postgresql.package
|
||||||
|
@ -720,7 +720,7 @@ in
|
|||||||
systemd.services.bacula-dir = mkIf dir_cfg.enable {
|
systemd.services.bacula-dir = mkIf dir_cfg.enable {
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
description = "Bacula Director Daemon";
|
description = "Bacula Director Daemon";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -35,7 +35,7 @@ let
|
|||||||
|
|
||||||
description = "Backup of ${db} database(s)";
|
description = "Backup of ${db} database(s)";
|
||||||
|
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
|
|
||||||
path = [
|
path = [
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
|
@ -334,8 +334,8 @@ in
|
|||||||
|
|
||||||
systemd.services.hydra-init = {
|
systemd.services.hydra-init = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
requires = lib.optional haveLocalDB "postgresql.service";
|
requires = lib.optional haveLocalDB "postgresql.target";
|
||||||
after = lib.optional haveLocalDB "postgresql.service";
|
after = lib.optional haveLocalDB "postgresql.target";
|
||||||
environment = env // {
|
environment = env // {
|
||||||
HYDRA_DBI = "${env.HYDRA_DBI};application_name=hydra-init";
|
HYDRA_DBI = "${env.HYDRA_DBI};application_name=hydra-init";
|
||||||
};
|
};
|
||||||
|
@ -185,8 +185,8 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
systemd.services.pgmanage = {
|
systemd.services.pgmanage = {
|
||||||
description = "pgmanage - PostgreSQL Administration for the web";
|
description = "pgmanage - PostgreSQL Administration for the web";
|
||||||
wants = [ "postgresql.service" ];
|
wants = [ "postgresql.target" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = pgmanage;
|
User = pgmanage;
|
||||||
|
@ -156,7 +156,7 @@ in
|
|||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
|
|
||||||
environment =
|
environment =
|
||||||
|
@ -89,29 +89,21 @@ database migrations.
|
|||||||
|
|
||||||
**NOTE:** please make sure that any added migrations are idempotent (re-runnable).
|
**NOTE:** please make sure that any added migrations are idempotent (re-runnable).
|
||||||
|
|
||||||
#### as superuser {#module-services-postgres-initializing-extra-permissions-superuser}
|
#### in database's setup `postStart` {#module-services-postgres-initializing-extra-permissions-superuser-post-start}
|
||||||
|
|
||||||
**Advantage:** compatible with postgres < 15, because it's run
|
`ensureUsers` is run in `postgresql-setup`, so this is where `postStart` must be added to:
|
||||||
as the database superuser `postgres`.
|
|
||||||
|
|
||||||
##### in database `postStart` {#module-services-postgres-initializing-extra-permissions-superuser-post-start}
|
|
||||||
|
|
||||||
**Disadvantage:** need to take care of ordering yourself. In this
|
|
||||||
example, `mkAfter` ensures that permissions are assigned after any
|
|
||||||
databases from `ensureDatabases` and `extraUser1` from `ensureUsers`
|
|
||||||
are already created.
|
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
{
|
||||||
systemd.services.postgresql.postStart = lib.mkAfter ''
|
systemd.services.postgresql-setup.postStart = ''
|
||||||
$PSQL service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
psql service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
||||||
$PSQL service1 -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
psql service1 -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
||||||
# ....
|
# ....
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### in intermediate oneshot service {#module-services-postgres-initializing-extra-permissions-superuser-oneshot}
|
#### in intermediate oneshot service {#module-services-postgres-initializing-extra-permissions-superuser-oneshot}
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
{
|
||||||
@ -119,54 +111,13 @@ are already created.
|
|||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
requiredBy = "service1.service";
|
requiredBy = "service1.service";
|
||||||
before = "service1.service";
|
before = "service1.service";
|
||||||
after = "postgresql.service";
|
after = "postgresql.target";
|
||||||
serviceConfig.User = "postgres";
|
serviceConfig.User = "postgres";
|
||||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
environment.PGPORT = toString services.postgresql.settings.port;
|
||||||
path = [ postgresql ];
|
path = [ postgresql ];
|
||||||
script = ''
|
script = ''
|
||||||
$PSQL service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
psql service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
||||||
$PSQL service1 -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
psql service1 -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
||||||
# ....
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### as service user {#module-services-postgres-initializing-extra-permissions-service-user}
|
|
||||||
|
|
||||||
**Advantage:** re-uses systemd's dependency ordering;
|
|
||||||
|
|
||||||
**Disadvantage:** relies on service user having grant permission. To be combined with `ensureDBOwnership`.
|
|
||||||
|
|
||||||
##### in service `preStart` {#module-services-postgres-initializing-extra-permissions-service-user-pre-start}
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
|
||||||
path = [ postgresql ];
|
|
||||||
systemd.services."service1".preStart = ''
|
|
||||||
$PSQL -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
|
||||||
$PSQL -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
|
||||||
# ....
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
##### in intermediate oneshot service {#module-services-postgres-initializing-extra-permissions-service-user-oneshot}
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
systemd.services."migrate-service1-db1" = {
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
requiredBy = "service1.service";
|
|
||||||
before = "service1.service";
|
|
||||||
after = "postgresql.service";
|
|
||||||
serviceConfig.User = "service1";
|
|
||||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
|
||||||
path = [ postgresql ];
|
|
||||||
script = ''
|
|
||||||
$PSQL -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
|
||||||
$PSQL -c 'GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO "extraUser1"'
|
|
||||||
# ....
|
# ....
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -751,12 +751,23 @@ in
|
|||||||
cfg.checkConfig && pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform
|
cfg.checkConfig && pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform
|
||||||
) configFileCheck;
|
) configFileCheck;
|
||||||
|
|
||||||
|
systemd.targets.postgresql = {
|
||||||
|
description = "PostgreSQL";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
bindsTo = [
|
||||||
|
"postgresql.service"
|
||||||
|
"postgresql-setup.service"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.postgresql = {
|
systemd.services.postgresql = {
|
||||||
description = "PostgreSQL Server";
|
description = "PostgreSQL Server";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
|
|
||||||
|
# To trigger the .target also on "systemctl start postgresql".
|
||||||
|
bindsTo = [ "postgresql.target" ];
|
||||||
|
|
||||||
environment.PGDATA = cfg.dataDir;
|
environment.PGDATA = cfg.dataDir;
|
||||||
|
|
||||||
path = [ cfg.finalPackage ];
|
path = [ cfg.finalPackage ];
|
||||||
@ -776,49 +787,6 @@ in
|
|||||||
ln -sfn "${configFile}/postgresql.conf" "${cfg.dataDir}/postgresql.conf"
|
ln -sfn "${configFile}/postgresql.conf" "${cfg.dataDir}/postgresql.conf"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Wait for PostgreSQL to be ready to accept connections.
|
|
||||||
postStart =
|
|
||||||
''
|
|
||||||
PSQL="psql --port=${builtins.toString cfg.settings.port}"
|
|
||||||
|
|
||||||
while ! $PSQL -d postgres -c "" 2> /dev/null; do
|
|
||||||
if ! kill -0 "$MAINPID"; then exit 1; fi
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -e "${cfg.dataDir}/.first_startup"; then
|
|
||||||
${optionalString (cfg.initialScript != null) ''
|
|
||||||
$PSQL -f "${cfg.initialScript}" -d postgres
|
|
||||||
''}
|
|
||||||
rm -f "${cfg.dataDir}/.first_startup"
|
|
||||||
fi
|
|
||||||
''
|
|
||||||
+ optionalString (cfg.ensureDatabases != [ ]) ''
|
|
||||||
${concatMapStrings (database: ''
|
|
||||||
$PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${database}"'
|
|
||||||
'') cfg.ensureDatabases}
|
|
||||||
''
|
|
||||||
+ ''
|
|
||||||
${concatMapStrings (
|
|
||||||
user:
|
|
||||||
let
|
|
||||||
dbOwnershipStmt = optionalString user.ensureDBOwnership ''$PSQL -tAc 'ALTER DATABASE "${user.name}" OWNER TO "${user.name}";' '';
|
|
||||||
|
|
||||||
filteredClauses = filterAttrs (name: value: value != null) user.ensureClauses;
|
|
||||||
|
|
||||||
clauseSqlStatements = attrValues (mapAttrs (n: v: if v then n else "no${n}") filteredClauses);
|
|
||||||
|
|
||||||
userClauses = ''$PSQL -tAc 'ALTER ROLE "${user.name}" ${concatStringsSep " " clauseSqlStatements}' '';
|
|
||||||
in
|
|
||||||
''
|
|
||||||
$PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc 'CREATE USER "${user.name}"'
|
|
||||||
${userClauses}
|
|
||||||
|
|
||||||
${dbOwnershipStmt}
|
|
||||||
''
|
|
||||||
) cfg.ensureUsers}
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceConfig = mkMerge [
|
serviceConfig = mkMerge [
|
||||||
{
|
{
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
@ -891,6 +859,64 @@ in
|
|||||||
|
|
||||||
unitConfig.RequiresMountsFor = "${cfg.dataDir}";
|
unitConfig.RequiresMountsFor = "${cfg.dataDir}";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.postgresql-setup = {
|
||||||
|
description = "PostgreSQL Setup Scripts";
|
||||||
|
|
||||||
|
requires = [ "postgresql.service" ];
|
||||||
|
after = [ "postgresql.service" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
User = "postgres";
|
||||||
|
Group = "postgres";
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
path = [ cfg.finalPackage ];
|
||||||
|
environment.PGPORT = builtins.toString cfg.settings.port;
|
||||||
|
|
||||||
|
# Wait for PostgreSQL to be ready to accept connections.
|
||||||
|
script =
|
||||||
|
''
|
||||||
|
while ! psql -d postgres -c "" 2> /dev/null; do
|
||||||
|
if ! systemctl is-active --quiet postgresql.service; then exit 1; fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -e "${cfg.dataDir}/.first_startup"; then
|
||||||
|
${optionalString (cfg.initialScript != null) ''
|
||||||
|
psql -f "${cfg.initialScript}" -d postgres
|
||||||
|
''}
|
||||||
|
rm -f "${cfg.dataDir}/.first_startup"
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
+ optionalString (cfg.ensureDatabases != [ ]) ''
|
||||||
|
${concatMapStrings (database: ''
|
||||||
|
psql -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || psql -tAc 'CREATE DATABASE "${database}"'
|
||||||
|
'') cfg.ensureDatabases}
|
||||||
|
''
|
||||||
|
+ ''
|
||||||
|
${concatMapStrings (
|
||||||
|
user:
|
||||||
|
let
|
||||||
|
dbOwnershipStmt = optionalString user.ensureDBOwnership ''psql -tAc 'ALTER DATABASE "${user.name}" OWNER TO "${user.name}";' '';
|
||||||
|
|
||||||
|
filteredClauses = filterAttrs (name: value: value != null) user.ensureClauses;
|
||||||
|
|
||||||
|
clauseSqlStatements = attrValues (mapAttrs (n: v: if v then n else "no${n}") filteredClauses);
|
||||||
|
|
||||||
|
userClauses = ''psql -tAc 'ALTER ROLE "${user.name}" ${concatStringsSep " " clauseSqlStatements}' '';
|
||||||
|
in
|
||||||
|
''
|
||||||
|
psql -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || psql -tAc 'CREATE USER "${user.name}"'
|
||||||
|
${userClauses}
|
||||||
|
|
||||||
|
${dbOwnershipStmt}
|
||||||
|
''
|
||||||
|
) cfg.ensureUsers}
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.doc = ./postgresql.md;
|
meta.doc = ./postgresql.md;
|
||||||
|
@ -256,7 +256,7 @@ in
|
|||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -275,13 +275,13 @@ in
|
|||||||
"systemd-tmpfiles-setup.service"
|
"systemd-tmpfiles-setup.service"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.database.createLocally) [
|
++ lib.optionals (cfg.database.createLocally) [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
++ lib.optionals cfg.redis.createLocally [
|
++ lib.optionals cfg.redis.createLocally [
|
||||||
"redis-${cfg.redis.name}.service"
|
"redis-${cfg.redis.name}.service"
|
||||||
];
|
];
|
||||||
requires = lib.optionals (cfg.database.createLocally) [
|
requires = lib.optionals (cfg.database.createLocally) [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
description = "Zammad web";
|
description = "Zammad web";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -123,8 +123,8 @@ libeufinComponent:
|
|||||||
echo "Bank initialisation complete"
|
echo "Bank initialisation complete"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
requires = lib.optionals cfg.createLocalDatabase [ "postgresql.service" ];
|
requires = lib.optionals cfg.createLocalDatabase [ "postgresql.target" ];
|
||||||
after = [ "network.target" ] ++ lib.optionals cfg.createLocalDatabase [ "postgresql.service" ];
|
after = [ "network.target" ] ++ lib.optionals cfg.createLocalDatabase [ "postgresql.target" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -119,13 +119,13 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
|
|
||||||
# pg_dump
|
# pg_dump
|
||||||
path = [ config.services.postgresql.package ];
|
path = [ config.services.postgresql.package ];
|
||||||
|
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/odoo";
|
ExecStart = "${cfg.package}/bin/odoo";
|
||||||
|
@ -89,8 +89,8 @@ in
|
|||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
};
|
};
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -623,7 +623,7 @@ in
|
|||||||
|
|
||||||
# prevent races with database creation
|
# prevent races with database creation
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
reloadTriggers =
|
reloadTriggers =
|
||||||
optionals (cfg.config != null) [ configFile ]
|
optionals (cfg.config != null) [ configFile ]
|
||||||
|
@ -107,7 +107,7 @@ in
|
|||||||
systemd.services.dspam = {
|
systemd.services.dspam = {
|
||||||
description = "dspam spam filtering daemon";
|
description = "dspam spam filtering daemon";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
restartTriggers = [ cfgfile ];
|
restartTriggers = [ cfgfile ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -193,7 +193,7 @@ in
|
|||||||
|
|
||||||
systemd.services.listmonk = {
|
systemd.services.listmonk = {
|
||||||
description = "Listmonk - newsletter and mailing list manager";
|
description = "Listmonk - newsletter and mailing list manager";
|
||||||
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "exec";
|
Type = "exec";
|
||||||
|
@ -575,9 +575,9 @@ in
|
|||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ lib.optional cfg.enablePostfix "postfix-setup.service"
|
++ lib.optional cfg.enablePostfix "postfix-setup.service"
|
||||||
++ lib.optional withPostgresql "postgresql.service";
|
++ lib.optional withPostgresql "postgresql.target";
|
||||||
restartTriggers = [ mailmanCfgFile ];
|
restartTriggers = [ mailmanCfgFile ];
|
||||||
requires = lib.optional withPostgresql "postgresql.service";
|
requires = lib.optional withPostgresql "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${mailmanEnv}/bin/mailman start";
|
ExecStart = "${mailmanEnv}/bin/mailman start";
|
||||||
@ -609,8 +609,8 @@ in
|
|||||||
"hyperkitty.service"
|
"hyperkitty.service"
|
||||||
];
|
];
|
||||||
path = with pkgs; [ jq ];
|
path = with pkgs; [ jq ];
|
||||||
after = lib.optional withPostgresql "postgresql.service";
|
after = lib.optional withPostgresql "postgresql.target";
|
||||||
requires = lib.optional withPostgresql "postgresql.service";
|
requires = lib.optional withPostgresql "postgresql.target";
|
||||||
serviceConfig.RemainAfterExit = true;
|
serviceConfig.RemainAfterExit = true;
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
script = ''
|
script = ''
|
||||||
@ -709,11 +709,11 @@ in
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = lib.optional withPostgresql "postgresql.service";
|
after = lib.optional withPostgresql "postgresql.target";
|
||||||
requires = [
|
requires = [
|
||||||
"mailman-uwsgi.socket"
|
"mailman-uwsgi.socket"
|
||||||
"mailman-web-setup.service"
|
"mailman-web-setup.service"
|
||||||
] ++ lib.optional withPostgresql "postgresql.service";
|
] ++ lib.optional withPostgresql "postgresql.target";
|
||||||
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
restartTriggers = [ config.environment.etc."mailman3/settings.py".source ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
# Since the mailman-web settings.py obstinately creates a logs
|
# Since the mailman-web settings.py obstinately creates a logs
|
||||||
|
@ -148,8 +148,8 @@ in
|
|||||||
# objects owners and extensions; for now we tack on what's needed
|
# objects owners and extensions; for now we tack on what's needed
|
||||||
# here.
|
# here.
|
||||||
systemd.services.postfixadmin-postgres = lib.mkIf localDB {
|
systemd.services.postfixadmin-postgres = lib.mkIf localDB {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
bindsTo = [ "postgresql.service" ];
|
bindsTo = [ "postgresql.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = [
|
path = [
|
||||||
pgsql.package
|
pgsql.package
|
||||||
|
@ -273,8 +273,8 @@ in
|
|||||||
|
|
||||||
systemd.services.roundcube-setup = lib.mkMerge [
|
systemd.services.roundcube-setup = lib.mkMerge [
|
||||||
(lib.mkIf localDB {
|
(lib.mkIf localDB {
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
|
@ -196,7 +196,7 @@ in
|
|||||||
description = "Matrix-IRC bridge";
|
description = "Matrix-IRC bridge";
|
||||||
before = [ "matrix-synapse.service" ]; # So the registration can be used by Synapse
|
before = [ "matrix-synapse.service" ]; # So the registration can be used by Synapse
|
||||||
after = lib.optionals (cfg.settings.database.engine == "postgres") [
|
after = lib.optionals (cfg.settings.database.engine == "postgres") [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
@ -440,7 +440,7 @@ in
|
|||||||
|
|
||||||
systemd.services.maubot = rec {
|
systemd.services.maubot = rec {
|
||||||
description = "maubot - a plugin-based Matrix bot system written in Python";
|
description = "maubot - a plugin-based Matrix bot system written in Python";
|
||||||
after = [ "network.target" ] ++ wants ++ lib.optional hasLocalPostgresDB "postgresql.service";
|
after = [ "network.target" ] ++ wants ++ lib.optional hasLocalPostgresDB "postgresql.target";
|
||||||
# all plugins get automatically disabled if maubot starts before synapse
|
# all plugins get automatically disabled if maubot starts before synapse
|
||||||
wants = lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit;
|
wants = lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit;
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -119,7 +119,7 @@ in
|
|||||||
systemd.services.synapse-auto-compressor = {
|
systemd.services.synapse-auto-compressor = {
|
||||||
description = "synapse-auto-compressor";
|
description = "synapse-auto-compressor";
|
||||||
requires = lib.optionals synapseUsesLocalPostgresql [
|
requires = lib.optionals synapseUsesLocalPostgresql [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
inherit (cfg) startAt;
|
inherit (cfg) startAt;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -1439,7 +1439,7 @@ in
|
|||||||
systemd.targets.matrix-synapse = lib.mkIf hasWorkers {
|
systemd.targets.matrix-synapse = lib.mkIf hasWorkers {
|
||||||
description = "Synapse Matrix parent target";
|
description = "Synapse Matrix parent target";
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [ "network-online.target" ] ++ optional hasLocalPostgresDB "postgresql.service";
|
after = [ "network-online.target" ] ++ optional hasLocalPostgresDB "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1451,13 +1451,13 @@ in
|
|||||||
partOf = [ "matrix-synapse.target" ];
|
partOf = [ "matrix-synapse.target" ];
|
||||||
wantedBy = [ "matrix-synapse.target" ];
|
wantedBy = [ "matrix-synapse.target" ];
|
||||||
unitConfig.ReloadPropagatedFrom = "matrix-synapse.target";
|
unitConfig.ReloadPropagatedFrom = "matrix-synapse.target";
|
||||||
requires = optional hasLocalPostgresDB "postgresql.service";
|
requires = optional hasLocalPostgresDB "postgresql.target";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [ "network-online.target" ] ++ optional hasLocalPostgresDB "postgresql.service";
|
after = [ "network-online.target" ] ++ optional hasLocalPostgresDB "postgresql.target";
|
||||||
requires = optional hasLocalPostgresDB "postgresql.service";
|
requires = optional hasLocalPostgresDB "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
};
|
};
|
||||||
baseServiceConfig = {
|
baseServiceConfig = {
|
||||||
|
@ -92,13 +92,13 @@ in
|
|||||||
|
|
||||||
systemd.services.atuin = {
|
systemd.services.atuin = {
|
||||||
description = "atuin server";
|
description = "atuin server";
|
||||||
requires = lib.optionals cfg.database.createLocally [ "postgresql.service" ];
|
requires = lib.optionals cfg.database.createLocally [ "postgresql.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
] ++ lib.optionals cfg.database.createLocally [ "postgresql.service" ];
|
] ++ lib.optionals cfg.database.createLocally [ "postgresql.target" ];
|
||||||
wants = [
|
wants = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
] ++ lib.optionals cfg.database.createLocally [ "postgresql.service" ];
|
] ++ lib.optionals cfg.database.createLocally [ "postgresql.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -77,7 +77,7 @@ in
|
|||||||
[ "dbus.service" ]
|
[ "dbus.service" ]
|
||||||
++ lib.optional config.services.httpd.enable "httpd.service"
|
++ lib.optional config.services.httpd.enable "httpd.service"
|
||||||
++ lib.optional config.services.mysql.enable "mysql.service"
|
++ lib.optional config.services.mysql.enable "mysql.service"
|
||||||
++ lib.optional config.services.postgresql.enable "postgresql.service"
|
++ lib.optional config.services.postgresql.enable "postgresql.target"
|
||||||
++ lib.optional config.services.tomcat.enable "tomcat.service"
|
++ lib.optional config.services.tomcat.enable "tomcat.service"
|
||||||
++ lib.optional config.services.svnserve.enable "svnserve.service"
|
++ lib.optional config.services.svnserve.enable "svnserve.service"
|
||||||
++ lib.optional config.services.mongodb.enable "mongodb.service"
|
++ lib.optional config.services.mongodb.enable "mongodb.service"
|
||||||
|
@ -663,7 +663,7 @@ in
|
|||||||
"network.target"
|
"network.target"
|
||||||
]
|
]
|
||||||
++ optionals usePostgresql [
|
++ optionals usePostgresql [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
++ optionals useMysql [
|
++ optionals useMysql [
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
@ -673,7 +673,7 @@ in
|
|||||||
];
|
];
|
||||||
requires =
|
requires =
|
||||||
optionals (cfg.database.createDatabase && usePostgresql) [
|
optionals (cfg.database.createDatabase && usePostgresql) [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
++ optionals (cfg.database.createDatabase && useMysql) [
|
++ optionals (cfg.database.createDatabase && useMysql) [
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
|
@ -238,7 +238,7 @@ in
|
|||||||
|
|
||||||
wants =
|
wants =
|
||||||
with cfg.backend;
|
with cfg.backend;
|
||||||
[ ] ++ lib.optionals (service == "sql" && sql.driver == "native_pgsql") [ "postgresql.service" ];
|
[ ] ++ lib.optionals (service == "sql" && sql.driver == "native_pgsql") [ "postgresql.target" ];
|
||||||
|
|
||||||
preStart =
|
preStart =
|
||||||
with cfg.backend;
|
with cfg.backend;
|
||||||
|
@ -758,10 +758,10 @@ in
|
|||||||
description = "gitea";
|
description = "gitea";
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ optional usePostgresql "postgresql.service"
|
++ optional usePostgresql "postgresql.target"
|
||||||
++ optional useMysql "mysql.service";
|
++ optional useMysql "mysql.service";
|
||||||
requires =
|
requires =
|
||||||
optional (cfg.database.createDatabase && usePostgresql) "postgresql.service"
|
optional (cfg.database.createDatabase && usePostgresql) "postgresql.target"
|
||||||
++ optional (cfg.database.createDatabase && useMysql) "mysql.service";
|
++ optional (cfg.database.createDatabase && useMysql) "mysql.service";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = [
|
path = [
|
||||||
|
@ -1295,8 +1295,8 @@ in
|
|||||||
pgsql = config.services.postgresql;
|
pgsql = config.services.postgresql;
|
||||||
in
|
in
|
||||||
mkIf databaseActuallyCreateLocally {
|
mkIf databaseActuallyCreateLocally {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
bindsTo = [ "postgresql.service" ];
|
bindsTo = [ "postgresql.target" ];
|
||||||
wantedBy = [ "gitlab.target" ];
|
wantedBy = [ "gitlab.target" ];
|
||||||
partOf = [ "gitlab.target" ];
|
partOf = [ "gitlab.target" ];
|
||||||
path = [
|
path = [
|
||||||
@ -1561,12 +1561,12 @@ in
|
|||||||
systemd.services.gitlab-db-config = {
|
systemd.services.gitlab-db-config = {
|
||||||
after = [
|
after = [
|
||||||
"gitlab-config.service"
|
"gitlab-config.service"
|
||||||
"gitlab-postgresql.service"
|
"gitlab-postgresql.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wants =
|
wants =
|
||||||
optional (cfg.databaseHost == "") "postgresql.service"
|
optional (cfg.databaseHost == "") "postgresql.target"
|
||||||
++ optional databaseActuallyCreateLocally "gitlab-postgresql.service";
|
++ optional databaseActuallyCreateLocally "gitlab-postgresql.target";
|
||||||
bindsTo = [ "gitlab-config.service" ];
|
bindsTo = [ "gitlab-config.service" ];
|
||||||
wantedBy = [ "gitlab.target" ];
|
wantedBy = [ "gitlab.target" ];
|
||||||
partOf = [ "gitlab.target" ];
|
partOf = [ "gitlab.target" ];
|
||||||
@ -1596,7 +1596,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"redis-gitlab.service"
|
"redis-gitlab.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"gitlab-config.service"
|
"gitlab-config.service"
|
||||||
"gitlab-db-config.service"
|
"gitlab-db-config.service"
|
||||||
];
|
];
|
||||||
@ -1604,7 +1604,7 @@ in
|
|||||||
"gitlab-config.service"
|
"gitlab-config.service"
|
||||||
"gitlab-db-config.service"
|
"gitlab-db-config.service"
|
||||||
];
|
];
|
||||||
wants = [ "redis-gitlab.service" ] ++ optional (cfg.databaseHost == "") "postgresql.service";
|
wants = [ "redis-gitlab.service" ] ++ optional (cfg.databaseHost == "") "postgresql.target";
|
||||||
wantedBy = [ "gitlab.target" ];
|
wantedBy = [ "gitlab.target" ];
|
||||||
partOf = [ "gitlab.target" ];
|
partOf = [ "gitlab.target" ];
|
||||||
environment =
|
environment =
|
||||||
@ -1847,7 +1847,7 @@ in
|
|||||||
"gitlab-config.service"
|
"gitlab-config.service"
|
||||||
"gitlab-db-config.service"
|
"gitlab-db-config.service"
|
||||||
];
|
];
|
||||||
wants = [ "redis-gitlab.service" ] ++ optional (cfg.databaseHost == "") "postgresql.service";
|
wants = [ "redis-gitlab.service" ] ++ optional (cfg.databaseHost == "") "postgresql.target";
|
||||||
requiredBy = [ "gitlab.target" ];
|
requiredBy = [ "gitlab.target" ];
|
||||||
partOf = [ "gitlab.target" ];
|
partOf = [ "gitlab.target" ];
|
||||||
environment = gitlabEnv;
|
environment = gitlabEnv;
|
||||||
|
@ -491,18 +491,18 @@ in
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
after =
|
after =
|
||||||
lib.optional enableRedis "redis-paperless.service"
|
lib.optional enableRedis "redis-paperless.service"
|
||||||
++ lib.optional cfg.database.createLocally "postgresql.service";
|
++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.paperless-task-queue = {
|
systemd.services.paperless-task-queue = {
|
||||||
description = "Paperless Celery Workers";
|
description = "Paperless Celery Workers";
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
after = [
|
after = [
|
||||||
"paperless-scheduler.service"
|
"paperless-scheduler.service"
|
||||||
] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
serviceConfig = defaultServiceConfig // {
|
serviceConfig = defaultServiceConfig // {
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
ExecStart = "${cfg.package}/bin/celery --app paperless worker --loglevel INFO";
|
ExecStart = "${cfg.package}/bin/celery --app paperless worker --loglevel INFO";
|
||||||
@ -520,10 +520,10 @@ in
|
|||||||
# Bind to `paperless-scheduler` so that the consumer never runs
|
# Bind to `paperless-scheduler` so that the consumer never runs
|
||||||
# during migrations
|
# during migrations
|
||||||
bindsTo = [ "paperless-scheduler.service" ];
|
bindsTo = [ "paperless-scheduler.service" ];
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
after = [
|
after = [
|
||||||
"paperless-scheduler.service"
|
"paperless-scheduler.service"
|
||||||
] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
serviceConfig = defaultServiceConfig // {
|
serviceConfig = defaultServiceConfig // {
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
ExecStart = "${cfg.package}/bin/paperless-ngx document_consumer";
|
ExecStart = "${cfg.package}/bin/paperless-ngx document_consumer";
|
||||||
@ -541,10 +541,10 @@ in
|
|||||||
# Bind to `paperless-scheduler` so that the web server never runs
|
# Bind to `paperless-scheduler` so that the web server never runs
|
||||||
# during migrations
|
# during migrations
|
||||||
bindsTo = [ "paperless-scheduler.service" ];
|
bindsTo = [ "paperless-scheduler.service" ];
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
after = [
|
after = [
|
||||||
"paperless-scheduler.service"
|
"paperless-scheduler.service"
|
||||||
] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
# Setup PAPERLESS_SECRET_KEY.
|
# Setup PAPERLESS_SECRET_KEY.
|
||||||
# If this environment variable is left unset, paperless-ngx defaults
|
# If this environment variable is left unset, paperless-ngx defaults
|
||||||
# to a well-known value, which is insecure.
|
# to a well-known value, which is insecure.
|
||||||
|
@ -374,7 +374,7 @@ in
|
|||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ lib.optional mysqlLocal "mysql.service"
|
++ lib.optional mysqlLocal "mysql.service"
|
||||||
++ lib.optional pgsqlLocal "postgresql.service";
|
++ lib.optional pgsqlLocal "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
environment.RAILS_ENV = "production";
|
environment.RAILS_ENV = "production";
|
||||||
environment.RAILS_CACHE = "${cfg.stateDir}/cache";
|
environment.RAILS_CACHE = "${cfg.stateDir}/cache";
|
||||||
|
@ -52,10 +52,10 @@ let
|
|||||||
{
|
{
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ optional cfg.postgresql.enable "postgresql.service"
|
++ optional cfg.postgresql.enable "postgresql.target"
|
||||||
++ optional cfg.redis.enable "redis-sourcehut-${srvsrht}.service";
|
++ optional cfg.redis.enable "redis-sourcehut-${srvsrht}.service";
|
||||||
requires =
|
requires =
|
||||||
optional cfg.postgresql.enable "postgresql.service"
|
optional cfg.postgresql.enable "postgresql.target"
|
||||||
++ optional cfg.redis.enable "redis-sourcehut-${srvsrht}.service";
|
++ optional cfg.redis.enable "redis-sourcehut-${srvsrht}.service";
|
||||||
path = [ pkgs.gawk ];
|
path = [ pkgs.gawk ];
|
||||||
environment.HOME = runDir;
|
environment.HOME = runDir;
|
||||||
@ -482,11 +482,9 @@ in
|
|||||||
&& lib.strings.versionAtLeast config.services.postgresql.package.version "15.0"
|
&& lib.strings.versionAtLeast config.services.postgresql.package.version "15.0"
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
postgresql.postStart = (
|
postgresql-setup.postStart = ''
|
||||||
lib.mkAfter ''
|
psql -tAc 'ALTER DATABASE "${srvCfg.postgresql.database}" OWNER TO "${srvCfg.user}";'
|
||||||
$PSQL -tAc 'ALTER DATABASE "${srvCfg.postgresql.database}" OWNER TO "${srvCfg.user}";'
|
'';
|
||||||
''
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
@ -2020,7 +2020,7 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after =
|
after =
|
||||||
[ "networking.target" ]
|
[ "networking.target" ]
|
||||||
++ lib.optional usePostgresql "postgresql.service"
|
++ lib.optional usePostgresql "postgresql.target"
|
||||||
++ lib.optional useMysql "mysql.service";
|
++ lib.optional useMysql "mysql.service";
|
||||||
script = ''
|
script = ''
|
||||||
set -o errexit -o pipefail -o nounset -o errtrace
|
set -o errexit -o pipefail -o nounset -o errtrace
|
||||||
|
@ -337,7 +337,7 @@ in
|
|||||||
description = "Zabbix Proxy";
|
description = "Zabbix Proxy";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
|
|
||||||
path = [ "/run/wrappers" ] ++ cfg.extraPackages;
|
path = [ "/run/wrappers" ] ++ cfg.extraPackages;
|
||||||
preStart =
|
preStart =
|
||||||
|
@ -328,7 +328,7 @@ in
|
|||||||
description = "Zabbix Server";
|
description = "Zabbix Server";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
|
|
||||||
path = [ "/run/wrappers" ] ++ cfg.extraPackages;
|
path = [ "/run/wrappers" ] ++ cfg.extraPackages;
|
||||||
preStart =
|
preStart =
|
||||||
@ -374,7 +374,7 @@ in
|
|||||||
|
|
||||||
systemd.services.httpd.after =
|
systemd.services.httpd.after =
|
||||||
optional (config.services.zabbixWeb.enable && mysqlLocal) "mysql.service"
|
optional (config.services.zabbixWeb.enable && mysqlLocal) "mysql.service"
|
||||||
++ optional (config.services.zabbixWeb.enable && pgsqlLocal) "postgresql.service";
|
++ optional (config.services.zabbixWeb.enable && pgsqlLocal) "postgresql.target";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -169,8 +169,8 @@ in
|
|||||||
|
|
||||||
systemd.services.atticd = {
|
systemd.services.atticd = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network-online.target" ] ++ lib.optionals hasLocalPostgresDB [ "postgresql.service" ];
|
after = [ "network-online.target" ] ++ lib.optionals hasLocalPostgresDB [ "postgresql.target" ];
|
||||||
requires = lib.optionals hasLocalPostgresDB [ "postgresql.service" ];
|
requires = lib.optionals hasLocalPostgresDB [ "postgresql.target" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -1105,8 +1105,8 @@ in
|
|||||||
systemd.services.firezone-initialize = {
|
systemd.services.firezone-initialize = {
|
||||||
description = "Backend initialization service for the Firezone zero-trust access platform";
|
description = "Backend initialization service for the Firezone zero-trust access platform";
|
||||||
|
|
||||||
after = mkIf cfg.enableLocalDB [ "postgresql.service" ];
|
after = mkIf cfg.enableLocalDB [ "postgresql.target" ];
|
||||||
requires = mkIf cfg.enableLocalDB [ "postgresql.service" ];
|
requires = mkIf cfg.enableLocalDB [ "postgresql.target" ];
|
||||||
wantedBy = [ "firezone.target" ];
|
wantedBy = [ "firezone.target" ];
|
||||||
partOf = [ "firezone.target" ];
|
partOf = [ "firezone.target" ];
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ in
|
|||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wantedBy = [ "pleroma.service" ];
|
wantedBy = [ "pleroma.service" ];
|
||||||
environment.RELEASE_COOKIE = "/var/lib/pleroma/.cookie";
|
environment.RELEASE_COOKIE = "/var/lib/pleroma/.cookie";
|
||||||
|
@ -53,7 +53,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"openldap.service"
|
"openldap.service"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ optional config.services.postgresql.enable "postgresql.service"
|
++ optional config.services.postgresql.enable "postgresql.target"
|
||||||
++ optional config.services.mysql.enable "mysql.service";
|
++ optional config.services.mysql.enable "mysql.service";
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -283,7 +283,7 @@ in
|
|||||||
systemd.services.canaille-install = {
|
systemd.services.canaille-install = {
|
||||||
# We want this on boot, not on socket activation
|
# We want this on boot, not on socket activation
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = optional createLocalPostgresqlDb "postgresql.service";
|
after = optional createLocalPostgresqlDb "postgresql.target";
|
||||||
serviceConfig = commonServiceConfig // {
|
serviceConfig = commonServiceConfig // {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${getExe finalPackage} install";
|
ExecStart = "${getExe finalPackage} install";
|
||||||
@ -296,7 +296,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"canaille-install.service"
|
"canaille-install.service"
|
||||||
] ++ optional createLocalPostgresqlDb "postgresql.service";
|
] ++ optional createLocalPostgresqlDb "postgresql.target";
|
||||||
requires = [
|
requires = [
|
||||||
"canaille-install.service"
|
"canaille-install.service"
|
||||||
"canaille.socket"
|
"canaille.socket"
|
||||||
|
@ -127,8 +127,8 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
] ++ optional cfg.useLocalPostgresDB "postgresql.service";
|
] ++ optional cfg.useLocalPostgresDB "postgresql.target";
|
||||||
requires = optional cfg.useLocalPostgresDB "postgresql.service";
|
requires = optional cfg.useLocalPostgresDB "postgresql.target";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
|
@ -1231,7 +1231,7 @@ in
|
|||||||
requiredBy = [ "akkoma.service" ];
|
requiredBy = [ "akkoma.service" ];
|
||||||
after = [
|
after = [
|
||||||
"akkoma-config.service"
|
"akkoma-config.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
before = [ "akkoma.service" ];
|
before = [ "akkoma.service" ];
|
||||||
|
|
||||||
@ -1269,7 +1269,7 @@ in
|
|||||||
"akkoma-config.target"
|
"akkoma-config.target"
|
||||||
"network.target"
|
"network.target"
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
|
|
||||||
confinement.packages = mkIf isConfined runtimeInputs;
|
confinement.packages = mkIf isConfined runtimeInputs;
|
||||||
|
@ -109,7 +109,7 @@ in
|
|||||||
description = "The API for Crab Fit.";
|
description = "The API for Crab Fit.";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
# TODO: harden
|
# TODO: harden
|
||||||
|
@ -444,11 +444,11 @@ in
|
|||||||
before = [ "phpfpm-davis.service" ];
|
before = [ "phpfpm-davis.service" ];
|
||||||
after =
|
after =
|
||||||
lib.optional mysqlLocal "mysql.service"
|
lib.optional mysqlLocal "mysql.service"
|
||||||
++ lib.optional pgsqlLocal "postgresql.service"
|
++ lib.optional pgsqlLocal "postgresql.target"
|
||||||
++ [ "davis-env-setup.service" ];
|
++ [ "davis-env-setup.service" ];
|
||||||
requires =
|
requires =
|
||||||
lib.optional mysqlLocal "mysql.service"
|
lib.optional mysqlLocal "mysql.service"
|
||||||
++ lib.optional pgsqlLocal "postgresql.service"
|
++ lib.optional pgsqlLocal "postgresql.target"
|
||||||
++ [ "davis-env-setup.service" ];
|
++ [ "davis-env-setup.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = defaultServiceConfig // {
|
serviceConfig = defaultServiceConfig // {
|
||||||
@ -483,7 +483,7 @@ in
|
|||||||
"davis-db-migrate.service"
|
"davis-db-migrate.service"
|
||||||
]
|
]
|
||||||
++ lib.optional mysqlLocal "mysql.service"
|
++ lib.optional mysqlLocal "mysql.service"
|
||||||
++ lib.optional pgsqlLocal "postgresql.service";
|
++ lib.optional pgsqlLocal "postgresql.target";
|
||||||
systemd.services.phpfpm-davis.serviceConfig.ReadWritePaths = [ cfg.dataDir ];
|
systemd.services.phpfpm-davis.serviceConfig.ReadWritePaths = [ cfg.dataDir ];
|
||||||
|
|
||||||
services.nginx = lib.mkIf (cfg.nginx != null) {
|
services.nginx = lib.mkIf (cfg.nginx != null) {
|
||||||
|
@ -535,9 +535,9 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.dependency-track-postgresql-init = lib.mkIf cfg.database.createLocally {
|
systemd.services.dependency-track-postgresql-init = lib.mkIf cfg.database.createLocally {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
before = [ "dependency-track.service" ];
|
before = [ "dependency-track.service" ];
|
||||||
bindsTo = [ "postgresql.service" ];
|
bindsTo = [ "postgresql.target" ];
|
||||||
path = [ config.services.postgresql.package ];
|
path = [ config.services.postgresql.package ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
@ -572,7 +572,7 @@ in
|
|||||||
if cfg.database.createLocally then
|
if cfg.database.createLocally then
|
||||||
[
|
[
|
||||||
"dependency-track-postgresql-init.service"
|
"dependency-track-postgresql-init.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
else
|
else
|
||||||
[ ];
|
[ ];
|
||||||
|
@ -100,7 +100,7 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"networking.target"
|
"networking.target"
|
||||||
] ++ (optional (cfg.settings.storage.type == "postgres") "postgresql.service");
|
] ++ (optional (cfg.settings.storage.type == "postgres") "postgresql.target");
|
||||||
path = with pkgs; [ replace-secret ];
|
path = with pkgs; [ replace-secret ];
|
||||||
restartTriggers = restartTriggers;
|
restartTriggers = restartTriggers;
|
||||||
serviceConfig =
|
serviceConfig =
|
||||||
|
@ -705,8 +705,8 @@ in
|
|||||||
pgsql = config.services.postgresql;
|
pgsql = config.services.postgresql;
|
||||||
in
|
in
|
||||||
lib.mkIf databaseActuallyCreateLocally {
|
lib.mkIf databaseActuallyCreateLocally {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
bindsTo = [ "postgresql.service" ];
|
bindsTo = [ "postgresql.target" ];
|
||||||
wantedBy = [ "discourse.service" ];
|
wantedBy = [ "discourse.service" ];
|
||||||
partOf = [ "discourse.service" ];
|
partOf = [ "discourse.service" ];
|
||||||
path = [
|
path = [
|
||||||
@ -732,16 +732,16 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"redis-discourse.service"
|
"redis-discourse.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"discourse-postgresql.service"
|
"discourse-postgresql.target"
|
||||||
];
|
];
|
||||||
bindsTo =
|
bindsTo =
|
||||||
[
|
[
|
||||||
"redis-discourse.service"
|
"redis-discourse.service"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.database.host == null) [
|
++ lib.optionals (cfg.database.host == null) [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"discourse-postgresql.service"
|
"discourse-postgresql.target"
|
||||||
];
|
];
|
||||||
path = cfg.package.runtimeDeps ++ [
|
path = cfg.package.runtimeDeps ++ [
|
||||||
postgresqlPackage
|
postgresqlPackage
|
||||||
|
@ -87,8 +87,8 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
] ++ lib.optionals (cfg.database.url == "local") [ "postgresql.service" ];
|
] ++ lib.optionals (cfg.database.url == "local") [ "postgresql.target" ];
|
||||||
requires = lib.optionals (cfg.database.url == "local") [ "postgresql.service" ];
|
requires = lib.optionals (cfg.database.url == "local") [ "postgresql.target" ];
|
||||||
environment =
|
environment =
|
||||||
let
|
let
|
||||||
localPostgresqlUrl = "postgres:///fider?host=/run/postgresql";
|
localPostgresqlUrl = "postgres:///fider?host=/run/postgresql";
|
||||||
|
@ -227,7 +227,7 @@ in
|
|||||||
"multi-user.target"
|
"multi-user.target"
|
||||||
"phpfpm-filesender.service"
|
"phpfpm-filesender.service"
|
||||||
];
|
];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
|
|
||||||
restartIfChanged = true;
|
restartIfChanged = true;
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ in
|
|||||||
|
|
||||||
systemd.services.firefly-iii-setup = {
|
systemd.services.firefly-iii-setup = {
|
||||||
after = [
|
after = [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
];
|
];
|
||||||
requiredBy = [ "phpfpm-firefly-iii.service" ];
|
requiredBy = [ "phpfpm-firefly-iii.service" ];
|
||||||
@ -325,7 +325,7 @@ in
|
|||||||
systemd.services.firefly-iii-cron = {
|
systemd.services.firefly-iii-cron = {
|
||||||
after = [
|
after = [
|
||||||
"firefly-iii-setup.service"
|
"firefly-iii-setup.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
];
|
];
|
||||||
wants = [ "firefly-iii-setup.service" ];
|
wants = [ "firefly-iii-setup.service" ];
|
||||||
|
@ -163,9 +163,9 @@ in
|
|||||||
systemd = {
|
systemd = {
|
||||||
services = {
|
services = {
|
||||||
|
|
||||||
postgresql.serviceConfig.ExecStartPost =
|
postgresql-setup.serviceConfig.ExecStartPost =
|
||||||
let
|
let
|
||||||
sqlFile = pkgs.writeText "immich-pgvectors-setup.sql" ''
|
sqlFile = pkgs.writeText "froide-govplan-postgis-setup.sql" ''
|
||||||
CREATE EXTENSION IF NOT EXISTS postgis;
|
CREATE EXTENSION IF NOT EXISTS postgis;
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
@ -184,7 +184,7 @@ in
|
|||||||
Group = "govplan";
|
Group = "govplan";
|
||||||
};
|
};
|
||||||
after = [
|
after = [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"network.target"
|
"network.target"
|
||||||
"systemd-tmpfiles-setup.service"
|
"systemd-tmpfiles-setup.service"
|
||||||
];
|
];
|
||||||
|
@ -211,7 +211,7 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
] ++ optional (cfg.settings.db.dialect == "postgres") "postgresql.service";
|
] ++ optional (cfg.settings.db.dialect == "postgres") "postgresql.target";
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
NODE_ENV = "production";
|
NODE_ENV = "production";
|
||||||
|
@ -171,11 +171,11 @@ in
|
|||||||
|
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
requires =
|
requires =
|
||||||
lib.optional cfg.database.createLocally "postgresql.service"
|
lib.optional cfg.database.createLocally "postgresql.target"
|
||||||
++ lib.optional cfg.redis.createLocally "redis-glitchtip.service";
|
++ lib.optional cfg.redis.createLocally "redis-glitchtip.service";
|
||||||
after =
|
after =
|
||||||
[ "network-online.target" ]
|
[ "network-online.target" ]
|
||||||
++ lib.optional cfg.database.createLocally "postgresql.service"
|
++ lib.optional cfg.database.createLocally "postgresql.target"
|
||||||
++ lib.optional cfg.redis.createLocally "redis-glitchtip.service";
|
++ lib.optional cfg.redis.createLocally "redis-glitchtip.service";
|
||||||
|
|
||||||
inherit environment;
|
inherit environment;
|
||||||
|
@ -144,8 +144,8 @@ in
|
|||||||
systemd.services.gotosocial = {
|
systemd.services.gotosocial = {
|
||||||
description = "ActivityPub social network server";
|
description = "ActivityPub social network server";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network.target" ] ++ lib.optional cfg.setupPostgresqlDB "postgresql.service";
|
after = [ "network.target" ] ++ lib.optional cfg.setupPostgresqlDB "postgresql.target";
|
||||||
requires = lib.optional cfg.setupPostgresqlDB "postgresql.service";
|
requires = lib.optional cfg.setupPostgresqlDB "postgresql.target";
|
||||||
restartTriggers = [ configFile ];
|
restartTriggers = [ configFile ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -81,8 +81,8 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
systemd.services.homebox = {
|
systemd.services.homebox = {
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
after = lib.optional cfg.database.createLocally "postgresql.service";
|
after = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
environment = cfg.settings;
|
environment = cfg.settings;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "homebox";
|
User = "homebox";
|
||||||
|
@ -254,7 +254,7 @@ in
|
|||||||
search_path = "\"$user\", public, vectors";
|
search_path = "\"$user\", public, vectors";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.services.postgresql.serviceConfig.ExecStartPost =
|
systemd.services.postgresql-setup.serviceConfig.ExecStartPost =
|
||||||
let
|
let
|
||||||
sqlFile = pkgs.writeText "immich-pgvectors-setup.sql" ''
|
sqlFile = pkgs.writeText "immich-pgvectors-setup.sql" ''
|
||||||
CREATE EXTENSION IF NOT EXISTS unaccent;
|
CREATE EXTENSION IF NOT EXISTS unaccent;
|
||||||
|
@ -19,8 +19,8 @@ let
|
|||||||
commonInvidousServiceConfig = {
|
commonInvidousServiceConfig = {
|
||||||
description = "Invidious (An alternative YouTube front-end)";
|
description = "Invidious (An alternative YouTube front-end)";
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -602,9 +602,9 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
systemd.services.keycloakPostgreSQLInit = mkIf createLocalPostgreSQL {
|
systemd.services.keycloakPostgreSQLInit = mkIf createLocalPostgreSQL {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
before = [ "keycloak.service" ];
|
before = [ "keycloak.service" ];
|
||||||
bindsTo = [ "postgresql.service" ];
|
bindsTo = [ "postgresql.target" ];
|
||||||
path = [ config.services.postgresql.package ];
|
path = [ config.services.postgresql.package ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
@ -690,7 +690,7 @@ in
|
|||||||
if createLocalPostgreSQL then
|
if createLocalPostgreSQL then
|
||||||
[
|
[
|
||||||
"keycloakPostgreSQLInit.service"
|
"keycloakPostgreSQLInit.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
else if createLocalMySQL then
|
else if createLocalMySQL then
|
||||||
[
|
[
|
||||||
|
@ -350,10 +350,10 @@ in
|
|||||||
description = "Docs from SuiteNumérique";
|
description = "Docs from SuiteNumérique";
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ (optional cfg.postgresql.createLocally "postgresql.service")
|
++ (optional cfg.postgresql.createLocally "postgresql.target")
|
||||||
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
||||||
wants =
|
wants =
|
||||||
(optional cfg.postgresql.createLocally "postgresql.service")
|
(optional cfg.postgresql.createLocally "postgresql.target")
|
||||||
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
@ -398,10 +398,10 @@ in
|
|||||||
description = "Docs Celery broker from SuiteNumérique";
|
description = "Docs Celery broker from SuiteNumérique";
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ (optional cfg.postgresql.createLocally "postgresql.service")
|
++ (optional cfg.postgresql.createLocally "postgresql.target")
|
||||||
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
||||||
wants =
|
wants =
|
||||||
(optional cfg.postgresql.createLocally "postgresql.service")
|
(optional cfg.postgresql.createLocally "postgresql.target")
|
||||||
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
++ (optional cfg.redis.createLocally "redis-lasuite-docs.service");
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
@ -325,9 +325,9 @@ in
|
|||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
after = [ "pict-rs.service" ] ++ lib.optionals cfg.database.createLocally [ "postgresql.service" ];
|
after = [ "pict-rs.service" ] ++ lib.optionals cfg.database.createLocally [ "postgresql.target" ];
|
||||||
|
|
||||||
requires = lib.optionals cfg.database.createLocally [ "postgresql.service" ];
|
requires = lib.optionals cfg.database.createLocally [ "postgresql.target" ];
|
||||||
|
|
||||||
# substitute secrets and prevent others from reading the result
|
# substitute secrets and prevent others from reading the result
|
||||||
# if somehow $CREDENTIALS_DIRECTORY is not set we fail
|
# if somehow $CREDENTIALS_DIRECTORY is not set we fail
|
||||||
|
@ -413,7 +413,7 @@ in
|
|||||||
systemd.services.limesurvey-init = {
|
systemd.services.limesurvey-init = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
before = [ "phpfpm-limesurvey.service" ];
|
before = [ "phpfpm-limesurvey.service" ];
|
||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
environment.DBENGINE = "${cfg.database.dbEngine}";
|
environment.DBENGINE = "${cfg.database.dbEngine}";
|
||||||
environment.LIMESURVEY_CONFIG = limesurveyConfig;
|
environment.LIMESURVEY_CONFIG = limesurveyConfig;
|
||||||
script = ''
|
script = ''
|
||||||
@ -444,7 +444,7 @@ in
|
|||||||
|
|
||||||
systemd.services.httpd.after =
|
systemd.services.httpd.after =
|
||||||
optional mysqlLocal "mysql.service"
|
optional mysqlLocal "mysql.service"
|
||||||
++ optional pgsqlLocal "postgresql.service";
|
++ optional pgsqlLocal "postgresql.target";
|
||||||
|
|
||||||
users.users.${user} = {
|
users.users.${user} = {
|
||||||
group = group;
|
group = group;
|
||||||
|
@ -126,10 +126,10 @@ let
|
|||||||
SystemCallArchitectures = "native";
|
SystemCallArchitectures = "native";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Services that all Mastodon units After= and Requires= on
|
# Units that all Mastodon units After= and Requires= on
|
||||||
commonServices =
|
commonUnits =
|
||||||
lib.optional redisActuallyCreateLocally "redis-mastodon.service"
|
lib.optional redisActuallyCreateLocally "redis-mastodon.service"
|
||||||
++ lib.optional databaseActuallyCreateLocally "postgresql.service"
|
++ lib.optional databaseActuallyCreateLocally "postgresql.target"
|
||||||
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
++ lib.optional cfg.automaticMigrations "mastodon-init-db.service";
|
||||||
|
|
||||||
envFile = pkgs.writeText "mastodon.env" (
|
envFile = pkgs.writeText "mastodon.env" (
|
||||||
@ -170,8 +170,8 @@ let
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"mastodon-init-dirs.service"
|
"mastodon-init-dirs.service"
|
||||||
] ++ commonServices;
|
] ++ commonUnits;
|
||||||
requires = [ "mastodon-init-dirs.service" ] ++ commonServices;
|
requires = [ "mastodon-init-dirs.service" ] ++ commonUnits;
|
||||||
description = "Mastodon sidekiq${jobClassLabel}";
|
description = "Mastodon sidekiq${jobClassLabel}";
|
||||||
wantedBy = [ "mastodon.target" ];
|
wantedBy = [ "mastodon.target" ];
|
||||||
environment = env // {
|
environment = env // {
|
||||||
@ -209,8 +209,8 @@ let
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"mastodon-init-dirs.service"
|
"mastodon-init-dirs.service"
|
||||||
] ++ commonServices;
|
] ++ commonUnits;
|
||||||
requires = [ "mastodon-init-dirs.service" ] ++ commonServices;
|
requires = [ "mastodon-init-dirs.service" ] ++ commonUnits;
|
||||||
wantedBy = [
|
wantedBy = [
|
||||||
"mastodon.target"
|
"mastodon.target"
|
||||||
"mastodon-streaming.target"
|
"mastodon-streaming.target"
|
||||||
@ -998,18 +998,18 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"mastodon-init-dirs.service"
|
"mastodon-init-dirs.service"
|
||||||
] ++ lib.optional databaseActuallyCreateLocally "postgresql.service";
|
] ++ lib.optional databaseActuallyCreateLocally "postgresql.target";
|
||||||
requires = [
|
requires = [
|
||||||
"mastodon-init-dirs.service"
|
"mastodon-init-dirs.service"
|
||||||
] ++ lib.optional databaseActuallyCreateLocally "postgresql.service";
|
] ++ lib.optional databaseActuallyCreateLocally "postgresql.target";
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.mastodon-web = {
|
systemd.services.mastodon-web = {
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"mastodon-init-dirs.service"
|
"mastodon-init-dirs.service"
|
||||||
] ++ commonServices;
|
] ++ commonUnits;
|
||||||
requires = [ "mastodon-init-dirs.service" ] ++ commonServices;
|
requires = [ "mastodon-init-dirs.service" ] ++ commonUnits;
|
||||||
wantedBy = [ "mastodon.target" ];
|
wantedBy = [ "mastodon.target" ];
|
||||||
description = "Mastodon web";
|
description = "Mastodon web";
|
||||||
environment =
|
environment =
|
||||||
|
@ -840,7 +840,7 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = mkMerge [
|
after = mkMerge [
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
(mkIf (cfg.database.driver == "postgres" && cfg.database.create) [ "postgresql.service" ])
|
(mkIf (cfg.database.driver == "postgres" && cfg.database.create) [ "postgresql.target" ])
|
||||||
(mkIf (cfg.database.driver == "mysql" && cfg.database.create) [ "mysql.service" ])
|
(mkIf (cfg.database.driver == "mysql" && cfg.database.create) [ "mysql.service" ])
|
||||||
];
|
];
|
||||||
requires = after;
|
requires = after;
|
||||||
@ -946,7 +946,7 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
unitConfig.JoinsNamespaceOf = mkMerge [
|
unitConfig.JoinsNamespaceOf = mkMerge [
|
||||||
(mkIf (cfg.database.driver == "postgres" && cfg.database.create) [ "postgresql.service" ])
|
(mkIf (cfg.database.driver == "postgres" && cfg.database.create) [ "postgresql.target" ])
|
||||||
(mkIf (cfg.database.driver == "mysql" && cfg.database.create) [ "mysql.service" ])
|
(mkIf (cfg.database.driver == "mysql" && cfg.database.create) [ "mysql.service" ])
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -66,8 +66,8 @@ in
|
|||||||
systemd.services.mealie = {
|
systemd.services.mealie = {
|
||||||
description = "Mealie, a self hosted recipe manager and meal planner";
|
description = "Mealie, a self hosted recipe manager and meal planner";
|
||||||
|
|
||||||
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
@ -339,11 +339,11 @@ in
|
|||||||
mediagoblin-paster = lib.recursiveUpdate serviceDefaults {
|
mediagoblin-paster = lib.recursiveUpdate serviceDefaults {
|
||||||
after = [
|
after = [
|
||||||
"mediagoblin-celeryd.service"
|
"mediagoblin-celeryd.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
requires = [
|
requires = [
|
||||||
"mediagoblin-celeryd.service"
|
"mediagoblin-celeryd.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
preStart = ''
|
preStart = ''
|
||||||
cp --remove-destination ${pasteConfig} /var/lib/mediagoblin/paste.ini
|
cp --remove-destination ${pasteConfig} /var/lib/mediagoblin/paste.ini
|
||||||
|
@ -707,7 +707,7 @@ in
|
|||||||
before = [ "phpfpm-mediawiki.service" ];
|
before = [ "phpfpm-mediawiki.service" ];
|
||||||
after =
|
after =
|
||||||
optional (cfg.database.type == "mysql" && cfg.database.createLocally) "mysql.service"
|
optional (cfg.database.type == "mysql" && cfg.database.createLocally) "mysql.service"
|
||||||
++ optional (cfg.database.type == "postgres" && cfg.database.createLocally) "postgresql.service";
|
++ optional (cfg.database.type == "postgres" && cfg.database.createLocally) "postgresql.target";
|
||||||
script = ''
|
script = ''
|
||||||
if ! test -e "${stateDir}/secret.key"; then
|
if ! test -e "${stateDir}/secret.key"; then
|
||||||
tr -dc A-Za-z0-9 </dev/urandom 2>/dev/null | head -c 64 > ${stateDir}/secret.key
|
tr -dc A-Za-z0-9 </dev/urandom 2>/dev/null | head -c 64 > ${stateDir}/secret.key
|
||||||
@ -754,7 +754,7 @@ in
|
|||||||
) "mysql.service"
|
) "mysql.service"
|
||||||
++ optional (
|
++ optional (
|
||||||
cfg.webserver == "apache" && cfg.database.createLocally && cfg.database.type == "postgres"
|
cfg.webserver == "apache" && cfg.database.createLocally && cfg.database.type == "postgres"
|
||||||
) "postgresql.service";
|
) "postgresql.target";
|
||||||
|
|
||||||
users.users.${user} = {
|
users.users.${user} = {
|
||||||
inherit group;
|
inherit group;
|
||||||
|
@ -107,10 +107,10 @@ in
|
|||||||
|
|
||||||
systemd.services.miniflux-dbsetup = lib.mkIf cfg.createDatabaseLocally {
|
systemd.services.miniflux-dbsetup = lib.mkIf cfg.createDatabaseLocally {
|
||||||
description = "Miniflux database setup";
|
description = "Miniflux database setup";
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
@ -126,7 +126,7 @@ in
|
|||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ lib.optionals cfg.createDatabaseLocally [
|
++ lib.optionals cfg.createDatabaseLocally [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"miniflux-dbsetup.service"
|
"miniflux-dbsetup.service"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ in
|
|||||||
systemd.services.misskey = {
|
systemd.services.misskey = {
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -366,7 +366,7 @@ in
|
|||||||
systemd.services.mobilizon-postgresql = mkIf isLocalPostgres {
|
systemd.services.mobilizon-postgresql = mkIf isLocalPostgres {
|
||||||
description = "Mobilizon PostgreSQL setup";
|
description = "Mobilizon PostgreSQL setup";
|
||||||
|
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
before = [
|
before = [
|
||||||
"mobilizon.service"
|
"mobilizon.service"
|
||||||
"mobilizon-setup-secrets.service"
|
"mobilizon-setup-secrets.service"
|
||||||
|
@ -351,7 +351,7 @@ in
|
|||||||
systemd.services.moodle-init = {
|
systemd.services.moodle-init = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
before = [ "phpfpm-moodle.service" ];
|
before = [ "phpfpm-moodle.service" ];
|
||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
environment.MOODLE_CONFIG = moodleConfig;
|
environment.MOODLE_CONFIG = moodleConfig;
|
||||||
script = ''
|
script = ''
|
||||||
${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/check_database_schema.php && rc=$? || rc=$?
|
${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/check_database_schema.php && rc=$? || rc=$?
|
||||||
@ -394,7 +394,7 @@ in
|
|||||||
|
|
||||||
systemd.services.httpd.after =
|
systemd.services.httpd.after =
|
||||||
optional mysqlLocal "mysql.service"
|
optional mysqlLocal "mysql.service"
|
||||||
++ optional pgsqlLocal "postgresql.service";
|
++ optional pgsqlLocal "postgresql.target";
|
||||||
|
|
||||||
users.users.${user} = {
|
users.users.${user} = {
|
||||||
group = group;
|
group = group;
|
||||||
|
@ -165,9 +165,9 @@ let
|
|||||||
fpm = config.services.phpfpm.pools.${pool};
|
fpm = config.services.phpfpm.pools.${pool};
|
||||||
phpExecutionUnit = "phpfpm-${pool}";
|
phpExecutionUnit = "phpfpm-${pool}";
|
||||||
|
|
||||||
dbService =
|
dbUnit =
|
||||||
{
|
{
|
||||||
"postgresql" = "postgresql.service";
|
"postgresql" = "postgresql.target";
|
||||||
"mariadb" = "mysql.service";
|
"mariadb" = "mysql.service";
|
||||||
}
|
}
|
||||||
.${cfg.database.type};
|
.${cfg.database.type};
|
||||||
@ -843,8 +843,8 @@ in
|
|||||||
requiredBy = [ "${phpExecutionUnit}.service" ];
|
requiredBy = [ "${phpExecutionUnit}.service" ];
|
||||||
before = [ "${phpExecutionUnit}.service" ];
|
before = [ "${phpExecutionUnit}.service" ];
|
||||||
wants = [ "local-fs.target" ];
|
wants = [ "local-fs.target" ];
|
||||||
requires = lib.optional cfg.database.createLocally dbService;
|
requires = lib.optional cfg.database.createLocally dbUnit;
|
||||||
after = lib.optional cfg.database.createLocally dbService;
|
after = lib.optional cfg.database.createLocally dbUnit;
|
||||||
|
|
||||||
serviceConfig =
|
serviceConfig =
|
||||||
{
|
{
|
||||||
@ -899,8 +899,8 @@ in
|
|||||||
requiredBy = [ "movim.service" ];
|
requiredBy = [ "movim.service" ];
|
||||||
before = [ "movim.service" ] ++ lib.optional (webServerService != null) webServerService;
|
before = [ "movim.service" ] ++ lib.optional (webServerService != null) webServerService;
|
||||||
wants = [ "network.target" ];
|
wants = [ "network.target" ];
|
||||||
requires = [ "movim-data-setup.service" ] ++ lib.optional cfg.database.createLocally dbService;
|
requires = [ "movim-data-setup.service" ] ++ lib.optional cfg.database.createLocally dbUnit;
|
||||||
after = [ "movim-data-setup.service" ] ++ lib.optional cfg.database.createLocally dbService;
|
after = [ "movim-data-setup.service" ] ++ lib.optional cfg.database.createLocally dbUnit;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.movim = {
|
services.movim = {
|
||||||
@ -915,14 +915,14 @@ in
|
|||||||
"movim-data-setup.service"
|
"movim-data-setup.service"
|
||||||
"${phpExecutionUnit}.service"
|
"${phpExecutionUnit}.service"
|
||||||
]
|
]
|
||||||
++ lib.optional cfg.database.createLocally dbService
|
++ lib.optional cfg.database.createLocally dbUnit
|
||||||
++ lib.optional (webServerService != null) webServerService;
|
++ lib.optional (webServerService != null) webServerService;
|
||||||
after =
|
after =
|
||||||
[
|
[
|
||||||
"movim-data-setup.service"
|
"movim-data-setup.service"
|
||||||
"${phpExecutionUnit}.service"
|
"${phpExecutionUnit}.service"
|
||||||
]
|
]
|
||||||
++ lib.optional cfg.database.createLocally dbService
|
++ lib.optional cfg.database.createLocally dbUnit
|
||||||
++ lib.optional (webServerService != null) webServerService;
|
++ lib.optional (webServerService != null) webServerService;
|
||||||
environment = {
|
environment = {
|
||||||
PUBLIC_URL = "//${cfg.domain}";
|
PUBLIC_URL = "//${cfg.domain}";
|
||||||
|
@ -1167,8 +1167,8 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
wants = [ "nextcloud-update-db.service" ];
|
wants = [ "nextcloud-update-db.service" ];
|
||||||
before = [ "phpfpm-nextcloud.service" ];
|
before = [ "phpfpm-nextcloud.service" ];
|
||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
path = [ occ ];
|
path = [ occ ];
|
||||||
restartTriggers = [ overrideConfig ];
|
restartTriggers = [ overrideConfig ];
|
||||||
script = ''
|
script = ''
|
||||||
|
@ -234,8 +234,8 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"systemd-tmpfiles-setup.service"
|
"systemd-tmpfiles-setup.service"
|
||||||
] ++ lib.optional (cfg.settings.nipapd.db_host == "") "postgresql.service";
|
] ++ lib.optional (cfg.settings.nipapd.db_host == "") "postgresql.target";
|
||||||
requires = lib.optional (cfg.settings.nipapd.db_host == "") "postgresql.service";
|
requires = lib.optional (cfg.settings.nipapd.db_host == "") "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
preStart = lib.optionalString (cfg.settings.auth.default_backend == defaultAuthBackend) ''
|
preStart = lib.optionalString (cfg.settings.auth.default_backend == defaultAuthBackend) ''
|
||||||
# Create/upgrade local auth database
|
# Create/upgrade local auth database
|
||||||
|
@ -235,12 +235,12 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"onlyoffice-docservice.service"
|
"onlyoffice-docservice.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
requires = [
|
requires = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"onlyoffice-docservice.service"
|
"onlyoffice-docservice.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
@ -314,9 +314,9 @@ in
|
|||||||
description = "onlyoffice documentserver";
|
description = "onlyoffice documentserver";
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package.fhs}/bin/onlyoffice-wrapper DocService/docservice /run/onlyoffice/config";
|
ExecStart = "${cfg.package.fhs}/bin/onlyoffice-wrapper DocService/docservice /run/onlyoffice/config";
|
||||||
|
@ -634,10 +634,10 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after =
|
after =
|
||||||
[ "networking.target" ]
|
[ "networking.target" ]
|
||||||
++ lib.optional (cfg.databaseUrl == "local") "postgresql.service"
|
++ lib.optional (cfg.databaseUrl == "local") "postgresql.target"
|
||||||
++ lib.optional (cfg.redisUrl == "local") "redis-outline.service";
|
++ lib.optional (cfg.redisUrl == "local") "redis-outline.service";
|
||||||
requires =
|
requires =
|
||||||
lib.optional (cfg.databaseUrl == "local") "postgresql.service"
|
lib.optional (cfg.databaseUrl == "local") "postgresql.target"
|
||||||
++ lib.optional (cfg.redisUrl == "local") "redis-outline.service";
|
++ lib.optional (cfg.redisUrl == "local") "redis-outline.service";
|
||||||
path = [
|
path = [
|
||||||
pkgs.openssl # Required by the preStart script
|
pkgs.openssl # Required by the preStart script
|
||||||
|
@ -195,8 +195,8 @@ in
|
|||||||
services = {
|
services = {
|
||||||
part-db-migrate = {
|
part-db-migrate = {
|
||||||
before = [ "phpfpm-part-db.service" ];
|
before = [ "phpfpm-part-db.service" ];
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
@ -216,7 +216,7 @@ in
|
|||||||
after = [ "part-db-migrate.service" ];
|
after = [ "part-db-migrate.service" ];
|
||||||
requires = [
|
requires = [
|
||||||
"part-db-migrate.service"
|
"part-db-migrate.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
# ensure nginx can access the php-fpm socket
|
# ensure nginx can access the php-fpm socket
|
||||||
postStart = ''
|
postStart = ''
|
||||||
|
@ -439,9 +439,9 @@ in
|
|||||||
description = "Initialization database for PeerTube daemon";
|
description = "Initialization database for PeerTube daemon";
|
||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
|
|
||||||
script =
|
script =
|
||||||
let
|
let
|
||||||
@ -475,13 +475,13 @@ in
|
|||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ lib.optional cfg.redis.createLocally "redis-peertube.service"
|
++ lib.optional cfg.redis.createLocally "redis-peertube.service"
|
||||||
++ lib.optionals cfg.database.createLocally [
|
++ lib.optionals cfg.database.createLocally [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"peertube-init-db.service"
|
"peertube-init-db.service"
|
||||||
];
|
];
|
||||||
requires =
|
requires =
|
||||||
lib.optional cfg.redis.createLocally "redis-peertube.service"
|
lib.optional cfg.redis.createLocally "redis-peertube.service"
|
||||||
++ lib.optionals cfg.database.createLocally [
|
++ lib.optionals cfg.database.createLocally [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"peertube-init-db.service"
|
"peertube-init-db.service"
|
||||||
];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -53,9 +53,9 @@ let
|
|||||||
"mysql" = "/run/mysqld/mysqld.sock";
|
"mysql" = "/run/mysqld/mysqld.sock";
|
||||||
}
|
}
|
||||||
.${cfg.database.type};
|
.${cfg.database.type};
|
||||||
dbService =
|
dbUnit =
|
||||||
{
|
{
|
||||||
"pgsql" = "postgresql.service";
|
"pgsql" = "postgresql.target";
|
||||||
"mysql" = "mysql.service";
|
"mysql" = "mysql.service";
|
||||||
}
|
}
|
||||||
.${cfg.database.type};
|
.${cfg.database.type};
|
||||||
@ -355,7 +355,7 @@ in
|
|||||||
"pixelfed-horizon.service"
|
"pixelfed-horizon.service"
|
||||||
"pixelfed-data-setup.service"
|
"pixelfed-data-setup.service"
|
||||||
]
|
]
|
||||||
++ lib.optional cfg.database.createLocally dbService
|
++ lib.optional cfg.database.createLocally dbUnit
|
||||||
++ lib.optional cfg.redis.createLocally redisService;
|
++ lib.optional cfg.redis.createLocally redisService;
|
||||||
# Ensure image optimizations programs are available.
|
# Ensure image optimizations programs are available.
|
||||||
systemd.services.phpfpm-pixelfed.path = extraPrograms;
|
systemd.services.phpfpm-pixelfed.path = extraPrograms;
|
||||||
@ -368,7 +368,7 @@ in
|
|||||||
];
|
];
|
||||||
requires =
|
requires =
|
||||||
[ "pixelfed-data-setup.service" ]
|
[ "pixelfed-data-setup.service" ]
|
||||||
++ (lib.optional cfg.database.createLocally dbService)
|
++ (lib.optional cfg.database.createLocally dbUnit)
|
||||||
++ (lib.optional cfg.redis.createLocally redisService);
|
++ (lib.optional cfg.redis.createLocally redisService);
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
# Ensure image optimizations programs are available.
|
# Ensure image optimizations programs are available.
|
||||||
@ -412,8 +412,8 @@ in
|
|||||||
systemd.services.pixelfed-data-setup = {
|
systemd.services.pixelfed-data-setup = {
|
||||||
description = "Pixelfed setup: migrations, environment file update, cache reload, data changes";
|
description = "Pixelfed setup: migrations, environment file update, cache reload, data changes";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = lib.optional cfg.database.createLocally dbService;
|
after = lib.optional cfg.database.createLocally dbUnit;
|
||||||
requires = lib.optional cfg.database.createLocally dbService;
|
requires = lib.optional cfg.database.createLocally dbUnit;
|
||||||
path =
|
path =
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
|
@ -196,13 +196,13 @@ in
|
|||||||
after =
|
after =
|
||||||
optional cfg.database.clickhouse.setup "clickhouse.service"
|
optional cfg.database.clickhouse.setup "clickhouse.service"
|
||||||
++ optionals cfg.database.postgres.setup [
|
++ optionals cfg.database.postgres.setup [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"plausible-postgres.service"
|
"plausible-postgres.service"
|
||||||
];
|
];
|
||||||
requires =
|
requires =
|
||||||
optional cfg.database.clickhouse.setup "clickhouse.service"
|
optional cfg.database.clickhouse.setup "clickhouse.service"
|
||||||
++ optionals cfg.database.postgres.setup [
|
++ optionals cfg.database.postgres.setup [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"plausible-postgres.service"
|
"plausible-postgres.service"
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ in
|
|||||||
(mkIf cfg.database.postgres.setup {
|
(mkIf cfg.database.postgres.setup {
|
||||||
# `plausible' requires the `citext'-extension.
|
# `plausible' requires the `citext'-extension.
|
||||||
plausible-postgres = {
|
plausible-postgres = {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
partOf = [ "plausible.service" ];
|
partOf = [ "plausible.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
|
@ -434,7 +434,7 @@ in
|
|||||||
"redis-pretalx.service"
|
"redis-pretalx.service"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.settings.database.backend == "postgresql") [
|
++ lib.optionals (cfg.settings.database.backend == "postgresql") [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.settings.database.backend == "mysql") [
|
++ lib.optionals (cfg.settings.database.backend == "mysql") [
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
@ -484,7 +484,7 @@ in
|
|||||||
"redis-pretalx.service"
|
"redis-pretalx.service"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.settings.database.backend == "postgresql") [
|
++ lib.optionals (cfg.settings.database.backend == "postgresql") [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
]
|
]
|
||||||
++ lib.optionals (cfg.settings.database.backend == "mysql") [
|
++ lib.optionals (cfg.settings.database.backend == "mysql") [
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
|
@ -533,7 +533,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"redis-pretix.service"
|
"redis-pretix.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
preStart = ''
|
preStart = ''
|
||||||
@ -574,7 +574,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"redis-pretix.service"
|
"redis-pretix.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
@ -398,7 +398,7 @@ in
|
|||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ (lib.optional useMySQL "mysql.service")
|
++ (lib.optional useMySQL "mysql.service")
|
||||||
++ (lib.optional usePostgres "postgresql.service");
|
++ (lib.optional usePostgres "postgresql.target");
|
||||||
|
|
||||||
script =
|
script =
|
||||||
lib.optionalString (cfg.keyPasswordFile != null && cfg.settings.keyPassword == null) ''
|
lib.optionalString (cfg.keyPasswordFile != null && cfg.settings.keyPassword == null) ''
|
||||||
|
@ -62,7 +62,7 @@ in
|
|||||||
description = "Shiori simple bookmarks manager";
|
description = "Shiori simple bookmarks manager";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [
|
after = [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
];
|
];
|
||||||
environment =
|
environment =
|
||||||
|
@ -104,7 +104,7 @@ in
|
|||||||
systemd.services.sogo = {
|
systemd.services.sogo = {
|
||||||
description = "SOGo groupware";
|
description = "SOGo groupware";
|
||||||
after = [
|
after = [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"mysql.service"
|
"mysql.service"
|
||||||
"memcached.service"
|
"memcached.service"
|
||||||
"openldap.service"
|
"openldap.service"
|
||||||
@ -191,7 +191,7 @@ in
|
|||||||
description = "SOGo email alarms";
|
description = "SOGo email alarms";
|
||||||
|
|
||||||
after = [
|
after = [
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
"mysqld.service"
|
"mysqld.service"
|
||||||
"memcached.service"
|
"memcached.service"
|
||||||
"openldap.service"
|
"openldap.service"
|
||||||
|
@ -667,11 +667,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ optional mysqlLocal "mysql.service"
|
++ optional mysqlLocal "mysql.service"
|
||||||
++ optional pgsqlLocal "postgresql.service";
|
++ optional pgsqlLocal "postgresql.target";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ in
|
|||||||
description = "vikunja";
|
description = "vikunja";
|
||||||
after =
|
after =
|
||||||
[ "network.target" ]
|
[ "network.target" ]
|
||||||
++ lib.optional usePostgresql "postgresql.service"
|
++ lib.optional usePostgresql "postgresql.target"
|
||||||
++ lib.optional useMysql "mysql.service";
|
++ lib.optional useMysql "mysql.service";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = [ cfg.package ];
|
path = [ cfg.package ];
|
||||||
|
@ -135,10 +135,10 @@ in
|
|||||||
description = "Wakapi (self-hosted WakaTime-compatible backend)";
|
description = "Wakapi (self-hosted WakaTime-compatible backend)";
|
||||||
wants = [
|
wants = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
] ++ optional (cfg.database.dialect == "postgres") "postgresql.service";
|
] ++ optional (cfg.database.dialect == "postgres") "postgresql.target";
|
||||||
after = [
|
after = [
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
] ++ optional (cfg.database.dialect == "postgres") "postgresql.service";
|
] ++ optional (cfg.database.dialect == "postgres") "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
script = ''
|
script = ''
|
||||||
|
@ -251,7 +251,7 @@ in
|
|||||||
|
|
||||||
systemd.services.weblate-postgresql-setup = {
|
systemd.services.weblate-postgresql-setup = {
|
||||||
description = "Weblate PostgreSQL setup";
|
description = "Weblate PostgreSQL setup";
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "postgres";
|
User = "postgres";
|
||||||
@ -290,7 +290,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"redis-weblate.service"
|
"redis-weblate.service"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
# We want this to be active on boot, not just on socket activation
|
# We want this to be active on boot, not just on socket activation
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
@ -134,39 +134,37 @@ in
|
|||||||
# coming from https://github.com/windmill-labs/windmill/blob/main/init-db-as-superuser.sql
|
# coming from https://github.com/windmill-labs/windmill/blob/main/init-db-as-superuser.sql
|
||||||
# modified to not grant privileges on all tables
|
# modified to not grant privileges on all tables
|
||||||
# create role windmill_user and windmill_admin only if they don't exist
|
# create role windmill_user and windmill_admin only if they don't exist
|
||||||
postgresql.postStart = lib.mkIf cfg.database.createLocally (
|
postgresql.postStart = lib.mkIf cfg.database.createLocally ''
|
||||||
lib.mkAfter ''
|
psql -tA <<"EOF"
|
||||||
$PSQL -tA <<"EOF"
|
DO $$
|
||||||
DO $$
|
BEGIN
|
||||||
BEGIN
|
IF NOT EXISTS (
|
||||||
IF NOT EXISTS (
|
SELECT FROM pg_catalog.pg_roles
|
||||||
SELECT FROM pg_catalog.pg_roles
|
WHERE rolname = 'windmill_user'
|
||||||
WHERE rolname = 'windmill_user'
|
) THEN
|
||||||
) THEN
|
CREATE ROLE windmill_user;
|
||||||
CREATE ROLE windmill_user;
|
GRANT ALL PRIVILEGES ON DATABASE ${cfg.database.name} TO windmill_user;
|
||||||
GRANT ALL PRIVILEGES ON DATABASE ${cfg.database.name} TO windmill_user;
|
ELSE
|
||||||
ELSE
|
RAISE NOTICE 'Role "windmill_user" already exists. Skipping.';
|
||||||
RAISE NOTICE 'Role "windmill_user" already exists. Skipping.';
|
END IF;
|
||||||
END IF;
|
IF NOT EXISTS (
|
||||||
IF NOT EXISTS (
|
SELECT FROM pg_catalog.pg_roles
|
||||||
SELECT FROM pg_catalog.pg_roles
|
WHERE rolname = 'windmill_admin'
|
||||||
WHERE rolname = 'windmill_admin'
|
) THEN
|
||||||
) THEN
|
CREATE ROLE windmill_admin WITH BYPASSRLS;
|
||||||
CREATE ROLE windmill_admin WITH BYPASSRLS;
|
GRANT windmill_user TO windmill_admin;
|
||||||
GRANT windmill_user TO windmill_admin;
|
ELSE
|
||||||
ELSE
|
RAISE NOTICE 'Role "windmill_admin" already exists. Skipping.';
|
||||||
RAISE NOTICE 'Role "windmill_admin" already exists. Skipping.';
|
END IF;
|
||||||
END IF;
|
GRANT windmill_admin TO windmill;
|
||||||
GRANT windmill_admin TO windmill;
|
END
|
||||||
END
|
$$;
|
||||||
$$;
|
EOF
|
||||||
EOF
|
'';
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
windmill-server = {
|
windmill-server = {
|
||||||
description = "Windmill server";
|
description = "Windmill server";
|
||||||
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = serviceConfig // {
|
serviceConfig = serviceConfig // {
|
||||||
@ -183,7 +181,7 @@ in
|
|||||||
|
|
||||||
windmill-worker = {
|
windmill-worker = {
|
||||||
description = "Windmill worker";
|
description = "Windmill worker";
|
||||||
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = serviceConfig // {
|
serviceConfig = serviceConfig // {
|
||||||
@ -201,7 +199,7 @@ in
|
|||||||
|
|
||||||
windmill-worker-native = {
|
windmill-worker-native = {
|
||||||
description = "Windmill worker native";
|
description = "Windmill worker native";
|
||||||
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = serviceConfig // {
|
serviceConfig = serviceConfig // {
|
||||||
|
@ -93,8 +93,8 @@ in
|
|||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
requires = lib.optional cfg.database.createLocally "postgresql.service";
|
requires = lib.optional cfg.database.createLocally "postgresql.target";
|
||||||
|
|
||||||
environment = lib.mapAttrs (_: value: toString value) cfg.settings;
|
environment = lib.mapAttrs (_: value: toString value) cfg.settings;
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ in
|
|||||||
after = [
|
after = [
|
||||||
"network.target"
|
"network.target"
|
||||||
"local-fs.target"
|
"local-fs.target"
|
||||||
"postgresql.service"
|
"postgresql.target"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.start()
|
machine.start()
|
||||||
machine.wait_for_unit("postgresql.service")
|
machine.wait_for_unit("postgresql.target")
|
||||||
machine.wait_for_unit("coder.service")
|
machine.wait_for_unit("coder.service")
|
||||||
machine.wait_for_open_port(3000)
|
machine.wait_for_open_port(3000)
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
testScript = ''
|
testScript = ''
|
||||||
start_all()
|
start_all()
|
||||||
|
|
||||||
machine1.wait_for_unit("postgresql.service")
|
machine1.wait_for_unit("postgresql.target")
|
||||||
machine1.wait_for_unit("davis-env-setup.service")
|
machine1.wait_for_unit("davis-env-setup.service")
|
||||||
machine1.wait_for_unit("davis-db-migrate.service")
|
machine1.wait_for_unit("davis-db-migrate.service")
|
||||||
machine1.wait_for_unit("phpfpm-davis.service")
|
machine1.wait_for_unit("phpfpm-davis.service")
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.documize-server = {
|
systemd.services.documize-server = {
|
||||||
after = [ "postgresql.service" ];
|
after = [ "postgresql.target" ];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
|
@ -29,8 +29,8 @@ with import ../lib/testing-python.nix { inherit system; };
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.ferretdb.serviceConfig = {
|
systemd.services.ferretdb.serviceConfig = {
|
||||||
Requires = "postgresql.service";
|
Requires = "postgresql.target";
|
||||||
After = "postgresql.service";
|
After = "postgresql.target";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
|
@ -105,7 +105,7 @@ in
|
|||||||
fireflySqlite.succeed("systemctl start firefly-iii-cron.service")
|
fireflySqlite.succeed("systemctl start firefly-iii-cron.service")
|
||||||
fireflyPostgresql.wait_for_unit("phpfpm-firefly-iii.service")
|
fireflyPostgresql.wait_for_unit("phpfpm-firefly-iii.service")
|
||||||
fireflyPostgresql.wait_for_unit("nginx.service")
|
fireflyPostgresql.wait_for_unit("nginx.service")
|
||||||
fireflyPostgresql.wait_for_unit("postgresql.service")
|
fireflyPostgresql.wait_for_unit("postgresql.target")
|
||||||
fireflyPostgresql.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'")
|
fireflyPostgresql.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'")
|
||||||
fireflyPostgresql.succeed("systemctl start firefly-iii-cron.service")
|
fireflyPostgresql.succeed("systemctl start firefly-iii-cron.service")
|
||||||
fireflyMysql.wait_for_unit("phpfpm-firefly-iii.service")
|
fireflyMysql.wait_for_unit("phpfpm-firefly-iii.service")
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user