@cryptotaxi247 / infra-1 / commits / 9758f75f

couchdb module for CS173Tourney

svn path=/configurations/trunk/tud/; revision=18208

Rob Vermaas committed Nov 6, 2009 at 14:31 UTC 9758f75ff777bf0ccdc1dd64995f67d7245ee84d
1 file changed +110
couchdb.nix new
+110
@@ -0,0 +1,110 @@
1 +{pkgs, config, ...}:
2 +
3 +let
4 +
5 + inherit (pkgs.lib) mkOption mkIf singleton;
6 + inherit (pkgs) couchdb getopt;
7 + modprobe = config.system.sbin.modprobe;
8 +
9 + couchdbUser = "couchdb";
10 + couchdbFlags = "-c ${couchdbCfg}";
11 + couchdbCfg = pkgs.writeText "couchdb.ini" ''
12 + [Couch]
13 + ConsoleStartupMsg=Apache CouchDB is starting.
14 + DbRootDir=${config.services.couchdb.dbRootDir}
15 + Port=5984
16 + BindAddress=127.0.0.1
17 + DocumentRoot=${config.services.couchdb.documentRoot}
18 + LogFile=${config.services.couchdb.logDir}/couchdb.log
19 + UtilDriverDir=${couchdb}/lib/couchdb/erlang/lib/couch-0.8.1-incubating/priv/lib
20 + LogLevel=info
21 + [Couch Query Servers]
22 + javascript=${couchdb}/bin/couchjs ${couchdb}/share/couchdb/server/main.js
23 + '';
24 +
25 + stateDir = "/var/spool/couchdb";
26 +
27 + wrapper = pkgs.writeTextFile {
28 + name = "couchdb-wrapper";
29 + text = ''
30 + #!/bin/sh
31 + HOME=${stateDir} ${couchdb}/bin/couchdb ${couchdbFlags}
32 + '';
33 + executable = true;
34 + destination = "/bin/couchdb";
35 + };
36 +
37 +in
38 +
39 +{
40 + options = {
41 + services.couchdb = {
42 + enable = mkOption {
43 + default = false;
44 + description = ''
45 + CouchDB
46 + '';
47 + };
48 +
49 + dbRootDir = mkOption {
50 + default = "/data/couchdb/rootdir";
51 + description = ''
52 + DbRootDir in CouchDB configuration file
53 + '';
54 + };
55 +
56 + documentRoot = mkOption {
57 + default = "/data/couchdb/documentroot";
58 + description = ''
59 + DocumentRoot in CouchDB configuration file
60 + '';
61 + };
62 +
63 + logDir = mkOption {
64 + default = "/data/couchdb/logs";
65 + description = ''
66 + Location of CouchDB log files
67 + '';
68 + };
69 +
70 + };
71 + };
72 +
73 + config = mkIf config.services.couchdb.enable {
74 +
75 + environment.systemPackages = [ couchdb ];
76 +
77 + users.extraUsers = singleton
78 + { name = couchdbUser;
79 + uid = 33;
80 + description = "CouchDB daemon user";
81 + home = stateDir;
82 + };
83 +
84 + jobs.couchdb =
85 + { description = "CouchDB daemon";
86 +
87 + startOn = "startup";
88 + stopOn = "shutdown";
89 +
90 + preStart =
91 + ''
92 + mkdir -m 0755 -p ${stateDir}
93 + chown ${couchdbUser} ${stateDir}
94 +
95 + mkdir -m 0755 -p ${config.services.couchdb.logDir}
96 + chown ${couchdbUser} ${config.services.couchdb.logDir}
97 +
98 + mkdir -m 0755 -p ${config.services.couchdb.dbRootDir}
99 + chown ${couchdbUser} ${config.services.couchdb.dbRootDir}
100 +
101 + mkdir -m 0755 -p ${config.services.couchdb.documentRoot}
102 + chown ${couchdbUser} ${config.services.couchdb.documentRoot}
103 + '';
104 +
105 + exec = "${wrapper}/bin/couchdb";
106 + };
107 +
108 + };
109 +
110 +}