mongodb nixos module
svn path=/nixos/trunk/; revision=31658
This commit is contained in:
parent
5144e94694
commit
ec445fbee7
|
@ -60,6 +60,7 @@
|
||||||
./services/backup/sitecopy-backup.nix
|
./services/backup/sitecopy-backup.nix
|
||||||
./services/databases/4store-endpoint.nix
|
./services/databases/4store-endpoint.nix
|
||||||
./services/databases/4store.nix
|
./services/databases/4store.nix
|
||||||
|
./services/databases/mongodb.nix
|
||||||
./services/databases/mysql.nix
|
./services/databases/mysql.nix
|
||||||
./services/databases/openldap.nix
|
./services/databases/openldap.nix
|
||||||
./services/databases/postgresql.nix
|
./services/databases/postgresql.nix
|
||||||
|
|
119
modules/services/databases/mongodb.nix
Normal file
119
modules/services/databases/mongodb.nix
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
b2s = x: if x then "true" else "false";
|
||||||
|
|
||||||
|
cfg = config.services.mongodb;
|
||||||
|
|
||||||
|
mongodb = cfg.package;
|
||||||
|
|
||||||
|
mongoCnf = pkgs.writeText "mongodb.conf"
|
||||||
|
''
|
||||||
|
bind_ip = ${cfg.bind_ip}
|
||||||
|
${optionalString cfg.quiet "quiet = true"}
|
||||||
|
dbpath = ${cfg.dbpath}
|
||||||
|
logpath = ${cfg.logpath}
|
||||||
|
logappend = ${b2s cfg.logappend}
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.mongodb = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "
|
||||||
|
Whether to enable the MongoDB server.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
default = pkgs.mongodb.override { useV8 = cfg.useV8; };
|
||||||
|
description = "
|
||||||
|
Which MongoDB derivation to use.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
default = "mongodb";
|
||||||
|
description = "User account under which MongoDB runs";
|
||||||
|
};
|
||||||
|
|
||||||
|
bind_ip = mkOption {
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = "IP to bind to";
|
||||||
|
};
|
||||||
|
|
||||||
|
quiet = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "quieter output";
|
||||||
|
};
|
||||||
|
|
||||||
|
dbpath = mkOption {
|
||||||
|
default = "/var/db/mongodb";
|
||||||
|
description = "Location where MongoDB stores its files";
|
||||||
|
};
|
||||||
|
|
||||||
|
logpath = mkOption {
|
||||||
|
default = "/var/log/mongodb/mongod.log";
|
||||||
|
description = "Location where MongoDB stores its logfile";
|
||||||
|
};
|
||||||
|
|
||||||
|
logappend = mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Append logfile instead over overwriting";
|
||||||
|
};
|
||||||
|
|
||||||
|
useV8 = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Use V8 instead of spidermonkey for js execution";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = mkIf config.services.mongodb.enable {
|
||||||
|
|
||||||
|
users.extraUsers = singleton
|
||||||
|
{ name = cfg.user;
|
||||||
|
shell = "/bin/sh";
|
||||||
|
description = "MongoDB server user";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [mongodb];
|
||||||
|
|
||||||
|
jobs.mongodb =
|
||||||
|
{ description = "MongoDB server";
|
||||||
|
|
||||||
|
startOn = "filesystem";
|
||||||
|
daemonType = "daemon";
|
||||||
|
|
||||||
|
preStart =
|
||||||
|
''
|
||||||
|
if ! test -e ${cfg.dbpath}; then
|
||||||
|
install -d -m0700 -o ${cfg.user} ${cfg.dbpath}
|
||||||
|
install -d -m0755 -o ${cfg.user} `dirname ${cfg.logpath}`
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
exec = "${pkgs.shadow}/bin/su ${cfg.user} -c \"${mongodb}/bin/mongod --config ${mongoCnf} --fork\"";
|
||||||
|
preStop = "${pkgs.shadow}/bin/su ${cfg.user} -c \"${mongodb}/bin/mongod --config ${mongoCnf} --shutdown\" &";
|
||||||
|
|
||||||
|
extraConfig = "kill timeout 10";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue