diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix
index 4c77efa4bff8..1f32f1d0f5dc 100644
--- a/nixos/modules/services/databases/mysql.nix
+++ b/nixos/modules/services/databases/mysql.nix
@@ -11,10 +11,8 @@ let
mysqldOptions =
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${cfg.package}";
- settingsFile = pkgs.writeText "my.cnf" (
- generators.toINI { listsAsDuplicateKeys = true; } cfg.settings +
- optionalString (cfg.extraOptions != null) "[mysqld]\n${cfg.extraOptions}"
- );
+ format = pkgs.formats.ini { listsAsDuplicateKeys = true; };
+ configFile = format.generate "my.cnf" cfg.settings;
in
@@ -22,6 +20,7 @@ in
imports = [
(mkRemovedOptionModule [ "services" "mysql" "pidDir" ] "Don't wait for pidfiles, describe dependencies through systemd.")
(mkRemovedOptionModule [ "services" "mysql" "rootPassword" ] "Use socket authentication or set the password outside of the nix store.")
+ (mkRemovedOptionModule [ "services" "mysql" "extraOptions" ] "Use services.mysql.settings.mysqld instead.")
];
###### interface
@@ -96,8 +95,10 @@ in
configFile = mkOption {
type = types.path;
- default = settingsFile;
- defaultText = literalExpression "settingsFile";
+ default = configFile;
+ defaultText = ''
+ A configuration file automatically generated by NixOS.
+ '';
description = ''
Override the configuration file used by MySQL. By default,
NixOS generates one automatically from .
@@ -115,7 +116,7 @@ in
};
settings = mkOption {
- type = with types; attrsOf (attrsOf (oneOf [ bool int str (listOf str) ]));
+ type = format.type;
default = {};
description = ''
MySQL configuration. Refer to
@@ -148,23 +149,6 @@ in
'';
};
- extraOptions = mkOption {
- type = with types; nullOr lines;
- default = null;
- example = ''
- key_buffer_size = 6G
- table_cache = 1600
- log-error = /var/log/mysql_err.log
- '';
- description = ''
- Provide extra options to the MySQL configuration file.
-
- Please note, that these options are added to the
- [mysqld] section so you don't need to explicitly
- state it again.
- '';
- };
-
initialDatabases = mkOption {
type = types.listOf (types.submodule {
options = {
@@ -324,8 +308,6 @@ in
config = mkIf config.services.mysql.enable {
- warnings = optional (cfg.extraOptions != null) "services.mysql.`extraOptions` is deprecated, please use services.mysql.`settings`.";
-
services.mysql.dataDir =
mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql"
else "/var/mysql");