at 21.11-pre 1.6 kB view raw
1{ config, lib, pkgs, ... }: 2let 3 cfg = config.services.clickhouse; 4in 5with lib; 6{ 7 8 ###### interface 9 10 options = { 11 12 services.clickhouse = { 13 14 enable = mkEnableOption "ClickHouse database server"; 15 16 }; 17 18 }; 19 20 21 ###### implementation 22 23 config = mkIf cfg.enable { 24 25 users.users.clickhouse = { 26 name = "clickhouse"; 27 uid = config.ids.uids.clickhouse; 28 group = "clickhouse"; 29 description = "ClickHouse server user"; 30 }; 31 32 users.groups.clickhouse.gid = config.ids.gids.clickhouse; 33 34 systemd.services.clickhouse = { 35 description = "ClickHouse server"; 36 37 wantedBy = [ "multi-user.target" ]; 38 39 after = [ "network.target" ]; 40 41 serviceConfig = { 42 User = "clickhouse"; 43 Group = "clickhouse"; 44 ConfigurationDirectory = "clickhouse-server"; 45 AmbientCapabilities = "CAP_SYS_NICE"; 46 StateDirectory = "clickhouse"; 47 LogsDirectory = "clickhouse"; 48 ExecStart = "${pkgs.clickhouse}/bin/clickhouse-server --config-file=${pkgs.clickhouse}/etc/clickhouse-server/config.xml"; 49 }; 50 }; 51 52 environment.etc = { 53 "clickhouse-server/config.xml" = { 54 source = "${pkgs.clickhouse}/etc/clickhouse-server/config.xml"; 55 }; 56 57 "clickhouse-server/users.xml" = { 58 source = "${pkgs.clickhouse}/etc/clickhouse-server/users.xml"; 59 }; 60 }; 61 62 environment.systemPackages = [ pkgs.clickhouse ]; 63 64 # startup requires a `/etc/localtime` which only if exists if `time.timeZone != null` 65 time.timeZone = mkDefault "UTC"; 66 67 }; 68 69}