From 72303e9b6c59b3a737cd9776d451be3a314567bc Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Fri, 6 Mar 2009 12:27:00 +0000 Subject: [PATCH] Convert "mysql" svn path=/nixos/branches/fix-style/; revision=14389 --- system/options.nix | 36 +----------- upstart-jobs/default.nix | 6 -- upstart-jobs/mysql.nix | 115 +++++++++++++++++++++++++++++---------- 3 files changed, 87 insertions(+), 70 deletions(-) diff --git a/system/options.nix b/system/options.nix index 5d7c546be27..5644247d3fa 100644 --- a/system/options.nix +++ b/system/options.nix @@ -479,41 +479,6 @@ in }; - mysql = { - enable = mkOption { - default = false; - description = " - Whether to enable the MySQL server. - "; - }; - - port = mkOption { - default = "3306"; - description = "Port of MySQL"; - }; - - user = mkOption { - default = "mysql"; - description = "User account under which MySQL runs"; - }; - - dataDir = mkOption { - default = "/var/mysql"; - description = "Location where MySQL stores its table files"; - }; - - logError = mkOption { - default = "/var/log/mysql_err.log"; - description = "Location of the MySQL error logfile"; - }; - - pidDir = mkOption { - default = "/var/run/mysql"; - description = "Location of the file which stores the PID of the MySQL server"; - }; - }; - - postgresql = { enable = mkOption { default = false; @@ -890,6 +855,7 @@ in (import ../upstart-jobs/samba.nix) # TODO: doesn't start here (?) (import ../upstart-jobs/ircd-hybrid.nix) # TODO: doesn't compile on x86_64-linux, can't test (import ../upstart-jobs/xfs.nix) + (import ../upstart-jobs/mysql.nix) # nix (import ../upstart-jobs/nix.nix) # nix options and daemon diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 9030af83e4b..173bb1d4606 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -131,12 +131,6 @@ let inherit config; }) - # MySQL server - ++ optional config.services.mysql.enable - (import ../upstart-jobs/mysql.nix { - inherit config pkgs; - }) - # Postgres SQL server ++ optional config.services.postgresql.enable (import ../upstart-jobs/postgresql.nix { diff --git a/upstart-jobs/mysql.nix b/upstart-jobs/mysql.nix index 6756891321b..2ecaa6df4ca 100644 --- a/upstart-jobs/mysql.nix +++ b/upstart-jobs/mysql.nix @@ -1,4 +1,49 @@ -{pkgs, config}: +{pkgs, config, ...}: + +###### interface +let + inherit (pkgs.lib) mkOption mkIf; + + options = { + services = { + mysql = { + enable = mkOption { + default = false; + description = " + Whether to enable the MySQL server. + "; + }; + + port = mkOption { + default = "3306"; + description = "Port of MySQL"; + }; + + user = mkOption { + default = "mysql"; + description = "User account under which MySQL runs"; + }; + + dataDir = mkOption { + default = "/var/mysql"; + description = "Location where MySQL stores its table files"; + }; + + logError = mkOption { + default = "/var/log/mysql_err.log"; + description = "Location of the MySQL error logfile"; + }; + + pidDir = mkOption { + default = "/var/run/mysql"; + description = "Location of the file which stores the PID of the MySQL server"; + }; + }; + }; + }; +in + +###### implementation let @@ -14,39 +59,51 @@ let in -{ - name = "mysql"; - - users = [ - { name = "mysql"; - description = "MySQL server user"; - } + +mkIf config.services.mysql.enable { + require = [ + options ]; - extraPath = [mysql]; - - job = '' - description "MySQL server" + users = { + extraUsers = [ + { name = "mysql"; + description = "MySQL server user"; + } + ]; + }; - stop on shutdown + services = { + extraJobs = [{ + name = "mysql"; + - start script - if ! test -e ${cfg.dataDir}; then - mkdir -m 0700 -p ${cfg.dataDir} - chown -R ${cfg.user} ${cfg.dataDir} - ${mysql}/bin/mysql_install_db ${mysqldOptions} - fi + extraPath = [mysql]; + + job = '' + description "MySQL server" - mkdir -m 0700 -p ${cfg.pidDir} - chown -R ${cfg.user} ${cfg.pidDir} - end script + stop on shutdown - respawn ${mysql}/bin/mysqld ${mysqldOptions} + start script + if ! test -e ${cfg.dataDir}; then + mkdir -m 0700 -p ${cfg.dataDir} + chown -R ${cfg.user} ${cfg.dataDir} + ${mysql}/bin/mysql_install_db ${mysqldOptions} + fi - stop script - pid=$(cat ${pidFile}) - kill "$pid" - ${mysql}/bin/mysql_waitpid "$pid" 1000 - end script - ''; + mkdir -m 0700 -p ${cfg.pidDir} + chown -R ${cfg.user} ${cfg.pidDir} + end script + + respawn ${mysql}/bin/mysqld ${mysqldOptions} + + stop script + pid=$(cat ${pidFile}) + kill "$pid" + ${mysql}/bin/mysql_waitpid "$pid" 1000 + end script + ''; + }]; + }; }