From b49cae6b20888abe65e2d7ee312aaff544879649 Mon Sep 17 00:00:00 2001 From: rasmus-kirk Date: Mon, 26 Feb 2024 17:37:37 +0100 Subject: [PATCH] Fixed jellyfin expose bug and improved docs --- gruvbox.theme | 225 -------------------- nixarr/jellyfin/default.nix | 33 +-- nixarr/lidarr/default.nix | 5 +- nixarr/openssh/default.nix | 2 + nixarr/prowlarr/default.nix | 5 +- nixarr/radarr/default.nix | 5 +- nixarr/readarr/default.nix | 5 +- nixarr/sonarr/default.nix | 5 +- nixarr/transmission/default.nix | 8 +- styling.css | 352 -------------------------------- 10 files changed, 40 insertions(+), 605 deletions(-) delete mode 100644 gruvbox.theme delete mode 100644 styling.css diff --git a/gruvbox.theme b/gruvbox.theme deleted file mode 100644 index 9a6d053..0000000 --- a/gruvbox.theme +++ /dev/null @@ -1,225 +0,0 @@ -{ - "text-color": "#282828", - "background-color": "#fbf1c7", - "line-number-color": "#3c3836", - "line-number-background-color": "#fbf1c7", - "text-styles": { - "Alert": { - "text-color": "#9d0006", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "Annotation": { - "text-color": "#b16286", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Attribute": { - "text-color": "#076678", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "BaseN": { - "text-color": "#b57614", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "BuiltIn": { - "text-color": "#8f3f71", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "Char": { - "text-color": "#98971a", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Comment": { - "text-color": "#7c6f64", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "CommentVar": { - "text-color": "#7c6f64", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Constant": { - "text-color": "#cc241d", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "ControlFlow": { - "text-color": "#282828", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "DataType": { - "text-color": "#458588", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "DecVal": { - "text-color": "#458588", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Documentation": { - "text-color": "#98971a", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Error": { - "text-color": "#9d0006", - "background-color": null, - "bold": false, - "italic": false, - "underline": true - }, - "Extension": { - "text-color": "#458588", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "Float": { - "text-color": "#b57614", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Function": { - "text-color": "#b16286", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Import": { - "text-color": "#d65d0e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Information": { - "text-color": "#d65d0e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Keyword": { - "text-color": "#282828", - "background-color": null, - "bold": true, - "italic": false, - "underline": false - }, - "Normal": { - "text-color": "#282828", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Operator": { - "text-color": "#282828", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Other": { - "text-color": "#79740e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Preprocessor": { - "text-color": "#79740e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "RegionMarker": { - "text-color": "#076678", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "SpecialChar": { - "text-color": "#79740e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "SpecialString": { - "text-color": "#79740e", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "String": { - "text-color": "#98971a", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Variable": { - "text-color": "#076678", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "VerbatimString": { - "text-color": "#9d0006", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - }, - "Warning": { - "text-color": "#b57614", - "background-color": null, - "bold": false, - "italic": false, - "underline": false - } - } -} diff --git a/nixarr/jellyfin/default.nix b/nixarr/jellyfin/default.nix index 88a9a61..8317bf8 100644 --- a/nixarr/jellyfin/default.nix +++ b/nixarr/jellyfin/default.nix @@ -19,8 +19,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Jellyfin traffic through the VPN. Requires that `nixarr.vpn` - is configured + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Jellyfin traffic through the VPN. ''; expose = { @@ -28,8 +29,9 @@ in { enable = mkEnableOption '' **Required options:** - - `nixarr.jellyfin.vpn.enable` - - `nixarr.jellyfin.expose.vpn.port` + - [`nixarr.jellyfin.vpn.enable`](/options.html#nixarr.jellyfin.vpn.enable) + - [`nixarr.jellyfin.expose.vpn.port`](/options.html#nixarr.jellyfin.expose.vpn.port) + - [`nixarr.jellyfin.expose.vpn.accessibleFrom`](/options.html#nixarr.jellyfin.expose.vpn.accessibleFrom) Expose the Jellyfin web service to the internet, allowing anyone to access it. @@ -42,12 +44,17 @@ in { type = with types; nullOr port; default = null; description = '' - **Required options:** `nixarr.jellyfin.expose.vpn.enable` + The port to access jellyfin on. Get this port from your VPN + provider. + ''; + }; - The port to access jellyfin on. Get this port from your VPN provider. - - **Important:** Do _not_ enable this without setting up Jellyfin - authentication through localhost first! + accessibleFrom = mkOption { + type = with types; nullOr str; + default = null; + example = "jellyfin.airvpn.org"; + description = '' + The IP or domain that Jellyfin should be able to be accessed from. ''; }; }; @@ -56,10 +63,10 @@ in { enable = mkEnableOption '' **Required options:** - - `nixarr.jellyfin.expose.https.acmeMail` - - `nixarr.jellyfin.expose.https.domainName` + - [`nixarr.jellyfin.expose.https.acmeMail`](/options.html#nixarr.jellyfin.expose.https.acmeMail) + - [`nixarr.jellyfin.expose.https.domainName`](/options.html#nixarr.jellyfin.expose.https.domainName) - **Conflicting options:** `nixarr.jellyfin.vpn.enable` + **Conflicting options:** [`nixarr.jellyfin.vpn.enable`](/options.html#nixarr.jellyfin.vpn.enable) Expose the Jellyfin web service to the internet with https support, allowing anyone to access it. @@ -148,7 +155,7 @@ in { }; }; - virtualHosts."${config.util-nixarr.vpn.address}:${builtins.toString cfg.expose.vpn.port}" = mkIf cfg.expose.vpn.enable { + virtualHosts."${cfg.expose.vpn.accessibleFrom}:${builtins.toString cfg.expose.vpn.port}" = mkIf cfg.expose.vpn.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/nixarr/lidarr/default.nix b/nixarr/lidarr/default.nix index b1b2722..39f42e2 100644 --- a/nixarr/lidarr/default.nix +++ b/nixarr/lidarr/default.nix @@ -18,8 +18,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Lidarr traffic through the VPN. Requires that `nixarr.vpn` - is configured + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Lidarr traffic through the VPN. ''; }; diff --git a/nixarr/openssh/default.nix b/nixarr/openssh/default.nix index d857dc6..4a8161c 100644 --- a/nixarr/openssh/default.nix +++ b/nixarr/openssh/default.nix @@ -11,6 +11,8 @@ in { type = types.bool; default = false; description = '' + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + Run the openssh service through a vpn. **Note:** This option does _not_ enable the sshd service you still diff --git a/nixarr/prowlarr/default.nix b/nixarr/prowlarr/default.nix index 73bf5da..91eedf7 100644 --- a/nixarr/prowlarr/default.nix +++ b/nixarr/prowlarr/default.nix @@ -24,8 +24,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Prowlarr traffic through the VPN. Requires that `nixarr.vpn` - is configured. + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Prowlarr traffic through the VPN. ''; }; diff --git a/nixarr/radarr/default.nix b/nixarr/radarr/default.nix index 456a0bf..186f523 100644 --- a/nixarr/radarr/default.nix +++ b/nixarr/radarr/default.nix @@ -20,8 +20,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Radarr traffic through the VPN. Requires that `nixarr.vpn` - is configured. + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Radarr traffic through the VPN. ''; }; diff --git a/nixarr/readarr/default.nix b/nixarr/readarr/default.nix index 7ccf717..dbafa49 100644 --- a/nixarr/readarr/default.nix +++ b/nixarr/readarr/default.nix @@ -18,8 +18,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Readarr traffic through the VPN. Requires that `nixarr.vpn` - is configured. + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Readarr traffic through the VPN. ''; }; diff --git a/nixarr/sonarr/default.nix b/nixarr/sonarr/default.nix index c7ea83e..931b9e8 100644 --- a/nixarr/sonarr/default.nix +++ b/nixarr/sonarr/default.nix @@ -24,8 +24,9 @@ in { }; vpn.enable = mkEnableOption '' - Route Readarr traffic through the VPN. Requires that `nixarr.vpn` - is configured. + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + Route Sonarr traffic through the VPN. ''; }; diff --git a/nixarr/transmission/default.nix b/nixarr/transmission/default.nix index ca188c2..e2a0376 100644 --- a/nixarr/transmission/default.nix +++ b/nixarr/transmission/default.nix @@ -18,9 +18,6 @@ in { default = "${nixarr.stateDir}/nixarr/transmission"; description = '' The state directory for Transmission. - - **BUG**: Only works when the `nixarr.transmission.vpn.enable` option - is set. ''; }; @@ -33,8 +30,9 @@ in { }; vpn.enable = mkEnableOption '' - **Recommended!** Route Transmission traffic through the VPN. Requires that `nixarr.vpn` - is configured. + **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable) + + **Recommended:** Route Transmission traffic through the VPN. ''; flood.enable = mkEnableOption "Use the flood web-UI"; diff --git a/styling.css b/styling.css deleted file mode 100644 index 5ec8711..0000000 --- a/styling.css +++ /dev/null @@ -1,352 +0,0 @@ -/* - * I add this to html files generated with pandoc. - */ - -:root { - --bg: #fbf1c7; - --bgt: #fbf1c7; - --bge: #fbf8e4; - --bg0: #f9f5d7; - --fg0: #282828; - --ltred: #cc241d; - --ltgreen: #98971a; - --ltyellow: #d79921; - --ltblue: #458588; - --ltpurple: #b16286; - --ltaqua: #689da6; - --ltorange: #d65d0e; - --ltgrey: #7c6f64; - --dkred: #9d0006; - --dkgreen: #79740e; - --dkyellow: #b57614; - --dkblue: #076678; - --dkpurple: #8f3f71; - --dkaqua: #427b58; - --dkgrey: #3c3836; -} - -html { - font-size: 100%; - overflow-y: scroll; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -body { - color: var(--fg0); - font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif; - font-size: 12px; - line-height: 1.7; - padding: 1em; - margin: auto; - max-width: 38em; - background: var(--bg0); -} - -a { - color: var(--ltblue); - text-decoration: none; -} - -a:visited { - color: var(--dkblue); -} - -a:hover { - color: var(--ltblue); -} - -a:active { - color: var(--ltblue); -} - -a:focus { - outline: thin dotted; -} - -*::-moz-selection { - /* background: var(--ltred); */ - background: rgba(255, 255, 0, 0.3); - color: var(--fg0); -} - -*::selection { - background: rgba(255, 255, 0, 0.3); - color: var(--fg0); -} - -a::-moz-selection { - background: rgba(255, 255, 0, 0.3); - color: var(--ltblue); -} - -a::selection { - background: rgba(255, 255, 0, 0.3); - color: var(--ltblue); -} - -p { - margin: 1em 0; -} - -img { - max-width: 100%; -} - -h1, h2, h3, h4, h5, h6 { - color: var(--fg0); - line-height: 125%; - margin-top: 1em; - font-weight: normal; -} - -h4, h5, h6 { - font-weight: bold; -} - -h1 { - font-size: 2.5em; -} - -h2 { - font-size: 2em; -} - -h3 { - font-size: 1.5em; -} - -h4 { - font-size: 1.2em; -} - -h5 { - font-size: 1em; -} - -h6 { - font-size: 0.9em; -} - -blockquote { - color: var(--ltgrey); - margin: 0; - padding-left: 3em; - border-left: 0.5em var(--fg0) solid; -} - -hr { - display: block; - height: 2px; - border: 0; - border-top: 1px solid #aaa; - border-bottom: 1px solid #eee; - margin: 1em 0; - padding: 0; -} - -pre, code, kbd, samp { - color: var(--fg0); - font-family: monospace, monospace; - _font-family: 'courier new', monospace; - font-size: 0.98em; -} - -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -b, strong { - font-weight: bold; -} - -dfn { - font-style: italic; -} - -ins { - background: #ff9; - color: #000; - text-decoration: none; -} - -mark { - background: #ff0; - color: #000; - font-style: italic; - font-weight: bold; -} - -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -ul, ol { - margin: 1em 0; - padding: 0 0 0 2em; -} - -li p:last-child { - margin-bottom: 0; -} - -ul ul, ol ol { - margin: .3em 0; -} - -dl { - margin-bottom: 1em; -} - -dt { - font-weight: bold; - margin-bottom: .8em; -} - -dd { - margin: 0 0 .8em 2em; -} - -dd:last-child { - margin-bottom: 0; -} - -img { - border: 0; - -ms-interpolation-mode: bicubic; - vertical-align: middle; -} - -figure { - display: block; - text-align: center; - margin: 1em 0; -} - -figure img { - border: none; - margin: 0 auto; -} - -figcaption { - font-size: 0.8em; - font-style: italic; - margin: 0 0 .8em; -} - -table { - margin-bottom: 2em; - border-bottom: 1px solid #ddd; - border-right: 1px solid #ddd; - border-spacing: 0; - border-collapse: collapse; -} - -table th { - padding: .2em 1em; - background-color: #eee; - border-top: 1px solid #ddd; - border-left: 1px solid #ddd; -} - -table td { - padding: .2em 1em; - border-top: 1px solid #ddd; - border-left: 1px solid #ddd; - vertical-align: top; -} - -.author { - font-size: 1.2em; - text-align: center; -} - -@media only screen and (min-width: 480px) { - body { - font-size: 14px; - } -} -@media only screen and (min-width: 768px) { - body { - font-size: 16px; - } -} -@media print { - * { - background: transparent !important; - color: black !important; - filter: none !important; - -ms-filter: none !important; - } - - body { - font-size: 12pt; - max-width: 100%; - } - - a, a:visited { - text-decoration: underline; - } - - hr { - height: 1px; - border: 0; - border-bottom: 1px solid black; - } - - a[href]:after { - content: " (" attr(href) ")"; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { - content: ""; - } - - pre, blockquote { - border: 1px solid #999; - padding-right: 1em; - page-break-inside: avoid; - } - - tr, img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - @page :left { - margin: 15mm 20mm 15mm 10mm; -} - - @page :right { - margin: 15mm 10mm 15mm 20mm; -} - - p, h2, h3 { - orphans: 3; - widows: 3; - } - - h2, h3 { - page-break-after: avoid; - } -}