[Nix-dev] Multiple MySQL instances (or nginx/apache/...)
Marc Weber
marco-oweber at gmx.de
Sat Jan 3 14:23:14 CET 2015
How should this be written in the future ?
I've submitted a pull request which tries to change not much lines to
reach my goal - however I agree that it might not be the perfect
solution yet: https://github.com/NixOS/nixpkgs/pull/5542
This change adds a parameter moduleName to the mysql module which then
gets used for most defaults (pid file, data dir and so on)
{ moduleName ? "mysql"}: # eg pass mysql2 to add a second mysql
services.${moduleName} = {
enable = mkOption {
default = false;
};
user = mkOption {
default = moduleName;
[...]
Final usage look like this:
imports = [
(import (<nixpkgs>+"/nixos/modules/services/databases/mysql.nix") {moduleName = "mysql_on_tmp"; })
]
services.mysql_on_tmp.enable = true;
services.mysql_on_tmp.port = 3307;
services.mysql_on_tmp.package = pkgs.mysql55;
services.mysql_on_tmp.dataDir = "/tmp/mysql";
services.mysql_on_tmp.socketDir = "/tmp/mysql_tmpfs.socket";
ids.uids.mysql_on_tmp = 20000;
ids.gids.mysql_on_tmp = 20000;
If there are existing beter solutions let me know and or comment to
either the pull request or this thread.
I guess the most interesting point is uid/gid handling.
Introducing a style will affect almost all services ..
lethalman proposes such style:
services.mysql.instances.<name> = ...
I agree that this style is nicer. Do you agree?
Should services.mysql be mapped to services.mysql.instances.default then?
Then backward compatibility could be preserved.
Marc Weber
More information about the nix-dev
mailing list