diff --git a/modules/nixos/options.nix b/modules/nixos/options.nix index 7e930b9..0286dec 100644 --- a/modules/nixos/options.nix +++ b/modules/nixos/options.nix @@ -153,6 +153,7 @@ cloudflare-dyndns.enable = lib.mkEnableOption "cloudflare-dyndns"; glance.enable = lib.mkEnableOption "glance"; hydra.enable = lib.mkEnableOption "hydra"; + immich.enable = lib.mkEnableOption "immich"; vscode-server.enable = lib.mkEnableOption "vscode-server"; wanikani-bypass-lessons.enable = lib.mkEnableOption "wanikani-bypass-lessons"; wanikani-fetch-data.enable = lib.mkEnableOption "wanikani-fetch-data"; diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 175a34c..3143a49 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -10,6 +10,7 @@ ./forgejo.nix ./glance.nix ./hydra.nix + ./immich.nix ./jellyfin.nix ./mailserver.nix ./nginx.nix diff --git a/modules/nixos/services/immich.nix b/modules/nixos/services/immich.nix new file mode 100644 index 0000000..0605114 --- /dev/null +++ b/modules/nixos/services/immich.nix @@ -0,0 +1,43 @@ +{ config, lib, ... }: + +{ + config = lib.mkMerge [ + (lib.mkIf config.osbmModules.services.immich.enable { + services.immich = { + enable = true; + }; + }) + + # immich and nginx + (lib.mkIf (config.osbmModules.services.nginx.enable && config.osbmModules.services.immich.enable) { + services.nginx.virtualHosts."immich.osbm.dev" = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://localhost:${toString config.services.immich.port}"; + proxyWebsockets = true; + }; + }; + }) + + # impermanence and immich + (lib.mkIf + ( + config.osbmModules.services.immich.enable + && config.osbmModules.hardware.disko.zfs.root.impermanenceRoot + ) + { + environment.persistence."/persist" = { + directories = [ + { + directory = "/var/lib/immich"; + user = config.services.immich.user; + group = config.services.immich.group; + mode = "0750"; + } + ]; + }; + } + ) + ]; +}