forked from mirrors/nixpkgs
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/databases/4store-endpoint.nix
|
||||
./services/databases/4store.nix
|
||||
./services/databases/mongodb.nix
|
||||
./services/databases/mysql.nix
|
||||
./services/databases/openldap.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