Compare commits

...

3 Commits

Author SHA1 Message Date
Alexander Heldt
3d5c00f741 manatee: Add enable option to jellyfin module 2025-05-09 21:26:22 +02:00
Alexander Heldt
9f37b19502 manatee: Add immich module 2025-05-09 21:26:21 +02:00
Alexander Heldt
7bca2c9135 manatee: Add public directory in cameras ZFS dataset 2025-05-06 16:48:46 +00:00
4 changed files with 104 additions and 34 deletions

View File

@@ -28,6 +28,23 @@
};
};
};
"10-cameras-public" = {
"/mnt/cameras/public" = {
d = {
# Create directory
user = "storage";
group = "storage";
mode = "2775";
};
z = {
# Ensure permissions are inherited
user = "storage";
group = "storage";
mode = "2775";
};
};
};
};
networking.hostId = "0a9474e7"; # Required by ZFS

View File

@@ -15,6 +15,8 @@ in
transmission.enable = true;
audiobookshelf.enable = true;
jellyfin.enable = true;
immich.enable = true;
};
};
}

View File

@@ -0,0 +1,35 @@
{ lib, config, ... }:
let
enabled = config.mod.immich.enable;
in
{
options = {
mod.immich = {
enable = lib.mkEnableOption "Enable immich module";
};
};
config = lib.mkIf enabled {
users.users.immich = {
isSystemUser = true;
group = "storage";
extraGroups = [
"render"
"video"
];
};
services.immich = {
enable = true;
user = "immich";
group = "storage";
host = "0.0.0.0";
mediaLocation = "/mnt/cameras/public";
accelerationDevices = [ "/dev/dri/renderD128" ];
};
};
}

View File

@@ -1,39 +1,55 @@
{ pkgs, ... }:
{
users.users.jellyfin = {
isSystemUser = true;
group = "storage";
lib,
pkgs,
config,
...
}:
let
enabled = config.mod.jellyfin.enable;
in
{
options = {
mod.jellyfin = {
enable = lib.mkEnableOption "Enable jellyfin module";
};
};
extraGroups = [
"render"
"video"
config = lib.mkIf enabled {
users.users.jellyfin = {
isSystemUser = true;
group = "storage";
extraGroups = [
"render"
"video"
];
};
hardware = {
graphics = {
enable = true;
extraPackages = [
pkgs.intel-media-driver # Modern Intel VA-API driver (needed for N305)
pkgs.libvdpau-va-gl # VDPAU backend for VA-API GLX interop
];
};
};
services = {
jellyfin = {
enable = true;
openFirewall = true;
user = "jellyfin";
group = "storage";
};
};
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
};
hardware = {
graphics = {
enable = true;
extraPackages = [
pkgs.intel-media-driver # Modern Intel VA-API driver (needed for N305)
pkgs.libvdpau-va-gl # VDPAU backend for VA-API GLX interop
];
};
};
services = {
jellyfin = {
enable = true;
openFirewall = true;
user = "jellyfin";
group = "storage";
};
};
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
}