Added Immich service
This commit is contained in:
parent
feef193d6e
commit
18021fb910
7 changed files with 147 additions and 0 deletions
|
|
@ -55,6 +55,12 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
immich.proxy = {
|
||||||
|
enable = true;
|
||||||
|
domain = p.domains.public;
|
||||||
|
host = p.hosts.immich;
|
||||||
|
};
|
||||||
|
|
||||||
media-mgr = {
|
media-mgr = {
|
||||||
proxy = {
|
proxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -222,4 +222,15 @@ in
|
||||||
# specialArgs = { };
|
# specialArgs = { };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
immich = nixpkgs.lib.nixosSystem {
|
||||||
|
pkgs = pkgs "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
myModules
|
||||||
|
proxmoxModule
|
||||||
|
./immich
|
||||||
|
agenix.nixosModules.default
|
||||||
|
];
|
||||||
|
# specialArgs = { };
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ in
|
||||||
"nextcloud"
|
"nextcloud"
|
||||||
"portainer"
|
"portainer"
|
||||||
"vaultwarden"
|
"vaultwarden"
|
||||||
|
"immich"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -134,6 +135,15 @@ in
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
immich.deployment = {
|
||||||
|
targetHost = hosts.immich;
|
||||||
|
tags = [
|
||||||
|
"lxc"
|
||||||
|
"bacco"
|
||||||
|
"immich"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
deadbeef.deployment = {
|
deadbeef.deployment = {
|
||||||
allowLocalDeployment = true;
|
allowLocalDeployment = true;
|
||||||
targetHost = null;
|
targetHost = null;
|
||||||
|
|
|
||||||
32
hosts/immich/default.nix
Normal file
32
hosts/immich/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
my = {
|
||||||
|
utils = {
|
||||||
|
commons.enable = true;
|
||||||
|
lxc-standard.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.immich = {
|
||||||
|
enable = true;
|
||||||
|
mediaDir = "/mnt/immich";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.nas-samba-share = {
|
||||||
|
enable = true;
|
||||||
|
allowUsers = [ config.services.immich.user ];
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.proxmox.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Extra packages
|
||||||
|
environment.systemPackages = with pkgs; [ ];
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
shadowsocks = "shadowsocks.internal";
|
shadowsocks = "shadowsocks.internal";
|
||||||
mpd = "192.168.1.7";
|
mpd = "192.168.1.7";
|
||||||
librechat = "librechat.internal";
|
librechat = "librechat.internal";
|
||||||
|
immich = "immich.internal";
|
||||||
};
|
};
|
||||||
domains = {
|
domains = {
|
||||||
public = "pasetto.me";
|
public = "pasetto.me";
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./authentik.nix
|
./authentik.nix
|
||||||
./dashy.nix
|
./dashy.nix
|
||||||
|
./immich.nix
|
||||||
./media-mgr.nix
|
./media-mgr.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./plex.nix
|
./plex.nix
|
||||||
|
|
|
||||||
86
modules/services/immich.nix
Normal file
86
modules/services/immich.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.services.immich;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.my.services.immich = {
|
||||||
|
enable = lib.mkEnableOption "Enable Immich photo albums module";
|
||||||
|
|
||||||
|
mediaDir = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
default = "/var/lib/immich/media";
|
||||||
|
description = "Directory with Immich will store media files";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.any;
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Settings for Immich
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
proxy = {
|
||||||
|
enable = lib.mkEnableOption "Set the proxy entry for this service";
|
||||||
|
|
||||||
|
domain = lib.mkOption {
|
||||||
|
default = "example.com";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The domain where Caddy is reachable
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
subdomain = lib.mkOption {
|
||||||
|
default = "photos";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The subdomain where Immich is reachable
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
host = lib.mkOption {
|
||||||
|
default = "localhost";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
host name where the service is running
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
services.immich = {
|
||||||
|
enable = true;
|
||||||
|
host = "0.0.0.0";
|
||||||
|
openFirewall = true;
|
||||||
|
redis.enable = true;
|
||||||
|
mediaLocation = cfg.mediaDir;
|
||||||
|
machine-learning.enable = true;
|
||||||
|
database = {
|
||||||
|
enable = true;
|
||||||
|
createDB = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.proxy.enable {
|
||||||
|
services.caddy = with cfg.proxy; {
|
||||||
|
virtualHosts."${subdomain}.${domain}".extraConfig = ''
|
||||||
|
reverse_proxy http://${host}:${toString config.services.immich.port}
|
||||||
|
import cloudflare_${domain}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue