diff --git a/modules/options/default.nix b/modules/options/default.nix index f48485f..1c89371 100644 --- a/modules/options/default.nix +++ b/modules/options/default.nix @@ -1,25 +1,25 @@ -{ config -, pkgs -, lib -, ... -}: -let +{ + config, + pkgs, + lib, + ... +}: let cfg = config.services.declarative-jellyfin; - toXml' = (import ../../lib { nixpkgs = pkgs; }).toXMLGeneric; + toXml' = (import ../../lib {nixpkgs = pkgs;}).toXMLGeneric; in -with lib; { - imports = [ - ./system.nix - ./encoding.nix - ./network.nix - ./branding.nix - ]; - options.services.declarative-jellyfin = { - enable = mkEnableOption "Jellyfin Service"; - }; + with lib; { + imports = [ + ./system.nix + ./encoding.nix + ./network.nix + ./branding.nix + ]; + options.services.declarative-jellyfin = { + enable = mkEnableOption "Jellyfin Service"; + }; - config = - mkIf cfg.enable + config = + mkIf cfg.enable ( let isStrList = x: builtins.all (x: builtins.isString x) x; @@ -29,11 +29,11 @@ with lib; { if !(builtins.hasAttr "tag" x) then attrsets.mapAttrsToList - (tag: value: { - inherit tag; - content = prepass value; - }) - x + (tag: value: { + inherit tag; + content = prepass value; + }) + x else if (builtins.hasAttr "content" x) then { tag = x.tag; @@ -61,43 +61,39 @@ with lib; { }; content = prepass x; }); - in - { + in { system.activationScripts = { link-network-xml = - lib.stringAfter [ "var" ] - ( - let - storeFile = pkgs.writeText "network.xml" (toXml "NetworkConfiguration" cfg.network); - in - '' - mkdir -p "/var/lib/jellyfin/config" - cp -s "${storeFile}" "/var/lib/jellyfin/config/network.xml" - '' - ); + lib.stringAfter ["var"] + ( + let + storeFile = pkgs.writeText "network.xml" (toXml "NetworkConfiguration" cfg.network); + in '' + mkdir -p "/var/lib/jellyfin/config" + cp -s "${storeFile}" "/var/lib/jellyfin/config/network.xml" + '' + ); link-encoding-xml = - lib.stringAfter [ "var" ] - ( - let - storeFile = pkgs.writeText "encoding.xml" (toXml "EncodingOptions" cfg.network); - in - '' - mkdir -p "/var/lib/jellyfin/config" - cp -s "${storeFile}" "/var/lib/jellyfin/config/encoding.xml" - '' - ); + lib.stringAfter ["var"] + ( + let + storeFile = pkgs.writeText "encoding.xml" (toXml "EncodingOptions" cfg.network); + in '' + mkdir -p "/var/lib/jellyfin/config" + cp -s "${storeFile}" "/var/lib/jellyfin/config/encoding.xml" + '' + ); link-system-xml = - lib.stringAfter [ "var" ] - ( - let - storeFile = pkgs.writeText "system.xml" (toXml "ServerConfiguration" cfg.network); - in - '' - mkdir -p "/var/lib/jellyfin/config" - cp -s "${storeFile}" "/var/lib/jellyfin/config/system.xml" - '' - ); + lib.stringAfter ["var"] + ( + let + storeFile = pkgs.writeText "system.xml" (toXml "ServerConfiguration" cfg.network); + in '' + mkdir -p "/var/lib/jellyfin/config" + cp -s "${storeFile}" "/var/lib/jellyfin/config/system.xml" + '' + ); }; } ); -} + } diff --git a/modules/options/system.nix b/modules/options/system.nix index 7fb20f6..0095e23 100644 --- a/modules/options/system.nix +++ b/modules/options/system.nix @@ -1,9 +1,14 @@ -{ lib, config, ... }: -with lib; -let - mkStrOption = default: description: { type = types.str; inherit default description; }; -in { + lib, + config, + ... +}: +with lib; let + mkStrOption = default: description: { + type = types.str; + inherit default description; + }; +in { options.services.declarative-jellyfin.system = { ServerName = mkStrOption config.networking.hostName '' This name will be used to identify the server and will default to the server's hostname. @@ -152,7 +157,7 @@ in }; ImageSavingConvention = mkOption { - type = types.enum [ "Legacy" ]; + type = types.enum ["Legacy"]; default = "Legacy"; description = "i got no idea what this is"; }; @@ -164,96 +169,96 @@ in tag = "MetadataOptions"; content = { ItemType = "Movie"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = []; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "MusicVideo"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ "The Open Movie Database" ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ "The Open Movie Database" ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = ["The Open Movie Database"]; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = ["The Open Movie Database"]; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "Series"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = []; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "MusicAlbum"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ "TheAudioDB" ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = ["TheAudioDB"]; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "MusicArtist"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ "TheAudioDB" ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = ["TheAudioDB"]; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "BoxSet"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = []; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "Season"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = []; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } { tag = "MetadataOptions"; content = { ItemType = "Episode"; - DisabledMetadataSavers = [ ]; - DisabledMetadataFetchers = [ ]; - LocalMetadataReaderOrder = [ ]; - MetadataFetcherOrder = [ ]; - DisabledImageFetchers = [ ]; - ImageFetcherOrder = [ ]; + DisabledMetadataSavers = []; + DisabledMetadataFetchers = []; + LocalMetadataReaderOrder = []; + MetadataFetcherOrder = []; + DisabledImageFetchers = []; + ImageFetcherOrder = []; }; } ]; @@ -273,7 +278,7 @@ in ContentTypes = mkOption { type = with types; listOf str; - default = [ ]; + default = []; }; RemoteClientBitrateLimit = mkOption { @@ -292,7 +297,7 @@ in CodecsUsed = mkOption { type = with types; listOf str; - default = [ ]; + default = []; }; PluginRepositories = mkOption { @@ -322,7 +327,7 @@ in PathSubstitutions = mkOption { type = with types; listOf str; - default = [ ]; + default = []; }; EnableSlowResponseWarning = mkOption { @@ -368,9 +373,15 @@ in ''; }; - RemoveOldPlugins = mkOption { type = types.bool; default = true; }; + RemoveOldPlugins = mkOption { + type = types.bool; + default = true; + }; - AllowClientLogUpload = mkOption { type = types.bool; default = true; }; + AllowClientLogUpload = mkOption { + type = types.bool; + default = true; + }; DummyChapterDuration = mkOption { type = types.int; @@ -436,7 +447,7 @@ in ''; ScanBehavior = mkOption { - type = types.enum [ "NonBlocking" "Blocking" ]; + type = types.enum ["NonBlocking" "Blocking"]; default = "NonBlocking"; description = '' The default behavior is non blocking, which will add media to the library before trickplay generation is done. Blocking will ensure trickplay files are generated before media is added to the library, but will make scans significantly longer.