aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hosts/common/server/monitoring.nix12
-rw-r--r--hosts/common/server/transmission.nix27
-rw-r--r--hosts/profiles/nas.nix8
-rw-r--r--hosts/profiles/server.nix5
-rw-r--r--modules/services/default.nix2
-rw-r--r--modules/services/metrics-exporter/default.nix18
-rw-r--r--modules/services/traefik/default.nix2
-rw-r--r--modules/services/transmission/default.nix33
8 files changed, 56 insertions, 51 deletions
diff --git a/hosts/common/server/monitoring.nix b/hosts/common/server/monitoring.nix
deleted file mode 100644
index 82cef4d..0000000
--- a/hosts/common/server/monitoring.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-{
- services.prometheus = {
- exporters = {
- node = {
- enable = true;
- enabledCollectors = [ "tcpstat" "systemd" "interrupts" ];
- };
- };
- };
-}
diff --git a/hosts/common/server/transmission.nix b/hosts/common/server/transmission.nix
deleted file mode 100644
index 2eae585..0000000
--- a/hosts/common/server/transmission.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-{
- services.transmission = {
- enable = true;
- group = "nas";
- performanceNetParameters = true;
- home = "/data/fast/torrents";
- settings = {
- dht-enabled = false;
- cache-size-mb = 128;
- peer-port = 52213;
- peer-port-random-low = 49152;
- peer-port-random-high = 65535;
- message-level = 2;
-
- rpc-enabled = true;
- rpc-host-whitelist-enabled = false;
- verify-threads = 4;
- };
- };
-
- networking.firewall = {
- allowedTCPPorts = [ 52213 ];
- allowedUDPPorts = [ 52213 ];
- };
-}
diff --git a/hosts/profiles/nas.nix b/hosts/profiles/nas.nix
index 9ac834f..5ec18d0 100644
--- a/hosts/profiles/nas.nix
+++ b/hosts/profiles/nas.nix
@@ -1,10 +1,4 @@
{ config, pkgs, lib, ... }: {
- imports = [
- # other profiles
- ./server.nix
- ../common/server/transmission.nix
- ];
-
users.groups.nas.gid = 5000;
users.users.nas = {
uid = 5000;
@@ -30,6 +24,8 @@
};
rclone = { enable = true; };
traefik = { enable = true; };
+ transmission = { enable = true; };
+ metrics-exporter = { enable = true; };
};
services.restic.backups = {
diff --git a/hosts/profiles/server.nix b/hosts/profiles/server.nix
deleted file mode 100644
index 0029d03..0000000
--- a/hosts/profiles/server.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-{
- imports = [ ../common/server/monitoring.nix ];
-}
diff --git a/modules/services/default.nix b/modules/services/default.nix
index 95c5f21..085e881 100644
--- a/modules/services/default.nix
+++ b/modules/services/default.nix
@@ -5,6 +5,7 @@
./fwupd
./gitea
./grafana
+ ./metrics-exporter
./navidrome
./prometheus
./rclone
@@ -14,6 +15,7 @@
./thermald
./tlp
./traefik
+ ./transmission
./unifi
];
}
diff --git a/modules/services/metrics-exporter/default.nix b/modules/services/metrics-exporter/default.nix
new file mode 100644
index 0000000..b461bd2
--- /dev/null
+++ b/modules/services/metrics-exporter/default.nix
@@ -0,0 +1,18 @@
+{ config, pkgs, lib, ... }:
+let cfg = config.my.services.metrics-exporter;
+in {
+ options.my.services.metrics-exporter = with lib; {
+ enable = mkEnableOption "Prometheus metrics exporter";
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.prometheus = {
+ exporters = {
+ node = {
+ enable = true;
+ enabledCollectors = [ "tcpstat" "systemd" "interrupts" ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/services/traefik/default.nix b/modules/services/traefik/default.nix
index 980faee..d6a8c8c 100644
--- a/modules/services/traefik/default.nix
+++ b/modules/services/traefik/default.nix
@@ -3,7 +3,7 @@
with lib;
let
- cfg = config.my.services.navidrome;
+ cfg = config.my.services.traefik;
domainPublic = "fcuny.net";
domainPrivate = "fcuny.xyz";
mkServiceConfig = name: url: domain: certResolver: {
diff --git a/modules/services/transmission/default.nix b/modules/services/transmission/default.nix
new file mode 100644
index 0000000..a1e14ab
--- /dev/null
+++ b/modules/services/transmission/default.nix
@@ -0,0 +1,33 @@
+{ config, lib, pkgs, ... }:
+let cfg = config.my.services.transmission;
+in {
+ options.my.services.transmission = with lib; {
+ enable = mkEnableOption "transmission torrent server";
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.transmission = {
+ enable = true;
+ group = "nas";
+ performanceNetParameters = true;
+ home = "/data/fast/torrents";
+ settings = {
+ dht-enabled = false;
+ cache-size-mb = 128;
+ peer-port = 52213;
+ peer-port-random-low = 49152;
+ peer-port-random-high = 65535;
+ message-level = 2;
+
+ rpc-enabled = true;
+ rpc-host-whitelist-enabled = false;
+ verify-threads = 4;
+ };
+ };
+
+ networking.firewall = {
+ allowedTCPPorts = [ 52213 ];
+ allowedUDPPorts = [ 52213 ];
+ };
+ };
+}