Added MonetDB NixOS module.

This commit is contained in:
George Kollias 2014-04-01 20:20:33 +03:00
parent 75fb34eb6d
commit 0ded8e6de3
3 changed files with 91 additions and 0 deletions

View file

@ -123,6 +123,7 @@
ngircd = 112;
btsync = 113;
minecraft = 114;
monetdb = 115;
# When adding a uid, make sure it doesn't match an existing gid.
@ -221,6 +222,7 @@
jenkins = 109;
systemd-journal-gateway = 110;
notbit = 111;
monetdb = 112;
# When adding a gid, make sure it doesn't match an existing uid.

View file

@ -95,6 +95,7 @@
./services/databases/openldap.nix
./services/databases/postgresql.nix
./services/databases/virtuoso.nix
./services/databases/monetdb.nix
./services/games/ghost-one.nix
./services/games/minecraft-server.nix
./services/hardware/acpid.nix

View file

@ -0,0 +1,88 @@
{ config, pkgs, ... }:
let
cfg = config.services.monetdb;
monetdbUser = "monetdb";
in
with pkgs.lib;
{
###### interface
options = {
services.monetdb = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable MonetDB database server.";
};
package = mkOption {
type = types.path;
description = "MonetDB package to use.";
};
dbfarmDir = mkOption {
type = types.path;
default = "/var/lib/monetdb";
description = ''
Specifies location of Monetdb dbfarm (keeps database and auxiliary files).
'';
};
port = mkOption {
default = "50000";
example = "50000";
description = "Port to listen on.";
};
};
};
###### implementation
config = mkIf cfg.enable {
users.extraUsers.monetdb =
{ name = monetdbUser;
uid = config.ids.uids.monetdb;
description = "monetdb user";
home = cfg.dbfarmDir;
};
users.extraGroups.monetdb.gid = config.ids.gids.monetdb;
environment.systemPackages = [ cfg.package ];
systemd.services.monetdb =
{ description = "MonetDB Server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = [ cfg.package ];
preStart =
''
# Initialise the database.
if ! test -e ${cfg.dbfarmDir}/.merovingian_properties; then
mkdir -m 0700 -p ${cfg.dbfarmDir}
chown -R ${monetdbUser} ${cfg.dbfarmDir}
${cfg.package}/bin/monetdbd create ${cfg.dbfarmDir}
${cfg.package}/bin/monetdbd set port=${cfg.port} ${cfg.dbfarmDir}
fi
'';
serviceConfig.ExecStart = "${cfg.package}/bin/monetdbd start -n ${cfg.dbfarmDir}";
serviceConfig.ExecStop = "${cfg.package}/bin/monetdbd stop ${cfg.dbfarmDir}";
unitConfig.RequiresMountsFor = "${cfg.dbfarmDir}";
};
};
}