diff options
author | Aaron Andersen <aaron@fosslib.net> | 2019-06-21 11:36:02 -0400 |
---|---|---|
committer | Aaron Andersen <aaron@fosslib.net> | 2019-06-25 12:20:22 -0400 |
commit | 74ff20fae74034326211116bc71347f1a740614c (patch) | |
tree | 08b71e056da821ed97f3caaf0352ba0761927ac3 /nixos | |
parent | 4ef13060f40b3aabc6aa250335fbbfdfc26c5a8b (diff) | |
download | nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar.gz nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar.bz2 nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar.lz nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar.xz nixpkgs-74ff20fae74034326211116bc71347f1a740614c.tar.zst nixpkgs-74ff20fae74034326211116bc71347f1a740614c.zip |
nixos/zoneminder: fix some issues with database.createLocally option
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/misc/zoneminder.nix | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/nixos/modules/services/misc/zoneminder.nix b/nixos/modules/services/misc/zoneminder.nix index 9c555e8031c..8d58c2b37c8 100644 --- a/nixos/modules/services/misc/zoneminder.nix +++ b/nixos/modules/services/misc/zoneminder.nix @@ -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; |