summaryrefslogtreecommitdiff
path: root/modules/nixosModules/server/jellyfin.nix
blob: 431022d32283583c9c362cbcbdfd3ff82696a5bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  self,
  lib,
  ...
}: {
  flake.nixosModules.jellyfin = {
    config,
    pkgs,
    ...
  }: let
    cfg = config.hostOptions.server;
  in {
    imports = [
      self.nixosModules.hostOptions
      self.nixosModules.nginx
    ];

    services.jellyfin = {
      enable = true;
      openFirewall = false;
      dataDir = "${cfg.dataPath}/jellyfin/";
      hardwareAcceleration = {
        enable = true;
        device = lib.mkDefault "/dev/dri/renderD128";
      };
    };

    # transcoding
    users.users.jellyfin.extraGroups = ["video" "render"];
    environment.systemPackages = with pkgs; [jellyfin-ffmpeg];

    services.nginx.virtualHosts."jellyfin.${cfg.domain}" = {
      enableACME = true;
      forceSSL = true;
      locations."/" = {
        proxyPass = "http://127.0.0.1:8096";
        proxyWebsockets = true;
        extraConfig = ''
          proxy_buffering off;
        '';
      };
    };
  };
}