Merge pull request #63622 from aanderse/zoneminder
nixos/zoneminder: fix some issues with database.createLocally option
This commit is contained in:
commit
616e52e21b
@ -50,7 +50,7 @@ let
|
|||||||
ZM_DB_TYPE=mysql
|
ZM_DB_TYPE=mysql
|
||||||
ZM_DB_HOST=${cfg.database.host}
|
ZM_DB_HOST=${cfg.database.host}
|
||||||
ZM_DB_NAME=${cfg.database.name}
|
ZM_DB_NAME=${cfg.database.name}
|
||||||
ZM_DB_USER=${if cfg.database.createLocally then user else cfg.database.username}
|
ZM_DB_USER=${cfg.database.username}
|
||||||
ZM_DB_PASS=${cfg.database.password}
|
ZM_DB_PASS=${cfg.database.password}
|
||||||
|
|
||||||
# Web
|
# Web
|
||||||
@ -155,6 +155,7 @@ in {
|
|||||||
default = "zmpass";
|
default = "zmpass";
|
||||||
description = ''
|
description = ''
|
||||||
Username for accessing the database.
|
Username for accessing the database.
|
||||||
|
Not used if <literal>createLocally</literal> is set.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -189,6 +190,12 @@ in {
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{ assertion = cfg.database.createLocally -> cfg.database.username == user;
|
||||||
|
message = "services.zoneminder.database.username must be set to ${user} if services.zoneminder.database.createLocally is set true";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"zoneminder/60-defaults.conf".source = defaultsFile;
|
"zoneminder/60-defaults.conf".source = defaultsFile;
|
||||||
"zoneminder/80-nixos.conf".source = configFile;
|
"zoneminder/80-nixos.conf".source = configFile;
|
||||||
@ -204,10 +211,9 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
mysql = lib.mkIf cfg.database.createLocally {
|
mysql = lib.mkIf cfg.database.createLocally {
|
||||||
|
enable = true;
|
||||||
|
package = lib.mkDefault pkgs.mariadb;
|
||||||
ensureDatabases = [ cfg.database.name ];
|
ensureDatabases = [ cfg.database.name ];
|
||||||
initialDatabases = [{
|
|
||||||
inherit (cfg.database) name; schema = "${pkg}/share/zoneminder/db/zm_create.sql";
|
|
||||||
}];
|
|
||||||
ensureUsers = [{
|
ensureUsers = [{
|
||||||
name = cfg.database.username;
|
name = cfg.database.username;
|
||||||
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
||||||
@ -315,11 +321,16 @@ in {
|
|||||||
procps
|
procps
|
||||||
psmisc
|
psmisc
|
||||||
];
|
];
|
||||||
after = [ "mysql.service" "nginx.service" ];
|
after = [ "nginx.service" ] ++ lib.optional cfg.database.createLocally "mysql.service";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
restartTriggers = [ defaultsFile configFile ];
|
restartTriggers = [ defaultsFile configFile ];
|
||||||
preStart = lib.mkIf useCustomDir ''
|
preStart = lib.optionalString useCustomDir ''
|
||||||
install -dm775 -o ${user} -g ${group} ${cfg.storageDir}/{${lib.concatStringsSep "," libDirs}}
|
install -dm775 -o ${user} -g ${group} ${cfg.storageDir}/{${lib.concatStringsSep "," libDirs}}
|
||||||
|
'' + lib.optionalString cfg.database.createLocally ''
|
||||||
|
if ! test -e "/var/lib/${dirName}/db-created"; then
|
||||||
|
${config.services.mysql.package}/bin/mysql < ${pkg}/share/zoneminder/db/zm_create.sql
|
||||||
|
touch "/var/lib/${dirName}/db-created"
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = user;
|
User = user;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user