aboutsummaryrefslogtreecommitdiff
path: root/net-p2p
diff options
context:
space:
mode:
authorbruno <bruno@tinkerbox.org>2025-03-18 14:00:57 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2025-03-26 01:34:45 +0000
commit138e932c241c2a0ac6bba0a3e5dc9e210bd962ca (patch)
tree5fd4b8dc83728b48d74904f30ab1ede7a0ff1fb3 /net-p2p
parentab203b6cd26304a500ca678ffb17e13403903a3b (diff)
Diffstat (limited to 'net-p2p')
-rw-r--r--net-p2p/Makefile3
-rw-r--r--net-p2p/hostd/Makefile89
-rw-r--r--net-p2p/hostd/distinfo87
-rw-r--r--net-p2p/hostd/files/hostd.conf.in2
-rw-r--r--net-p2p/hostd/files/hostd.in35
-rw-r--r--net-p2p/hostd/files/hostd.yml.in30
-rw-r--r--net-p2p/hostd/files/patch-build_meta.go15
-rw-r--r--net-p2p/hostd/files/patch-vendor_modules.txt290
-rw-r--r--net-p2p/hostd/pkg-descr8
-rw-r--r--net-p2p/hostd/pkg-message9
-rw-r--r--net-p2p/renterd/Makefile96
-rw-r--r--net-p2p/renterd/distinfo101
-rw-r--r--net-p2p/renterd/files/patch-build_meta.go22
-rw-r--r--net-p2p/renterd/files/patch-vendor_modules.txt351
-rw-r--r--net-p2p/renterd/files/renterd.conf.in2
-rw-r--r--net-p2p/renterd/files/renterd.in35
-rw-r--r--net-p2p/renterd/files/renterd.yml.in54
-rw-r--r--net-p2p/renterd/pkg-descr4
-rw-r--r--net-p2p/renterd/pkg-message9
-rw-r--r--net-p2p/walletd/Makefile79
-rw-r--r--net-p2p/walletd/distinfo65
-rw-r--r--net-p2p/walletd/files/patch-build_meta.go15
-rw-r--r--net-p2p/walletd/files/patch-vendor_modules.txt204
-rw-r--r--net-p2p/walletd/files/pkg-message.in10
-rw-r--r--net-p2p/walletd/files/walletd-syslog.conf.in2
-rw-r--r--net-p2p/walletd/files/walletd.conf.in1
-rw-r--r--net-p2p/walletd/files/walletd.in36
-rw-r--r--net-p2p/walletd/files/walletd.yml.in30
-rw-r--r--net-p2p/walletd/pkg-descr10
29 files changed, 1694 insertions, 0 deletions
diff --git a/net-p2p/Makefile b/net-p2p/Makefile
index 635a3768aafb..0510ca815383 100644
--- a/net-p2p/Makefile
+++ b/net-p2p/Makefile
@@ -35,6 +35,7 @@
SUBDIR += ethash
SUBDIR += go-ethereum
SUBDIR += gtk-gnutella
+ SUBDIR += hostd
SUBDIR += intermodal
SUBDIR += jackett
SUBDIR += jigdo
@@ -88,6 +89,7 @@
SUBDIR += qbittorrent
SUBDIR += radarr
SUBDIR += readarr
+ SUBDIR += renterd
SUBDIR += reticulum
SUBDIR += retroshare
SUBDIR += rslsync
@@ -105,6 +107,7 @@
SUBDIR += udpt
SUBDIR += uhub
SUBDIR += vuze
+ SUBDIR += walletd
SUBDIR += warpinator
SUBDIR += xbt
SUBDIR += xmrig
diff --git a/net-p2p/hostd/Makefile b/net-p2p/hostd/Makefile
new file mode 100644
index 000000000000..fac04c19e735
--- /dev/null
+++ b/net-p2p/hostd/Makefile
@@ -0,0 +1,89 @@
+PORTNAME= hostd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.4
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Offer your storage space on the Sia network
+WWW= https://sia.tech/host
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+
+USE_RC_SUBR= hostd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/hostd
+GO_BUILDFLAGS+= -tags='netgo timetzdata'
+
+GH_TUPLE= SiaFoundation:core:v0.10.1:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:v0.11.1:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.3.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:hostd/v0.58.0:siafoundation_web_1/vendor/go.sia.tech/web/hostd \
+ aws:aws-sdk-go:v1.55.6:aws_aws_sdk_go/vendor/github.com/aws/aws-sdk-go \
+ cloudflare:cloudflare-go:v0.115.0:cloudflare_cloudflare_go/vendor/github.com/cloudflare/cloudflare-go \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v2.4.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml_1/vendor/gopkg.in/yaml.v3 \
+ goccy:go-json:v0.10.5:goccy_go_json/vendor/github.com/goccy/go-json \
+ golang:crypto:v0.33.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.18.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:time:v0.10.0:golang_time/vendor/golang.org/x/time \
+ golang:tools:v0.22.0:golang_tools/vendor/golang.org/x/tools \
+ google:go-querystring:v1.1.0:google_go_querystring/vendor/github.com/google/go-querystring \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ hashicorp:golang-lru:v2.0.7:hashicorp_golang_lru_v2/vendor/github.com/hashicorp/golang-lru/v2 \
+ jmespath:go-jmespath:v0.4.0:jmespath_go_jmespath/vendor/github.com/jmespath/go-jmespath \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ lukechampine:flagg:v1.1.1:lukechampine_flagg/vendor/lukechampine.com/flagg \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ lukechampine:upnp:v0.3.0:lukechampine_upnp/vendor/lukechampine.com/upnp \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.49.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ rogpeppe:go-internal:v1.12.0:rogpeppe_go_internal/vendor/github.com/rogpeppe/go-internal \
+ shopspring:decimal:v1.4.0:shopspring_decimal/vendor/github.com/shopspring/decimal \
+ uber-go:goleak:v1.3.0:uber_go_goleak/vendor/go.uber.org/goleak \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample etc/hostd.yml.sample" \
+ "@sample etc/newsyslog.conf.d/hostd.conf.sample" \
+ bin/hostd
+
+SUB_FILES= ${PORTNAME}.conf ${PORTNAME}.yml
+
+SUB_LIST= GROUPS=${GROUPS} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/hostd/distinfo b/net-p2p/hostd/distinfo
new file mode 100644
index 000000000000..b618bb995ef7
--- /dev/null
+++ b/net-p2p/hostd/distinfo
@@ -0,0 +1,87 @@
+TIMESTAMP = 1741778012
+SHA256 (SiaFoundation-hostd-v2.0.4_GH0.tar.gz) = 774cfa132b98453dc887b8e8048811aeed1656705cfdc9de76b98b0b9c68dbd2
+SIZE (SiaFoundation-hostd-v2.0.4_GH0.tar.gz) = 249233
+SHA256 (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 5981e02ffc9533a5cf1549aef7f14639a848414e4f4ad54299b19b337bc29527
+SIZE (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 150928
+SHA256 (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = f8331816cba3e36607fa96a66588acc2ed230a19ec900604dd24b33a72509d39
+SIZE (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = 99325
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = d1297bc70bad3006e1381b4ef9e824823319ef785dc211b38ab1d72f869cc94b
+SIZE (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = 28529
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-hostd-v0.58.0_GH0.tar.gz) = db607128a490367f100a9907f5f3f8061d6e4e4580757810ce8b090681de7491
+SIZE (SiaFoundation-web-hostd-v0.58.0_GH0.tar.gz) = 27986484
+SHA256 (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = ae51032a0575b798a24670ec1f006dcd7dc0804c7131f4061887df96f7d114c5
+SIZE (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = 33373600
+SHA256 (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = b82c3ed62a37aee5359b31822a4152c06b019ce43ba623f2ef7d7664bb27cffb
+SIZE (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = 517339
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v2.4.0_GH0.tar.gz) = d8e94679e5fff6bd1a35e10241543929a5f3da44f701755babf99b3daf0faac0
+SIZE (go-yaml-yaml-v2.4.0_GH0.tar.gz) = 73209
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (goccy-go-json-v0.10.5_GH0.tar.gz) = 15a6994e238a3d520816d53eacd115e6d3fd0816e570e8ae79f3a8fcf74616aa
+SIZE (goccy-go-json-v0.10.5_GH0.tar.gz) = 399031
+SHA256 (golang-crypto-v0.33.0_GH0.tar.gz) = f226aebdbb44372844bb754cedd9d4f6d958cf4686db4489de970546c5860913
+SIZE (golang-crypto-v0.33.0_GH0.tar.gz) = 1840655
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.18.0_GH0.tar.gz) = 247133e4ef1a5863af267a81c2d3f2b6e6b439f250db4e1d7e16df46d37e4d71
+SIZE (golang-mod-v0.18.0_GH0.tar.gz) = 123147
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-time-v0.10.0_GH0.tar.gz) = 4c04f20b8d5cac372d97e350ecb652ba2434c019cbb9e89dfeb1a0049b414cf6
+SIZE (golang-time-v0.10.0_GH0.tar.gz) = 12489
+SHA256 (golang-tools-v0.22.0_GH0.tar.gz) = ae80020fa6994e1e112478eb4fc3aefcf9b21500c6e2ef5c5b3bdbb3f8943f13
+SIZE (golang-tools-v0.22.0_GH0.tar.gz) = 3853706
+SHA256 (google-go-querystring-v1.1.0_GH0.tar.gz) = a5641dee688eb2c733608ce5a88d8181c93ad9f5083fd97fadbccb91afad9a56
+SIZE (google-go-querystring-v1.1.0_GH0.tar.gz) = 10423
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 312697d0bf6e6bb44e66a94b2a8a07955edf89af10b09e69b5a9101d30ad5149
+SIZE (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 23860
+SHA256 (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = aa86d00b6836345eee196c13df2df084a18e0b1159935de9289f2ef6a7fe375d
+SIZE (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = 128861
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 18be5b31baa80cef0f6ab83dc3022d1de96e3025011e4e290ff066a834913900
+SIZE (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 3163
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (lukechampine-upnp-v0.3.0_GH0.tar.gz) = e0911c0bf4acf197b3d5793259b2734d01d00dea93829845ee7a7de5cdd6e517
+SIZE (lukechampine-upnp-v0.3.0_GH0.tar.gz) = 5880
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 8816ec8c7f799e553442ddb686238ddffe28f843a576757ee2e7d491ea72117b
+SIZE (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 609138
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (rogpeppe-go-internal-v1.12.0_GH0.tar.gz) = b51d588d05f3e82d3045545ef46bd758a0610b9cfde1ae243489a593908b6060
+SIZE (rogpeppe-go-internal-v1.12.0_GH0.tar.gz) = 116899
+SHA256 (shopspring-decimal-v1.4.0_GH0.tar.gz) = 6ddc6bc4e94a0b3a8366bdd5674b4c2890faca1171afc3f7d20aec95e2c8d413
+SIZE (shopspring-decimal-v1.4.0_GH0.tar.gz) = 53681
+SHA256 (uber-go-goleak-v1.3.0_GH0.tar.gz) = 4813e7694736f4d7fd1aad195d942f40ffca448c29bff3282ba6e92eaba4e0cd
+SIZE (uber-go-goleak-v1.3.0_GH0.tar.gz) = 20057
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/hostd/files/hostd.conf.in b/net-p2p/hostd/files/hostd.conf.in
new file mode 100644
index 000000000000..4ca23bdb1227
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/hostd.log 600 20 * @T00 J /var/run/hostd.pid
diff --git a/net-p2p/hostd/files/hostd.in b/net-p2p/hostd/files/hostd.in
new file mode 100644
index 000000000000..e2cf08e5a730
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: hostd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# hostd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# hostd_config (path): Set to %%PREFIX%%/etc/hostd.yml
+# by default.
+
+. /etc/rc.subr
+
+name=hostd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${hostd_enable:=NO}
+: ${hostd_executable:="%%PREFIX%%/bin/hostd"}
+: ${hostd_config:="%%PREFIX%%/etc/hostd.yml"}
+
+hostd_env="HOSTD_CONFIG_FILE=${hostd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${hostd_executable}\""
+
+
+run_rc_command "$1"
diff --git a/net-p2p/hostd/files/hostd.yml.in b/net-p2p/hostd/files/hostd.yml.in
new file mode 100644
index 000000000000..1fb278d68209
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.yml.in
@@ -0,0 +1,30 @@
+directory: /var/db/hostd
+recoveryPhrase: indicate nature buzz route rude embody engage confirm aspect potato weapon bid
+autoOpenWebUI: true
+http:
+ address: :9980
+ password: sia is cool
+syncer:
+ address: :9981
+ bootstrap: true
+consensus:
+ network: mainnet
+ indexBatchSize: 100
+explorer:
+ url: https://api.siascan.com
+rhp2:
+ address: :9982
+rhp3:
+ tcp: :9983
+log:
+ level: info # global log level
+ stdout:
+ enabled: true # enable logging to stdout
+ level: info # log level for console logger
+ format: human # log format (human, json)
+ enableANSI: false # enable ANSI color codes (disabled on Windows)
+ file:
+ enabled: false # enable logging to file
+ level: info # log level for file logger
+ path: /var/log/hostd.log # the path of the log file
+ format: json # log format (human, json)
diff --git a/net-p2p/hostd/files/patch-build_meta.go b/net-p2p/hostd/files/patch-build_meta.go
new file mode 100644
index 000000000000..daf356fdda06
--- /dev/null
+++ b/net-p2p/hostd/files/patch-build_meta.go
@@ -0,0 +1,15 @@
+--- build/meta.go.orig 2025-02-24 21:26:07 UTC
++++ build/meta.go
+@@ -1,7 +1,9 @@
++// Code generated by go generate; DO NOT EDIT.
++// This file was generated by go generate at 2025-03-10T13:09:09+01:00.
+ package build
+
+ const (
+- commit = "?"
+- version = "2.0.0"
+- buildTime = 0
++ commit = "4094916"
++ version = "v2.0.4"
++ buildTime = %%BUILDTIME%%
+ )
diff --git a/net-p2p/hostd/files/patch-vendor_modules.txt b/net-p2p/hostd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..8a8239e2be0f
--- /dev/null
+++ b/net-p2p/hostd/files/patch-vendor_modules.txt
@@ -0,0 +1,290 @@
+--- vendor/modules.txt.orig 2025-03-12 12:08:29 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,287 @@
++# github.com/aws/aws-sdk-go v1.55.6
++## explicit; go 1.19
++github.com/aws/aws-sdk-go/aws
++github.com/aws/aws-sdk-go/aws/auth/bearer
++github.com/aws/aws-sdk-go/aws/awserr
++github.com/aws/aws-sdk-go/aws/awsutil
++github.com/aws/aws-sdk-go/aws/client
++github.com/aws/aws-sdk-go/aws/client/metadata
++github.com/aws/aws-sdk-go/aws/corehandlers
++github.com/aws/aws-sdk-go/aws/credentials
++github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
++github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
++github.com/aws/aws-sdk-go/aws/credentials/processcreds
++github.com/aws/aws-sdk-go/aws/credentials/ssocreds
++github.com/aws/aws-sdk-go/aws/credentials/stscreds
++github.com/aws/aws-sdk-go/aws/csm
++github.com/aws/aws-sdk-go/aws/defaults
++github.com/aws/aws-sdk-go/aws/ec2metadata
++github.com/aws/aws-sdk-go/aws/endpoints
++github.com/aws/aws-sdk-go/aws/request
++github.com/aws/aws-sdk-go/aws/session
++github.com/aws/aws-sdk-go/aws/signer/v4
++github.com/aws/aws-sdk-go/internal/context
++github.com/aws/aws-sdk-go/internal/ini
++github.com/aws/aws-sdk-go/internal/sdkio
++github.com/aws/aws-sdk-go/internal/sdkmath
++github.com/aws/aws-sdk-go/internal/sdkrand
++github.com/aws/aws-sdk-go/internal/sdkuri
++github.com/aws/aws-sdk-go/internal/shareddefaults
++github.com/aws/aws-sdk-go/internal/strings
++github.com/aws/aws-sdk-go/internal/sync/singleflight
++github.com/aws/aws-sdk-go/private/protocol
++github.com/aws/aws-sdk-go/private/protocol/json/jsonutil
++github.com/aws/aws-sdk-go/private/protocol/jsonrpc
++github.com/aws/aws-sdk-go/private/protocol/query
++github.com/aws/aws-sdk-go/private/protocol/query/queryutil
++github.com/aws/aws-sdk-go/private/protocol/rest
++github.com/aws/aws-sdk-go/private/protocol/restjson
++github.com/aws/aws-sdk-go/private/protocol/restxml
++github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
++github.com/aws/aws-sdk-go/service/route53
++github.com/aws/aws-sdk-go/service/sso
++github.com/aws/aws-sdk-go/service/sso/ssoiface
++github.com/aws/aws-sdk-go/service/ssooidc
++github.com/aws/aws-sdk-go/service/sts
++github.com/aws/aws-sdk-go/service/sts/stsiface
++# github.com/cloudflare/cloudflare-go v0.115.0
++## explicit; go 1.21
++github.com/cloudflare/cloudflare-go
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/goccy/go-json v0.10.5
++## explicit; go 1.19
++github.com/goccy/go-json
++github.com/goccy/go-json/internal/decoder
++github.com/goccy/go-json/internal/encoder
++github.com/goccy/go-json/internal/encoder/vm
++github.com/goccy/go-json/internal/encoder/vm_color
++github.com/goccy/go-json/internal/encoder/vm_color_indent
++github.com/goccy/go-json/internal/encoder/vm_indent
++github.com/goccy/go-json/internal/errors
++github.com/goccy/go-json/internal/runtime
++# github.com/google/go-querystring v1.1.0
++## explicit; go 1.10
++github.com/google/go-querystring/query
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/hashicorp/golang-lru/v2 v2.0.7
++## explicit; go 1.18
++github.com/hashicorp/golang-lru/v2
++github.com/hashicorp/golang-lru/v2/internal
++github.com/hashicorp/golang-lru/v2/simplelru
++# github.com/jmespath/go-jmespath v0.4.0
++## explicit; go 1.14
++github.com/jmespath/go-jmespath
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.49.0
++## explicit; go 1.22
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/qtls
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# github.com/rogpeppe/go-internal v1.12.0
++## explicit; go 1.20
++# github.com/shopspring/decimal v1.4.0
++## explicit; go 1.10
++github.com/shopspring/decimal
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.1
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v3
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.11.1
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.3.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/hostd v0.58.0
++## explicit; go 1.23.0
++go.sia.tech/web/hostd
++# go.uber.org/goleak v1.3.0
++## explicit; go 1.20
++go.uber.org/goleak
++go.uber.org/goleak/internal/stack
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/internal/ztest
++go.uber.org/zap/zapcore
++go.uber.org/zap/zaptest
++# golang.org/x/crypto v0.33.0
++## explicit; go 1.20
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.18.0
++## explicit; go 1.18
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/time v0.10.0
++## explicit; go 1.18
++golang.org/x/time/rate
++# golang.org/x/tools v0.22.0
++## explicit; go 1.19
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/internal/packagesdriver
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/tokeninternal
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v2 v2.4.0
++## explicit; go 1.15
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/flagg v1.1.1
++## explicit; go 1.12
++lukechampine.com/flagg
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
++# lukechampine.com/upnp v0.3.0
++## explicit; go 1.17
++lukechampine.com/upnp
++lukechampine.com/upnp/internal/goupnp
diff --git a/net-p2p/hostd/pkg-descr b/net-p2p/hostd/pkg-descr
new file mode 100644
index 000000000000..571348715619
--- /dev/null
+++ b/net-p2p/hostd/pkg-descr
@@ -0,0 +1,8 @@
+hostd is an advanced Sia host solution created by the Sia Foundation,
+designed to enhance the experience for storage providers within the
+Sia network. Tailored for both individual and large-scale storage
+providers, hostd boasts a user-friendly interface and a robust API,
+empowering providers to efficiently manage their storage resources and
+revenue. hostd incorporates an embedded web-UI, simplifying deployment
+and enabling remote management capabilities, ensuring a smooth user
+experience across a diverse range of devices.
diff --git a/net-p2p/hostd/pkg-message b/net-p2p/hostd/pkg-message
new file mode 100644
index 000000000000..726e6c1a133e
--- /dev/null
+++ b/net-p2p/hostd/pkg-message
@@ -0,0 +1,9 @@
+[
+{ type: install
+ message: <<EOM
+The program hostd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc hostd_enable="YES"
+EOM
+}
+]
diff --git a/net-p2p/renterd/Makefile b/net-p2p/renterd/Makefile
new file mode 100644
index 000000000000..26b25a850549
--- /dev/null
+++ b/net-p2p/renterd/Makefile
@@ -0,0 +1,96 @@
+PORTNAME= renterd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.1
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Rent storage space on the Sia network
+WWW= https://sia.tech/renterd
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+
+USE_RC_SUBR= renterd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/renterd
+GO_BUILDFLAGS+= -tags='netgo'
+
+GH_TUPLE= FiloSottile:edwards25519:v1.1.0:filosottile_edwards25519/vendor/filippo.io/edwards25519 \
+ SiaFoundation:core:v0.10.3:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:362f2554d5ca:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:gofakes3:v0.0.5:siafoundation_gofakes3/vendor/go.sia.tech/gofakes3 \
+ SiaFoundation:hostd:c17f8d0bcfae:siafoundation_hostd/vendor/go.sia.tech/hostd \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.4.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:renterd/v0.77.0:siafoundation_web_1/vendor/go.sia.tech/web/renterd \
+ aws:aws-sdk-go:v1.55.6:aws_aws_sdk_go/vendor/github.com/aws/aws-sdk-go \
+ cloudflare:cloudflare-go:v0.115.0:cloudflare_cloudflare_go/vendor/github.com/cloudflare/cloudflare-go \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ gabriel-vasile:mimetype:v1.4.8:gabriel_vasile_mimetype/vendor/github.com/gabriel-vasile/mimetype \
+ go-sql-driver:mysql:v1.9.0:go_sql_driver_mysql/vendor/github.com/go-sql-driver/mysql \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
+ goccy:go-json:v0.10.5:goccy_go_json/vendor/github.com/goccy/go-json \
+ golang:crypto:v0.35.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.22.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:time:v0.10.0:golang_time/vendor/golang.org/x/time \
+ golang:tools:v0.28.0:golang_tools/vendor/golang.org/x/tools \
+ google:go-cmp:v0.7.0:google_go_cmp/vendor/github.com/google/go-cmp \
+ google:go-querystring:v1.1.0:google_go_querystring/vendor/github.com/google/go-querystring \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ gotd:contrib:v0.21.0:gotd_contrib/vendor/github.com/gotd/contrib \
+ hashicorp:golang-lru:v2.0.7:hashicorp_golang_lru_v2/vendor/github.com/hashicorp/golang-lru/v2 \
+ jmespath:go-jmespath:v0.4.0:jmespath_go_jmespath/vendor/github.com/jmespath/go-jmespath \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ klauspost:cpuid:v2.2.9:klauspost_cpuid_v2/vendor/github.com/klauspost/cpuid/v2 \
+ klauspost:reedsolomon:v1.12.4:klauspost_reedsolomon/vendor/github.com/klauspost/reedsolomon \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ montanaflynn:stats:v0.7.1:montanaflynn_stats/vendor/github.com/montanaflynn/stats \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.50.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ ryszard:goskiplist:2dfbae5fcf46:ryszard_goskiplist/vendor/github.com/ryszard/goskiplist \
+ shabbyrobe:gocovmerge:c3350d9342df:shabbyrobe_gocovmerge/vendor/github.com/shabbyrobe/gocovmerge \
+ shopspring:decimal:v1.4.0:shopspring_decimal/vendor/github.com/shopspring/decimal \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample etc/newsyslog.conf.d/renterd.conf.sample" \
+ "@sample etc/renterd.yml.sample" \
+ bin/renterd
+
+SUB_FILES= ${PORTNAME}.conf ${PORTNAME}.yml
+
+SUB_LIST= GROUPS=${GROUPS} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/renterd/distinfo b/net-p2p/renterd/distinfo
new file mode 100644
index 000000000000..6fba9a924743
--- /dev/null
+++ b/net-p2p/renterd/distinfo
@@ -0,0 +1,101 @@
+TIMESTAMP = 1741782335
+SHA256 (SiaFoundation-renterd-v2.0.1_GH0.tar.gz) = f8a0074483dd905539425b8d9e68eb603e2710124f8b9e3a2e4b0d66f56d9021
+SIZE (SiaFoundation-renterd-v2.0.1_GH0.tar.gz) = 479158
+SHA256 (FiloSottile-edwards25519-v1.1.0_GH0.tar.gz) = b480c71e26d7a65e468a4f0cc2a414302dc89c6be4e58fe34779b0c9f12cac60
+SIZE (FiloSottile-edwards25519-v1.1.0_GH0.tar.gz) = 47125
+SHA256 (SiaFoundation-core-v0.10.3_GH0.tar.gz) = a21772d9b0a1d66c2c0022a0a644aa4d18fe72d21bb40254bf7bd5b9aebe5339
+SIZE (SiaFoundation-core-v0.10.3_GH0.tar.gz) = 152486
+SHA256 (SiaFoundation-coreutils-362f2554d5ca_GH0.tar.gz) = 92aea63e1cadab97a32f25c2619ce21fe74b4000903870301cc7f5eab7c41218
+SIZE (SiaFoundation-coreutils-362f2554d5ca_GH0.tar.gz) = 103497
+SHA256 (SiaFoundation-gofakes3-v0.0.5_GH0.tar.gz) = b8ce8e3c2db00f7486db1d13c13688cb3bd14420df43a0e6f8b1aae828f95b15
+SIZE (SiaFoundation-gofakes3-v0.0.5_GH0.tar.gz) = 288336
+SHA256 (SiaFoundation-hostd-c17f8d0bcfae_GH0.tar.gz) = c02f77deebffb09b8061655d676a1414c6b131140d2d814d2a32d15ba31c430b
+SIZE (SiaFoundation-hostd-c17f8d0bcfae_GH0.tar.gz) = 251575
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.4.0_GH0.tar.gz) = 36d408992c89a1b60ede9bdaf1fb65d6022b45212ad1e336b7ed931f719e7209
+SIZE (SiaFoundation-mux-v1.4.0_GH0.tar.gz) = 28746
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-renterd-v0.77.0_GH0.tar.gz) = 892947e3de4aab0b75bc95e9fb8e20c52c31feaddd6697de1a3b46815b815314
+SIZE (SiaFoundation-web-renterd-v0.77.0_GH0.tar.gz) = 27986823
+SHA256 (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = ae51032a0575b798a24670ec1f006dcd7dc0804c7131f4061887df96f7d114c5
+SIZE (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = 33373600
+SHA256 (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = b82c3ed62a37aee5359b31822a4152c06b019ce43ba623f2ef7d7664bb27cffb
+SIZE (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = 517339
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (gabriel-vasile-mimetype-v1.4.8_GH0.tar.gz) = 678759ccc452e15a3b58a65c7a9020ededb67f1de338d28491de5dc8c6de0ede
+SIZE (gabriel-vasile-mimetype-v1.4.8_GH0.tar.gz) = 811575
+SHA256 (go-sql-driver-mysql-v1.9.0_GH0.tar.gz) = 35da5ec9c4822c8aa0b36c6455e66989c33aa28c151981df65636d85d7152e4f
+SIZE (go-sql-driver-mysql-v1.9.0_GH0.tar.gz) = 109086
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (goccy-go-json-v0.10.5_GH0.tar.gz) = 15a6994e238a3d520816d53eacd115e6d3fd0816e570e8ae79f3a8fcf74616aa
+SIZE (goccy-go-json-v0.10.5_GH0.tar.gz) = 399031
+SHA256 (golang-crypto-v0.35.0_GH0.tar.gz) = c2d7dae8adb272567d5d9cc0c5f8566ca210b149149a4f790f25a6eef7731a2b
+SIZE (golang-crypto-v0.35.0_GH0.tar.gz) = 1841173
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.22.0_GH0.tar.gz) = 851bd2d05101f3592bd7331119af938300cd5f134ca0222a01bf5db773733ff1
+SIZE (golang-mod-v0.22.0_GH0.tar.gz) = 125874
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-time-v0.10.0_GH0.tar.gz) = 4c04f20b8d5cac372d97e350ecb652ba2434c019cbb9e89dfeb1a0049b414cf6
+SIZE (golang-time-v0.10.0_GH0.tar.gz) = 12489
+SHA256 (golang-tools-v0.28.0_GH0.tar.gz) = 2c0aa55c1748ba406eec2db21bf44ebec62b1d5812b6ba350b5d421af1544adb
+SIZE (golang-tools-v0.28.0_GH0.tar.gz) = 7452244
+SHA256 (google-go-cmp-v0.7.0_GH0.tar.gz) = c98f4f998ad8134b26816500b5c4c5cd6329905c0610b0c1f031efe7fbb469af
+SIZE (google-go-cmp-v0.7.0_GH0.tar.gz) = 105149
+SHA256 (google-go-querystring-v1.1.0_GH0.tar.gz) = a5641dee688eb2c733608ce5a88d8181c93ad9f5083fd97fadbccb91afad9a56
+SIZE (google-go-querystring-v1.1.0_GH0.tar.gz) = 10423
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (gotd-contrib-v0.21.0_GH0.tar.gz) = 6ef78b51dd6fcc378091855736d5dc3d07f480e138c6342c8a7f514480100c66
+SIZE (gotd-contrib-v0.21.0_GH0.tar.gz) = 58368
+SHA256 (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 312697d0bf6e6bb44e66a94b2a8a07955edf89af10b09e69b5a9101d30ad5149
+SIZE (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 23860
+SHA256 (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = aa86d00b6836345eee196c13df2df084a18e0b1159935de9289f2ef6a7fe375d
+SIZE (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = 128861
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (klauspost-cpuid-v2.2.9_GH0.tar.gz) = d0aa17338c623af41fe17bb542ebaac5313a56c5f0a400577ee89319d054b4ca
+SIZE (klauspost-cpuid-v2.2.9_GH0.tar.gz) = 668327
+SHA256 (klauspost-reedsolomon-v1.12.4_GH0.tar.gz) = 24045381a4c36cbe2176edcdfb2ead0a5d498b6bf4f021db4503df50546d6a2a
+SIZE (klauspost-reedsolomon-v1.12.4_GH0.tar.gz) = 571323
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (montanaflynn-stats-v0.7.1_GH0.tar.gz) = 97e9258173992d3caee6f7d7ac175d559dfc086388ad6c65fde439b808e1b725
+SIZE (montanaflynn-stats-v0.7.1_GH0.tar.gz) = 52136
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.50.0_GH0.tar.gz) = 5d5f061777823de7e8108c639c00724086449335e73d863352118e861e01cc8d
+SIZE (quic-go-quic-go-v0.50.0_GH0.tar.gz) = 618203
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (ryszard-goskiplist-2dfbae5fcf46_GH0.tar.gz) = 7749ec2dc1d5c16fbefc70080357ee123e6b25210cebce40e66bfa1a3cc6dc01
+SIZE (ryszard-goskiplist-2dfbae5fcf46_GH0.tar.gz) = 13876
+SHA256 (shabbyrobe-gocovmerge-c3350d9342df_GH0.tar.gz) = 0352ebd52d40a02380d4654ac892bd1386fb30f2663c296f57f718384ac83f41
+SIZE (shabbyrobe-gocovmerge-c3350d9342df_GH0.tar.gz) = 3366
+SHA256 (shopspring-decimal-v1.4.0_GH0.tar.gz) = 6ddc6bc4e94a0b3a8366bdd5674b4c2890faca1171afc3f7d20aec95e2c8d413
+SIZE (shopspring-decimal-v1.4.0_GH0.tar.gz) = 53681
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/renterd/files/patch-build_meta.go b/net-p2p/renterd/files/patch-build_meta.go
new file mode 100644
index 000000000000..020805bcfd32
--- /dev/null
+++ b/net-p2p/renterd/files/patch-build_meta.go
@@ -0,0 +1,22 @@
+--- build/meta.go.orig 2025-03-11 14:55:31 UTC
++++ build/meta.go
+@@ -1,5 +1,5 @@
+ // Code generated by go generate; DO NOT EDIT.
+-// This file was generated by go generate at 2024-08-12T08:54:43-07:00.
++// This file was generated by go generate at 2025-03-11T15:05:35+01:00.
+ package build
+
+ //go:generate go run gen.go
+@@ -9,9 +9,9 @@ const (
+ )
+
+ const (
+- commit = "?"
+- version = "?"
+- buildTime = 0
++ commit = "ec7e9c70"
++ version = "v2.0.1"
++ buildTime = %%BUILDTIME%%
+ )
+
+ // Commit returns the commit hash of hostd
diff --git a/net-p2p/renterd/files/patch-vendor_modules.txt b/net-p2p/renterd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..10189f0f3bbf
--- /dev/null
+++ b/net-p2p/renterd/files/patch-vendor_modules.txt
@@ -0,0 +1,351 @@
+--- vendor/modules.txt.orig 2025-03-12 12:29:21 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,348 @@
++# filippo.io/edwards25519 v1.1.0
++## explicit; go 1.20
++filippo.io/edwards25519
++filippo.io/edwards25519/field
++# github.com/aws/aws-sdk-go v1.55.6
++## explicit; go 1.19
++github.com/aws/aws-sdk-go/aws
++github.com/aws/aws-sdk-go/aws/arn
++github.com/aws/aws-sdk-go/aws/auth/bearer
++github.com/aws/aws-sdk-go/aws/awserr
++github.com/aws/aws-sdk-go/aws/awsutil
++github.com/aws/aws-sdk-go/aws/client
++github.com/aws/aws-sdk-go/aws/client/metadata
++github.com/aws/aws-sdk-go/aws/corehandlers
++github.com/aws/aws-sdk-go/aws/credentials
++github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
++github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
++github.com/aws/aws-sdk-go/aws/credentials/processcreds
++github.com/aws/aws-sdk-go/aws/credentials/ssocreds
++github.com/aws/aws-sdk-go/aws/credentials/stscreds
++github.com/aws/aws-sdk-go/aws/csm
++github.com/aws/aws-sdk-go/aws/defaults
++github.com/aws/aws-sdk-go/aws/ec2metadata
++github.com/aws/aws-sdk-go/aws/endpoints
++github.com/aws/aws-sdk-go/aws/request
++github.com/aws/aws-sdk-go/aws/session
++github.com/aws/aws-sdk-go/aws/signer/v4
++github.com/aws/aws-sdk-go/internal/context
++github.com/aws/aws-sdk-go/internal/ini
++github.com/aws/aws-sdk-go/internal/s3shared
++github.com/aws/aws-sdk-go/internal/s3shared/arn
++github.com/aws/aws-sdk-go/internal/s3shared/s3err
++github.com/aws/aws-sdk-go/internal/sdkio
++github.com/aws/aws-sdk-go/internal/sdkmath
++github.com/aws/aws-sdk-go/internal/sdkrand
++github.com/aws/aws-sdk-go/internal/sdkuri
++github.com/aws/aws-sdk-go/internal/shareddefaults
++github.com/aws/aws-sdk-go/internal/strings
++github.com/aws/aws-sdk-go/internal/sync/singleflight
++github.com/aws/aws-sdk-go/private/checksum
++github.com/aws/aws-sdk-go/private/protocol
++github.com/aws/aws-sdk-go/private/protocol/eventstream
++github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi
++github.com/aws/aws-sdk-go/private/protocol/json/jsonutil
++github.com/aws/aws-sdk-go/private/protocol/jsonrpc
++github.com/aws/aws-sdk-go/private/protocol/query
++github.com/aws/aws-sdk-go/private/protocol/query/queryutil
++github.com/aws/aws-sdk-go/private/protocol/rest
++github.com/aws/aws-sdk-go/private/protocol/restjson
++github.com/aws/aws-sdk-go/private/protocol/restxml
++github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
++github.com/aws/aws-sdk-go/service/route53
++github.com/aws/aws-sdk-go/service/s3
++github.com/aws/aws-sdk-go/service/sso
++github.com/aws/aws-sdk-go/service/sso/ssoiface
++github.com/aws/aws-sdk-go/service/ssooidc
++github.com/aws/aws-sdk-go/service/sts
++github.com/aws/aws-sdk-go/service/sts/stsiface
++# github.com/cloudflare/cloudflare-go v0.115.0
++## explicit; go 1.21
++github.com/cloudflare/cloudflare-go
++# github.com/gabriel-vasile/mimetype v1.4.8
++## explicit; go 1.20
++github.com/gabriel-vasile/mimetype
++github.com/gabriel-vasile/mimetype/internal/charset
++github.com/gabriel-vasile/mimetype/internal/json
++github.com/gabriel-vasile/mimetype/internal/magic
++# github.com/go-sql-driver/mysql v1.9.0
++## explicit; go 1.21
++github.com/go-sql-driver/mysql
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/goccy/go-json v0.10.5
++## explicit; go 1.19
++github.com/goccy/go-json
++github.com/goccy/go-json/internal/decoder
++github.com/goccy/go-json/internal/encoder
++github.com/goccy/go-json/internal/encoder/vm
++github.com/goccy/go-json/internal/encoder/vm_color
++github.com/goccy/go-json/internal/encoder/vm_color_indent
++github.com/goccy/go-json/internal/encoder/vm_indent
++github.com/goccy/go-json/internal/errors
++github.com/goccy/go-json/internal/runtime
++# github.com/google/go-cmp v0.7.0
++## explicit; go 1.21
++github.com/google/go-cmp/cmp
++github.com/google/go-cmp/cmp/cmpopts
++github.com/google/go-cmp/cmp/internal/diff
++github.com/google/go-cmp/cmp/internal/flags
++github.com/google/go-cmp/cmp/internal/function
++github.com/google/go-cmp/cmp/internal/value
++# github.com/google/go-querystring v1.1.0
++## explicit; go 1.10
++github.com/google/go-querystring/query
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/gotd/contrib v0.21.0
++## explicit; go 1.22
++github.com/gotd/contrib/http_range
++# github.com/hashicorp/golang-lru/v2 v2.0.7
++## explicit; go 1.18
++github.com/hashicorp/golang-lru/v2
++github.com/hashicorp/golang-lru/v2/internal
++github.com/hashicorp/golang-lru/v2/simplelru
++# github.com/jmespath/go-jmespath v0.4.0
++## explicit; go 1.14
++github.com/jmespath/go-jmespath
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/klauspost/cpuid/v2 v2.2.9
++## explicit; go 1.20
++github.com/klauspost/cpuid/v2
++# github.com/klauspost/reedsolomon v1.12.4
++## explicit; go 1.21
++github.com/klauspost/reedsolomon
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/montanaflynn/stats v0.7.1
++## explicit; go 1.13
++github.com/montanaflynn/stats
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.50.0
++## explicit; go 1.23
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46
++## explicit
++github.com/ryszard/goskiplist/skiplist
++# github.com/shabbyrobe/gocovmerge v0.0.0-20230507112040-c3350d9342df
++## explicit; go 1.12
++github.com/shabbyrobe/gocovmerge
++# github.com/shopspring/decimal v1.4.0
++## explicit; go 1.10
++github.com/shopspring/decimal
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.3
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v3
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.12.1-0.20250306145921-362f2554d5ca
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/rhp/v4/quic
++go.sia.tech/coreutils/rhp/v4/siamux
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/gofakes3 v0.0.5
++## explicit; go 1.21
++go.sia.tech/gofakes3
++go.sia.tech/gofakes3/internal/goskipiter
++go.sia.tech/gofakes3/signature
++# go.sia.tech/hostd v1.1.3-0.20250225054618-c17f8d0bcfae
++## explicit; go 1.23.1
++go.sia.tech/hostd/alerts
++go.sia.tech/hostd/build
++go.sia.tech/hostd/host/accounts
++go.sia.tech/hostd/host/contracts
++go.sia.tech/hostd/host/metrics
++go.sia.tech/hostd/host/registry
++go.sia.tech/hostd/host/settings
++go.sia.tech/hostd/host/settings/pin
++go.sia.tech/hostd/host/storage
++go.sia.tech/hostd/index
++go.sia.tech/hostd/internal/ddns
++go.sia.tech/hostd/internal/ddns/providers/cloudflare
++go.sia.tech/hostd/internal/ddns/providers/duckdns
++go.sia.tech/hostd/internal/ddns/providers/noip
++go.sia.tech/hostd/internal/ddns/providers/route53
++go.sia.tech/hostd/internal/threadgroup
++go.sia.tech/hostd/persist/sqlite
++go.sia.tech/hostd/rhp
++go.sia.tech/hostd/rhp/v2
++go.sia.tech/hostd/rhp/v3
++go.sia.tech/hostd/webhooks
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.4.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/renterd v0.77.0
++## explicit; go 1.23.0
++go.sia.tech/web/renterd
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/zapcore
++# golang.org/x/crypto v0.35.0
++## explicit; go 1.23.0
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.22.0
++## explicit; go 1.22.0
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/html
++golang.org/x/net/html/atom
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/time v0.10.0
++## explicit; go 1.18
++golang.org/x/time/rate
++# golang.org/x/tools v0.28.0
++## explicit; go 1.22.0
++golang.org/x/tools/cover
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/modindex
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
diff --git a/net-p2p/renterd/files/renterd.conf.in b/net-p2p/renterd/files/renterd.conf.in
new file mode 100644
index 000000000000..4da9b08d3f57
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/renterd.log 600 20 * @T00 J /var/run/renterd.pid
diff --git a/net-p2p/renterd/files/renterd.in b/net-p2p/renterd/files/renterd.in
new file mode 100644
index 000000000000..40736409543f
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: renterd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# renterd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# renterd_config (path): Set to %%PREFIX%%/etc/renterd.yml
+# by default.
+
+. /etc/rc.subr
+
+name=renterd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${renterd_enable:=NO}
+: ${renterd_executable:="%%PREFIX%%/bin/renterd"}
+: ${renterd_config:="%%PREFIX%%/etc/renterd.yml"}
+
+renterd_env="RENTERD_CONFIG_FILE=${renterd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${renterd_executable}\""
+
+
+run_rc_command "$1"
diff --git a/net-p2p/renterd/files/renterd.yml.in b/net-p2p/renterd/files/renterd.yml.in
new file mode 100644
index 000000000000..a4b43581c8ca
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.yml.in
@@ -0,0 +1,54 @@
+seed: rotation dream build introduce memorandum sphere trouble title pedestrian get conclusion large
+directory: /var/db/renterd
+shutdownTimeout: 5m0s
+log:
+ level: warn
+ stdout:
+ enabled: true
+ format: human
+ enableANSI: false
+ file:
+ enabled: false
+http:
+ address: localhost:9980
+ password: sia is cool
+bus:
+ announcementMaxAgeHours: 8736
+ bootstrap: true
+ gatewayAddr: :9981
+ persistInterval: 1m0s
+ usedUtxoExpiry: 24h0m0s
+ slabBufferCompleionThreshold: 4096
+worker:
+ enabled: true
+ id: worker
+ busFlushInterval: 5s
+ contractLockTimeout: 30s
+ downloadOverdriveTimeout: 3s
+ uploadOverdriveTimeout: 3s
+ downloadMaxOverdrive: 5
+ downloadMaxMemory: 1073741824
+ uploadMaxMemory: 1073741824
+ uploadMaxOverdrive: 5
+s3:
+ address: localhost:8080
+ enabled: true
+autopilot:
+ enabled: true
+ accountsRefillInterval: 10s
+ heartbeat: 30m0s
+ migrationHealthCutoff: 0.75
+ revisionBroadcastInterval: 168h0m0s
+ revisionSubmissionBuffer: 144
+ scannerInterval: 24h0m0s
+ scannerBatchSize: 1000
+ scannerNumThreads: 100
+ migratorParallelSlabsPerWorker: 1
+database:
+ log:
+ ignoreRecordNotFoundError: true
+ slowThreshold: 100ms
+ mysql:
+ user: renterd
+ database: renterd
+ metricsDatabase: renterd_metrics
diff --git a/net-p2p/renterd/pkg-descr b/net-p2p/renterd/pkg-descr
new file mode 100644
index 000000000000..89ca14935daa
--- /dev/null
+++ b/net-p2p/renterd/pkg-descr
@@ -0,0 +1,4 @@
+renterd is an advanced Sia renter engineered by the Sia
+Foundation. Designed to cater to both casual users seeking
+straightforward data storage and developers requiring a robust API for
+building apps on Sia.
diff --git a/net-p2p/renterd/pkg-message b/net-p2p/renterd/pkg-message
new file mode 100644
index 000000000000..fcc1957b94a5
--- /dev/null
+++ b/net-p2p/renterd/pkg-message
@@ -0,0 +1,9 @@
+[
+{ type: install
+ message: <<EOM
+The program renterd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc renterd_enable="YES"
+EOM
+}
+]
diff --git a/net-p2p/walletd/Makefile b/net-p2p/walletd/Makefile
new file mode 100644
index 000000000000..ddbacaedc44e
--- /dev/null
+++ b/net-p2p/walletd/Makefile
@@ -0,0 +1,79 @@
+PORTNAME= walletd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.0
+
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Official Sia Wallet
+WWW= https://sia.tech/software/walletd
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+USE_RC_SUBR= walletd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/walletd
+GO_BUILDFLAGS+= -tags='netgo timetzdata'
+
+GH_TUPLE= SiaFoundation:core:v0.10.1:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:v0.11.1:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.3.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:walletd/v0.29.0:siafoundation_web_1/vendor/go.sia.tech/web/walletd \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
+ golang:crypto:v0.33.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.18.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:tools:v0.22.0:golang_tools/vendor/golang.org/x/tools \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ lukechampine:flagg:v1.1.1:lukechampine_flagg/vendor/lukechampine.com/flagg \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ lukechampine:upnp:v0.3.0:lukechampine_upnp/vendor/lukechampine.com/upnp \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.49.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample(${USERS},${GROUPS},600) etc/walletd.yml.sample" \
+ "@sample etc/newsyslog.conf.d/walletd.conf.sample" \
+ bin/walletd
+
+SUB_FILES= ${PORTNAME}-syslog.conf ${PORTNAME}.conf ${PORTNAME}.yml pkg-message
+
+SUB_LIST= GROUPS=${GROUPS} \
+ PREFIX=${PREFIX} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}-syslog.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/walletd/distinfo b/net-p2p/walletd/distinfo
new file mode 100644
index 000000000000..36b2f39da2b6
--- /dev/null
+++ b/net-p2p/walletd/distinfo
@@ -0,0 +1,65 @@
+TIMESTAMP = 1741784221
+SHA256 (SiaFoundation-walletd-v2.0.0_GH0.tar.gz) = 156d225b76091ff1ca5158bcc61f54e525ac88e8a1bf8220e13636b9d2e4e22a
+SIZE (SiaFoundation-walletd-v2.0.0_GH0.tar.gz) = 98749
+SHA256 (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 5981e02ffc9533a5cf1549aef7f14639a848414e4f4ad54299b19b337bc29527
+SIZE (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 150928
+SHA256 (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = f8331816cba3e36607fa96a66588acc2ed230a19ec900604dd24b33a72509d39
+SIZE (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = 99325
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = d1297bc70bad3006e1381b4ef9e824823319ef785dc211b38ab1d72f869cc94b
+SIZE (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = 28529
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-walletd-v0.29.0_GH0.tar.gz) = 1a0d08bdc8ad35e6aa044b5ee267f01203da4a88c3ffed9aab399ac250b7bb47
+SIZE (SiaFoundation-web-walletd-v0.29.0_GH0.tar.gz) = 27986796
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (golang-crypto-v0.33.0_GH0.tar.gz) = f226aebdbb44372844bb754cedd9d4f6d958cf4686db4489de970546c5860913
+SIZE (golang-crypto-v0.33.0_GH0.tar.gz) = 1840655
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.18.0_GH0.tar.gz) = 247133e4ef1a5863af267a81c2d3f2b6e6b439f250db4e1d7e16df46d37e4d71
+SIZE (golang-mod-v0.18.0_GH0.tar.gz) = 123147
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-tools-v0.22.0_GH0.tar.gz) = ae80020fa6994e1e112478eb4fc3aefcf9b21500c6e2ef5c5b3bdbb3f8943f13
+SIZE (golang-tools-v0.22.0_GH0.tar.gz) = 3853706
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 18be5b31baa80cef0f6ab83dc3022d1de96e3025011e4e290ff066a834913900
+SIZE (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 3163
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (lukechampine-upnp-v0.3.0_GH0.tar.gz) = e0911c0bf4acf197b3d5793259b2734d01d00dea93829845ee7a7de5cdd6e517
+SIZE (lukechampine-upnp-v0.3.0_GH0.tar.gz) = 5880
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 8816ec8c7f799e553442ddb686238ddffe28f843a576757ee2e7d491ea72117b
+SIZE (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 609138
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/walletd/files/patch-build_meta.go b/net-p2p/walletd/files/patch-build_meta.go
new file mode 100644
index 000000000000..c2d643141ae5
--- /dev/null
+++ b/net-p2p/walletd/files/patch-build_meta.go
@@ -0,0 +1,15 @@
+--- build/meta.go.orig 2025-03-11 16:49:37 UTC
++++ build/meta.go
+@@ -1,7 +1,9 @@
++// Code generated by go generate; DO NOT EDIT.
++// This file was generated by go generate at 2025-03-11T17:25:25+01:00.
+ package build
+
+ const (
+- commit = "?"
+- version = "?"
+- buildTime = 0
++ commit = "42659f7"
++ version = "v2.0.0"
++ buildTime = %%BUILDTIME%%
+ )
diff --git a/net-p2p/walletd/files/patch-vendor_modules.txt b/net-p2p/walletd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..d8b93e2c615f
--- /dev/null
+++ b/net-p2p/walletd/files/patch-vendor_modules.txt
@@ -0,0 +1,204 @@
+--- vendor/modules.txt.orig 2025-03-12 13:07:20 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,201 @@
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.49.0
++## explicit; go 1.22
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/qtls
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.1
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.11.1
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.3.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/walletd v0.29.0
++## explicit; go 1.23.0
++go.sia.tech/web/walletd
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/internal/ztest
++go.uber.org/zap/zapcore
++go.uber.org/zap/zaptest
++# golang.org/x/crypto v0.33.0
++## explicit; go 1.20
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.18.0
++## explicit; go 1.18
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/tools v0.22.0
++## explicit; go 1.19
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/internal/packagesdriver
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/tokeninternal
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/flagg v1.1.1
++## explicit; go 1.12
++lukechampine.com/flagg
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
++# lukechampine.com/upnp v0.3.0
++## explicit; go 1.17
++lukechampine.com/upnp
++lukechampine.com/upnp/internal/goupnp
diff --git a/net-p2p/walletd/files/pkg-message.in b/net-p2p/walletd/files/pkg-message.in
new file mode 100644
index 000000000000..a3d074668263
--- /dev/null
+++ b/net-p2p/walletd/files/pkg-message.in
@@ -0,0 +1,10 @@
+[
+{ type: install
+ message: <<EOM
+The program walletd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc walletd_enable="YES"
+You must also set a password in %%PREFIX%%/etc/walletd.yml to access the UI
+EOM
+}
+]
diff --git a/net-p2p/walletd/files/walletd-syslog.conf.in b/net-p2p/walletd/files/walletd-syslog.conf.in
new file mode 100644
index 000000000000..51b1a930006f
--- /dev/null
+++ b/net-p2p/walletd/files/walletd-syslog.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/walletd.log 600 20 * @T00 J /var/run/walletd.pid
diff --git a/net-p2p/walletd/files/walletd.conf.in b/net-p2p/walletd/files/walletd.conf.in
new file mode 100644
index 000000000000..330e3cfb23c1
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.conf.in
@@ -0,0 +1 @@
+WALLETD_API_PASSWORD='some password'
diff --git a/net-p2p/walletd/files/walletd.in b/net-p2p/walletd/files/walletd.in
new file mode 100644
index 000000000000..03660950a4b3
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# PROVIDE: walletd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# walletd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# walletd_datadir (path): Set to /var/lib/walletd by default.
+#
+# walletd_passwordfile (filepath): set the UI password there.
+# by default located in %%PREFIX%%/etc/walletd.conf
+
+. /etc/rc.subr
+
+name=walletd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${walletd_enable:=NO}
+: ${walletd_executable:="%%PREFIX%%/bin/walletd"}
+: ${walletd_config:="%%PREFIX%%/etc/walletd.yml"}
+
+walletd_env="WALLETD_CONFIG_FILE=${walletd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${walletd_executable}\"
+
+run_rc_command "$1"
diff --git a/net-p2p/walletd/files/walletd.yml.in b/net-p2p/walletd/files/walletd.yml.in
new file mode 100644
index 000000000000..b584d8376015
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.yml.in
@@ -0,0 +1,30 @@
+directory: /var/db/walletd
+autoOpenWebUI: true
+http:
+ address: :9980
+ password: sia is cool
+ publicEndpoints: false # when true, auth will be disabled on endpoints that should be publicly accessible when running walletd as a service
+consensus:
+ network: mainnet
+syncer:
+ bootstrap: false
+ enableUPnP: false
+ peers: []
+ address: :9981
+keystore:
+ enabled: false
+index:
+ mode: personal # personal, full, none ("full" will index the entire blockchain, "personal" will only index addresses that are registered in the wallet, "none" will treat the database as read-only and not index any new data)
+ batchSize: 64 # max number of blocks to index at a time (increasing this will increase scan speed, but also increase memory and cpu usage)
+log:
+ level: info # global log level
+ stdout:
+ enabled: true # enable logging to stdout
+ level: info # override the global log level for stdout
+ enableANSI: false
+ format: human # human or JSON
+ file:
+ enabled: false # enable logging to a file
+ level: info # override the global log level for the file
+ path: /var/log/walletd.log
+ format: json # human or JSON
diff --git a/net-p2p/walletd/pkg-descr b/net-p2p/walletd/pkg-descr
new file mode 100644
index 000000000000..e5e3947db47a
--- /dev/null
+++ b/net-p2p/walletd/pkg-descr
@@ -0,0 +1,10 @@
+walletd is the flagship Sia wallet, suitable for miners, exchanges,
+and everyday hodlers. Its client-server architecture gives you the
+flexibility to access your funds from anywhere, on any device, without
+compromising the security of your private keys. The server is
+agnostic, so you can derive those keys from a 12-word seed phrase, a
+legacy (siad) 28-word phrase, a Ledger hardware wallet, or another
+preferred method. Like other Foundation node software, walletd ships
+with a slick embedded UI, but developers can easily build headless
+integrations leveraging its powerful JSON API. Whether you're using a
+single address or millions, walletd scales to your needs.