feat(jupiter): native Immich profile module (docker → NixOS) #10

Merged
finn.markwitz merged 5 commits from feat/immich-nixos-module into main 2026-08-07 11:13:41 +02:00
3 changed files with 48 additions and 0 deletions
Showing only changes of commit e9a5781944 - Show all commits
+1
View File
@@ -21,6 +21,7 @@ in
sonarr.enable = true; sonarr.enable = true;
jellyfin.enable = true; jellyfin.enable = true;
jellyseerr.enable = true; jellyseerr.enable = true;
immich.enable = true;
development.enable = true; development.enable = true;
home-assistant.enable = true; home-assistant.enable = true;
+1
View File
@@ -19,5 +19,6 @@
./sonarr ./sonarr
./jellyfin ./jellyfin
./jellyseerr ./jellyseerr
./immich
]; ];
} }
+46
View File
@@ -0,0 +1,46 @@
# Immich self-hosted photo & video server
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.profiles.immich;
hostName = config.networking.hostName;
port = 2283;
in
{
options.my.profiles.immich = with lib; {
enable = mkEnableOption "Immich photo server";
};
config = lib.mkIf cfg.enable {
services.immich = {
enable = true;
host = "0.0.0.0";
inherit port;
openFirewall = true;
mediaLocation = "/var/lib/immich";
machine-learning.enable = true;
accelerationDevices = [ "/dev/dri/renderD128" ];
settings.server.externalDomain = "http://${hostName}:${toString port}";
};
# The native module does not add GPU groups; required for VAAPI/QSV transcoding.
users.users.immich.extraGroups = [
"video"
"render"
];
my.homepage.services = [
{
group = "Media";
name = "Immich";
description = "Photo & video server";
href = "http://${hostName}:${toString port}";
icon = "immich.png";
}
];
};
}