From 1f3c9f8a18db5a6b77d59623cacb8acf042e17f7 Mon Sep 17 00:00:00 2001 From: Mr Hedgehog Date: Sun, 10 Jul 2022 11:01:29 -0400 Subject: [PATCH] prefect: use custom caddy build --- hosts/prefect/services/caddy.nix | 5 +++ pkgs/caddy.nix | 59 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 pkgs/caddy.nix diff --git a/hosts/prefect/services/caddy.nix b/hosts/prefect/services/caddy.nix index 62d7c85..d1426f2 100644 --- a/hosts/prefect/services/caddy.nix +++ b/hosts/prefect/services/caddy.nix @@ -6,6 +6,11 @@ }: { services.caddy = { enable = true; + package = pkgs.callPackage ../../../pkgs/caddy.nix { + plugins = [ + "github.com/greenpau/caddy-security" + ]; + }; email = "hedgehog@mrhedgehog.xyz"; # globalConfig = '' # ''; diff --git a/pkgs/caddy.nix b/pkgs/caddy.nix new file mode 100644 index 0000000..a6ecded --- /dev/null +++ b/pkgs/caddy.nix @@ -0,0 +1,59 @@ +{ lib, fetchFromGitHub, buildGoModule, plugins ? [], vendorSha256 ? "" }: + +with lib; + +let imports = flip concatMapStrings plugins (pkg: "\t\t\t_ \"${pkg}\"\n"); + + main = '' + package main + + import ( + caddycmd "github.com/caddyserver/caddy/v2/cmd" + + _ "github.com/caddyserver/caddy/v2/modules/standard" +${imports} + ) + + func main() { + caddycmd.Main() + } + ''; + + +in buildGoModule rec { + pname = "caddy"; + version = "2.4.6"; + runVend = true; + subPackages = [ "cmd/caddy" ]; + + src = fetchFromGitHub { + owner = "caddyserver"; + repo = "caddy"; + rev = "v${version}"; + sha256 = "sha256-xNCxzoNpXkj8WF9+kYJfO18ux8/OhxygkGjA49+Q4vY="; + }; + + inherit vendorSha256; + + overrideModAttrs = (_: { + preBuild = "echo '${main}' > cmd/caddy/main.go"; + postInstall = "cp go.sum go.mod $out/ && ls $out/"; + }); + + postPatch = '' + echo '${main}' > cmd/caddy/main.go + cat cmd/caddy/main.go + ''; + + postConfigure = '' + cp vendor/go.sum ./ + cp vendor/go.mod ./ + ''; + + meta = { + homepage = https://caddyserver.com; + description = "Fast, cross-platform HTTP/2 web server with automatic HTTPS"; + license = licenses.asl20; + maintainers = with maintainers; [ Br1ght0ne ]; + }; +}