diff --git a/flake.nix b/flake.nix index af72c1a8..81f62736 100644 --- a/flake.nix +++ b/flake.nix @@ -155,6 +155,8 @@ imports = [ ./modules/lido ./modules/tailscale-autoconnect + ./modules/grafana-agent-flow + ./modules/pyroscope ./packages ]; systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; diff --git a/modules/grafana-agent-flow/default.nix b/modules/grafana-agent-flow/default.nix new file mode 100644 index 00000000..01dfc3a0 --- /dev/null +++ b/modules/grafana-agent-flow/default.nix @@ -0,0 +1,39 @@ +{withSystem, ...}: { + flake.nixosModules.grafana-agent-flow = { + pkgs, + config, + lib, + ... + }: let + cfg = + config.services.grafana-agent-flow; + package = withSystem pkgs.stdenv.hostPlatform.system ( + {config, ...}: + config.packages.grafana-agent + ); + in { + options.services.grafana-agent-flow = with lib; { + enable = mkEnableOption (lib.mdDoc "Grafana Agent (Flow mode)"); + config-file = mkOption { + type = types.str; + default = "./config.river"; + example = "./config.river"; + }; + }; + config = { + systemd.services.grafana-agent-flow = lib.mkIf cfg.enable { + description = "Grafana Agent (Flow mode)"; + + wantedBy = ["multi-user.target"]; + + environment = { + AGENT_MODE = "flow"; + }; + + serviceConfig = { + ExecStart = ''${package}/bin/grafana-agent-flow run ${cfg.config-file}''; + }; + }; + }; + }; +} diff --git a/modules/pyroscope/default.nix b/modules/pyroscope/default.nix new file mode 100644 index 00000000..19f97b2a --- /dev/null +++ b/modules/pyroscope/default.nix @@ -0,0 +1,28 @@ +{withSystem, ...}: { + flake.nixosModules.pyroscope = { + pkgs, + config, + lib, + ... + }: let + cfg = + config.services.pyroscope; + package = withSystem pkgs.stdenv.hostPlatform.system ( + {config, ...}: + config.packages.pyroscope + ); + in { + options.services.pyroscope = with lib; { + enable = mkEnableOption (lib.mdDoc "Grafana Agent (Flow mode)"); + }; + config = { + systemd.services.pyroscope = lib.mkIf cfg.enable { + description = "Pyroscope"; + wantedBy = ["multi-user.target"]; + serviceConfig = { + ExecStart = ''${lib.getExe package}''; + }; + }; + }; + }; +}