8 Commits

Author SHA1 Message Date
self 5abdfc8fcc chore: Bump tribes + supertest
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 32m59s
2026-06-19 16:43:33 +02:00
self bc8ff14569 chore: Bump tribes
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 31m56s
2026-06-19 11:27:34 +02:00
self ba211e1d18 build: update tribes pin
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 32m36s
Refresh the Tribes source pin after the bootstrap ID propagation and plugin log-prefix test fixes.
2026-06-19 09:08:41 +02:00
self b08420710a build: update tribes pin
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 33m35s
Point the Tribes package source at the sync-lane readiness fix in tribes commit 7a1b3896bacbe85768a6459b2759d20bf9ac739f and refresh the source hash.
2026-06-18 21:30:43 +02:00
self 061ea3da52 fix: support prefixed plugin slugs in pin updater
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 31m40s
Resolve plugin source names from canonical tribe-one-* slugs when repositories and Guix files still use the unprefixed basename. Allow the source basename form to follow the manifest slug during the transition and refresh the Sender plugin pin.
2026-06-18 02:21:26 +02:00
self 07f831a909 build: use prefixed plugin names
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 32m39s
Update Guix plugin definitions, substitute targets, and deployment tests to use canonical tribe-one-prefixed plugin slugs.
2026-06-17 22:42:02 +02:00
self 0bbeed9df9 fix: restore lean OTP packages
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 33m36s
Reintroduce the custom Erlang/Elixir package set for Tribes builds and bump Erlang to OTP 28.5.0.2 with wx and wx-dependent OTP applications disabled.

Verified with guix build -L . erlang-28 --no-grafts, guix build -L . rebar3-otp28 elixir-otp28 elixir-hex-otp28 --no-grafts, and guix build -L . tribes --no-grafts.
2026-06-17 15:44:06 +02:00
self dfc6f3ebb3 fix: extend vinyl admin API timeouts
Pinned Docker E2E / pinned-docker-e2e (push) Failing after 32m1s
Give /api/admin/* requests a longer Vinyl backend first-byte and between-bytes timeout while keeping the global edge cache defaults strict. This prevents long-running authenticated admin operations such as cluster_full_resync from being cut off by the 5s public edge timeout.\n\nAdd a system-node VCL assertion for the admin timeout override.
2026-06-17 12:13:35 +02:00
17 changed files with 236 additions and 89 deletions
+46 -10
View File
@@ -16,13 +16,19 @@ Usage: update-plugin-pin [options] plugin [rev]
Pin a Tribes external plugin and refresh fixed-output hashes.
PLUGIN is the plugin slug. REV defaults to "master" resolved from the
plugin checkout. The plugin manifest.json is the source of truth for plugin
id, slug, version, provides, and requires metadata. By default the script expects
the plugin checkout at ../tribes-plugin-$PLUGIN and the Guix plugin file at
tribes/plugins/$PLUGIN.scm relative to the guix-tribes checkout.
PLUGIN is the canonical plugin slug or, for older plugin layouts, the source
repository basename. REV defaults to "master" resolved from the plugin checkout.
The plugin manifest.json is the source of truth for plugin id, slug, version,
provides, and requires metadata. By default the script expects the plugin
checkout at ../tribes-plugin-$PLUGIN and the Guix plugin file at
tribes/plugins/$PLUGIN.scm relative to the guix-tribes checkout. If those do not
exist and PLUGIN starts with tribe-one-, it also tries the unprefixed source
basename. Use --plugin-source-name when the source repository and Guix file
basename differ from the canonical slug.
Options:
--plugin-source-name NAME
Source repository, Guix file, package, and Scheme symbol basename
--plugin-repo PATH Local plugin git checkout
--plugin-file PATH Guix plugin definition file to update
--tribes-repo PATH Local Tribes git checkout used for the host plugin API
@@ -133,6 +139,7 @@ my %opts;
GetOptionsFromArray(
\@argv,
'plugin-source-name=s' => \$opts{plugin_source_name},
'plugin-repo=s' => \$opts{plugin_repo},
'plugin-file=s' => \$opts{plugin_file},
'tribes-repo=s' => \$opts{tribes_repo},
@@ -168,16 +175,37 @@ my $default_tribes_repo = abs_path(File::Spec->catdir($default_guix_repo, '..',
my $guix_repo = $opts{guix_repo} ? abs_path($opts{guix_repo}) : $default_guix_repo;
my $tribes_repo = $opts{tribes_repo} ? abs_path($opts{tribes_repo}) : $default_tribes_repo;
sub default_plugin_source_name {
my ($plugin, $guix_repo) = @_;
my @candidates = ($plugin);
if ($plugin =~ /^tribe-one-(.+)$/) {
push @candidates, $1;
}
for my $candidate (@candidates) {
my $repo = File::Spec->catdir($guix_repo, '..', "tribes-plugin-$candidate");
my $file = File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$candidate.scm");
return $candidate if -d File::Spec->catdir($repo, '.git') && -f $file;
}
return $plugin;
}
my $plugin_source_name = $opts{plugin_source_name} // default_plugin_source_name($plugin, $guix_repo);
$plugin_source_name =~ /^[A-Za-z0-9._+-]+$/ or fail("Invalid plugin source name: $plugin_source_name");
my $plugin_repo =
$opts{plugin_repo}
? abs_path($opts{plugin_repo})
: abs_path(File::Spec->catdir($guix_repo, '..', "tribes-plugin-$plugin"));
: abs_path(File::Spec->catdir($guix_repo, '..', "tribes-plugin-$plugin_source_name"));
my $plugin_file =
$opts{plugin_file}
? abs_path($opts{plugin_file})
: File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$plugin.scm");
: File::Spec->catfile($guix_repo, 'tribes', 'plugins', "$plugin_source_name.scm");
my $source_file = File::Spec->catfile($guix_repo, 'tribes', 'packages', 'source.scm');
my $plugin_package_name = "tribes-plugin-$plugin";
my $plugin_package_name = "tribes-plugin-$plugin_source_name";
-d File::Spec->catdir($plugin_repo, '.git') or fail("Plugin repo not found: $plugin_repo");
-d File::Spec->catdir($tribes_repo, '.git') or fail("Tribes repo not found: $tribes_repo");
@@ -253,7 +281,14 @@ my $version = $manifest->{version};
my $provides_joined = join("\037", @{ $manifest->{provides} });
my $requires_joined = join("\037", @{ $manifest->{requires} });
$plugin_slug eq $plugin or fail("Plugin manifest slug mismatch: expected $plugin, got $plugin_slug");
if ($plugin_slug ne $plugin) {
if (!defined($opts{plugin_source_name}) && $plugin eq $plugin_source_name) {
print STDERR "Plugin argument '$plugin' matched source name; using manifest slug '$plugin_slug'.\n";
$plugin = $plugin_slug;
} else {
fail("Plugin manifest slug mismatch: expected $plugin, got $plugin_slug");
}
}
my ($plugin_source_for_scheme, $tribes_source_for_scheme, $guix_load_path);
my $source_hash;
@@ -348,7 +383,7 @@ my $dummy_hash = '0' x 52;
my $text = read_file($plugin_file);
my @candidates;
for my $candidate ($plugin, ($plugin =~ tr/_/-/r)) {
for my $candidate ($plugin_source_name, ($plugin_source_name =~ tr/_/-/r)) {
push @candidates, $candidate unless grep { $_ eq $candidate } @candidates;
}
@@ -502,6 +537,7 @@ write_file($plugin_file, $text);
print "Updated $plugin_file\n";
print "plugin: $plugin\n";
print "plugin source name: $plugin_source_name\n" if $plugin_source_name ne $plugin;
print "plugin id: $plugin_id\n";
print "commit: $commit\n";
print "host tribes commit: $host_commit\n";
+12 -7
View File
@@ -2,10 +2,10 @@
set -eu
# External plugin pins to refresh. Each name maps to ../tribes-plugin-$name
# and tribes/plugins/$name.scm unless update-plugin-pin is called with
# different defaults in the future.
plugins="sender aether supertest kobold trust"
# External plugin pins to refresh. Each entry is canonical-slug:source-name.
# The source name maps to ../tribes-plugin-$source_name and
# tribes/plugins/$source_name.scm.
plugins="tribe-one-sender:sender tribe-one-aether:aether tribe-one-supertest:supertest tribe-one-kobold:kobold tribe-one-trust:trust"
usage() {
cat <<'EOF'
@@ -86,11 +86,15 @@ fi
--tribes-repo "$tribes_repo" \
$build_host_args
for plugin in $plugins; do
for plugin_entry in $plugins; do
plugin=${plugin_entry%%:*}
plugin_source_name=${plugin_entry#*:}
# shellcheck disable=SC2086
"$update_plugin_pin" \
--guix-repo "$guix_repo" \
--tribes-repo "$tribes_repo" \
--plugin-source-name "$plugin_source_name" \
$build_host_args \
"$plugin"
done
@@ -99,8 +103,9 @@ if [ "$commit_after" = true ]; then
git -C "$guix_repo" add -- \
tribes/packages/source.scm
for plugin in $plugins; do
git -C "$guix_repo" add -- "tribes/plugins/$plugin.scm"
for plugin_entry in $plugins; do
plugin_source_name=${plugin_entry#*:}
git -C "$guix_repo" add -- "tribes/plugins/$plugin_source_name.scm"
done
if git -C "$guix_repo" diff --cached --quiet; then
+1 -1
View File
@@ -58,7 +58,7 @@
(operating-system-host-name kobold-edge-operating-system))
(test-equal "kobold target includes trust provider"
'("trust" "kobold")
'("tribe-one-trust" "tribe-one-kobold")
(target-plugin-names kobold-edge-operating-system))
(test-equal "sender target has expected host name"
+18 -18
View File
@@ -25,7 +25,7 @@
(define valid-target
`(("trusted_signers" . (,valid-signer))
("channels" . (,valid-channel))
("plugins" . ((("plugin_name" . "aether")
("plugins" . ((("plugin_name" . "tribe-one-aether")
("channel_id" . "guix-tribes")
("enabled" . #t))))))
@@ -43,16 +43,16 @@
("action" . "apply"))))
(test-equal "deployment request plugins preserve names"
'("aether")
'("tribe-one-aether")
(deployment-request-plugins
'(("schemaVersion" . "1")
("action" . "apply")
("plugins" . ("aether")))))
("plugins" . ("tribe-one-aether")))))
(test-equal "host config plugins are updated in tribes block"
'(("schemaVersion" . "1")
("tribes" . (("host" . "example.com")
("plugins" . ("aether"))
("plugins" . ("tribe-one-aether"))
("disabledPlugins" . ())))
("edge" . (("certificateName" . "tribes"))))
(host-config-with-plugins
@@ -60,12 +60,12 @@
("tribes" . (("host" . "example.com")
("plugins" . ())))
("edge" . (("certificateName" . "tribes"))))
'("aether")))
'("tribe-one-aether")))
(test-equal "system target plugin names include installed plugins"
'("aether" "disabled")
'("tribe-one-aether" "disabled")
(system-target-plugin-names
'(("plugins" . ((("plugin_name" . "aether")
'(("plugins" . ((("plugin_name" . "tribe-one-aether")
("enabled" . #t))
(("plugin_name" . "disabled")
("enabled" . #f)))))))
@@ -73,7 +73,7 @@
(test-equal "system target disabled plugin names include disabled plugins"
'("disabled")
(system-target-disabled-plugin-names
'(("plugins" . ((("plugin_name" . "aether")
'(("plugins" . ((("plugin_name" . "tribe-one-aether")
("enabled" . #t))
(("plugin_name" . "disabled")
("enabled" . #f)))))))
@@ -101,7 +101,7 @@
guix-tribes-runtime-missing-capabilities)
(test-equal "resolve-target emits channel-aware plugin package refs"
'("aether")
'("tribe-one-aether")
(let* ((plan (resolve-target valid-target))
(hash-value (json-ref plan "plan_hash"))
(resolved-plugins
@@ -119,7 +119,7 @@
(plan-plugins plan)))
(test-equal "resolve-target accepts spaced introduction fingerprints"
'("sender")
'("tribe-one-sender")
(let* ((spaced-channel
`(("id" . "guix-tribes")
("channel_id" . "guix-tribes")
@@ -134,29 +134,29 @@
(resolve-target
`(("trusted_signers" . (,valid-signer))
("channels" . (,spaced-channel))
("plugins" . ((("plugin_name" . "sender")
("plugins" . ((("plugin_name" . "tribe-one-sender")
("channel_id" . "guix-tribes")
("enabled" . #t))))))))
(plan-plugins plan)))
(test-equal "resolve-target satisfies org.tribe-one.caps.ui@1 from built-in Tribes UI"
'("sender")
'("tribe-one-sender")
(let ((plan
(resolve-target
`(("trusted_signers" . (,valid-signer))
("channels" . (,valid-channel))
("plugins" . ((("plugin_name" . "sender")
("plugins" . ((("plugin_name" . "tribe-one-sender")
("channel_id" . "guix-tribes")
("enabled" . #t))))))))
(plan-plugins plan)))
(test-equal "resolve-target keeps disabled plugins installed but runtime-disabled"
'(("aether") ("aether"))
'(("tribe-one-aether") ("tribe-one-aether"))
(let ((plan
(resolve-target
`(("trusted_signers" . (,valid-signer))
("channels" . (,valid-channel))
("plugins" . ((("plugin_name" . "aether")
("plugins" . ((("plugin_name" . "tribe-one-aether")
("channel_id" . "guix-tribes")
("enabled" . #f))))))))
(list (plan-plugins plan) (plan-disabled-plugins plan))))
@@ -167,8 +167,8 @@
(resolve-target
`(("trusted_signers" . (,valid-signer))
("channels" . (,valid-channel))
("plugins" . ((("plugin_name" . "aether") ("enabled" . #t))
(("plugin_name" . "aether") ("enabled" . #t))))))))
("plugins" . ((("plugin_name" . "tribe-one-aether") ("enabled" . #t))
(("plugin_name" . "tribe-one-aether") ("enabled" . #t))))))))
(test-equal "resolve-target rejects unknown plugins"
"manifest_invalid"
@@ -193,7 +193,7 @@
("allowed_signer_ids" . ("signer-1"))
("introduction" . (("commit" . "intro123")
("fingerprint" . "0123456789ABCDEF0123456789ABCDEF01234567"))))))
("plugins" . ((("plugin_name" . "aether")
("plugins" . ((("plugin_name" . "tribe-one-aether")
("channel_id" . "guix-tribes")
("enabled" . #t))))))))
+7 -7
View File
@@ -19,16 +19,16 @@
(define plan-a
'(("plan_hash" . "plan-a")
("resolved_plugins" . ((("name" . "aether"))))))
("resolved_plugins" . ((("name" . "tribe-one-aether"))))))
(define plan-b
'(("plan_hash" . "plan-b")
("resolved_plugins" . ((("name" . "aether"))))))
("resolved_plugins" . ((("name" . "tribe-one-aether"))))))
(define plan-without-channel-delta
'(("plan_hash" . "plan-without-channel-delta")
("resolved_channels" . #())
("resolved_plugins" . ((("name" . "supertest"))))))
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
(define plan-with-channel-pin
'(("plan_hash" . "plan-with-channel-pin")
@@ -38,7 +38,7 @@
("branch" . "master")
("commit" . "abc123")
("position" . 10))))
("resolved_plugins" . ((("name" . "supertest"))))))
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
(define plan-with-branch-channel
'(("plan_hash" . "plan-with-branch-channel")
("resolved_channels" . #((("channel_id" . "guix-tribes")
@@ -47,7 +47,7 @@
("branch" . "master")
("commit" . #f)
("position" . 10))))
("resolved_plugins" . ((("name" . "supertest"))))))
("resolved_plugins" . ((("name" . "tribe-one-supertest"))))))
(define (delete-if-present path)
(when (false-if-exception (lstat path))
@@ -516,8 +516,8 @@
(call-with-values
(lambda ()
(resolve-deployment
'(("plugins" . ((("plugin_name" . "aether") ("enabled" . #t))
(("plugin_name" . "aether") ("enabled" . #t)))))))
'(("plugins" . ((("plugin_name" . "tribe-one-aether") ("enabled" . #t))
(("plugin_name" . "tribe-one-aether") ("enabled" . #t)))))))
(lambda (status payload)
(test-equal "resolve-deployment returns 409 for explicit resolver errors"
409 status)
+3
View File
@@ -62,6 +62,9 @@
(contains? vcl ".connect_timeout = 1s;"))
(test-assert "edge cache backend uses bounded first-byte timeout"
(contains? vcl ".first_byte_timeout = 5s;"))
(test-assert "edge cache gives admin API requests longer backend timeouts"
(contains? vcl
"sub vcl_backend_fetch {\n if (bereq.url ~ \"^/api/admin/\") {\n set bereq.connect_timeout = 1s;\n set bereq.first_byte_timeout = 35s;\n set bereq.between_bytes_timeout = 35s;"))
(test-assert "edge cache retries only GET/HEAD 5xx backend responses"
(contains? vcl
"if ((bereq.method == \"GET\" || bereq.method == \"HEAD\") &&\n beresp.status >= 500 && beresp.status <= 599 &&\n bereq.retries < 5)"))
+5 -5
View File
@@ -257,20 +257,20 @@
(define aether-edge-operating-system
(ci-operating-system "tribes-ci-aether-edge"
(list (plugin-by-name "aether"))))
(list (plugin-by-name "tribe-one-aether"))))
(define kobold-edge-operating-system
(ci-operating-system "tribes-ci-kobold-edge"
(list (plugin-by-name "trust")
(plugin-by-name "kobold"))))
(list (plugin-by-name "tribe-one-trust")
(plugin-by-name "tribe-one-kobold"))))
(define sender-edge-operating-system
(ci-operating-system "tribes-ci-sender-edge"
(list (plugin-by-name "sender"))))
(list (plugin-by-name "tribe-one-sender"))))
(define supertest-edge-operating-system
(ci-operating-system "tribes-ci-supertest-edge"
(list (plugin-by-name "supertest"))))
(list (plugin-by-name "tribe-one-supertest"))))
(define %substitute-operating-system-targets
`((phase1 . ,phase1-operating-system)
+17 -18
View File
@@ -8,12 +8,11 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages elixir)
#:use-module (gnu packages erlang)
#:use-module (gnu packages node)
#:use-module (gnu packages certs)
#:use-module (gnu packages nss)
#:use-module (gnu packages version-control)
#:use-module (tribes packages otp)
#:export (fetch-mix-deps
fetch-npm-deps
mix-release-package))
@@ -44,14 +43,14 @@ SOURCE according to mix.lock."
(string-append work "/ca-certificates.crt"))
(define hex-lib-dir
(string-append
#$(file-append elixir-hex "/lib/elixir/1.19")
#$(file-append elixir-hex-otp28 "/lib/elixir/1.19")
":"
#$(file-append elixir-hex "/lib/elixir/1.18")))
#$(file-append elixir-hex-otp28 "/lib/elixir/1.18")))
(define path
(string-join
(list #$(file-append elixir "/bin")
#$(file-append elixir-hex "/bin")
#$(file-append rebar3 "/bin")
(list #$(file-append elixir-otp28 "/bin")
#$(file-append elixir-hex-otp28 "/bin")
#$(file-append rebar3-otp28 "/bin")
#$(file-append bash-minimal "/bin")
#$(file-append coreutils "/bin")
#$(file-append findutils "/bin")
@@ -82,7 +81,7 @@ SOURCE according to mix.lock."
(setenv "MIX_ENV" #$mix-env)
(setenv "MIX_TARGET" #$mix-target)
(setenv "MIX_OS_CONCURRENCY_LOCK" "0")
(setenv "MIX_REBAR3" #$(file-append rebar3 "/bin/rebar3"))
(setenv "MIX_REBAR3" #$(file-append rebar3-otp28 "/bin/rebar3"))
(setenv "REBAR_GLOBAL_CONFIG_DIR" (string-append work "/rebar3"))
(setenv "REBAR_CACHE_DIR" (string-append work "/rebar3.cache"))
(setenv "LANG" "C.UTF-8")
@@ -280,16 +279,16 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
(string-append work "/ca-certificates.crt"))
(define hex-lib-dir
(string-append
#$(file-append elixir-hex "/lib/elixir/1.19")
#$(file-append elixir-hex-otp28 "/lib/elixir/1.19")
":"
#$(file-append elixir-hex "/lib/elixir/1.18")))
#$(file-append elixir-hex-otp28 "/lib/elixir/1.18")))
(define aclocal-path
(string-join (list #$@aclocal-dirs) ":"))
(define path
(string-join
(list #$(file-append elixir "/bin")
#$(file-append elixir-hex "/bin")
#$(file-append rebar3 "/bin")
(list #$(file-append elixir-otp28 "/bin")
#$(file-append elixir-hex-otp28 "/bin")
#$(file-append rebar3-otp28 "/bin")
#$(file-append bash-minimal "/bin")
#$(file-append coreutils "/bin")
#$(file-append findutils "/bin")
@@ -330,8 +329,8 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
(setenv "MIX_OS_CONCURRENCY_LOCK" "0")
(setenv "MIX_OS_DEPS_COMPILE_PARTITION_COUNT" "6")
(setenv "HEX_OFFLINE" "1")
(setenv "MIX_REBAR" #$(file-append rebar3 "/bin/rebar3"))
(setenv "MIX_REBAR3" #$(file-append rebar3 "/bin/rebar3"))
(setenv "MIX_REBAR" #$(file-append rebar3-otp28 "/bin/rebar3"))
(setenv "MIX_REBAR3" #$(file-append rebar3-otp28 "/bin/rebar3"))
(setenv "REBAR_GLOBAL_CONFIG_DIR" (string-append work "/rebar3"))
(setenv "REBAR_CACHE_DIR" (string-append work "/rebar3.cache"))
(setenv "SHELL" #$(file-append bash-minimal "/bin/sh"))
@@ -386,9 +385,9 @@ MIX-FOD-DEPS as a pre-fetched dependency tree."
findutils
git-minimal
nss-certs
rebar3
elixir
elixir-hex)
rebar3-otp28
elixir-otp28
elixir-hex-otp28)
native-inputs))
(inputs inputs)
(arguments package-arguments)
+97
View File
@@ -0,0 +1,97 @@
(define-module (tribes packages otp)
#:use-module (guix base32)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages elixir)
#:use-module (gnu packages erlang)
#:use-module (gnu packages perl)
#:export (erlang-28
rebar3-otp28
elixir-otp28
elixir-hex-otp28))
(define-public erlang-28
(package
(inherit erlang)
(name "erlang-28")
(version "28.5.0.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/erlang/otp")
(commit (string-append "OTP-" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0far6szk9h85njn7vwpg4pp9zkxrbyak0w7cr8iymg90s693c34q"))
(patches (search-patches "erlang-man-path.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments erlang)
((#:configure-flags flags)
`(append
(map (lambda (flag)
(if (string=? flag "--enable-wx")
"--without-wx"
flag))
,flags)
;; OTP does not automatically skip applications that depend on wx.
'("--without-debugger"
"--without-observer"
"--without-et"
"--without-reltool")))
((#:phases phases)
`(modify-phases ,phases
;; OTP 28.5.0.2 no longer creates this directory during the first
;; pass, but the inherited second-pass clean target still rmdirs it.
(add-after 'copy-modified-compiler
'create-erl-interface-erts-clean-dir
(lambda _
(mkdir-p "lib/erl_interface/src/erts")))))))
(inputs
(modify-inputs (package-inputs erlang)
(delete "wxwidgets")))
(propagated-inputs '())
(native-inputs
`(("perl" ,perl)
("erlang-manpages"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/erlang/otp/releases/download"
"/OTP-" version "/otp_doc_man_" version ".tar.gz"))
(sha256
(base32
"02k1dvjfqq4pml8p789spkpj99szsiqqbzhd8kmb9dx30g565mzy"))))))))
(define-public rebar3-otp28
(package
(inherit rebar3)
(name "rebar3-otp28")
(native-inputs
(modify-inputs (package-native-inputs rebar3)
(replace "erlang" erlang-28)))))
(define-public elixir-otp28
(package
(inherit elixir)
(name "elixir-otp28")
(arguments
(substitute-keyword-arguments (package-arguments elixir)
((#:tests? _ #f)
#f)))
(inputs
(modify-inputs (package-inputs elixir)
(replace "erlang" erlang-28)
(replace "rebar3" rebar3-otp28)))))
(define-public elixir-hex-otp28
(package
(inherit elixir-hex)
(name "elixir-hex-otp28")
(inputs
(modify-inputs (package-inputs elixir-hex)
(replace "elixir" elixir-otp28)))))
+2 -2
View File
@@ -54,7 +54,7 @@
"https://git.teralink.net/tribes/tribes.git")
(define %tribes-commit
"f096578ec153342b29abfc5e900a82aefa378cb7")
"8e2df14216624c1494f6e95c90520cd431c89ad8")
(define %tribes-revision "1")
@@ -62,7 +62,7 @@
(git-version "0.2.0" %tribes-revision %tribes-commit))
(define %tribes-source-sha256
"0hcrf3b8ddp6a65si92slr3vrnvib855h4pyccgrsk10q34qapas")
"11crm1wyfbwv5myn81xnb1cf2ccwz9gbnvi73jqssglnlyxxf5an")
(define %tribes-upstream-source
(origin
+4 -4
View File
@@ -16,7 +16,7 @@
%aether-home-page)
(define %aether-commit
"80101b7e78808cea9151f1827777edea5c08ba1f")
"995160f95e31efe4d026662885d4b016f144ce9a")
(define %aether-revision "1")
@@ -24,7 +24,7 @@
(git-version "0.2.0" %aether-revision %aether-commit))
(define %aether-source-sha256
"0shylw4s75djanqm7h82j8advjg96im6n4wr6fz6kwbj5hs8aq4b")
"1jp52q70z1djiglm03b81zh7zgn87gbf207xwih24h6a0zddsmgs")
(define %aether-mix-deps-sha256
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
@@ -68,7 +68,7 @@
"External Tribes plugin artifact for Aether, packaged as a Guix-managed
plugin directory."
#:plugin-id "org.tribe-one.plugins.aether"
#:plugin-slug "aether"
#:plugin-slug "tribe-one-aether"
#:display-name "Aether"
#:provides '("org.tribe-one.caps.social@1" "org.tribe-one.caps.chat@1")
#:requires '("org.tribe-one.caps.ui@1")
@@ -104,7 +104,7 @@ artifact."
"External Tribes plugin artifact for Aether, packaged as a Guix-managed
plugin directory."
#:plugin-id "org.tribe-one.plugins.aether"
#:plugin-slug "aether"
#:plugin-slug "tribe-one-aether"
#:display-name "Aether"
#:provides '("org.tribe-one.caps.social@1" "org.tribe-one.caps.chat@1")
#:requires '("org.tribe-one.caps.ui@1")
+1 -1
View File
@@ -27,7 +27,7 @@
(define guix-tribes-built-in-plugin-definitions
(list
(tribes-plugin-definition
(name "tribes_ui")
(name "tribe-one-tribes-ui")
(package-name "tribes")
(version "0.1.0")
(synopsis "Default Tribes UI capability provider")
+4 -4
View File
@@ -16,7 +16,7 @@
%kobold-home-page)
(define %kobold-commit
"74b6c44e4dcfbeaf02f77620b5675f11781ad1eb")
"4658b762411f014b531d4acc5aaea05463dbfca3")
(define %kobold-revision "1")
@@ -24,7 +24,7 @@
(git-version "0.1.0" %kobold-revision %kobold-commit))
(define %kobold-source-sha256
"1xxysbslh1fa57873n4669mi874byv861w934mz9g3zszr120ijn")
"0qrssm32apandr2m4fsh56v6ay7b31630k7g033f17fwxlrlbq34")
(define %kobold-mix-deps-sha256
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
@@ -68,7 +68,7 @@
"External Tribes plugin artifact for Kobold distributed datasets,
packaged as a Guix-managed plugin directory."
#:plugin-id "org.tribe-one.plugins.kobold"
#:plugin-slug "kobold"
#:plugin-slug "tribe-one-kobold"
#:display-name "Kobold"
#:provides '("org.tribes.kobold.dataset@1")
#:requires '("org.tribe-one.caps.ui@1" "org.tribes.alliance.trust@1")
@@ -103,7 +103,7 @@ packaged as a Guix-managed plugin directory."
"External Tribes plugin artifact for Kobold distributed datasets,
packaged as a Guix-managed plugin directory."
#:plugin-id "org.tribe-one.plugins.kobold"
#:plugin-slug "kobold"
#:plugin-slug "tribe-one-kobold"
#:display-name "Kobold"
#:provides '("org.tribes.kobold.dataset@1")
#:requires '("org.tribe-one.caps.ui@1" "org.tribes.alliance.trust@1")
+4 -4
View File
@@ -17,7 +17,7 @@
%sender-home-page)
(define %sender-commit
"ee7d0ac29fb583e1c5f75001984622c2ba7e56b1")
"cdbfef7cd300c581b74b7aa61e7c35fb52e7ccff")
(define %sender-revision "1")
@@ -25,7 +25,7 @@
(git-version "0.1.0" %sender-revision %sender-commit))
(define %sender-source-sha256
"1bbgi20j99ym9yiv78w3j590wpf400bdkfiqf9s1ra31dgfzzq4v")
"1nbybxiyihqv0avjkrl4x1k0iz5cyljcs38zvb6kln474v6qz0ly")
(define %sender-mix-deps-sha256
"08mdy38247dqni8f84y09m8vz6hvjakvc4ml28x1jxqvq53s4nq3")
@@ -72,7 +72,7 @@
"External Tribes plugin artifact for RTMP ingest and HLS streaming,
packaged as a Guix-managed plugin directory."
#:plugin-id "org.tribe-one.plugins.sender"
#:plugin-slug "sender"
#:plugin-slug "tribe-one-sender"
#:display-name "Sender"
#:provides '("org.tribe-one.caps.sender@1")
#:requires '("org.tribe-one.caps.ui@1")
@@ -112,7 +112,7 @@ artifact."
"External Tribes plugin artifact for RTMP ingest and HLS streaming,
packaged as a Guix-managed plugin directory."
#:plugin-id "org.tribe-one.plugins.sender"
#:plugin-slug "sender"
#:plugin-slug "tribe-one-sender"
#:display-name "Sender"
#:provides '("org.tribe-one.caps.sender@1")
#:requires '("org.tribe-one.caps.ui@1")
+4 -4
View File
@@ -16,7 +16,7 @@
%supertest-home-page)
(define %supertest-commit
"afc38412c4362ea2e5b1fe9fe08f1cffe60edf34")
"982243e64a132c4ae082234e775fa9f0e98b8eb4")
(define %supertest-revision "1")
@@ -24,7 +24,7 @@
(git-version "0.1.1" %supertest-revision %supertest-commit))
(define %supertest-source-sha256
"1si0bis5k47j22cv7cbbah86ilrxvrbncld4isvyb17zan7ig0q6")
"0mk4ph2ibnqvcca55n9dnlmfg6abm9p8bz3wsq8913crk55hw2qa")
(define %supertest-mix-deps-sha256
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
@@ -65,7 +65,7 @@
#:description
"External Tribes plugin artifact used by live rollout and sync tests."
#:plugin-id "org.tribe-one.plugins.supertest"
#:plugin-slug "supertest"
#:plugin-slug "tribe-one-supertest"
#:display-name "Supertest"
#:provides '()
#:requires '()
@@ -95,7 +95,7 @@
#:description
"External Tribes plugin artifact used by live rollout and sync tests."
#:plugin-id "org.tribe-one.plugins.supertest"
#:plugin-slug "supertest"
#:plugin-slug "tribe-one-supertest"
#:display-name "Supertest"
#:provides '()
#:requires '()
+4 -4
View File
@@ -16,7 +16,7 @@
%trust-home-page)
(define %trust-commit
"f08af20cd5cd2dbbb50e4472bf1a5d8ed1b73c21")
"157106aa66ecd7ce5f7f5a8a90c30a1f22e2fe74")
(define %trust-revision "1")
@@ -24,7 +24,7 @@
(git-version "0.1.0" %trust-revision %trust-commit))
(define %trust-source-sha256
"1zsg57mr3bjxrxvim77z2as1jqr8a3anfp0jgqz0ycz6rzai58dp")
"0k1gzpd5f5q3mczmxw0rwx7zwqxkspzk0zfpm1a130fd4dqc9y5z")
(define %trust-mix-deps-sha256
"1pk1qv8skbgzi0wg59zj9aiyxx2hxl2k6ngxqqbwvj7wsbiz95bb")
@@ -67,7 +67,7 @@
#:description
"External Tribes plugin artifact for tribe-to-tribe trust, alliance, and federation provider behavior."
#:plugin-id "org.tribe-one.plugins.trust"
#:plugin-slug "trust"
#:plugin-slug "tribe-one-trust"
#:display-name "Trust"
#:provides '("org.tribes.alliance.trust@1" "org.tribes.federation.provider@1" "org.tribes.access.trust_provider@1")
#:requires '("org.tribe-one.caps.ui@1")
@@ -101,7 +101,7 @@
#:description
"External Tribes plugin artifact for tribe-to-tribe trust, alliance, and federation provider behavior."
#:plugin-id "org.tribe-one.plugins.trust"
#:plugin-slug "trust"
#:plugin-slug "tribe-one-trust"
#:display-name "Trust"
#:provides '("org.tribes.alliance.trust@1" "org.tribes.federation.provider@1" "org.tribes.access.trust_provider@1")
#:requires '("org.tribe-one.caps.ui@1")
+7
View File
@@ -169,6 +169,13 @@
" }\n\n"
" return (pass);\n"
"}\n\n"
"sub vcl_backend_fetch {\n"
" if (bereq.url ~ \"^/api/admin/\") {\n"
" set bereq.connect_timeout = 1s;\n"
" set bereq.first_byte_timeout = 35s;\n"
" set bereq.between_bytes_timeout = 35s;\n"
" }\n"
"}\n\n"
"sub vcl_backend_response {\n"
" if ((bereq.method == \"GET\" || bereq.method == \"HEAD\") &&\n"
" beresp.status >= 500 && beresp.status <= 599 &&\n"