{ pkgs, config, lib, ... }: with builtins; let masters = { c1 = "192.168.1.71:9333"; c2 = "192.168.1.72:9333"; c3 = "192.168.1.73:9333"; }; master_enabled = masters ? ${config.networking.hostName}; in { imports = [ ./seaweedfs_lib.nix ]; services.seaweedfs.master = { enable = master_enabled; peers = attrValues masters; extraConfig.ip = head (split ":" masters.${config.networking.hostName}); }; services.seaweedfs.filer = { enable = true; master = attrValues masters; }; services.seaweedfs.volumes = { default = { enable = true; mserver = attrValues masters; dir = [ "/persist/weed/volume-default" ]; }; }; users.users.seaweedfs.group = "seaweedfs"; users.groups.seaweedfs = {}; environment.persistence."/persist".directories = [ "/var/lib/seaweedfs" ]; networking.firewall.allowedTCPPorts = [ config.services.seaweedfs.volumes.default.port 19333 config.services.seaweedfs.filer.port 18888 ] ++ (if master_enabled then [ config.services.seaweedfs.master.port 19333 ] else [ ]); }