hai! wo? ich bin ein fisch.

This commit is contained in:
marty 2026-01-10 19:21:12 +01:00
parent eaea15fa3a
commit ef91935d4b
14 changed files with 196 additions and 5 deletions

View file

@ -0,0 +1,75 @@
{
config,
lib,
pkgs,
...
}:
{
options.server = {
jellyfin = {
enable = lib.mkEnableOption "enable jelyfin";
port = lib.mkOption {
default = 8096;
description = "set jellyfin port"
};
public = {
enable = lib.mkEnableOption "make jellyfin public";
subdomain = lib.mkOption {
default = "watch";
description = "set jellyfin subdomain";
};
};
};
jellyseer = {
enable = lib.mkEnableOption "enable jellyseer";
port = lib.mkOption {
default = 8097;
description = "set jellyseer port"
};
public = {
enable = lib.mkEnableOption "make jellyseer public";
subdomain = lib.mkOption {
default = "jellyseer";
description = "set jellyseer subdomain";
};
};
};
};
config = {
environment.systemPackages = config.server.jellyfin.enable [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
services = {
jellyfin = lib.mkIf config.server.jellyfin.enable {
enable = true;
};
jellyseer = lib.mkIf config.server-jellyseer.enable {
enable = true;
};
nginx.virtualHosts = {
"${config.server.jellyfin.public.subdomain}.${config.domain}" =
lib.mkIf config.server.jellyfin.public.enable
{
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${config.server.jellyfin.port}";
};
};
"${config.server.jellyseer.public.subdomain}.${config.domain}" = lib.mkIf config.server.jellyfin.public.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${config.server.jellyseer.port}";
};
};
};
};
};
};
};
}

57
modules/server/nginx.nix Normal file
View file

@ -0,0 +1,57 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
domain = lib.mkOption {
default = "example.com";
description = "set domain name";
};
email = lib.mkOption {
default = "${config.main-user.userName}.${config.domain}";
description = "set email";
};
nginx = {
};
};
config = {
users = {
users = {
nginx = {
group = "nginx";
extraGroups = [
"acme"
"users"
];
isSystemUser = true;
};
};
groups = {
nginx = { };
};
};
services = {
nginx = {
enable = true;
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
clientMaxBodySize = "10G";
statusPage = true;
};
};
security = {
acme = {
acceptTerms = true;
defaults.email = config.email;
};
};
};
}