feat: add NixOS module for Jellyfin integration #17

Merged
sscoble merged 1 commit from issue-8-nixos-module into main 2026-05-16 04:55:59 +00:00

View file

@ -68,5 +68,50 @@
) { };
}
);
nixosModules.default =
{ config, lib, pkgs, ... }:
let
cfg = config.services.jellyfin-lessons;
in
{
options.services.jellyfin-lessons = {
enable = lib.mkEnableOption "Jellyfin Lessons plugin";
dataDir = lib.mkOption {
type = lib.types.str;
default = "/var/lib/jellyfin-lessons";
description = "Directory for lessons database";
};
adminPort = lib.mkOption {
type = lib.types.port;
default = 3099;
description = "Port for admin UI";
};
};
config = lib.mkIf cfg.enable {
# Copy plugin DLL to Jellyfin plugins directory on jellyfin preStart
systemd.services.jellyfin = {
preStart = let
pluginPkg = self.packages.${pkgs.system}.default;
in ''
mkdir -p /var/lib/jellyfin/plugins/Lessons
cp -f ${pluginPkg}/lib/jellyfin-lessons/*.dll /var/lib/jellyfin/plugins/Lessons/
'';
};
# Admin UI as a user systemd service
systemd.user.services.jellyfin-lessons-admin = {
description = "Jellyfin Lessons Admin UI";
after = [ "network.target" ];
wantedBy = [ "default.target" ];
serviceConfig = {
ExecStart = "${pkgs.nodejs}/bin/node ${self}/admin-ui/server.js";
Restart = "on-failure";
Environment = "PORT=${toString cfg.adminPort}";
};
};
};
};
};
}