From 4290a4d45ad559add2fe2c7a3f26a862e01c41a4 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Wed, 30 Apr 2025 21:20:31 +0200 Subject: [PATCH] Add `garmin-grafana` module --- modules/garmin-grafana/default.nix | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 modules/garmin-grafana/default.nix diff --git a/modules/garmin-grafana/default.nix b/modules/garmin-grafana/default.nix new file mode 100644 index 0000000..90795e6 --- /dev/null +++ b/modules/garmin-grafana/default.nix @@ -0,0 +1,53 @@ +{ + config, + pkgs, + lib, + ... +}: +let + garmin-grafana-flake = builtins.getFlake "github:NixOS/nixpkgs/1f03fefb44665cd2377912033de22ffaba2be48d"; + inherit (garmin-grafana-flake.legacyPackages.${pkgs.system}) garmin-grafana; +in +{ + users.users.garmin-grafana = { + isSystemUser = true; + group = "garmin-grafana"; + extraGroups = [ "garmin-grafana" ]; + home = "/var/lib/garmin-grafana"; + }; + + users.groups.garmin-grafana = { }; + + systemd.services.garmin-grafana = { + description = "garmin-grafana"; + wantedBy = [ "multi-user.target" ]; + environment = { + INFLUXDB_HOST = "localhost"; + INFLUXDB_PORT = "8086"; # it's hardcoded in the influxdb NixOS module + INFLUXDB_USERNAME = "garmin-grafana"; + INFLUXDB_PASSWORD = "password"; # FIXME terrible but the databse is not exposed at least + INFLUXDB_DATABASE = "garmin-stats"; + GARMINCONNECT_IS_CN = "False"; + USER_TIMEZONE = "Europe/Rome"; + KEEP_FIT_FILES = "True"; + ALWAYS_PROCESS_FIT_FILES = "True"; + # MANUAL_START_DATE = "2024-06-01"; + # MANUAL_END_DATE = "2025-12-31"; + }; + serviceConfig = { + ExecStart = lib.getExe garmin-grafana; + Group = "garmin-grafana"; + User = "garmin-grafana"; + WorkingDirectory = "/var/lib/garmin-grafana"; + }; + }; + + # garmin-grafana uses influxdb V1, probably it's the only software I'll ever use using the V1 + # so I"m keeping its declaration inside this module + services.influxdb.enable = true; + + environment.persistence."/persist".directories = [ + "/var/lib/garmin-grafana" + config.services.influxdb.dataDir + ]; +}