aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/dashboard/default.nix10
-rw-r--r--modules/dashboard/links.nix7
-rw-r--r--modules/media/default.nix4
-rw-r--r--modules/network/default.nix1
-rw-r--r--modules/storage/default.nix3
-rw-r--r--modules/storage/immich.nix47
6 files changed, 68 insertions, 4 deletions
diff --git a/modules/dashboard/default.nix b/modules/dashboard/default.nix
index 9bde252..f3c55ff 100644
--- a/modules/dashboard/default.nix
+++ b/modules/dashboard/default.nix
@@ -1,10 +1,18 @@
-{ settings, ... }:
+{ settings, lib, ... }:
+with lib;
let
links = import ./links.nix { inherit settings; };
+ isKeysUnique =
+ let linkKeys = map (l: l.key) (filter (hasAttr "key") links);
+ in length linkKeys == length (lib.unique linkKeys);
in
{
imports = [ ../../services/bacchus-dashboard/bacchus-dashboard.service.nix ];
+ assertions = [
+ { assertion = isKeysUnique; message = "The dashboard link 'key' property must be unique"; }
+ ];
+
services.bacchus-dashboard = {
enable = true;
openFirewall = true;
diff --git a/modules/dashboard/links.nix b/modules/dashboard/links.nix
index 9a89c2b..1ccded8 100644
--- a/modules/dashboard/links.nix
+++ b/modules/dashboard/links.nix
@@ -66,4 +66,11 @@ in [
altUrl = "http://${host}:${toString ports.send}";
color = "#AA5CC3";
}
+ {
+ title = "Immich";
+ key = "i";
+ url = "http://photos.local";
+ altUrl = "http://${host}:${toString ports.immich}";
+ color = "#fa2921";
+ }
]
diff --git a/modules/media/default.nix b/modules/media/default.nix
index a472992..755f18e 100644
--- a/modules/media/default.nix
+++ b/modules/media/default.nix
@@ -3,11 +3,11 @@
imports = [ ./torrent.nix ];
systemd.tmpfiles.rules = [
- "d ${settings.media.baseDir} 0770 - ${settings.media.group} - -"
+ "d ${settings.media.baseDir} 0755 - ${settings.media.group} - -"
"d ${settings.media.downloadsDir} 0770 transmission ${settings.media.group} - -"
"d ${settings.media.tvDir} 0770 sonarr ${settings.media.group} - -"
"d ${settings.media.moviesDir} 0770 radarr ${settings.media.group} - -"
- "d ${settings.media.musicDir} 0770 radarr ${settings.media.group} - -"
+ "d ${settings.media.musicDir} 0770 lidarr ${settings.media.group} - -"
];
users.groups.${settings.media.group} = { };
users.users.bacchus.extraGroups = [ settings.media.group ];
diff --git a/modules/network/default.nix b/modules/network/default.nix
index 8f706c0..93f41a8 100644
--- a/modules/network/default.nix
+++ b/modules/network/default.nix
@@ -30,6 +30,7 @@ in
"ntfy.local" = { inherit host; port = ports.ntfy; };
"grafana.local" = { inherit host; port = ports.grafana; extraNginxOptions.recommendedProxySettings = true; };
"send.local" = { inherit host; port = ports.send; };
+ "photos.local" = { inherit host; port = ports.immich; };
};
};
diff --git a/modules/storage/default.nix b/modules/storage/default.nix
index bbb9267..d4e8da9 100644
--- a/modules/storage/default.nix
+++ b/modules/storage/default.nix
@@ -1,8 +1,9 @@
{ ... }:
{
imports = [
- ./syncthing.nix
./git.nix
+ ./immich.nix
./send.nix
+ ./syncthing.nix
];
}
diff --git a/modules/storage/immich.nix b/modules/storage/immich.nix
new file mode 100644
index 0000000..2f3e4f1
--- /dev/null
+++ b/modules/storage/immich.nix
@@ -0,0 +1,47 @@
+{ settings, ... }:
+let
+ ports = settings.network.ports;
+in
+{
+ systemd.tmpfiles.rules = [
+ "d ${settings.immich.baseDir} 0770 ${settings.immich.user} ${settings.immich.group} - -"
+ ];
+
+ services.immich = {
+ enable = true;
+ host = "0.0.0.0";
+ port = ports.immich;
+ group = settings.immich.group;
+ user = settings.immich.user;
+ openFirewall = true;
+ mediaLocation = settings.immich.baseDir;
+ machine-learning.enable = false;
+ settings = {
+ library.watch.enabled = true;
+ library.scan = {
+ enabled = true;
+ cron = "0 */5 * * *";
+ };
+ trash = {
+ enabled = true;
+ days = 15;
+ };
+ backup.database = {
+ enabled = false;
+ cronExpression = "0 02 * * *";
+ };
+ server.externalDomain = "http://photos.local";
+ passwordLogin.enabled = true;
+ newVersionCheck.enabled = false;
+ map.enabled = false;
+ machineLearning.enabled = false;
+ };
+ };
+
+ users.users.bacchus.extraGroups = [ settings.immich.group ];
+ users.users.${settings.immich.user}.extraGroups = [
+ settings.immich.group
+ settings.syncthing.group
+ settings.media.group
+ ];
+}