From 7061c52ef61a9103a504522600daa3b2fea6ddaa Mon Sep 17 00:00:00 2001 From: Lukas Wurzinger <lukas@wrz.one> Date: Tue, 25 Mar 2025 20:20:05 +0100 Subject: [PATCH] lazy --- classes/headless/grafana.nix | 95 +++++++++---------- classes/headless/loki.nix | 157 ++++++++++++++++---------------- classes/headless/prometheus.nix | 59 ++++++------ classes/headless/promtail.nix | 83 ++++++++--------- common/gc.nix | 4 +- flake.lock | 36 ++++++-- 6 files changed, 230 insertions(+), 204 deletions(-) diff --git a/classes/headless/grafana.nix b/classes/headless/grafana.nix index 280d465..acd972f 100644 --- a/classes/headless/grafana.nix +++ b/classes/headless/grafana.nix @@ -1,47 +1,48 @@ -{config, ...}: let - virtualHostName = "grafana.helveticanonstandard.net"; -in { - services.grafana = { - enable = true; - - settings = { - server = { - domain = virtualHostName; - http_port = 9010; - http_addr = "127.0.0.1"; - root_url = "http://192.168.1.10:8010"; # TODO - protocol = "http"; - }; - - analytics.reporting_enabled = false; - }; - - provision = { - enable = true; - datasources.settings.datasources = [ - { - name = "Prometheus"; - type = "prometheus"; - access = "proxy"; - url = "http://127.0.0.1:${builtins.toString config.services.prometheus.port}"; - } - { - name = "Loki"; - type = "loki"; - access = "proxy"; - url = "http://127.0.0.1:${builtins.toString config.services.loki.configuration.server.http_listen_port}"; - } - ]; - }; - }; - - # services.nginx.virtualHosts.${virtualHostName} = { - # locations."/" = { - # proxyPass = let - # host = config.services.grafana.settings.server.http_addr; - # port = builtins.toString config.services.grafana.settings.server.http_port; - # in "http://${host}:${port}"; - # proxyWebsockets = true; - # }; - # }; -} +# {config, ...}: let +# virtualHostName = "grafana.helveticanonstandard.net"; +# in { +# services.grafana = { +# enable = true; +# +# settings = { +# server = { +# domain = virtualHostName; +# http_port = 9010; +# http_addr = "127.0.0.1"; +# root_url = "http://192.168.1.10:8010"; # TODO +# protocol = "http"; +# }; +# +# analytics.reporting_enabled = false; +# }; +# +# provision = { +# enable = true; +# datasources.settings.datasources = [ +# { +# name = "Prometheus"; +# type = "prometheus"; +# access = "proxy"; +# url = "http://127.0.0.1:${builtins.toString config.services.prometheus.port}"; +# } +# { +# name = "Loki"; +# type = "loki"; +# access = "proxy"; +# url = "http://127.0.0.1:${builtins.toString config.services.loki.configuration.server.http_listen_port}"; +# } +# ]; +# }; +# }; +# +# # services.nginx.virtualHosts.${virtualHostName} = { +# # locations."/" = { +# # proxyPass = let +# # host = config.services.grafana.settings.server.http_addr; +# # port = builtins.toString config.services.grafana.settings.server.http_port; +# # in "http://${host}:${port}"; +# # proxyWebsockets = true; +# # }; +# # }; +# } +{} diff --git a/classes/headless/loki.nix b/classes/headless/loki.nix index cf2f1f0..89d3b99 100644 --- a/classes/headless/loki.nix +++ b/classes/headless/loki.nix @@ -1,78 +1,79 @@ -{config, ...}: { - services.loki = { - enable = true; - configuration = { - server.http_listen_port = 3030; - auth_enabled = false; - - ingester = { - lifecycler = { - address = "127.0.0.1"; - ring = { - kvstore = { - store = "inmemory"; - }; - replication_factor = 1; - }; - }; - chunk_idle_period = "1h"; - max_chunk_age = "1h"; - chunk_target_size = 999999; - chunk_retain_period = "30s"; - max_transfer_retries = 0; - }; - - schema_config = { - configs = [ - { - from = "2022-06-06"; #TODO - store = "tsdb"; - object_store = "filesystem"; - schema = "v13"; - index = { - prefix = "index_"; - period = "24h"; - }; - } - ]; - }; - - storage_config = { - tsdb_shipper = { - active_index_directory = "${config.services.loki.dataDir}/tsdb-shipper-active"; - cache_location = "${config.services.loki.dataDir}/tsdb-shipper-cache"; - cache_ttl = "24h"; - shared_store = "filesystem"; - }; - - filesystem = { - directory = "/var/lib/loki/chunks"; - }; - }; - - limits_config = { - reject_old_samples = true; - reject_old_samples_max_age = "168h"; - }; - - chunk_store_config = { - max_look_back_period = "0s"; - }; - - table_manager = { - retention_deletes_enabled = false; - retention_period = "0s"; - }; - - compactor = { - working_directory = config.services.loki.dataDir; - shared_store = "filesystem"; - compactor_ring = { - kvstore = { - store = "inmemory"; - }; - }; - }; - }; - }; -} +# {config, ...}: { +# services.loki = { +# enable = true; +# configuration = { +# server.http_listen_port = 3030; +# auth_enabled = false; +# +# ingester = { +# lifecycler = { +# address = "127.0.0.1"; +# ring = { +# kvstore = { +# store = "inmemory"; +# }; +# replication_factor = 1; +# }; +# }; +# chunk_idle_period = "1h"; +# max_chunk_age = "1h"; +# chunk_target_size = 999999; +# chunk_retain_period = "30s"; +# max_transfer_retries = 0; +# }; +# +# schema_config = { +# configs = [ +# { +# from = "2022-06-06"; #TODO +# store = "tsdb"; +# object_store = "filesystem"; +# schema = "v13"; +# index = { +# prefix = "index_"; +# period = "24h"; +# }; +# } +# ]; +# }; +# +# storage_config = { +# tsdb_shipper = { +# active_index_directory = "${config.services.loki.dataDir}/tsdb-shipper-active"; +# cache_location = "${config.services.loki.dataDir}/tsdb-shipper-cache"; +# cache_ttl = "24h"; +# shared_store = "filesystem"; +# }; +# +# filesystem = { +# directory = "/var/lib/loki/chunks"; +# }; +# }; +# +# limits_config = { +# reject_old_samples = true; +# reject_old_samples_max_age = "168h"; +# }; +# +# chunk_store_config = { +# max_look_back_period = "0s"; +# }; +# +# table_manager = { +# retention_deletes_enabled = false; +# retention_period = "0s"; +# }; +# +# compactor = { +# working_directory = config.services.loki.dataDir; +# shared_store = "filesystem"; +# compactor_ring = { +# kvstore = { +# store = "inmemory"; +# }; +# }; +# }; +# }; +# }; +# } +{} diff --git a/classes/headless/prometheus.nix b/classes/headless/prometheus.nix index 53c2130..d6bad74 100644 --- a/classes/headless/prometheus.nix +++ b/classes/headless/prometheus.nix @@ -1,29 +1,30 @@ -{config, ...}: { - services.prometheus = { - enable = true; - port = 3020; - - exporters = { - node = { - enable = true; - listenAddress = "127.0.0.1"; - port = 3021; - enabledCollectors = ["systemd"]; - }; - }; - - scrapeConfigs = [ - { - job_name = "nodes"; - static_configs = [ - { - targets = let - host = config.services.prometheus.exporters.node.listenAddress; - port = builtins.toString config.services.prometheus.exporters.node.port; - in ["${host}:${port}"]; - } - ]; - } - ]; - }; -} +# {config, ...}: { +# services.prometheus = { +# enable = true; +# port = 3020; +# +# exporters = { +# node = { +# enable = true; +# listenAddress = "127.0.0.1"; +# port = 3021; +# enabledCollectors = ["systemd"]; +# }; +# }; +# +# scrapeConfigs = [ +# { +# job_name = "nodes"; +# static_configs = [ +# { +# targets = let +# host = config.services.prometheus.exporters.node.listenAddress; +# port = builtins.toString config.services.prometheus.exporters.node.port; +# in ["${host}:${port}"]; +# } +# ]; +# } +# ]; +# }; +# } +{} diff --git a/classes/headless/promtail.nix b/classes/headless/promtail.nix index 2a6e14f..c9954c4 100644 --- a/classes/headless/promtail.nix +++ b/classes/headless/promtail.nix @@ -1,41 +1,42 @@ -{config, ...}: { - services.promtail = { - enable = true; - - configuration = { - server = { - http_listen_port = 3031; - grpc_listen_port = 0; - }; - - positions = { - filename = "/tmp/positions.yaml"; - }; - - clients = [ - { - url = "http://127.0.0.1:${toString config.services.loki.configuration.server.http_listen_port}/loki/api/v1/push"; - } - ]; - - scrape_configs = [ - { - job_name = "journal"; - journal = { - max_age = "12h"; - labels = { - job = "systemd-journal"; - host = "pihole"; - }; - }; - relabel_configs = [ - { - source_labels = ["__journal__systemd_unit"]; - target_label = "unit"; - } - ]; - } - ]; - }; - }; -} +# {config, ...}: { +# services.promtail = { +# enable = true; +# +# configuration = { +# server = { +# http_listen_port = 3031; +# grpc_listen_port = 0; +# }; +# +# positions = { +# filename = "/tmp/positions.yaml"; +# }; +# +# clients = [ +# { +# url = "http://127.0.0.1:${toString config.services.loki.configuration.server.http_listen_port}/loki/api/v1/push"; +# } +# ]; +# +# scrape_configs = [ +# { +# job_name = "journal"; +# journal = { +# max_age = "12h"; +# labels = { +# job = "systemd-journal"; +# host = "pihole"; +# }; +# }; +# relabel_configs = [ +# { +# source_labels = ["__journal__systemd_unit"]; +# target_label = "unit"; +# } +# ]; +# } +# ]; +# }; +# }; +# } +{} diff --git a/common/gc.nix b/common/gc.nix index 5358d5a..140fa1a 100644 --- a/common/gc.nix +++ b/common/gc.nix @@ -1,7 +1,7 @@ { nix.gc = { automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; + dates = "daily"; + options = "--delete-older-than +5"; }; } diff --git a/flake.lock b/flake.lock index c35d882..1454ba4 100644 --- a/flake.lock +++ b/flake.lock @@ -332,11 +332,11 @@ }, "hardware": { "locked": { - "lastModified": 1742631601, - "narHash": "sha256-yJ3OOAmsGAxSl0bTmKUp3+cEYtSS+V6hUPK2rYhIPr8=", + "lastModified": 1742806253, + "narHash": "sha256-zvQ4GsCJT6MTOzPKLmlFyM+lxo0JGQ0cSFaZSACmWfY=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "380ed15bcd6440606c6856db44a99140d422b46f", + "rev": "ecaa2d911e77c265c2a5bac8b583c40b0f151726", "type": "github" }, "original": { @@ -463,14 +463,15 @@ "inputs": { "flake-compat": "flake-compat_3", "nixpkgs": "nixpkgs_6", - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs-stable": "nixpkgs-stable_2", + "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1742641703, - "narHash": "sha256-hoN8blvJco8OSZmPj8izwQaQUdydVi+5FO4/nWd1MNU=", + "lastModified": 1742863891, + "narHash": "sha256-/mGCIxO7zlWCHOZLaOMRoJgSLpIav0PBKWG3BQddElw=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "216557e6cd229dbe7d73a497c227824a3c579cd7", + "rev": "366999efebcad2165f472ef93e9c996693bda75d", "type": "github" }, "original": { @@ -724,6 +725,27 @@ "type": "github" } }, + "rust-overlay_2": { + "inputs": { + "nixpkgs": [ + "nixos-cosmic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742437918, + "narHash": "sha256-Vflb6KJVDikFcM9E231mRN88uk4+jo7BWtaaQMifthI=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "f03085549609e49c7bcbbee86a1949057d087199", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828,