From 1b8642dff6bdbf7c39f1f46a4876f9c9beb775e3 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Tue, 1 May 2018 16:44:12 +0200 Subject: nixos/monetdb: init (#39812) --- nixos/modules/misc/ids.nix | 4 +- nixos/modules/module-list.nix | 1 + nixos/modules/services/databases/monetdb.nix | 100 +++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 nixos/modules/services/databases/monetdb.nix diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index ab3cbcab064..0ed820a32ac 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -138,7 +138,6 @@ ngircd = 112; btsync = 113; minecraft = 114; - #monetdb = 115; # unused (not packaged), removed 2016-09-19 vault = 115; rippled = 116; murmur = 117; @@ -306,6 +305,7 @@ monero = 287; ceph = 288; duplicati = 289; + monetdb = 290; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -424,7 +424,6 @@ #ngircd = 112; # unused btsync = 113; #minecraft = 114; # unused - #monetdb = 115; # unused (not packaged), removed 2016-09-19 vault = 115; #ripped = 116; # unused #murmur = 117; # unused @@ -580,6 +579,7 @@ monero = 287; ceph = 288; duplicati = 289; + monetdb = 290; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 38f961c0467..505c5497d36 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -199,6 +199,7 @@ ./services/databases/hbase.nix ./services/databases/influxdb.nix ./services/databases/memcached.nix + ./services/databases/monetdb.nix ./services/databases/mongodb.nix ./services/databases/mysql.nix ./services/databases/neo4j.nix diff --git a/nixos/modules/services/databases/monetdb.nix b/nixos/modules/services/databases/monetdb.nix new file mode 100644 index 00000000000..5c66fc7b2e3 --- /dev/null +++ b/nixos/modules/services/databases/monetdb.nix @@ -0,0 +1,100 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.monetdb; + +in { + meta.maintainers = with maintainers; [ StillerHarpo primeos ]; + + ###### interface + options = { + services.monetdb = { + + enable = mkEnableOption "the MonetDB database server"; + + package = mkOption { + type = types.package; + default = pkgs.monetdb; + defaultText = "pkgs.monetdb"; + description = "MonetDB package to use."; + }; + + user = mkOption { + type = types.str; + default = "monetdb"; + description = "User account under which MonetDB runs."; + }; + + group = mkOption { + type = types.str; + default = "monetdb"; + description = "Group under which MonetDB runs."; + }; + + dataDir = mkOption { + type = types.path; + default = "/var/lib/monetdb"; + description = "Data directory for the dbfarm."; + }; + + port = mkOption { + type = types.ints.u16; + default = 50000; + description = "Port to listen on."; + }; + + listenAddress = mkOption { + type = types.str; + default = "127.0.0.1"; + example = "0.0.0.0"; + description = "Address to listen on."; + }; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + + users.users.monetdb = mkIf (cfg.user == "monetdb") { + uid = config.ids.uids.monetdb; + group = cfg.group; + description = "MonetDB user"; + home = cfg.dataDir; + createHome = true; + }; + + users.groups.monetdb = mkIf (cfg.group == "monetdb") { + gid = config.ids.gids.monetdb; + members = [ cfg.user ]; + }; + + environment.systemPackages = [ cfg.package ]; + + systemd.services.monetdb = { + description = "MonetDB database server"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + path = [ cfg.package ]; + unitConfig.RequiresMountsFor = "${cfg.dataDir}"; + serviceConfig = { + User = cfg.user; + Group = cfg.group; + ExecStart = "${cfg.package}/bin/monetdbd start -n ${cfg.dataDir}"; + ExecStop = "${cfg.package}/bin/monetdbd stop ${cfg.dataDir}"; + }; + preStart = '' + if [ ! -e ${cfg.dataDir}/.merovingian_properties ]; then + # Create the dbfarm (as cfg.user) + ${cfg.package}/bin/monetdbd create ${cfg.dataDir} + fi + + # Update the properties + ${cfg.package}/bin/monetdbd set port=${toString cfg.port} ${cfg.dataDir} + ${cfg.package}/bin/monetdbd set listenaddr=${cfg.listenAddress} ${cfg.dataDir} + ''; + }; + + }; +} -- cgit 1.4.1