at 25.11-pre 2.3 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 inherit (lib) 10 mkEnableOption 11 mkPackageOption 12 mkIf 13 mkOption 14 types 15 getExe 16 ; 17 18 cfg = config.services.opentelemetry-collector; 19 opentelemetry-collector = cfg.package; 20 21 settingsFormat = pkgs.formats.yaml { }; 22in 23{ 24 options.services.opentelemetry-collector = { 25 enable = mkEnableOption "Opentelemetry Collector"; 26 27 package = mkPackageOption pkgs "opentelemetry-collector" { }; 28 29 settings = mkOption { 30 type = settingsFormat.type; 31 default = { }; 32 description = '' 33 Specify the configuration for Opentelemetry Collector in Nix. 34 35 See <https://opentelemetry.io/docs/collector/configuration/> for available options. 36 ''; 37 }; 38 39 configFile = mkOption { 40 type = types.nullOr types.path; 41 default = null; 42 description = '' 43 Specify a path to a configuration file that Opentelemetry Collector should use. 44 ''; 45 }; 46 }; 47 48 config = mkIf cfg.enable { 49 assertions = [ 50 { 51 assertion = ((cfg.settings == { }) != (cfg.configFile == null)); 52 message = '' 53 Please specify a configuration for Opentelemetry Collector with either 54 'services.opentelemetry-collector.settings' or 55 'services.opentelemetry-collector.configFile'. 56 ''; 57 } 58 ]; 59 60 systemd.services.opentelemetry-collector = { 61 description = "Opentelemetry Collector Service Daemon"; 62 wantedBy = [ "multi-user.target" ]; 63 64 serviceConfig = 65 let 66 conf = 67 if cfg.configFile == null then 68 settingsFormat.generate "config.yaml" cfg.settings 69 else 70 cfg.configFile; 71 in 72 { 73 ExecStart = "${getExe opentelemetry-collector} --config=file:${conf}"; 74 DynamicUser = true; 75 Restart = "always"; 76 ProtectSystem = "full"; 77 DevicePolicy = "closed"; 78 NoNewPrivileges = true; 79 WorkingDirectory = "%S/opentelemetry-collector"; 80 StateDirectory = "opentelemetry-collector"; 81 SupplementaryGroups = [ 82 # allow to read the systemd journal for opentelemetry-collector 83 "systemd-journal" 84 ]; 85 }; 86 }; 87 }; 88}