From ce6ffd9ee737ffa35002eca58da39fb1fa9b2152 Mon Sep 17 00:00:00 2001 From: Jimbo Date: Thu, 16 Jan 2025 00:41:00 -0500 Subject: [PATCH] Add Jellyfin. 73 --- hosts/kitty/default.nix | 1 + modules/system/accounts/users/system/default.nix | 1 + .../accounts/users/system/jellyfin/default.nix | 12 ++++++++++++ modules/system/services/server/default.nix | 3 +-- .../system/services/server/fileserver/default.nix | 13 +++++++++++++ .../services/server/fileserver/jellyfin/default.nix | 8 ++++++++ .../server/fileserver/jellyfin/nginx/default.nix | 11 +++++++++++ .../nextcloud/collabora/default.nix | 0 .../server/{ => fileserver}/nextcloud/default.nix | 2 +- .../{ => fileserver}/nextcloud/nginx/default.nix | 0 .../server/{ => fileserver}/nfs/default.nix | 2 +- modules/system/services/server/icecast/default.nix | 2 +- .../server/icecast/liquidsoap/jimbops/default.nix | 2 +- .../icecast/liquidsoap/jimscrapped/default.nix | 4 ++-- .../services/server/icecast/nginx/default.nix | 2 +- 15 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 modules/system/accounts/users/system/jellyfin/default.nix create mode 100644 modules/system/services/server/fileserver/default.nix create mode 100644 modules/system/services/server/fileserver/jellyfin/default.nix create mode 100644 modules/system/services/server/fileserver/jellyfin/nginx/default.nix rename modules/system/services/server/{ => fileserver}/nextcloud/collabora/default.nix (100%) rename modules/system/services/server/{ => fileserver}/nextcloud/default.nix (94%) rename modules/system/services/server/{ => fileserver}/nextcloud/nginx/default.nix (100%) rename modules/system/services/server/{ => fileserver}/nfs/default.nix (84%) diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 020096b..de0113e 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -19,6 +19,7 @@ system = { desktop.enable = false; server.enable = true; + fileserver.enable = true; socials.enable = true; wireless.enable = false; wireguard.server.enable = true; diff --git a/modules/system/accounts/users/system/default.nix b/modules/system/accounts/users/system/default.nix index 770ed27..ffbaa7a 100644 --- a/modules/system/accounts/users/system/default.nix +++ b/modules/system/accounts/users/system/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./jellyfin ./liquidsoap ./nextcloud ./nginx diff --git a/modules/system/accounts/users/system/jellyfin/default.nix b/modules/system/accounts/users/system/jellyfin/default.nix new file mode 100644 index 0000000..ed8cc7b --- /dev/null +++ b/modules/system/accounts/users/system/jellyfin/default.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + users = { + users.jellyfin = { + group = "jellyfin"; + extraGroups = [ "nfsShare" ]; + isSystemUser = true; + uid = 983; + }; + groups.jellyfin = {}; + }; +} diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix index 9b1b490..7481d00 100644 --- a/modules/system/services/server/default.nix +++ b/modules/system/services/server/default.nix @@ -3,13 +3,12 @@ imports = [ ./acme ./ddclient + ./fileserver ./forgejo ./icecast ./mailserver ./minecraft ./mysql - ./nextcloud - ./nfs ./nginx ./social ./transmission diff --git a/modules/system/services/server/fileserver/default.nix b/modules/system/services/server/fileserver/default.nix new file mode 100644 index 0000000..84a1287 --- /dev/null +++ b/modules/system/services/server/fileserver/default.nix @@ -0,0 +1,13 @@ +{ lib, ... }: +{ + options.system.fileserver.enable = lib.mkOption { + type = lib.types.bool; + default = false; + }; + + imports = [ + ./jellyfin + ./nextcloud + ./nfs + ]; +} diff --git a/modules/system/services/server/fileserver/jellyfin/default.nix b/modules/system/services/server/fileserver/jellyfin/default.nix new file mode 100644 index 0000000..ee15e60 --- /dev/null +++ b/modules/system/services/server/fileserver/jellyfin/default.nix @@ -0,0 +1,8 @@ +{ config, ... }: +{ + imports = [ + ./nginx + ]; + + services.jellyfin.enable = config.system.fileserver.enable; +} diff --git a/modules/system/services/server/fileserver/jellyfin/nginx/default.nix b/modules/system/services/server/fileserver/jellyfin/nginx/default.nix new file mode 100644 index 0000000..53485ed --- /dev/null +++ b/modules/system/services/server/fileserver/jellyfin/nginx/default.nix @@ -0,0 +1,11 @@ +{ lib, config, ... }: +{ + services.nginx.virtualHosts."jelly.${config.domains.p2}" = lib.mkIf config.services.forgejo.enable { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8096"; + proxyWebsockets = true; + }; + }; +} diff --git a/modules/system/services/server/nextcloud/collabora/default.nix b/modules/system/services/server/fileserver/nextcloud/collabora/default.nix similarity index 100% rename from modules/system/services/server/nextcloud/collabora/default.nix rename to modules/system/services/server/fileserver/nextcloud/collabora/default.nix diff --git a/modules/system/services/server/nextcloud/default.nix b/modules/system/services/server/fileserver/nextcloud/default.nix similarity index 94% rename from modules/system/services/server/nextcloud/default.nix rename to modules/system/services/server/fileserver/nextcloud/default.nix index b0dd15d..9f0c428 100644 --- a/modules/system/services/server/nextcloud/default.nix +++ b/modules/system/services/server/fileserver/nextcloud/default.nix @@ -6,7 +6,7 @@ ]; services.nextcloud = { - enable = config.system.server.enable; + enable = config.system.fileserver.enable; package = pkgs.nextcloud30; hostName = "cloud.${config.domains.p2}"; datadir = "/mnt/nextcloud"; diff --git a/modules/system/services/server/nextcloud/nginx/default.nix b/modules/system/services/server/fileserver/nextcloud/nginx/default.nix similarity index 100% rename from modules/system/services/server/nextcloud/nginx/default.nix rename to modules/system/services/server/fileserver/nextcloud/nginx/default.nix diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/fileserver/nfs/default.nix similarity index 84% rename from modules/system/services/server/nfs/default.nix rename to modules/system/services/server/fileserver/nfs/default.nix index 98d99ff..d343495 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/fileserver/nfs/default.nix @@ -1,7 +1,7 @@ { config, ... }: { services.nfs.server = { - enable = config.system.server.enable; + enable = config.system.fileserver.enable; exports = '' /export/KittyNFS/Files *(rw,sync,no_subtree_check) /export/KittyNFS/Media *(rw,sync,no_subtree_check) diff --git a/modules/system/services/server/icecast/default.nix b/modules/system/services/server/icecast/default.nix index 0fc9993..018a169 100644 --- a/modules/system/services/server/icecast/default.nix +++ b/modules/system/services/server/icecast/default.nix @@ -7,7 +7,7 @@ services.icecast = { enable = config.system.server.enable; - listen.port = 265; + listen.port = 73; hostname = "radio.${config.domains.p2}"; admin = { user = "${config.sysusers.main}"; diff --git a/modules/system/services/server/icecast/liquidsoap/jimbops/default.nix b/modules/system/services/server/icecast/liquidsoap/jimbops/default.nix index bc9010b..e9a64dd 100644 --- a/modules/system/services/server/icecast/liquidsoap/jimbops/default.nix +++ b/modules/system/services/server/icecast/liquidsoap/jimbops/default.nix @@ -13,7 +13,7 @@ output.icecast( %ffmpeg(format="ogg", %audio(codec="libvorbis", samplerate=48000, b="256k", channels=2)), host="127.0.0.1", - port=265, + port=${toString config.services.icecast.listen.port}, password="${config.secrets.castSourcePass}", encoding = "UTF-8", diff --git a/modules/system/services/server/icecast/liquidsoap/jimscrapped/default.nix b/modules/system/services/server/icecast/liquidsoap/jimscrapped/default.nix index 24cdab1..1d901cb 100644 --- a/modules/system/services/server/icecast/liquidsoap/jimscrapped/default.nix +++ b/modules/system/services/server/icecast/liquidsoap/jimscrapped/default.nix @@ -1,7 +1,7 @@ { pkgs, lib, config, ... }: { config = lib.mkIf config.services.icecast.enable { - services.liquidsoap.streams = lib.mkIf config.services.icecast.enable { + services.liquidsoap.streams = { jimscrapped = pkgs.writeText "jimscrapped" '' settings.log.stdout.set(true) settings.init.allow_root.set(true) @@ -13,7 +13,7 @@ output.icecast( %ffmpeg(format="ogg", %audio(codec="libvorbis", samplerate=48000, b="256k", channels=2)), host="127.0.0.1", - port=265, + port=${toString config.services.icecast.listen.port}, password="${config.secrets.castSourcePass}", encoding = "UTF-8", diff --git a/modules/system/services/server/icecast/nginx/default.nix b/modules/system/services/server/icecast/nginx/default.nix index 7b7beb7..3219688 100644 --- a/modules/system/services/server/icecast/nginx/default.nix +++ b/modules/system/services/server/icecast/nginx/default.nix @@ -4,7 +4,7 @@ enableACME = true; forceSSL = true; locations."/" = { - proxyPass = "http://127.0.0.1:265"; + proxyPass = "http://127.0.0.1:73"; proxyWebsockets = true; }; };