1{ pkgs, ... }:
2{
3 name = "deluge";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ flokli ];
6 };
7
8 nodes = {
9 simple = {
10 services.deluge = {
11 enable = true;
12 package = pkgs.deluge-2_x;
13 web = {
14 enable = true;
15 openFirewall = true;
16 };
17 };
18 };
19
20 declarative = {
21 services.deluge = {
22 enable = true;
23 package = pkgs.deluge-2_x;
24 openFirewall = true;
25 declarative = true;
26 config = {
27 allow_remote = true;
28 download_location = "/var/lib/deluge/my-download";
29 daemon_port = 58846;
30 listen_ports = [
31 6881
32 6889
33 ];
34 };
35 web = {
36 enable = true;
37 port = 3142;
38 };
39 authFile = pkgs.writeText "deluge-auth" ''
40 localclient:a7bef72a890:10
41 andrew:password:10
42 user3:anotherpass:5
43 '';
44 };
45 };
46
47 };
48
49 testScript = ''
50 start_all()
51
52 simple.wait_for_unit("deluged")
53 simple.wait_for_unit("delugeweb")
54 simple.wait_for_open_port(8112)
55 declarative.wait_for_unit("network.target")
56 declarative.wait_until_succeeds("curl --fail http://simple:8112")
57
58 declarative.wait_for_unit("deluged")
59 declarative.wait_for_unit("delugeweb")
60 declarative.wait_until_succeeds("curl --fail http://declarative:3142")
61
62 # deluge-console always exits with 1. https://dev.deluge-torrent.org/ticket/3291
63 declarative.succeed(
64 "(deluge-console 'connect 127.0.0.1:58846 andrew password; help' || true) | grep -q 'rm.*Remove a torrent'"
65 )
66 '';
67}