config

NixOS config
Log | Files | Refs | README | LICENSE

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 }