diff --git a/README.md b/README.md index 338c93d..bbb1498 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Nixarr +![Logo](./docs/img/ai-logo-1.webp) + This is a nixos module that aims to make the installation and management of running the "*Arrs" as easy, and pain free, as possible. diff --git a/docs/img/ai-logo-1.webp b/docs/img/ai-logo-1.webp new file mode 100644 index 0000000..764606d Binary files /dev/null and b/docs/img/ai-logo-1.webp differ diff --git a/flake.lock b/flake.lock index 275befb..eac1be6 100644 --- a/flake.lock +++ b/flake.lock @@ -79,11 +79,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1708294481, - "narHash": "sha256-DZtxmeb4OR7iCaKUUuq05ADV2rX8WReZEF7Tq//W0+Y=", + "lastModified": 1708451036, + "narHash": "sha256-tgZ38NummEdnXvxj4D0StHBzXgceAw8CptytHljH790=", "owner": "nix-community", "repo": "home-manager", - "rev": "a54e05bc12d88ff2df941d0dc1183cb5235fa438", + "rev": "517601b37c6d495274454f63c5a483c8e3ca6be1", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1708407374, - "narHash": "sha256-EECzarm+uqnNDCwaGg/ppXCO11qibZ1iigORShkkDf0=", + "lastModified": 1708501555, + "narHash": "sha256-zJaF0RkdIPbh8LTmnpW/E7tZYpqIE+MePzlWwUNob4c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f33dd27a47ebdf11dc8a5eb05e7c8fbdaf89e73f", + "rev": "b50a77c03d640716296021ad58950b1bb0345799", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f27866b..73a91ce 100644 --- a/flake.nix +++ b/flake.nix @@ -7,12 +7,7 @@ }; inputs = { - #nixpkgs.url = "github:nixos/nixpkgs/22.11"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - nixpkgs-flood.url = "github:3JlOy-PYCCKUi/nixpkgs/flood-module"; - #nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - - home-manager.url = "github:nix-community/home-manager"; flake-parts = { url = "github:hercules-ci/flake-parts"; diff --git a/nixarr/jellyfin/default.nix b/nixarr/jellyfin/default.nix index 23787fc..08f3bf1 100644 --- a/nixarr/jellyfin/default.nix +++ b/nixarr/jellyfin/default.nix @@ -25,14 +25,12 @@ in { expose = { enable = mkEnableOption '' - Enable nginx for Jellyfin, exposing the web service to the internet. + Enable expose for Jellyfin, exposing the web service to the internet. ''; - upnp = mkOption { - type = types.bool; - default = false; - description = "Use UPNP to try to open ports 80 and 443 on your router."; - }; + upnp.enable = mkEnableOption '' + Use UPNP to try to open ports 80 and 443 on your router. + ''; domainName = mkOption { type = types.nullOr types.str; @@ -50,8 +48,8 @@ in { config = # TODO: this doesn't work. I don't know why :( - #assert (!(cfg.vpn.enable && cfg.nginx.enable)) || abort "vpn.enable not compatible with nginx.enable."; - #assert (cfg.nginx.enable -> (cfg.nginx.domainName != null && cfg.nginx.acmeMail != null)) || abort "Both nginx.domain and nginx.acmeMail needs to be set if nginx.enable is set."; + #assert (!(cfg.vpn.enable && cfg.expose.enable)) || abort "vpn.enable not compatible with expose.enable."; + #assert (cfg.expose.enable -> (cfg.expose.domainName != null && cfg.expose.acmeMail != null)) || abort "Both expose.domain and expose.acmeMail needs to be set if expose.enable is set."; mkIf cfg.enable { services.jellyfin = { @@ -62,23 +60,23 @@ in { configDir = "${cfg.stateDir}/config"; }; - networking.firewall = mkIf cfg.nginx.enable { + networking.firewall = mkIf cfg.expose.enable { allowedTCPPorts = [ 80 443 ]; }; - util.upnp = mkIf cfg.nginx.upnp.enable { + util.upnp = mkIf cfg.expose.upnp.enable { enable = true; openTcpPorts = [ 80 443 ]; }; - services.nginx = mkIf (cfg.nginx.enable || cfg.vpn.enable) { + services.nginx = mkIf (cfg.expose.enable || cfg.vpn.enable) { enable = true; recommendedTlsSettings = true; recommendedOptimisation = true; recommendedGzipSettings = true; - virtualHosts."${builtins.replaceStrings ["\n"] [""] cfg.nginx.domainName}" = mkIf cfg.nginx.enable { + virtualHosts."${builtins.replaceStrings ["\n"] [""] cfg.expose.domainName}" = mkIf cfg.expose.enable { enableACME = true; forceSSL = true; locations."/" = { @@ -103,9 +101,9 @@ in { }; }; - security.acme = mkIf cfg.nginx.enable { + security.acme = mkIf cfg.expose.enable { acceptTerms = true; - defaults.email = cfg.nginx.acmeMail; + defaults.email = cfg.expose.acmeMail; }; util.vpnnamespace.portMappings = [ diff --git a/nixarr/prowlarr/default.nix b/nixarr/prowlarr/default.nix index fd8dd36..27ec568 100644 --- a/nixarr/prowlarr/default.nix +++ b/nixarr/prowlarr/default.nix @@ -11,6 +11,10 @@ with lib; let nixarr = config.nixarr; cfg = config.nixarr.prowlarr; in { + imports = [ + ./prowlarr-module + ]; + options.nixarr.prowlarr = { enable = mkEnableOption "Enable the Prowlarr service."; @@ -29,7 +33,7 @@ in { config = mkIf cfg.enable { util.services.prowlarr = mkIf (!cfg.vpn.enable) { enable = true; - dataDir = cfg.statedir; + dataDir = cfg.stateDir; }; util.vpnnamespace.portMappings = [ @@ -45,7 +49,7 @@ in { autoStart = true; ephemeral = true; extraFlags = ["--network-namespace-path=/var/run/netns/wg"]; - bindMounts."${cfg.statedir}".isReadOnly = false; + bindMounts."${cfg.stateDir}".isReadOnly = false; config = { users.groups.prowlarr = {}; diff --git a/nixarr/prowlarr/module/default.nix b/nixarr/prowlarr/prowlarr-module/default.nix similarity index 100% rename from nixarr/prowlarr/module/default.nix rename to nixarr/prowlarr/prowlarr-module/default.nix