infra/nix/modules/caddy-custom-package.nix
2026-01-05 23:09:19 +01:00

131 lines
3.0 KiB
Nix

{
lib,
buildGoModule,
fetchFromGitHub,
plugins ? [],
vendorHash ? "",
pkgs, ...
}:
# let
let config.nix.settings.sandbox = false;
in with lib;
#############
pkgs.stdenv.mkDerivation rec {
pname = "caddy";
# getExe = lib.getExe caddy "$out/bin/caddy";
# meta.mainProgram = "$out/bin/caddy";
meta.mainProgram = "caddy";
# https://github.com/NixOS/nixpkgs/issues/113520
# version = "v2.7.4";
version = "v2.8.4";
dontUnpack = true;
nativeBuildInputs = with pkgs; [ git go_1_23 xcaddy ];
configurePhase = ''
export GOCACHE=$TMPDIR/go-cache
export GOPATH="$TMPDIR/go"
# export GOPROXY=direct
'';
buildPhase = let
pluginArgs = lib.concatMapStringsSep " " (plugin: "--with ${plugin}") plugins;
in ''
runHook preBuild
pwd && ls -lah
# go get github.com/caddyserver/caddy/v2@2.7.4
# go mod tidy
# export GOPROXY=direct
runHook build
#done=0
#until `[[ $done -eq 1 ]]`; do sleep 1; ${pkgs.xcaddy}/bin/xcaddy build ${version} ${pluginArgs} && done=1; done
${pkgs.xcaddy}/bin/xcaddy build ${version} ${pluginArgs}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv caddy $out/bin
runHook postInstall
'';
}
#############
#let
# imports = flip concatMapStrings plugins (pkg: "\t_ \"${pkg}\"\n");
#
# main = ''
# package main
#
# import (
# caddycmd "github.com/caddyserver/caddy/v2/cmd"
#
# ${imports}
# _ "github.com/caddyserver/caddy/v2/modules/standard"
# )
#
# func main() {
# caddycmd.Main()
# }
# '';
#in
#
# pkgs.buildGo121Module rec {
# pname = "caddy";
# version = "2.7.4";
# # version = "latest";
#
# subPackages = ["cmd/caddy"];
# ldflags = [
# "-s -w"
# ];
#
# src = fetchFromGitHub {
# owner = "caddyserver";
# repo = pname;
# rev = "v${version}";
# sha256 = "sha256-oZSAY7vS8ersnj3vUtxj/qKlLvNvNL2RQHrNr4Cc60k=";
# };
#
# # inherit vendorHash;
# vendorHash = "sha256-JL3AYb3/2Zz94/OVk9mXe0AeHmtDkXROEtZnNJ4rqK8=";
# proxyVendor = false;
#
# overrideModAttrs = _: {
# preBuild = "echo '${main}' > cmd/caddy/main.go && go get github.com/caddyserver/caddy/v2@v2.7.4 && go mod tidy";
# postInstall = ''
# cp go.sum go.mod $out/
# ls $out/
# '';
# };
#
# postPatch = ''
# echo '${main}' > cmd/caddy/main.go
# cat cmd/caddy/main.go
# '';
#
# #configurePhase = ''
# # export GOCACHE=$TMPDIR/go-cache
# # export GOPATH="$TMPDIR/go"
# # # go get github.com/caddyserver/caddy/v2@2.7.4
# #'';
# postConfigure = ''
# # go get github.com/caddyserver/caddy/v2@2.7.4
# # go mod vendor
# cp vendor/go.sum ./
# cp vendor/go.mod ./
# '';
# #postConfigure = ''
# # cp vendor/go.sum ./
# # cp vendor/go.mod ./
# #'';
#
# meta = with lib; {
# homepage = https://caddyserver.com;
# description = "Fast, cross-platform HTTP/2 web server with automatic HTTPS";
# license = licenses.asl20;
# maintainers = with maintainers; [rushmorem fpletz zimbatm];
# };
# }