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 {
|
services.minidlna.loglevel = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "warn";
|
default = "warn";
|
||||||
@ -66,7 +97,37 @@ in
|
|||||||
|
|
||||||
services.minidlna.config = mkOption {
|
services.minidlna.config = mkOption {
|
||||||
type = types.lines;
|
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 =
|
services.minidlna.config =
|
||||||
''
|
''
|
||||||
port=${toString port}
|
port=${toString port}
|
||||||
friendly_name=${config.networking.hostName} MiniDLNA
|
friendly_name=${cfg.friendlyName}
|
||||||
db_dir=/var/cache/minidlna
|
db_dir=/var/cache/minidlna
|
||||||
log_level=${cfg.loglevel}
|
log_level=${cfg.loglevel}
|
||||||
inotify=yes
|
inotify=yes
|
||||||
|
root_container=${cfg.rootContainer}
|
||||||
${concatMapStrings (dir: ''
|
${concatMapStrings (dir: ''
|
||||||
media_dir=${dir}
|
media_dir=${dir}
|
||||||
'') cfg.mediaDirs}
|
'') cfg.mediaDirs}
|
||||||
|
${cfg.extraConfig}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
users.users.minidlna = {
|
users.users.minidlna = {
|
||||||
|
@ -162,6 +162,7 @@ in
|
|||||||
metabase = handleTest ./metabase.nix {};
|
metabase = handleTest ./metabase.nix {};
|
||||||
miniflux = handleTest ./miniflux.nix {};
|
miniflux = handleTest ./miniflux.nix {};
|
||||||
minio = handleTest ./minio.nix {};
|
minio = handleTest ./minio.nix {};
|
||||||
|
minidlna = handleTest ./minidlna.nix {};
|
||||||
misc = handleTest ./misc.nix {};
|
misc = handleTest ./misc.nix {};
|
||||||
mongodb = handleTest ./mongodb.nix {};
|
mongodb = handleTest ./mongodb.nix {};
|
||||||
moodle = handleTest ./moodle.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…
x
Reference in New Issue
Block a user