Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f48c0400b | ||
|
|
4de92dcbe8 | ||
|
|
f7196c0c86 | ||
|
|
20c2b43ae5 | ||
|
|
eecb7fa2b2 | ||
|
|
84ada68069 | ||
|
|
07a1d8ee62 | ||
|
|
565ec2bf39 | ||
|
|
34a55841eb | ||
|
|
e110cb6b87 | ||
|
|
33ac72aaed | ||
|
|
30b7f177c5 | ||
|
|
c1fc8e2a05 | ||
|
|
202eca2d03 | ||
|
|
2ff3042cd9 |
Generated
+40
-40
@@ -21,11 +21,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1788450739,
|
||||
"narHash": "sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU=",
|
||||
"lastModified": 1790898470,
|
||||
"narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "31729ca8cbdb4fa927b34e5f4353e6a83f39e993",
|
||||
"rev": "024633cd702b10285db5cb19b40ad48d2399ba60",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -63,11 +63,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785627969,
|
||||
"narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=",
|
||||
"lastModified": 1788450739,
|
||||
"narHash": "sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a",
|
||||
"rev": "31729ca8cbdb4fa927b34e5f4353e6a83f39e993",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -87,11 +87,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784288435,
|
||||
"narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
|
||||
"lastModified": 1788267358,
|
||||
"narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
|
||||
"rev": "27555e2624241fb116b49095df4caaee85a25691",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -113,11 +113,11 @@
|
||||
"uv2nix": "uv2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1789361774,
|
||||
"narHash": "sha256-ashkMxyQelHq7T4AcJ0Zwuzm9/jMR3hTCWW+2FPwlDg=",
|
||||
"lastModified": 1791121781,
|
||||
"narHash": "sha256-39vzOiYTAwECDMfJAv/b+OxpHPXHfJle0Gx5x+WjPW0=",
|
||||
"owner": "NousResearch",
|
||||
"repo": "hermes-agent",
|
||||
"rev": "5eb99eb2844b22ebb723711b8e6a0bbb80bb5f04",
|
||||
"rev": "af90026aa09949579bd423d24def3d38f743cde0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -157,11 +157,11 @@
|
||||
"nixpkgs-regression": "nixpkgs-regression"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1789352761,
|
||||
"narHash": "sha256-jAcDj4iXkbxa5AlooMRZj7H3E81Cz/q7yN/bX7GPFSU=",
|
||||
"lastModified": 1791067591,
|
||||
"narHash": "sha256-SGcfVVSS3DLO+ES4J+SrLxKGP11yvTWXgiAqku1L+Sk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nix",
|
||||
"rev": "920f6956361496578b8a97ae04ec5f400d729ab4",
|
||||
"rev": "e8280775f307a94ca82cea193cfcc14c0d56232a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -211,11 +211,11 @@
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1789127271,
|
||||
"narHash": "sha256-vL/Fpo7Zxa7wvO8V5FAToUBvP+K3XsMB1wUglTtd/J0=",
|
||||
"lastModified": 1791128201,
|
||||
"narHash": "sha256-rlsYY/Dg/LhbIj51Aa6TLvRpZeb3KZgUTd7llQ5XcJE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "24cfdc1f9344b90a1eee329a3906e2f39f4d0f1e",
|
||||
"rev": "31cc5f4d9b9ba601071e8b8504601b9b176e2756",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -226,11 +226,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1788921488,
|
||||
"narHash": "sha256-JLopN/XSodSsJIZ7v7tEjpPZ+QXc883s3HoUIxHD8Io=",
|
||||
"rev": "6aefcda9401be8acc2b74244fb3b37520ea1f0a8",
|
||||
"lastModified": 1789344334,
|
||||
"narHash": "sha256-it+7kNGnOOHBCEnl4SfZ7QtfGziH3EryzHqwvJpjAfg=",
|
||||
"rev": "c3eea5b2156db11c7eeeada3dc737711255b253e",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.9440.6aefcda9401b/nixexprs.tar.xz"
|
||||
"url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.9729.c3eea5b2156d/nixexprs.tar.xz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
@@ -255,11 +255,11 @@
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1788057806,
|
||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
||||
"lastModified": 1790477367,
|
||||
"narHash": "sha256-oujbxmVKDhci2E4EM3KyAbRUgp5/IsCoiA/LfEF7OOk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
||||
"rev": "f7cd230690d9fc982d06129f9189b101fddcfa3b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -286,11 +286,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1789286504,
|
||||
"narHash": "sha256-3i80JnZ9pZ7tWReb/Sqpc32cfzffCu8TWLnbnH0hN9c=",
|
||||
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
|
||||
"lastModified": 1791048980,
|
||||
"narHash": "sha256-u3KCLxsnf1622GdFccg8hmkEIutOZ1h4pvia5ERjIuI=",
|
||||
"rev": "a7868a727837f3c09cee2ce0ca671c76b1589fed",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1073009.ef34387ddd75/nixexprs.tar.xz"
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1084968.a7868a727837/nixexprs.tar.zst"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
@@ -300,11 +300,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1767892417,
|
||||
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
||||
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
||||
"lastModified": 1789546076,
|
||||
"narHash": "sha256-vWkSk5bbfTqdtMoSgD9FshACO8JCvXTFi+3cqEp0mH0=",
|
||||
"rev": "b1b875982b17dabde9b4a37f3e229e74913e6db3",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1074753.b1b875982b17/nixexprs.tar.xz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
@@ -313,11 +313,11 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1789114715,
|
||||
"narHash": "sha256-eeH+/1GxEjw8NCObjaHVIy3YvCQ4Qckrx4LZj5xBaU4=",
|
||||
"rev": "21a67dc470149f337cecafbe965d8d252a390518",
|
||||
"lastModified": 1791031588,
|
||||
"narHash": "sha256-4XF6NXFWmQPM0xHuxTw+iQEA6mUtmDQNJoVd4u9GkLw=",
|
||||
"rev": "825e2028c29b702a4a5f085f08095d12099784f2",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.9592.21a67dc47014/nixexprs.tar.xz"
|
||||
"url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.11150.825e2028c29b/nixexprs.tar.zst"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
@@ -415,11 +415,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1788914643,
|
||||
"narHash": "sha256-4GuMPW90JSxXWDPUB9M+1m7fYbe3H0apOd86/zBQ2Kw=",
|
||||
"lastModified": 1791103873,
|
||||
"narHash": "sha256-nFxM+pKoZ8LJAEnUXARyCaOAloWgaW9kZQOSjWzKcTE=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "13616fff713a9f94055c66f15687ebdc17a335df",
|
||||
"rev": "dcd241ba97088c22569d1573286e1b9daad340c0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -12,6 +12,13 @@
|
||||
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
# Without these, gc sweeps away eval-time-only sources (flake inputs,
|
||||
# their build deps) since they're not part of the runtime closure.
|
||||
# The next evaluation then cold-refetches everything from GitHub,
|
||||
# which is enough on its own to trip GitHub's unauthenticated rate
|
||||
# limit for large dependency trees (e.g. hermes-agent's).
|
||||
keep-outputs = true;
|
||||
keep-derivations = true;
|
||||
};
|
||||
|
||||
gc = {
|
||||
|
||||
@@ -72,6 +72,9 @@
|
||||
|
||||
system = {
|
||||
stateVersion = "23.05";
|
||||
autoUpgrade.enable = true;
|
||||
# Was silently failing daily (legacy channel path, no --flake set) without
|
||||
# ever reaching the network. Disabled rather than fixed: rebuilds should
|
||||
# only happen when triggered manually.
|
||||
autoUpgrade.enable = false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ _: {
|
||||
readarr.enable = true;
|
||||
sonarr.enable = true;
|
||||
jellyfin.enable = true;
|
||||
jellyseerr.enable = true;
|
||||
seerr.enable = true;
|
||||
immich.enable = true;
|
||||
development.enable = true;
|
||||
home-assistant.enable = true;
|
||||
|
||||
@@ -61,6 +61,9 @@
|
||||
|
||||
system = {
|
||||
stateVersion = "23.05";
|
||||
autoUpgrade.enable = true;
|
||||
# Was silently failing daily (legacy channel path, no --flake set) without
|
||||
# ever reaching the network. Disabled rather than fixed: rebuilds should
|
||||
# only happen when triggered manually.
|
||||
autoUpgrade.enable = false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ _: {
|
||||
# firewall otherwise blocks inbound connections from other devices.
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
9119 # athena hermes dashboard
|
||||
47823 # hermes agent ad-hoc webpage server
|
||||
];
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
./readarr
|
||||
./sonarr
|
||||
./jellyfin
|
||||
./jellyseerr
|
||||
./seerr
|
||||
./immich
|
||||
./hermes-agent
|
||||
];
|
||||
|
||||
@@ -20,6 +20,9 @@ in
|
||||
enable = true;
|
||||
# Deliberate pin, matches the approved design — bump on purpose, not by drift.
|
||||
settings.model.default = "anthropic/claude-sonnet-4-5";
|
||||
# The Nix flake input is the source of truth for hermes's version here; its
|
||||
# built-in self-updater polling GitHub independently just burns API quota.
|
||||
settings.updates.check = false;
|
||||
environmentFiles = [ config.sops.secrets."hermes-env".path ];
|
||||
addToSystemPackages = true;
|
||||
|
||||
|
||||
@@ -54,14 +54,16 @@ in
|
||||
"f /var/lib/hass/scenes.yaml 0644 hass hass - []"
|
||||
];
|
||||
|
||||
services.openthread-border-router = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.openthread-border-router;
|
||||
openFirewall = true;
|
||||
backboneInterfaces = [ "enp3s0" ];
|
||||
radio.device = "/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D9149C7C-if00";
|
||||
radio.baudRate = 460800;
|
||||
};
|
||||
# Disabled: ZBT-2 antenna isn't connected, so otbr-agent can't reach the
|
||||
# radio and just crash-loops on every switch.
|
||||
# services.openthread-border-router = {
|
||||
# enable = true;
|
||||
# package = pkgs.unstable.openthread-border-router;
|
||||
# openFirewall = true;
|
||||
# backboneInterfaces = [ "enp3s0" ];
|
||||
# radio.device = "/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D9149C7C-if00";
|
||||
# radio.baudRate = 460800;
|
||||
# };
|
||||
|
||||
my.homepage.services = [
|
||||
{
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
[
|
||||
{
|
||||
Developer = [
|
||||
{
|
||||
Github = [
|
||||
{
|
||||
abbr = "GitLab - Smoothcloud";
|
||||
href = "https://gitlab.smoothcloud.de/";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
Social = [
|
||||
{
|
||||
|
||||
@@ -12,79 +12,93 @@ let
|
||||
manualServices = import ./manual-services.nix;
|
||||
manualWidgets = import ./manual-widgets.nix;
|
||||
|
||||
groupedServices =
|
||||
lib.foldl'
|
||||
(
|
||||
acc: entry:
|
||||
acc
|
||||
// {
|
||||
${entry.group} = (acc.${entry.group} or [ ]) ++ [ entry ];
|
||||
}
|
||||
)
|
||||
{ }
|
||||
config.my.homepage.services;
|
||||
|
||||
homepageServices = lib.mapAttrsToList (
|
||||
group: entries:
|
||||
{
|
||||
${group} = map (
|
||||
entry:
|
||||
let
|
||||
service = builtins.removeAttrs entry [
|
||||
"group"
|
||||
"name"
|
||||
];
|
||||
in
|
||||
{
|
||||
${entry.name} = lib.filterAttrs (_: value: value != null) service;
|
||||
}
|
||||
) entries;
|
||||
groupedServices = lib.foldl' (
|
||||
acc: entry:
|
||||
acc
|
||||
// {
|
||||
${entry.group} = (acc.${entry.group} or [ ]) ++ [ entry ];
|
||||
}
|
||||
) groupedServices;
|
||||
) { } config.my.homepage.services;
|
||||
|
||||
homepageServices = lib.mapAttrsToList (group: entries: {
|
||||
${group} = map (
|
||||
entry:
|
||||
let
|
||||
service = builtins.removeAttrs entry [
|
||||
"group"
|
||||
"name"
|
||||
];
|
||||
in
|
||||
{
|
||||
${entry.name} = lib.filterAttrs (_: value: value != null) service;
|
||||
}
|
||||
) entries;
|
||||
}) groupedServices;
|
||||
|
||||
# homepage-dashboard keeps only the first services.yaml list entry with a
|
||||
# given group name (first match wins), so module-contributed and manual
|
||||
# groups sharing a name (e.g. "Services") must be merged here rather than
|
||||
# simply concatenated, or the later ones are silently dropped.
|
||||
mergeGroups =
|
||||
lists:
|
||||
let
|
||||
merged = lib.foldl' (
|
||||
acc: groupAttrs:
|
||||
let
|
||||
groupName = builtins.head (builtins.attrNames groupAttrs);
|
||||
in
|
||||
acc // { ${groupName} = (acc.${groupName} or [ ]) ++ groupAttrs.${groupName}; }
|
||||
) { } lists;
|
||||
in
|
||||
lib.mapAttrsToList (name: entries: { ${name} = entries; }) merged;
|
||||
in
|
||||
{
|
||||
|
||||
options.my.homepage.services = with lib; mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service group";
|
||||
};
|
||||
options.my.homepage.services =
|
||||
with lib;
|
||||
mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service group";
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service name";
|
||||
};
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service name";
|
||||
};
|
||||
|
||||
description = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service description";
|
||||
};
|
||||
description = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service description";
|
||||
};
|
||||
|
||||
href = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service URL";
|
||||
};
|
||||
href = mkOption {
|
||||
type = types.str;
|
||||
description = "Homepage service URL";
|
||||
};
|
||||
|
||||
icon = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Optional Homepage service icon";
|
||||
icon = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Optional Homepage service icon";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [ ];
|
||||
description = "Merged homepage service metadata contributed by repo modules.";
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [ ];
|
||||
description = "Merged homepage service metadata contributed by repo modules.";
|
||||
};
|
||||
|
||||
options.my.homepage.widgets = with lib; mkOption {
|
||||
type = types.listOf types.attrs;
|
||||
default = [ ];
|
||||
description = "Widget definitions passed directly to services.homepage-dashboard.widgets. Each entry is an attrset like { resources = { cpu = true; memory = true; }; }.";
|
||||
};
|
||||
options.my.homepage.widgets =
|
||||
with lib;
|
||||
mkOption {
|
||||
type = types.listOf types.attrs;
|
||||
default = [ ];
|
||||
description = "Widget definitions passed directly to services.homepage-dashboard.widgets. Each entry is an attrset like { resources = { cpu = true; memory = true; }; }.";
|
||||
};
|
||||
|
||||
options.my.profiles.homepage = with lib; {
|
||||
enable = mkEnableOption "getHomepage.dev Dashboard";
|
||||
@@ -98,7 +112,7 @@ in
|
||||
listenPort = dashboardPort;
|
||||
allowedHosts = "${dashboardHost}:${toString dashboardPort},192.168.178.65:${toString dashboardPort},localhost:${toString dashboardPort},127.0.0.1:${toString dashboardPort},jupiter:${toString dashboardPort},jupiter.solar.internal:${toString dashboardPort}";
|
||||
bookmarks = import ./bookmarks.nix;
|
||||
services = homepageServices ++ manualServices;
|
||||
services = mergeGroups (homepageServices ++ manualServices);
|
||||
widgets = config.my.homepage.widgets ++ manualWidgets;
|
||||
};
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
};
|
||||
}
|
||||
{
|
||||
"GitLab" = {
|
||||
href = "https://gitlab.smoothcloud.de";
|
||||
description = "Selfhosted GitLab";
|
||||
icon = "gitlab.png";
|
||||
"Gitea" = {
|
||||
href = "https://git.rechberg.online";
|
||||
description = "Selfhosted Gitea";
|
||||
icon = "gitea.png";
|
||||
};
|
||||
}
|
||||
{
|
||||
|
||||
@@ -18,6 +18,8 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.immich = {
|
||||
enable = true;
|
||||
# nixos-26.05 pins immich 2.7.5; pull 3.x from the unstable overlay instead.
|
||||
package = pkgs.unstable.immich;
|
||||
host = "0.0.0.0";
|
||||
inherit port;
|
||||
openFirewall = true;
|
||||
|
||||
+6
-6
@@ -1,17 +1,17 @@
|
||||
# manages and downloads films
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.my.profiles.jellyseerr;
|
||||
cfg = config.my.profiles.seerr;
|
||||
hostName = config.networking.hostName;
|
||||
port = 5055;
|
||||
in
|
||||
{
|
||||
options.my.profiles.jellyseerr = with lib; {
|
||||
enable = mkEnableOption "JellySeerr Media Service";
|
||||
options.my.profiles.seerr = with lib; {
|
||||
enable = mkEnableOption "Seerr Media Service";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.jellyseerr = {
|
||||
services.seerr = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
@@ -19,14 +19,14 @@ in
|
||||
my.homepage.services = [
|
||||
{
|
||||
group = "Media";
|
||||
name = "Jellyseerr";
|
||||
name = "Seerr";
|
||||
description = "Media requests";
|
||||
href = "http://${hostName}:${toString port}";
|
||||
icon = "mdi-television-guide";
|
||||
}
|
||||
];
|
||||
|
||||
systemd.services.jellyseerr = {
|
||||
systemd.services.seerr = {
|
||||
after = [ "network-online.target" ];
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user