{ lib, config, inputs, ... }: let cfg = config.modules.services.bin; fqdn = "${cfg.subdomain}.${config.networking.domain}"; in { imports = [ inputs.hastebin.nixosModules.default ]; options.modules.services.bin = { enable = lib.mkEnableOption "Enable Rustypaste"; subdomain = lib.mkOption { type = lib.types.str; }; port = lib.mkOption { type = lib.types.int; default = 3600; }; }; config = lib.mkIf cfg.enable { services.hastebin = { enable = true; settings = { port = cfg.port; host = "::1"; max_size = "1 GiB"; mime_overrides = { "text/plain" = [ "log" "txt" "diff" "sh" "rs" "toml" "cr" "nix" "rb" "ts" "tsx" "jsx" ]; }; auth_tokens_file = "/var/secrets/hastebin-tokens"; }; }; modules.services.webserver = { enable = lib.mkDefault true; vHosts.${fqdn} = { proxyBuffering = false; locations."/" = { proxyPort = cfg.port; extraConfig = '' client_max_body_size 0; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; ''; }; }; }; }; }