47 lines
1.0 KiB
Nix
47 lines
1.0 KiB
Nix
# 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";
|
|
}
|
|
];
|
|
};
|
|
}
|