aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configuration.nix6
-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
-rw-r--r--settings.nix7
8 files changed, 75 insertions, 10 deletions
diff --git a/configuration.nix b/configuration.nix
index cb191a2..6622ec1 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -11,12 +11,6 @@
./modules/monitoring
];
- # services.shiori = {
- # enable = true;
- # port = 3144;
- # };
- # networking.firewall.allowedTCPPorts = [ 3144 ];
-
environment.systemPackages = with pkgs; [
bottom
mtm
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
+ ];
+}
diff --git a/settings.nix b/settings.nix
index 968bfff..ed2f212 100644
--- a/settings.nix
+++ b/settings.nix
@@ -19,6 +19,7 @@ in lib.recursiveUpdate privateSettings rec {
prometheus = 9001;
prometheusNodeExporter = 9002;
send = 1443;
+ immich = 3144;
};
exposeTransmissionRPC = false;
};
@@ -28,6 +29,12 @@ in lib.recursiveUpdate privateSettings rec {
group = "git";
};
+ immich = {
+ baseDir = "/media/_immich";
+ user = "immich";
+ group = "immich";
+ };
+
syncthing = {
baseDir = "/media/syncthing";
photosDir = "${syncthing.baseDir}/photos";