1{ pkgs, ... }:
2{
3 name = "minidlna";
4
5 nodes = {
6 server =
7 { ... }:
8 {
9 imports = [ ../modules/profiles/minimal.nix ];
10 services.minidlna.enable = true;
11 services.minidlna.openFirewall = true;
12 services.minidlna.settings = {
13 log_level = "error";
14 media_dir = [
15 "PV,/tmp/stuff"
16 ];
17 friendly_name = "rpi3";
18 root_container = "B";
19 notify_interval = 60;
20 album_art_names = [
21 "Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg"
22 "AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg"
23 "Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg"
24 ];
25 };
26 };
27 client = { ... }: { };
28 };
29
30 testScript = ''
31 start_all()
32 server.succeed("mkdir -p /tmp/stuff && chown minidlna: /tmp/stuff")
33 server.wait_for_unit("minidlna")
34 server.wait_for_open_port(8200)
35 # requests must be made *by IP* to avoid triggering minidlna's
36 # DNS-rebinding protection
37 server.succeed("curl --fail http://$(getent ahostsv4 localhost | head -n1 | cut -f 1 -d ' '):8200/")
38 client.succeed("curl --fail http://$(getent ahostsv4 server | head -n1 | cut -f 1 -d ' '):8200/")
39 '';
40}