Use overlay

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-08-17 21:21:52 +03:00
parent 795ea28583
commit 4330c20faf
95 changed files with 551 additions and 736 deletions

View File

@@ -2,11 +2,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
inherit (config.virtualisation.quadlet) volumes;
inboundInterface = "wlo1";
inboundGateway = "192.168.1.1";
@@ -92,7 +90,7 @@ in
containers.tv-adguard = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-adguardhome}";
image = "docker-archive:${pkgs.dockerImages.adguardhome}";
volumes =
let
config = (pkgs.formats.yaml { }).generate "config.yaml.default" {

View File

@@ -1,5 +1,11 @@
{ inputs, ... }:
{
nixpkgs.overlays = [
inputs.lib.overlays.default
inputs.self.overlays.default
inputs.nur.overlays.default
];
imports = [
inputs.disko.nixosModules.disko
./format.nix

View File

@@ -6,10 +6,10 @@
...
}:
{
imports = [ ./display.nix ];
nixpkgs.overlays = [ inputs.nvidia-patch.overlays.default ];
imports = [ ./display.nix ];
hardware = {
enableAllFirmware = true;

View File

@@ -3,12 +3,9 @@
config,
inputs,
pkgs,
system,
lib,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) volumes containers networks;
in
@@ -158,7 +155,7 @@ in
containers = {
authelia = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-authelia}";
image = "docker-archive:${pkgs.dockerImages.authelia}";
volumes = [
"${volumes.authelia.ref}:/etc/authelia"
"${hmConfig.sops.templates.authelia-users.path}:/etc/authelia/users.yaml.default:ro"
@@ -194,7 +191,7 @@ in
authelia-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.authelia.ref ];
volumes = [ "${volumes.authelia-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {
@@ -208,7 +205,7 @@ in
};
authelia-redis.containerConfig = {
image = "docker-archive:${selfPkgs.docker-redis}";
image = "docker-archive:${pkgs.dockerImages.redis}";
networks = [ networks.authelia.ref ];
volumes = [ "${volumes.authelia-redis.ref}:/var/lib/redis" ];
exec = [ "--save 60 1" ];

View File

@@ -4,11 +4,9 @@
inputs,
lib,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
podman = lib.meta.getExe pkgs.podman;
podmanAsUser = "${config.security.wrapperDir}/git-sudo -u ${user} ${podman}";
@@ -218,7 +216,7 @@ in
containers = {
gitea = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-gitea}";
image = "docker-archive:${pkgs.dockerImages.gitea}";
networks = [
networks.gitea.ref
networks.traefik.ref
@@ -259,7 +257,7 @@ in
gitea-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.gitea.ref ];
volumes = [ "${volumes.gitea-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {
@@ -274,7 +272,7 @@ in
gitea-act-runner = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-gitea-act-runner}";
image = "docker-archive:${pkgs.dockerImages.gitea-act-runner}";
networks = [ networks.gitea.ref ];
volumes =
let

View File

@@ -3,12 +3,10 @@
config,
inputs,
pkgs,
system,
lib,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
autheliaClientId = "4R5ofTZgOjO5Nrbcm9f6KqBLZXy8LwPS5s3E3BUfPS2mRy0wSV41XZGLrLgiR4Z0MblyGzW211AHL7GCCaJu5KonLUKyRjoyuiAr";
@@ -124,7 +122,7 @@ in
containers = {
grafana = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-grafana}";
image = "docker-archive:${pkgs.dockerImages.grafana}";
networks = [
networks.grafana.ref
networks.traefik.ref
@@ -140,7 +138,7 @@ in
};
grafana-image-renderer.containerConfig = {
image = "docker-archive:${selfPkgs.docker-grafana-image-renderer}";
image = "docker-archive:${pkgs.dockerImages.grafana-image-renderer}";
networks = [ networks.grafana.ref ];
};

View File

@@ -1,19 +1,17 @@
{ user, home }:
{
config,
inputs,
lib,
system,
pkgs,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
in
{
home-manager.users.${user}.virtualisation.quadlet.containers.littlelink.containerConfig = {
image = "docker-archive:${selfPkgs.docker-littlelink-server}";
image = "docker-archive:${pkgs.dockerImages.littlelink-server}";
networks = [ networks.traefik.ref ];
environments = {
NAME = "Nikolaos Karaolidis";

View File

@@ -1,18 +1,12 @@
{ user, home }:
{
config,
inputs,
system,
...
}:
{ config, pkgs, ... }:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
in
{
home-manager.users.${user}.virtualisation.quadlet.containers.lore.containerConfig = {
image = "docker-archive:${selfPkgs.docker-nginx}";
image = "docker-archive:${pkgs.dockerImages.nginx}";
networks = [ networks.traefik.ref ];
volumes = [ "${./index.html}:/var/www/nginx/index.html:ro" ];
labels = [

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) volumes networks;
@@ -83,7 +81,7 @@ in
containers = {
jellyfin = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-jellyfin}";
image = "docker-archive:${pkgs.dockerImages.jellyfin}";
networks = [
networks.jellyfin.ref
networks.traefik.ref

View File

@@ -9,11 +9,9 @@
inputs,
pkgs,
lib,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
@@ -149,7 +147,7 @@ in
containers = {
jellyseerr = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-jellyseerr}";
image = "docker-archive:${pkgs.dockerImages.jellyseerr}";
networks = [
networks.jellyfin.ref
networks.media.ref

View File

@@ -8,11 +8,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
arrs = radarrs ++ sonarrs;
@@ -44,13 +42,13 @@ in
containers = {
flaresolverr.containerConfig = {
image = "docker-archive:${selfPkgs.docker-flaresolverr}";
image = "docker-archive:${pkgs.dockerImages.flaresolverr}";
networks = [ networks.flaresolverr.ref ];
};
prowlarr = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-prowlarr}";
image = "docker-archive:${pkgs.dockerImages.prowlarr}";
networks = [
networks.media.ref
networks.transmission.ref

View File

@@ -7,11 +7,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
in
@@ -55,7 +53,7 @@ in
name = radarr.hostName;
value = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-radarr}";
image = "docker-archive:${pkgs.dockerImages.radarr}";
networks = [
networks.media.ref
networks.transmission.ref

View File

@@ -8,11 +8,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers networks;
arrs = radarrs ++ sonarrs;
@@ -32,7 +30,7 @@ in
# FIXME: https://recyclarr.dev/wiki/behavior/quality-profiles/#language
recyclarr = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-recyclarr}";
image = "docker-archive:${pkgs.dockerImages.recyclarr}";
networks = [ networks.media.ref ];
volumes = builtins.map (
arr:

View File

@@ -7,11 +7,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
in
@@ -55,7 +53,7 @@ in
name = sonarr.hostName;
value = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-sonarr}";
image = "docker-archive:${pkgs.dockerImages.sonarr}";
networks = [
networks.media.ref
networks.transmission.ref

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) volumes networks;
in
@@ -26,7 +24,7 @@ in
containers.transmission = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-transmission-protonvpn}";
image = "docker-archive:${pkgs.dockerImages.transmission-protonvpn}";
networks = [
networks.transmission.ref
networks.traefik.ref

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
autheliaClientId = "7DXUBtkdLUUkmyV8oSXidP0XiU6W7usLvYRJ9TrbHy7IflFwWPmHVmU26oLahrj8bVURiexGfAr3bIey6vnlvirnYQ8HMo55NnqH";
@@ -164,7 +162,7 @@ in
containers = {
nextcloud = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-nextcloud}";
image = "docker-archive:${pkgs.dockerImages.nextcloud}";
networks = [
networks.nextcloud.ref
networks.traefik.ref
@@ -208,7 +206,7 @@ in
nextcloud-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.nextcloud.ref ];
volumes = [ "${volumes.nextcloud-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) volumes networks;
in
@@ -85,7 +83,7 @@ in
containers = {
ntfy = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-ntfy}";
image = "docker-archive:${pkgs.dockerImages.ntfy}";
networks = [
networks.ntfy.ref
networks.traefik.ref

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
autheliaClientId = "3U5O3TkoIFb3bz3MMqscGEDx2wkT2G48iLLJalqSKA40zCweSBfgORGNMjDEidz4qiQ93qIoW2UlgTyLfzAwbklTvwHJPcarmXaq";
@@ -90,7 +88,7 @@ in
containers = {
outline = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-outline}";
image = "docker-archive:${pkgs.dockerImages.outline}";
networks = [
networks.outline.ref
networks.traefik.ref
@@ -143,7 +141,7 @@ in
outline-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.outline.ref ];
volumes = [ "${volumes.outline-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {
@@ -157,7 +155,7 @@ in
};
outline-redis.containerConfig = {
image = "docker-archive:${selfPkgs.docker-redis}";
image = "docker-archive:${pkgs.dockerImages.redis}";
networks = [ networks.outline.ref ];
volumes = [ "${volumes.outline-redis.ref}:/var/lib/redis" ];
exec = [ "--save 60 1" ];

View File

@@ -3,12 +3,10 @@
config,
inputs,
pkgs,
system,
lib,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
jupiterVpsConfig = inputs.self.nixosConfigurations.jupiter-vps.config;
in
@@ -19,7 +17,7 @@ in
# The below containers all need to run as root to collect host metrics.
virtualisation.quadlet.containers = {
prometheus-node-exporter.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus-node-exporter}";
image = "docker-archive:${pkgs.dockerImages.prometheus-node-exporter}";
# Allow collecting host metrics, port :9100 by default
networks = [ "host" ];
podmanArgs = [
@@ -56,14 +54,14 @@ in
};
prometheus-podman-exporter.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus-podman-exporter}";
image = "docker-archive:${pkgs.dockerImages.prometheus-podman-exporter}";
publishPorts = [ "9882:9882/tcp" ];
volumes = [ "/run/podman/podman.sock:/run/podman/podman.sock:ro" ];
exec = [ "--collector.enable-all" ];
};
prometheus-smartctl-exporter.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus-smartctl-exporter}";
image = "docker-archive:${pkgs.dockerImages.prometheus-smartctl-exporter}";
publishPorts = [ "9633:9633/tcp" ];
podmanArgs = [ "--privileged" ];
};
@@ -84,7 +82,7 @@ in
containers = {
prometheus-node-exporter.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus-node-exporter}";
image = "docker-archive:${pkgs.dockerImages.prometheus-node-exporter}";
networks = [ networks.prometheus.ref ];
volumes =
let
@@ -100,7 +98,7 @@ in
};
prometheus-podman-exporter.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus-podman-exporter}";
image = "docker-archive:${pkgs.dockerImages.prometheus-podman-exporter}";
networks = [ networks.prometheus.ref ];
volumes =
let
@@ -111,7 +109,7 @@ in
};
prometheus.containerConfig = {
image = "docker-archive:${selfPkgs.docker-prometheus}";
image = "docker-archive:${pkgs.dockerImages.prometheus}";
volumes =
let
prometheusConfig = (pkgs.formats.yaml { }).generate "prometheus.yaml" {

View File

@@ -3,11 +3,9 @@
config,
inputs,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) containers volumes networks;
in
@@ -48,7 +46,7 @@ in
containers = {
shlink = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-shlink}";
image = "docker-archive:${pkgs.dockerImages.shlink}";
networks = [
networks.shlink.ref
networks.traefik.ref
@@ -97,7 +95,7 @@ in
shlink-web-client = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-shlink-web-client}";
image = "docker-archive:${pkgs.dockerImages.shlink-web-client}";
networks = [
networks.shlink.ref
networks.traefik.ref
@@ -118,7 +116,7 @@ in
shlink-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.shlink.ref ];
volumes = [ "${volumes.shlink-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {

View File

@@ -4,11 +4,9 @@
inputs,
lib,
pkgs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
in
@@ -23,7 +21,7 @@ in
containers.sish = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-sish}";
image = "docker-archive:${pkgs.dockerImages.sish}";
networks = [
networks.sish.ref
networks.traefik.ref

View File

@@ -2,12 +2,10 @@
{
config,
inputs,
system,
pkgs,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks volumes containers;
in
@@ -42,7 +40,7 @@ in
containers = {
traefik = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-traefik}";
image = "docker-archive:${pkgs.dockerImages.traefik}";
networks = [
networks.traefik-ext.ref
networks.traefik.ref

View File

@@ -3,12 +3,9 @@
config,
inputs,
pkgs,
system,
lib,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) volumes containers networks;
autheliaClientId = "G9g4cRccYM1tpTO8rLqziThUlZFT4BwlvittHRSbZOJK3rfkpFKUQylI7SI40KmZDzavPrQhEWXWGspS3hxrwH9PesDw5A1EECEZ";
@@ -86,7 +83,7 @@ in
containers = {
vaultwarden = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-oidcwarden}";
image = "docker-archive:${pkgs.dockerImages.oidcwarden}";
volumes = [ "${volumes.vaultwarden.ref}:/var/lib/vaultwarden" ];
networks = [
networks.vaultwarden.ref
@@ -129,7 +126,7 @@ in
vaultwarden-postgresql = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-postgresql}";
image = "docker-archive:${pkgs.dockerImages.postgresql}";
networks = [ networks.vaultwarden.ref ];
volumes = [ "${volumes.vaultwarden-postgresql.ref}:/var/lib/postgresql/data" ];
environments = {

View File

@@ -1,12 +1,6 @@
{ user, home }:
{
config,
inputs,
system,
...
}:
{ config, pkgs, ... }:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
in
@@ -15,7 +9,7 @@ in
networks.whoami = { };
containers.whoami.containerConfig = {
image = "docker-archive:${selfPkgs.docker-whoami}";
image = "docker-archive:${pkgs.dockerImages.whoami}";
networks = [
networks.whoami.ref
networks.traefik.ref