feat: add NixOS module for Jellyfin integration #17
1 changed files with 45 additions and 0 deletions
45
flake.nix
45
flake.nix
|
|
@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue