feat: add module for immich service
Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
This commit is contained in:
parent
d3fd3e2c57
commit
d32004c45a
17
flake.lock
17
flake.lock
@ -693,6 +693,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-immich": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727171772,
|
||||||
|
"narHash": "sha256-6T0ctDFq0lepqjViL8TVw4RhpkHIUyoNWzPgTjPamZo=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d026e3fa1ad0d78d9072d9afdeae515d2d68acae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d026e3fa1ad0d78d9072d9afdeae515d2d68acae",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726362065,
|
"lastModified": 1726362065,
|
||||||
@ -795,6 +811,7 @@
|
|||||||
"nil": "nil",
|
"nil": "nil",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-immich": "nixpkgs-immich",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"snowfall-lib": "snowfall-lib",
|
"snowfall-lib": "snowfall-lib",
|
||||||
"srvos": "srvos",
|
"srvos": "srvos",
|
||||||
|
@ -101,6 +101,7 @@
|
|||||||
nil.inputs.nixpkgs.follows = "nixpkgs";
|
nil.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-immich.url = "github:nixos/nixpkgs/d026e3fa1ad0d78d9072d9afdeae515d2d68acae";
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||||
|
|
||||||
nur.url = "github:nix-community/nur";
|
nur.url = "github:nix-community/nur";
|
||||||
|
55
modules/nixos/services/immich/default.nix
Normal file
55
modules/nixos/services/immich/default.nix
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
"${inputs.nixpkgs-immich}/nixos/modules/services/web-apps/immich.nix"
|
||||||
|
];
|
||||||
|
|
||||||
|
options.snowflake.services.immich = {
|
||||||
|
enable = lib.mkEnableOption "Enable immich service";
|
||||||
|
|
||||||
|
domain = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
description = "Configuration domain to use for the immich service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
cfg = config.snowflake.services.immich;
|
||||||
|
in
|
||||||
|
lib.mkIf cfg.enable {
|
||||||
|
services.immich = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.nixpkgs-immich.legacyPackages.x86_64-linux.immich;
|
||||||
|
mediaLocation = "/storage/media/immich-library";
|
||||||
|
port = 9121;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.immich.extraGroups = ["media" "video" "render"];
|
||||||
|
|
||||||
|
# Requires services.nginx.enable.
|
||||||
|
services.nginx = {
|
||||||
|
virtualHosts = {
|
||||||
|
"${cfg.domain}" = {
|
||||||
|
serverName = "${cfg.domain}";
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${config.services.immich.host}:${toString config.services.immich.port}/";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 0;
|
||||||
|
proxy_connect_timeout 600;
|
||||||
|
proxy_read_timeout 600;
|
||||||
|
proxy_send_timeout 600;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -128,6 +128,11 @@
|
|||||||
dbPasswordFile = userdata.secrets.services.gitea.password;
|
dbPasswordFile = userdata.secrets.services.gitea.password;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
immich = {
|
||||||
|
enable = true;
|
||||||
|
domain = "photos.deku.moe";
|
||||||
|
};
|
||||||
|
|
||||||
miniflux = {
|
miniflux = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "flux.deku.moe";
|
domain = "flux.deku.moe";
|
||||||
|
Loading…
Reference in New Issue
Block a user