mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 08:23:09 +00:00
nixos/zoneminder: fix some issues with database.createLocally option
This commit is contained in:
parent
4ef13060f4
commit
74ff20fae7
@ -50,7 +50,7 @@ let
|
||||
ZM_DB_TYPE=mysql
|
||||
ZM_DB_HOST=${cfg.database.host}
|
||||
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}
|
||||
|
||||
# Web
|
||||
@ -155,6 +155,7 @@ in {
|
||||
default = "zmpass";
|
||||
description = ''
|
||||
Username for accessing the database.
|
||||
Not used if <literal>createLocally</literal> is set.
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -189,6 +190,12 @@ in {
|
||||
|
||||
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 = {
|
||||
"zoneminder/60-defaults.conf".source = defaultsFile;
|
||||
"zoneminder/80-nixos.conf".source = configFile;
|
||||
@ -204,10 +211,9 @@ in {
|
||||
};
|
||||
|
||||
mysql = lib.mkIf cfg.database.createLocally {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
initialDatabases = [{
|
||||
inherit (cfg.database) name; schema = "${pkg}/share/zoneminder/db/zm_create.sql";
|
||||
}];
|
||||
ensureUsers = [{
|
||||
name = cfg.database.username;
|
||||
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
||||
@ -315,11 +321,16 @@ in {
|
||||
procps
|
||||
psmisc
|
||||
];
|
||||
after = [ "mysql.service" "nginx.service" ];
|
||||
after = [ "nginx.service" ] ++ lib.optional cfg.database.createLocally "mysql.service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
restartTriggers = [ defaultsFile configFile ];
|
||||
preStart = lib.mkIf useCustomDir ''
|
||||
preStart = lib.optionalString useCustomDir ''
|
||||
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 = {
|
||||
User = user;
|
||||
|
Loading…
Reference in New Issue
Block a user