at 18.09-beta 1.5 kB view raw
1{ config, lib, pkgs, ... }: 2let 3 cfg = config.services.clickhouse; 4 confDir = "/etc/clickhouse-server"; 5 stateDir = "/var/lib/clickhouse"; 6in 7with lib; 8{ 9 10 ###### interface 11 12 options = { 13 14 services.clickhouse = { 15 16 enable = mkOption { 17 default = false; 18 description = "Whether to enable ClickHouse database server."; 19 }; 20 21 }; 22 23 }; 24 25 26 ###### implementation 27 28 config = mkIf cfg.enable { 29 30 users.users.clickhouse = { 31 name = "clickhouse"; 32 uid = config.ids.uids.clickhouse; 33 group = "clickhouse"; 34 description = "ClickHouse server user"; 35 }; 36 37 users.groups.clickhouse.gid = config.ids.gids.clickhouse; 38 39 systemd.services.clickhouse = { 40 description = "ClickHouse server"; 41 42 wantedBy = [ "multi-user.target" ]; 43 44 after = [ "network.target" ]; 45 46 preStart = '' 47 mkdir -p ${stateDir} 48 chown clickhouse:clickhouse ${confDir} ${stateDir} 49 ''; 50 51 script = '' 52 cd "${confDir}" 53 exec ${pkgs.clickhouse}/bin/clickhouse-server 54 ''; 55 56 serviceConfig = { 57 User = "clickhouse"; 58 Group = "clickhouse"; 59 PermissionsStartOnly = true; 60 }; 61 }; 62 63 environment.etc = { 64 "clickhouse-server/config.xml" = { 65 source = "${pkgs.clickhouse}/etc/clickhouse-server/config.xml"; 66 }; 67 68 "clickhouse-server/users.xml" = { 69 source = "${pkgs.clickhouse}/etc/clickhouse-server/users.xml"; 70 }; 71 }; 72 73 }; 74 75}