nixos/minidlna: Allow more configuration options
This commits allows the user to configure: - more minidlna options - the ones not yet disclosed in nix (extending the existing minimal subset)
This commit is contained in:
parent
446dd2543d
commit
35fe50352f
@ -36,6 +36,37 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
services.minidlna.friendlyName = mkOption {
|
||||
type = types.str;
|
||||
default = "${config.networking.hostName} MiniDLNA";
|
||||
defaultText = "$HOSTNAME MiniDLNA";
|
||||
example = "rpi3";
|
||||
description =
|
||||
''
|
||||
Name that the DLNA server presents to clients.
|
||||
'';
|
||||
};
|
||||
|
||||
services.minidlna.rootContainer = mkOption {
|
||||
type = types.str;
|
||||
default = ".";
|
||||
example = "B";
|
||||
description =
|
||||
''
|
||||
Use a different container as the root of the directory tree presented
|
||||
to clients. The possible values are:
|
||||
- "." - standard container
|
||||
- "B" - "Browse Directory"
|
||||
- "M" - "Music"
|
||||
- "P" - "Pictures"
|
||||
- "V" - "Video"
|
||||
- Or, you can specify the ObjectID of your desired root container
|
||||
(eg. 1$F for Music/Playlists)
|
||||
If you specify "B" and the client device is audio-only then
|
||||
"Music/Folders" will be used as root.
|
||||
'';
|
||||
};
|
||||
|
||||
services.minidlna.loglevel = mkOption {
|
||||
type = types.str;
|
||||
default = "warn";
|
||||
@ -66,7 +97,37 @@ in
|
||||
|
||||
services.minidlna.config = mkOption {
|
||||
type = types.lines;
|
||||
description = "The contents of MiniDLNA's configuration file.";
|
||||
description =
|
||||
''
|
||||
The contents of MiniDLNA's configuration file.
|
||||
When the service is activated, a basic template is generated
|
||||
from the current options opened here.
|
||||
'';
|
||||
};
|
||||
|
||||
services.minidlna.extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
# Not exhaustive example
|
||||
# Support for streaming .jpg and .mp3 files to a TiVo supporting HMO.
|
||||
enable_tivo=no
|
||||
# SSDP notify interval, in seconds.
|
||||
notify_interval=10
|
||||
# maximum number of simultaneous connections
|
||||
# note: many clients open several simultaneous connections while
|
||||
# streaming
|
||||
max_connections=50
|
||||
# set this to yes to allow symlinks that point outside user-defined
|
||||
# media_dirs.
|
||||
wide_links=yes
|
||||
'';
|
||||
description =
|
||||
''
|
||||
Extra minidlna options not yet opened for configuration here
|
||||
(strict_dlna, model_number, model_name, etc...). This is appended
|
||||
to the current service already provided.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@ -75,13 +136,15 @@ in
|
||||
services.minidlna.config =
|
||||
''
|
||||
port=${toString port}
|
||||
friendly_name=${config.networking.hostName} MiniDLNA
|
||||
friendly_name=${cfg.friendlyName}
|
||||
db_dir=/var/cache/minidlna
|
||||
log_level=${cfg.loglevel}
|
||||
inotify=yes
|
||||
root_container=${cfg.rootContainer}
|
||||
${concatMapStrings (dir: ''
|
||||
media_dir=${dir}
|
||||
'') cfg.mediaDirs}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
users.users.minidlna = {
|
||||
|
@ -162,6 +162,7 @@ in
|
||||
metabase = handleTest ./metabase.nix {};
|
||||
miniflux = handleTest ./miniflux.nix {};
|
||||
minio = handleTest ./minio.nix {};
|
||||
minidlna = handleTest ./minidlna.nix {};
|
||||
misc = handleTest ./misc.nix {};
|
||||
mongodb = handleTest ./mongodb.nix {};
|
||||
moodle = handleTest ./moodle.nix {};
|
||||
|
39
nixos/tests/minidlna.nix
Normal file
39
nixos/tests/minidlna.nix
Normal file
@ -0,0 +1,39 @@
|
||||
import ./make-test.nix ({ pkgs, ... }: {
|
||||
name = "minidlna";
|
||||
|
||||
nodes = {
|
||||
server =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [ ../modules/profiles/minimal.nix ];
|
||||
networking.firewall.allowedTCPPorts = [ 8200 ];
|
||||
services.minidlna = {
|
||||
enable = true;
|
||||
loglevel = "error";
|
||||
mediaDirs = [
|
||||
"PV,/tmp/stuff"
|
||||
];
|
||||
friendlyName = "rpi3";
|
||||
rootContainer = "B";
|
||||
extraConfig =
|
||||
''
|
||||
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg
|
||||
album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg
|
||||
album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
|
||||
notify_interval=60
|
||||
'';
|
||||
};
|
||||
};
|
||||
client = { ... }: { };
|
||||
};
|
||||
|
||||
testScript =
|
||||
''
|
||||
startAll;
|
||||
$server->succeed("mkdir -p /tmp/stuff && chown minidlna: /tmp/stuff");
|
||||
$server->waitForUnit("minidlna");
|
||||
$server->waitForOpenPort("8200");
|
||||
$server->succeed("curl --fail http://localhost:8200/");
|
||||
$client->succeed("curl --fail http://server:8200/");
|
||||
'';
|
||||
})
|
Loading…
Reference in New Issue
Block a user