nixos/preload: init
[NixPkgs.git] / nixos / modules / services / development / blackfire.nix
blob3c98d7a281c6394c49f9af841749b80eeefd4f6a
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.blackfire-agent;
6   agentConfigFile = lib.generators.toINI {} {
7     blackfire =  cfg.settings;
8   };
10   agentSock = "blackfire/agent.sock";
11 in {
12   meta = {
13     maintainers = pkgs.blackfire.meta.maintainers;
14     doc = ./blackfire.md;
15   };
17   options = {
18     services.blackfire-agent = {
19       enable = lib.mkEnableOption (lib.mdDoc "Blackfire profiler agent");
20       settings = lib.mkOption {
21         description = lib.mdDoc ''
22           See https://blackfire.io/docs/up-and-running/configuration/agent
23         '';
24         type = lib.types.submodule {
25           freeformType = with lib.types; attrsOf str;
27           options = {
28             server-id = lib.mkOption {
29               type = lib.types.str;
30               description = lib.mdDoc ''
31                 Sets the server id used to authenticate with Blackfire
33                 You can find your personal server-id at https://blackfire.io/my/settings/credentials
34               '';
35             };
37             server-token = lib.mkOption {
38               type = lib.types.str;
39               description = lib.mdDoc ''
40                 Sets the server token used to authenticate with Blackfire
42                 You can find your personal server-token at https://blackfire.io/my/settings/credentials
43               '';
44             };
45           };
46         };
47       };
48     };
49   };
51   config = lib.mkIf cfg.enable {
52     environment.etc."blackfire/agent".text = agentConfigFile;
54     services.blackfire-agent.settings.socket = "unix:///run/${agentSock}";
56     systemd.packages = [
57       pkgs.blackfire
58     ];
59   };