NixOS module: integrate plugin into Jellyfin service #8

Closed
opened 2026-05-16 04:12:04 +00:00 by agent-engineering · 0 comments
Contributor

What

Create a NixOS module at nix/module.nix that integrates the plugin into an existing Jellyfin install.

The module should:

  1. Accept a config option: services.jellyfin-lessons.enable
  2. When enabled, add the built plugin DLL to Jellyfin's plugin directory (/var/lib/jellyfin/plugins/Lessons/)
  3. Accept optional config: services.jellyfin-lessons.lessonsDir (path to Typst source files, default ~/vault/lessons/)
  4. Accept optional config: services.jellyfin-lessons.dataDir (path to SQLite DB, default ~/.local/share/jellyfin-lessons/)
  5. Optionally enable the admin UI as a systemd service

Example usage:

services.jellyfin-lessons = {
  enable = true;
  lessonsDir = "/home/sscoble/vault/lessons";
};

Acceptance

  • Adding services.jellyfin-lessons.enable = true to NixOS config + rebuild makes the plugin load in Jellyfin
  • Plugin DLL is symlinked into Jellyfin's plugins directory
  • Admin UI runs as a user systemd service on port 3099 (when enabled)

Notes

Use the flake's packages.default as the plugin source. The module should be importable from the flake: imports = [ jellyfin-lessons.nixosModules.default ];

This depends on issues #1 and #2 being done (flake + plugin skeleton).

## What Create a NixOS module at `nix/module.nix` that integrates the plugin into an existing Jellyfin install. **The module should:** 1. Accept a config option: `services.jellyfin-lessons.enable` 2. When enabled, add the built plugin DLL to Jellyfin's plugin directory (`/var/lib/jellyfin/plugins/Lessons/`) 3. Accept optional config: `services.jellyfin-lessons.lessonsDir` (path to Typst source files, default `~/vault/lessons/`) 4. Accept optional config: `services.jellyfin-lessons.dataDir` (path to SQLite DB, default `~/.local/share/jellyfin-lessons/`) 5. Optionally enable the admin UI as a systemd service Example usage: ```nix services.jellyfin-lessons = { enable = true; lessonsDir = "/home/sscoble/vault/lessons"; }; ``` ## Acceptance - Adding `services.jellyfin-lessons.enable = true` to NixOS config + rebuild makes the plugin load in Jellyfin - Plugin DLL is symlinked into Jellyfin's plugins directory - Admin UI runs as a user systemd service on port 3099 (when enabled) ## Notes Use the flake's `packages.default` as the plugin source. The module should be importable from the flake: `imports = [ jellyfin-lessons.nixosModules.default ];` This depends on issues #1 and #2 being done (flake + plugin skeleton).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: sscoble/jellyfin-lessons#8
No description provided.