module.nix: load mysql.passwordFile via LoadCredential

This commit is contained in:
2025-11-09 20:39:05 +09:00
parent 0e10e6dde9
commit fd3fd30df9

View File

@@ -82,9 +82,20 @@ in
config = lib.mkIf config.services.muscl.enable {
environment.systemPackages = [ cfg.package ];
environment.etc."muscl/config.toml".source = let
nullStrippedConfig = lib.filterAttrsRecursive (_: v: v != null) cfg.settings;
in format.generate "muscl.conf" nullStrippedConfig;
environment.etc."muscl/config.toml".source = lib.pipe cfg.settings [
# Remove nulls
(lib.filterAttrsRecursive (_: v: v != null))
# Load mysql.passwordFile via LoadCredentials
(conf:
if conf.mysql.passwordFile or null != null
then lib.recursiveUpdate conf { mysql.passwordFile = "/run/credentials/muscl.service/mysql-password"; }
else conf
)
# Render file
(format.generate "muscl.conf")
];
services.mysql.ensureUsers = lib.mkIf cfg.createLocalDatabaseUser [
{
@@ -124,6 +135,10 @@ in
cfg.settings.mysql.socket_path
];
LoadCredential = lib.mkIf (cfg.settings.mysql.passwordFile != null) [
"mysql-password:${cfg.settings.mysql.passwordFile}"
];
IPAddressDeny = "any";
IPAddressAllow = [
"127.0.0.0/8"