Personal-use NixOS configuration
at main 137 lines 2.6 kB view raw
1{ 2 hosts ? [ ], 3}: 4 5{ 6 config, 7 flakeLib, 8 ... 9}: 10 11{ 12 services.slskd = { 13 enable = true; 14 15 domain = null; 16 17 settings = { 18 # Upload limits assume a fast connection 19 global = { 20 upload = { 21 slots = 75; 22 speed_limit = 122070; 23 }; 24 }; 25 26 groups.default = { 27 upload = { 28 slots = 50; 29 speed_limit = 12207; 30 }; 31 32 limits.queued = { 33 files = 300; 34 megabytes = 5000; 35 }; 36 37 limits.daily = { 38 files = 2147483647; 39 megabytes = 2147483647; 40 }; 41 42 limits.weekly = { 43 files = 2000; 44 megabytes = 30000; 45 }; 46 }; 47 48 groups.leechers = { 49 thresholds = { 50 files = 25; 51 directories = 3; 52 }; 53 54 upload = { 55 slots = 3; 56 speed_limit = 976; 57 }; 58 59 limits.queued = { 60 files = 30; 61 megabytes = 1000; 62 }; 63 64 limits.daily = { 65 files = 30; 66 megabytes = 1000; 67 }; 68 69 limits.weekly = { 70 files = 150; 71 megabytes = 5000; 72 }; 73 }; 74 75 shares = { 76 # These files can contain sensitive information 77 filters = [ 78 ".md$" 79 ".log$" 80 ".pydio$" 81 ]; 82 83 # Assumes a more powerful machine 84 cache = { 85 storage_mode = "memory"; 86 workers = 8; 87 retention = 10080; 88 }; 89 }; 90 91 filters.search.request = [ 92 "^.{1,2}$" 93 "^(\.?pdf|\.?docx|\.?xlsx)$" 94 ]; 95 96 retention = { 97 # Users go offline often, invalidating search 98 search = 5; 99 100 # The following numbers are measured in hours 101 transfers = { 102 upload = { 103 succeeded = 10080; 104 errored = 1440; 105 cancelled = 1440; 106 }; 107 108 download = { 109 succeeded = 1440; 110 errored = 10080; 111 cancelled = 10080; 112 }; 113 }; 114 }; 115 116 web = { 117 socket = "/run/slskd/slskd.sock"; 118 }; 119 }; 120 }; 121 122 systemd.services.slskd.serviceConfig = { 123 RuntimeDirectory = config.services.slskd.user; 124 RuntimeDirectoryMode = "0750"; 125 UMask = "0007"; 126 }; 127 128 # Caddy reverse proxy configuration 129 users.users.caddy.extraGroups = [ config.services.slskd.group ]; 130 131 services.caddy.virtualHosts = flakeLib.mkProxies hosts '' 132 reverse_proxy unix/${toString config.services.slskd.settings.web.socket} { 133 header_up Upgrade "websocket" 134 header_up Connection "Upgrade" 135 } 136 ''; 137}