From cf4cf866c91309d344a5d7432e0f5b4003a98b07 Mon Sep 17 00:00:00 2001 From: Bryan Ramos Date: Thu, 12 Mar 2026 19:48:38 -0400 Subject: [PATCH] immich init --- src/system/machines/server/system.nix | 4 ++- src/system/modules/immich/default.nix | 39 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/system/modules/immich/default.nix diff --git a/src/system/machines/server/system.nix b/src/system/machines/server/system.nix index a52d6e4..5dad7cf 100644 --- a/src/system/machines/server/system.nix +++ b/src/system/machines/server/system.nix @@ -8,6 +8,7 @@ nginx.enable = true; forgejo.enable = true; frigate.enable = false; + immich.enable = true; backup = { enable = true; @@ -15,8 +16,9 @@ "${config.user.keys.age.yubikey}" "${config.machines.keys.desktop.ssh}" ]; + paths = [ "/root/.config/rclone" ]; destination = "gdrive:backups/server"; - schedule = "weekly"; + schedule = "daily"; keepLast = 2; }; }; diff --git a/src/system/modules/immich/default.nix b/src/system/modules/immich/default.nix new file mode 100644 index 0000000..6a32160 --- /dev/null +++ b/src/system/modules/immich/default.nix @@ -0,0 +1,39 @@ +{ pkgs, lib, config, ... }: + +with lib; +let + cfg = config.modules.system.immich; + nginx = config.modules.system.nginx; + domain = "ramos.codes"; + port = 2283; + +in +{ + options.modules.system.immich = { + enable = mkEnableOption "Immich Photo Server"; + }; + + config = mkIf cfg.enable { + services.immich = { + enable = true; + port = port; + host = "127.0.0.1"; + mediaLocation = "/var/lib/immich"; + machine-learning.enable = false; + }; + + modules.system.backup.paths = [ + "/var/lib/immich" + ]; + + services.nginx.virtualHosts."photos.${domain}" = mkIf nginx.enable { + useACMEHost = domain; + forceSSL = true; + clientMaxBodySize = "50G"; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString port}"; + proxyWebsockets = true; + }; + }; + }; +}