{ config, lib, namespace, ... }: with lib; let cfg = config.${namespace}.services.restic; in { imports = [ ./options.nix ]; config = mkIf cfg.enable { # Configure the standard NixOS restic server service services.restic.server = { enable = true; dataDir = cfg.dataDir; prometheus = cfg.prometheus; listenAddress = "${cfg.listenAddress}:${toString cfg.port}"; extraFlags = cfg.extraFlags; } // optionalAttrs (cfg.htpasswdFile != null) { htpasswd-file = cfg.htpasswdFile; }; # Open firewall for restic server if enabled networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; allowedUDPPorts = [ cfg.port ]; }; }; }