Compare commits

...

3 commits

View file

@ -32,7 +32,7 @@ let
{ {
host = "${hostVarLibDir}/postgres"; host = "${hostVarLibDir}/postgres";
# Adjust based on container postgres data dir # Adjust based on container postgres data dir
container = "/var/lib/postgresql/17"; container = "/var/lib/postgresql/16";
user = "postgres"; user = "postgres";
uid = config.ids.uids.postgres; uid = config.ids.uids.postgres;
gid = config.ids.gids.postgres; gid = config.ids.gids.postgres;
@ -149,81 +149,84 @@ in
... ...
}: }:
{ {
config = { config = lib.mkMerge [
system.stateVersion = "25.05"; {
system.stateVersion = "25.05";
networking = { networking = {
firewall = { firewall = {
enable = true;
allowedTCPPorts = [
2283
];
};
# Use systemd-resolved inside the container
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
useHostResolvConf = lib.mkForce false;
};
services.resolved.enable = true;
# Ensure users exist on container
inherit users;
services.postgresql = {
enable = true; enable = true;
allowedTCPPorts = [ package = pkgs.postgresql_16.withPackages (ps: [ ps.pgvecto-rs ]);
2283 enableJIT = true;
authentication = ''
local all all trust
host all all 127.0.0.1/8 trust
host all all ::1/128 trust
host all all fc00::1/128 trust
'';
ensureDatabases = [ "immich" ];
ensureUsers = [
{
name = "immich";
ensureDBOwnership = true;
ensureClauses.login = true;
}
]; ];
settings = {
shared_preload_libraries = [ "vectors.so" ];
};
}; };
# Use systemd-resolved inside the container
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
useHostResolvConf = lib.mkForce false;
};
services.resolved.enable = true;
# Ensure users exist on container # Backup database
inherit users; services.postgresqlBackup = {
services.postgresql = {
enable = true;
package = pkgs.postgresql_17.withPackages (ps: [ ps.pgvecto-rs ]);
enableJIT = true;
authentication = ''
local all all trust
host all all 127.0.0.1/8 trust
host all all ::1/128 trust
host all all fc00::1/128 trust
'';
ensureDatabases = [ "immich" ];
ensureUsers = [
{
name = "immich";
ensureDBOwnership = true;
ensureClauses.login = true;
}
];
settings = {
shared_preload_libraries = [ "vectors.so" ];
};
};
# Backup database
services.postgresqlBackup = {
enable = true;
};
services.immich = {
enable = true;
host = "0.0.0.0";
port = 2283;
openFirewall = true;
mediaLocation = "/var/lib/immich";
database = {
enable = true; enable = true;
createDB = false; # We create it manually above
name = "immich";
user = "immich";
}; };
redis.enable = true;
machine-learning.enable = true; services.immich = {
settings = { enable = true;
server.externalDomain = "https://photos.joshuabell.xyz"; host = "0.0.0.0";
newVersionCheck.enabled = false; port = 2283;
openFirewall = true;
mediaLocation = "/var/lib/immich";
database = {
enable = true;
createDB = false; # We create it manually above
name = "immich";
user = "immich";
};
redis.enable = true;
machine-learning.enable = true;
settings = {
server.externalDomain = "https://photos.joshuabell.xyz";
newVersionCheck.enabled = false;
};
}; };
};
systemd.services.immich-server = { systemd.services.immich-server = {
requires = [ "postgresql.service" ]; requires = [ "postgresql.service" ];
after = [ "postgresql.service" ]; after = [ "postgresql.service" ];
}; };
}
# Allow Immich user to access the media directory {
users.users.immich.extraGroups = [ "video" "render" ]; # Allow Immich user to access the media directory for hardware transcoding
}; users.users.immich.extraGroups = [ "video" "render" ];
}
];
}; };
}; };
}; };