default.nix (7960B) - Raw
1 { 2 config, 3 lib, 4 ... 5 }: 6 let 7 cfg = config.mj.services.syncthing; 8 9 devices = { 10 "fwminex".id = "GKSUKZE-AOBQOWY-CNLZ2ZI-WNKATYE-MV4Y452-J3VCJ5C-EAANXRX-2P6EHA6"; 11 "mxp1".id = "2HBV27D-PK5DKQG-EQE4AV7-ASADXHJ-ER7GAZK-Z6C2NZP-64DLTKI-5OPUZAT"; 12 "vxp10".id = "CNAGBWH-3EAJ3XR-Z6K2DTW-P42O4SD-7JVCOEL-KIM7BKW-2WA7XS3-733NIQF"; 13 "rzj-744P2PE".id = "UW6ISH2-NW6X6AW-BJR76TV-TV3BIGZ-PA5QH2M-YEF567T-IWMHKD5-P3XHHAH"; 14 "sqq1-desk".id = "WJ5KGRS-AGDZ7SW-INIVWHR-Q4E5QX4-Y4TT2AK-QRJTOTL-2UHXX6O-5MUPGA2"; 15 "vno1-vinc".id = "4W3S7R2-OWI6XO6-V4NMDNB-NTIETYP-QJSBQGA-WEIXPHR-WNZZ7R4-VT4COAR"; 16 "vno1-gdrx".id = "XOZO6GL-MEH55QR-PTNRVHE-45PD3L2-SHP7XW6-VXKROQ5-F47U3AX-QQACLQP"; 17 "vno2-irena".id = "VL2MA2E-ZDGVHYN-A3Q3EKU-7J625QM-FG7CNXY-UKDL563-MDRRIEG-XQDS3AW"; 18 "vno2-desk2".id = "HUM7DHH-54XEV44-UVIK3TJ-DDMUFKR-S6IHDMB-6XXOSP2-3RKL4TB-M5VCGAQ"; 19 "vno3-nk".id = "HDESTGW-C3PGZLU-7V7KLWP-SIJVM3V-JEG6OMT-CGOLOQW-DZMIPS7-G7SVSQB"; 20 "macworx".id = "PPIEHDI-MJQJVDV-WGL4J56-PXWQ2IJ-WQMK5PF-UB6DNMZ-KWMVU2U-CUQHXQW"; 21 "v-kfire".id = "REEDZAL-KPLWARZ-466J4BR-H5UDI6D-UUA33QG-HPZHIMX-WNFLDGD-PJLTFQZ"; 22 "a-kfire".id = "VIQF4QW-2OLBBIK-XWOIO4A-264J32R-BE4J4BT-WEJXMYO-MXQDQHD-SJ6MEQ7"; 23 }; 24 folders = { 25 Zemelapiai = { 26 devices = [ 27 "vno1-gdrx" 28 "vno3-nk" 29 ]; 30 id = "ahz8ohSh"; 31 label = "Zemelapiai"; 32 }; 33 Books = { 34 devices = [ 35 "vno1-gdrx" 36 "fwminex" 37 "mxp1" 38 ]; 39 id = "8lk0n-mm63y"; 40 label = "Books"; 41 }; 42 Maildir = { 43 devices = [ 44 "vno1-gdrx" 45 "fwminex" 46 ]; 47 id = "9lk1k-za124"; 48 label = "Maildir"; 49 }; 50 M-Active = { 51 devices = [ 52 "vno1-gdrx" 53 "mxp1" 54 "fwminex" 55 "macworx" 56 ]; 57 id = "f6fma-unkxq"; 58 label = "M-Active"; 59 versioning = { 60 type = "staggered"; 61 params = { 62 cleanInterval = "3600"; 63 maxAge = builtins.toString (3600 * 24 * 30); 64 }; 65 }; 66 }; 67 M-Documents = { 68 devices = [ 69 "vno1-gdrx" 70 "fwminex" 71 ]; 72 id = "4fu7z-z6es2"; 73 label = "M-Documents"; 74 }; 75 Vaikai = { 76 devices = [ 77 "vno1-vinc" 78 "vno2-desk2" 79 "vno1-gdrx" 80 "fwminex" 81 "v-kfire" 82 "a-kfire" 83 "vxp10" 84 ]; 85 id = "xbrfr-mhszm"; 86 label = "Vaikai"; 87 }; 88 M-Camera = { 89 devices = [ 90 "mxp1" 91 "vno1-gdrx" 92 "fwminex" 93 ]; 94 id = "pixel_xl_dtm3-photos"; 95 label = "M-Camera"; 96 }; 97 R-Documents = { 98 devices = [ "rzj-744P2PE" ]; 99 id = "nm23h-aog6k"; 100 label = "R-Documents"; 101 }; 102 Pictures = { 103 devices = [ 104 "vno1-gdrx" 105 "fwminex" 106 ]; 107 id = "d3hur-cbzyw"; 108 label = "Pictures"; 109 }; 110 Music = { 111 devices = [ 112 "vno1-gdrx" 113 "fwminex" 114 "mxp1" 115 ]; 116 id = "tg94v-cqcwr"; 117 label = "music"; 118 }; 119 video-shared = { 120 devices = [ 121 "vno1-gdrx" 122 "mxp1" 123 "fwminex" 124 ]; 125 id = "byzmw-f6zhg"; 126 label = "video-shared"; 127 }; 128 stud-cache = { 129 devices = [ 130 "vno1-gdrx" 131 "fwminex" 132 ]; 133 id = "2kq7n-jqzxj"; 134 label = "stud-cache"; 135 }; 136 M-R = { 137 devices = [ 138 "vno1-gdrx" 139 "fwminex" 140 "rzj-744P2PE" 141 "mxp1" 142 "mxp1" 143 ]; 144 id = "evgn9-ahngz"; 145 label = "M-R"; 146 }; 147 Irenos = { 148 devices = [ 149 "fwminex" 150 "vno1-gdrx" 151 "vno2-irena" 152 "vno2-desk2" 153 ]; 154 id = "wuwai-qkcqj"; 155 label = "Irenos"; 156 }; 157 www-vno1-gdrx = { 158 devices = [ 159 "fwminex" 160 "vno1-gdrx" 161 ]; 162 id = "7z7ao-3hbxi"; 163 label = "www-vno1-gdrx"; 164 }; 165 www-mxp1 = { 166 devices = [ "mxp1" ]; 167 id = "gqrtz-prx9h"; 168 label = "www-mxp1"; 169 }; 170 }; 171 in 172 { 173 options.mj.services.syncthing = with lib.types; { 174 enable = lib.mkEnableOption "Enable services syncthing settings"; 175 user = lib.mkOption { type = str; }; 176 group = lib.mkOption { type = str; }; 177 dataDir = lib.mkOption { type = path; }; 178 }; 179 180 config = lib.mkIf cfg.enable { 181 services.syncthing = { 182 inherit (cfg) 183 enable 184 user 185 group 186 dataDir 187 ; 188 openDefaultPorts = true; 189 key = config.age.secrets.syncthing-key.path; 190 cert = config.age.secrets.syncthing-cert.path; 191 192 settings = { 193 devices = 194 { } 195 // (lib.optionalAttrs (config.networking.hostName == "vno1-gdrx") { 196 inherit (devices) 197 vno1-gdrx 198 vno3-nk 199 fwminex 200 macworx 201 mxp1 202 vxp10 203 vno2-irena 204 vno2-desk2 205 rzj-744P2PE 206 vno1-vinc 207 v-kfire 208 a-kfire 209 ; 210 }) 211 // (lib.optionalAttrs (config.networking.hostName == "vno2-desk2") { 212 inherit (devices) 213 vno2-desk2 214 vxp10 215 fwminex 216 v-kfire 217 a-kfire 218 sqq1-desk 219 vno1-vinc 220 vno1-gdrx 221 vno2-irena 222 ; 223 }) 224 // (lib.optionalAttrs (config.networking.hostName == "vno3-nk") { 225 inherit (devices) 226 vno3-nk 227 vno1-gdrx 228 fwminex 229 ; 230 }) 231 // (lib.optionalAttrs (config.networking.hostName == "fwminex") { 232 inherit (devices) 233 vno1-gdrx 234 vno3-nk 235 fwminex 236 macworx 237 mxp1 238 vxp10 239 rzj-744P2PE 240 vno1-vinc 241 vno2-irena 242 vno2-desk2 243 v-kfire 244 a-kfire 245 ; 246 }) 247 // { }; 248 folders = 249 with folders; 250 { } 251 // (lib.optionalAttrs (config.networking.hostName == "fwminex") { 252 "/var/www/dl/tel" = www-mxp1; 253 "/var/www/dl/vno1-gdrx" = www-vno1-gdrx; 254 "${cfg.dataDir}/annex2/Books" = Books; 255 "${cfg.dataDir}/annex2/Maildir" = Maildir; 256 "${cfg.dataDir}/annex2/M-Active" = M-Active; 257 "${cfg.dataDir}/annex2/M-Camera" = M-Camera; 258 "${cfg.dataDir}/annex2/M-Documents" = M-Documents; 259 "${cfg.dataDir}/annex2/R-Documents" = R-Documents; 260 "${cfg.dataDir}/annex2/Pictures" = Pictures; 261 "${cfg.dataDir}/annex2/M-R" = M-R; 262 "${cfg.dataDir}/stud-cache" = stud-cache; 263 "${cfg.dataDir}/video/shared" = video-shared; 264 "${cfg.dataDir}/video/Vaikai" = Vaikai; 265 "${cfg.dataDir}/music" = Music; 266 "${cfg.dataDir}/irenos" = Irenos; 267 }) 268 // (lib.optionalAttrs (config.networking.hostName == "vno3-nk") { 269 "/data/vno3-shared/Zemelapiai" = Zemelapiai; 270 }) 271 // (lib.optionalAttrs (config.networking.hostName == "vno1-gdrx") { 272 "${cfg.dataDir}/Books" = Books; 273 "${cfg.dataDir}/Maildir" = Maildir; 274 "${cfg.dataDir}/irenos" = Irenos; 275 "${cfg.dataDir}/M-Active" = M-Active; 276 "${cfg.dataDir}/M-Camera" = M-Camera; 277 "${cfg.dataDir}/M-Documents" = M-Documents; 278 "${cfg.dataDir}/Pictures" = Pictures; 279 "${cfg.dataDir}/Zemelapiai" = Zemelapiai; 280 "${cfg.dataDir}/M-R" = M-R; 281 "${cfg.dataDir}/stud-cache" = stud-cache; 282 "${cfg.dataDir}/video/shared" = video-shared; 283 "${cfg.dataDir}/video/Vaikai" = Vaikai; 284 "${cfg.dataDir}/music" = Music; 285 "${cfg.dataDir}/www" = www-vno1-gdrx; 286 }) 287 // (lib.optionalAttrs (config.networking.hostName == "vno2-desk2") { 288 "${cfg.dataDir}/Sync" = Irenos; 289 "${cfg.dataDir}/Vaikai" = Vaikai; 290 }); 291 }; 292 }; 293 }; 294 }