mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-03-27 06:10:53 +01:00
Added a (tiny) bit of modularity in the mediaserver module
This commit is contained in:
parent
08df42e079
commit
8e4ddf4ef0
6 changed files with 213 additions and 133 deletions
|
@ -1,41 +1,55 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
let
|
||||
cfg = config.luj.jackett;
|
||||
port = 9117;
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.luj.jackett = {
|
||||
enable = mkEnableOption "activate jackett service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "jackett";
|
||||
description = "User account under which Jackett runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "jackett";
|
||||
description = "Group under which Jackett runs.";
|
||||
};
|
||||
|
||||
options.luj.jackett = {
|
||||
enable = mkEnableOption "activate jackett service";
|
||||
nginx.enable = mkEnableOption "activate nginx";
|
||||
nginx.subdomain = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [{
|
||||
services.jackett = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
mkMerge [{
|
||||
services.jackett = {
|
||||
enable = true;
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
};
|
||||
|
||||
})]);
|
||||
|
||||
|
||||
})
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,27 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
let
|
||||
cfg = config.luj.jellyfin;
|
||||
port = 8096;
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.luj.jellyfin = {
|
||||
|
||||
enable = mkEnableOption "activate jellyfin service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "jellyfin";
|
||||
description = "User account under which Jellyfin runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "jellyfin";
|
||||
description = "Group under which Jellyfin runs.";
|
||||
};
|
||||
|
||||
options.luj.jellyfin = {
|
||||
enable = mkEnableOption "activate jellyfin service";
|
||||
nginx.enable = mkEnableOption "activate nginx";
|
||||
nginx.subdomain = mkOption {
|
||||
type = types.str;
|
||||
|
@ -14,29 +29,27 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [{
|
||||
services.jellyfin = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
package = pkgs.jellyfin;
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
mkMerge [{
|
||||
services.jellyfin = {
|
||||
enable = true;
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
};
|
||||
|
||||
})]);
|
||||
|
||||
|
||||
})
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -23,30 +23,40 @@ in {
|
|||
|
||||
luj.sonarr = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
nginx.enable = true;
|
||||
nginx.subdomain = "series";
|
||||
};
|
||||
|
||||
luj.radarr = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
nginx.enable = true;
|
||||
nginx.subdomain = "films";
|
||||
};
|
||||
|
||||
luj.jellyfin = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
nginx.enable = true;
|
||||
nginx.subdomain = "tv";
|
||||
};
|
||||
|
||||
luj.jackett = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
nginx.enable = true;
|
||||
nginx.subdomain = "jackett";
|
||||
};
|
||||
|
||||
luj.transmission = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
nginx.enable = true;
|
||||
nginx.subdomain = "downloads";
|
||||
};
|
||||
|
|
|
@ -1,41 +1,56 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
let
|
||||
cfg = config.luj.radarr;
|
||||
port = 7878;
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.luj.radarr = {
|
||||
|
||||
enable = mkEnableOption "activate radarr service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "radarr";
|
||||
description = "User account under which Radarr runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "radarr";
|
||||
description = "Group under which Radarr runs.";
|
||||
};
|
||||
|
||||
options.luj.radarr = {
|
||||
enable = mkEnableOption "activate radarr service";
|
||||
nginx.enable = mkEnableOption "activate nginx";
|
||||
nginx.subdomain = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [{
|
||||
services.radarr = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
mkMerge [{
|
||||
services.radarr = {
|
||||
enable = true;
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
};
|
||||
|
||||
})]);
|
||||
|
||||
|
||||
})
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,41 +1,56 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
let
|
||||
cfg = config.luj.sonarr;
|
||||
port = 8989;
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.luj.sonarr = {
|
||||
|
||||
enable = mkEnableOption "activate sonarr service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "sonarr";
|
||||
description = "User account under which Sonarr runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "sonarr";
|
||||
description = "Group under which Sonarr runs.";
|
||||
};
|
||||
|
||||
options.luj.sonarr = {
|
||||
enable = mkEnableOption "activate sonarr service";
|
||||
nginx.enable = mkEnableOption "activate nginx";
|
||||
nginx.subdomain = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [{
|
||||
services.sonarr = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
mkMerge [{
|
||||
services.sonarr = {
|
||||
enable = true;
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
};
|
||||
|
||||
})]);
|
||||
|
||||
|
||||
})
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,57 +1,70 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
let
|
||||
cfg = config.luj.transmission;
|
||||
port = 9091;
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.luj.transmission = {
|
||||
enable = mkEnableOption "activate transmission service";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "transmission";
|
||||
description = "User account under which transmission runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "transmission";
|
||||
description = "Group under which Transmission runs.";
|
||||
};
|
||||
|
||||
options.luj.transmission = {
|
||||
enable = mkEnableOption "activate transmission service";
|
||||
nginx.enable = mkEnableOption "activate nginx";
|
||||
nginx.subdomain = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [{
|
||||
mkMerge [{
|
||||
|
||||
|
||||
sops.secrets.transmission = {
|
||||
owner = "mediaserver";
|
||||
format = "binary";
|
||||
sopsFile = ../../secrets/transmission-login;
|
||||
};
|
||||
|
||||
services.transmission = {
|
||||
enable = true;
|
||||
user = "mediaserver";
|
||||
group = "mediaserver";
|
||||
credentialsFile = "/run/secrets/transmission";
|
||||
downloadDirPermissions = "770";
|
||||
settings = {
|
||||
rpc-port = 9091;
|
||||
download-dir = "/home/mediaserver/downloads/complete/";
|
||||
incomplete-dir = "/home/mediaserver/downloads/incomplete/";
|
||||
incomplete-dir-enable = true;
|
||||
sops.secrets.transmission = {
|
||||
owner = cfg.user;
|
||||
format = "binary";
|
||||
sopsFile = ../../secrets/transmission-login;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
services.transmission = {
|
||||
enable = true;
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
credentialsFile = "/run/secrets/transmission";
|
||||
downloadDirPermissions = "770";
|
||||
settings = {
|
||||
rpc-port = 9091;
|
||||
download-dir = "/home/mediaserver/downloads/complete/";
|
||||
incomplete-dir = "/home/mediaserver/downloads/incomplete/";
|
||||
incomplete-dir-enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(mkIf cfg.nginx.enable {
|
||||
luj.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.nginx.subdomain}.julienmalka.me" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:${toString port}";
|
||||
};
|
||||
};
|
||||
|
||||
})]);
|
||||
|
||||
|
||||
})
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue