Compare commits

...

10 Commits

Author SHA1 Message Date
a11dd05dba Skip shader cache cleanup
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 16:02:31 +01:00
a430f1ddd8 Add personal ssh key on jupiter
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 11:38:33 +01:00
ab8feea39c Add hypridle
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 10:59:07 +01:00
ece2150e10 Increase oidcwarden stack size
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 10:26:43 +01:00
0c829b0bfb Fix nextcloud override
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 09:56:06 +01:00
cbb908a968 Increase transmission limits
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-30 09:39:23 +01:00
f1f1cf39b0 Add comentario
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-29 13:27:41 +01:00
bff2fca2eb Use makeWrapper
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-29 10:45:08 +01:00
7f9a1dcb66 Add gitlab known hosts
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-28 15:38:14 +01:00
084fda4ba6 Add traefik security headers, short url
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2025-07-28 11:59:19 +01:00
29 changed files with 774 additions and 77 deletions

View File

@@ -23,4 +23,8 @@
value = 200000;
}
];
home-manager.users.${user}.wayland.windowManager.hyprland.settings.env = [
"__GL_SHADER_DISK_CACHE_SKIP_CLEANUP,1"
];
}

View File

@@ -1,3 +1,5 @@
# shellcheck shell=bash
if [ "$#" -lt 1 ]; then
echo "Usage: $0 <executable-path> [args...]"
exit 1

View File

@@ -0,0 +1,21 @@
{ user, home }:
{ ... }:
{
home-manager.users.${user}.services.hypridle = {
enable = true;
settings = {
listener = [
{
timeout = 60;
on-timeout = "brightnessctl -s set 10%";
on-resume = "brightnessctl -r";
}
{
timeout = 300;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
};
}

View File

@@ -8,6 +8,7 @@
let
selfPkgs = inputs.self.packages.${system};
in
# Configured for the root user to allow private builds
{
sops.secrets."ssh/sas/ed25519/key" = {
sopsFile = "${inputs.secrets}/sas/secrets.yaml";

View File

@@ -93,7 +93,10 @@ in
userKnownHostsFiles =
with selfPkgs;
(
[ ssh-known-hosts-github ]
[
ssh-known-hosts-github
ssh-known-hosts-gitlab
]
++ lib.lists.optionals config.sas.build.private [
ssh-known-hosts-sas-gitlab
ssh-known-hosts-sas-gerrit

View File

@@ -62,6 +62,7 @@ in
(import ../../../common/configs/user/gui/feh { inherit user home; })
(import ../../../common/configs/user/gui/firefox { inherit user home; })
(import ../../../common/configs/user/gui/gtk { inherit user home; })
(import ../../../common/configs/user/gui/hypridle { inherit user home; })
(import ../../../common/configs/user/gui/hyprland { inherit user home; })
(import ../../../common/configs/user/gui/hyprpicker { inherit user home; })
(import ../../../common/configs/user/gui/hyprshot { inherit user home; })

View File

@@ -142,6 +142,26 @@
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
services.hypridle.settings = lib.mkForce {
listener = [
{
timeout = 60;
on-timeout = "brightnessctl -d intel_backlight -s set 5%";
on-resume = "brightnessctl -d intel_backlight -r";
}
{
timeout = 60;
on-timeout = "brightnessctl -d asus::kbd_backlight -s set 0%";
on-resume = "brightnessctl -d asus::kbd_backlight -r";
}
{
timeout = 300;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
theme = {
template.".config/asusctl/keyboard".source =
pkgs.writeText ".config/asusctl/keyboard" "{{colors.primary_container.default.hex_stripped}}";

View File

@@ -39,7 +39,10 @@ in
};
};
userKnownHostsFiles = with selfPkgs; [ ssh-known-hosts-github ];
userKnownHostsFiles = with selfPkgs; [
ssh-known-hosts-github
ssh-known-hosts-gitlab
];
};
};
}

View File

@@ -70,6 +70,7 @@ in
(import ../../../common/configs/user/gui/gaming/proton { inherit user home; })
(import ../../../common/configs/user/gui/gaming/wivrn { inherit user home; })
(import ../../../common/configs/user/gui/gtk { inherit user home; })
(import ../../../common/configs/user/gui/hypridle { inherit user home; })
(import ../../../common/configs/user/gui/hyprland { inherit user home; })
(import ../../../common/configs/user/gui/hyprpicker { inherit user home; })
(import ../../../common/configs/user/gui/hyprshot { inherit user home; })

View File

@@ -39,7 +39,10 @@ in
};
};
userKnownHostsFiles = with selfPkgs; [ ssh-known-hosts-github ];
userKnownHostsFiles = with selfPkgs; [
ssh-known-hosts-github
ssh-known-hosts-gitlab
];
};
};
}

View File

@@ -0,0 +1,14 @@
{ user, home }:
{ inputs, ... }:
{
home-manager.users.${user} = {
sops.secrets = {
"ssh/key" = {
sopsFile = "${inputs.secrets}/personal/secrets.yaml";
path = "${home}/.ssh/ssh_personal_ed25519_key";
};
"ssh/pass".sopsFile = "${inputs.secrets}/personal/secrets.yaml";
};
};
}

View File

@@ -39,6 +39,7 @@ in
(import ./configs/console/btop { inherit user home; })
(import ./configs/console/podman { inherit user home; })
(import ./configs/console/ssh { inherit user home; })
];
# mkpasswd -s

View File

@@ -37,9 +37,9 @@ in
config = (pkgs.formats.json { }).generate "settings.override.json" {
ratio-limit-enabled = true;
ratio-limit = 5;
download-queue-size = 10;
peer-limit-per-torrent = 50;
peer-limit-global = 500;
download-queue-enabled = false;
peer-limit-per-torrent = 100;
peer-limit-global = 1000;
rpc-url = "/manage/torrents/";
download-dir = "/var/lib/media/downloads/transmission";
incomplete-dir = "/var/lib/media/downloads/transmission/incomplete";

View File

@@ -183,7 +183,7 @@ in
"${volumes.nextcloud-log.ref}:/var/log/nextcloud"
"${volumes.nextcloud-config.ref}:/var/www/nextcloud/config"
"${volumes.nextcloud-apps.ref}:/var/www/nextcloud/apps"
"${hmConfig.sops.templates.nextcloud.path}:/var/www/nextcloud/config/config.override.php:ro"
"${hmConfig.sops.templates.nextcloud.path}:/var/www/nextcloud/config/override.config.php:ro"
];
environments = {
POSTGRES_HOST = "nextcloud-postgresql";

View File

@@ -72,8 +72,17 @@ in
environmentFiles = [ hmConfig.sops.templates.shlink-env.path ];
labels = [
"traefik.enable=true"
"traefik.http.routers.shlink.rule=Host(`url.karaolidis.com`)"
"traefik.http.routers.shlink.middlewares=authelia@docker"
"traefik.http.routers.shlink-short.rule=Host(`u.karaolidis.com`)"
"traefik.http.routers.shlink-short.middlewares=redirect-shlink-short@docker"
"traefik.http.routers.shlink-short.service=noop@internal"
"traefik.http.middlewares.redirect-shlink-short.redirectregex.regex=^https://u\.karaolidis\.com(/.*)?$"
"traefik.http.middlewares.redirect-shlink-short.redirectregex.replacement=https://url.karaolidis.com$\${1}"
"traefik.http.middlewares.redirect-shlink-short.redirectregex.permanent=true"
];
};

View File

@@ -72,7 +72,6 @@ in
"--entrypoints.http.http.redirections.entryPoint.to=https"
"--entrypoints.http.http.redirections.entryPoint.scheme=https"
"--entryPoints.http.http3"
"--entrypoints.http.forwardedHeaders.insecure=true"
"--entryPoints.https.address=:443"
"--entryPoints.https.asDefault=true"
@@ -81,10 +80,9 @@ in
"--entrypoints.https.http.tls.domains[0].main=karaolidis.com"
"--entrypoints.https.http.tls.domains[0].sans=*.karaolidis.com,*.tunnel.karaolidis.com,*.gaming.karaolidis.com"
"--entrypoints.https.http.tls.domains[1].main=krlds.com"
"--entrypoints.https.http.tls.domains[1].sans=*.krlds.com,*.tunnel.krlds.com,*.gaming.krlds.com"
"--entrypoints.https.http.middlewares=compress@docker"
"--entrypoints.https.http.tls.domains[1].sans=*.krlds.com"
"--entryPoints.https.http3"
"--entrypoints.https.forwardedHeaders.insecure=true"
"--entrypoints.https.http.middlewares=compress@docker,security-headers@docker"
"--certificatesresolvers.letsencrypt.acme.dnschallenge=true"
"--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare"
@@ -104,8 +102,22 @@ in
"traefik.http.routers.traefik-api.service=api@internal"
"traefik.http.routers.traefik-api.middlewares=authelia@docker"
"traefik.http.routers.krlds.rule=HostRegexp(`^(.+\.)?krlds\.com$`)"
"traefik.http.routers.krlds.middlewares=redirect-krlds-to-karaolidis@docker"
"traefik.http.routers.krlds.service=noop@internal"
"traefik.http.middlewares.redirect-krlds-to-karaolidis.redirectregex.regex=^https://([^/]+\.)?krlds\.com(/.*)?$"
"traefik.http.middlewares.redirect-krlds-to-karaolidis.redirectregex.replacement=https://$\${1}karaolidis.com$\${2}"
"traefik.http.middlewares.redirect-krlds-to-karaolidis.redirectregex.permanent=true"
"traefik.http.middlewares.compress.compress=true"
# TODO: Middlewares: Headers (Security + Performance)
"traefik.http.middlewares.security-headers.headers.referrerPolicy=strict-origin-when-cross-origin"
"traefik.http.middlewares.security-headers.headers.stsSeconds=63072000"
"traefik.http.middlewares.security-headers.headers.stsIncludeSubdomains=true"
"traefik.http.middlewares.security-headers.headers.stsPreload=true"
"traefik.http.middlewares.security-headers.headers.contentTypeNosniff=true"
"traefik.http.middlewares.security-headers.headers.frameDeny=true"
];
environmentFiles = [ hmConfig.sops.templates.traefik-env.path ];
};

View File

@@ -0,0 +1,82 @@
{ pkgs, ... }:
# AUTO-UPDATE: nix-update --flake comentario --version=branch=dev --subpackage frontend
pkgs.buildGoModule (finalAttrs: {
pname = "comentario";
version = "3.14.0-unstable-2025-07-20";
src = pkgs.fetchFromGitLab {
owner = "comentario";
repo = "comentario";
# FIXME: Stable rev once type error is fixed
rev = "beda0132c35b8bb0d102d9ab09495ddbb0a52339";
hash = "sha256-lZAWZ31eBqWgbHez0SFVZ4cNcyM5G5RTKLp7HPacAPo=";
};
patches = [
# FIXME: https://gitlab.com/comentario/comentario/-/merge_requests/23
./dynamic-config-env-vars.patch
];
vendorHash = "sha256-dL6jkyYSa4s5qPm8VKiUBA4+yY3H4tGS2tdqUqQO8Rs=";
nativeBuildInputs = with pkgs; [
go-swagger
makeWrapper
];
subPackages = [ "." ];
frontend = pkgs.stdenv.mkDerivation (finalFrontendAttrs: {
inherit (finalAttrs)
pname
version
src
patches
;
missingHashes = ./missing-hashes.json;
offlineCache = pkgs.yarn-berry.fetchYarnBerryDeps {
inherit (finalFrontendAttrs) src patches missingHashes;
hash = "sha256-tbVYabjMOPOyAY9taptEw6qAik8btpmgf71YyJ85dRM=";
};
nativeBuildInputs = with pkgs; [
nodejs
openapi-generator-cli
hugo
yarn-berry
yarn-berry.yarnBerryConfigHook
];
env = {
CYPRESS_INSTALL_BINARY = "0";
YARN_NODE_LINKER = "node-modules";
};
buildPhase = ''
(cd frontend && openapi-generator-cli generate -i ../resources/swagger/swagger.yml -g typescript-angular -o generated-api)
yarn run build:prod
'';
installPhase = ''
cp -r build/frontend $out
'';
});
preBuild = ''
go generate
'';
installPhase = ''
mkdir -p $out/bin $out/lib/${finalAttrs.pname}
cp -r "$GOPATH/bin/${finalAttrs.pname}" $out/bin/${finalAttrs.pname}
cp -r db templates $out/lib/${finalAttrs.pname}
wrapProgram $out/bin/${finalAttrs.pname} \
--add-flags "--db-migration-path=$out/lib/${finalAttrs.pname}/db" \
--add-flags "--template-path=$out/lib/${finalAttrs.pname}/templates" \
--add-flags "--static-path=${finalAttrs.frontend}"
'';
meta.mainProgram = finalAttrs.pname;
})

View File

@@ -0,0 +1,312 @@
From 2ef5994a21d694bdf50d1d9d4c524c9584368917 Mon Sep 17 00:00:00 2001
From: Nikolaos Karaolidis <nick@karaolidis.com>
Date: Mon, 28 Jul 2025 15:33:55 +0100
Subject: [PATCH] fe: dynamic configuration env vars
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
---
.../dynamic/auth.emailupdate.enabled.en.md | 1 +
.../auth.login.local.maxattempts.en.md | 2 ++
.../auth.signup.confirm.commenter.en.md | 2 ++
.../dynamic/auth.signup.confirm.user.en.md | 2 ++
.../backend/dynamic/auth.signup.enabled.en.md | 2 ++
...in.defaults.comments.deletion.author.en.md | 2 ++
...defaults.comments.deletion.moderator.en.md | 2 ++
...ain.defaults.comments.editing.author.en.md | 2 ++
....defaults.comments.editing.moderator.en.md | 2 ++
...omain.defaults.comments.enablevoting.en.md | 2 ++
...domain.defaults.comments.rss.enabled.en.md | 2 ++
...domain.defaults.comments.showdeleted.en.md | 2 ++
...ain.defaults.comments.text.maxlength.en.md | 2 ++
.../domain.defaults.login.showforunauth.en.md | 2 ++
...ain.defaults.markdown.images.enabled.en.md | 2 ++
...main.defaults.markdown.links.enabled.en.md | 2 ++
...ain.defaults.markdown.tables.enabled.en.md | 4 ++-
...main.defaults.signup.enablefederated.en.md | 2 ++
.../domain.defaults.signup.enablelocal.en.md | 2 ++
.../domain.defaults.signup.enablesso.en.md | 2 ++
.../dynamic/integrations.usegravatar.en.md | 1 +
.../dynamic/operation.newowner.enabled.en.md | 2 ++
internal/data/dyn_config.go | 28 +++++++++++++++++--
23 files changed, 69 insertions(+), 3 deletions(-)
diff --git a/docs/content/configuration/backend/dynamic/auth.emailupdate.enabled.en.md b/docs/content/configuration/backend/dynamic/auth.emailupdate.enabled.en.md
index 5b9c5716..a139c953 100644
--- a/docs/content/configuration/backend/dynamic/auth.emailupdate.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/auth.emailupdate.enabled.en.md
@@ -20,3 +20,4 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter defines w
* If no operational mailer is configured, the email will be updated right away, without intermediate confirmation.
* If set to `Off`, users cannot change their emails themselves. Email can only be updated by a [superuser](/kb/permissions/superuser) (for example, at a user's request).
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_AUTH_EMAILUPDATE_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/auth.login.local.maxattempts.en.md b/docs/content/configuration/backend/dynamic/auth.login.local.maxattempts.en.md
index bada14ec..5a3993a8 100644
--- a/docs/content/configuration/backend/dynamic/auth.login.local.maxattempts.en.md
+++ b/docs/content/configuration/backend/dynamic/auth.login.local.maxattempts.en.md
@@ -20,3 +20,5 @@ Comentario keeps a counter of failed login attempts for each user.
* The failed login attempt counter gets reset to zero as soon as the user has successfully logged in.
This mechanism is mostly intended to safeguard users against brute-force attacks on their passwords. In order to disable it, set the value to `0`.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_AUTH_LOGIN_LOCAL_MAXATTEMPTS`.
diff --git a/docs/content/configuration/backend/dynamic/auth.signup.confirm.commenter.en.md b/docs/content/configuration/backend/dynamic/auth.signup.confirm.commenter.en.md
index 6ad25e5a..fbb38b3b 100644
--- a/docs/content/configuration/backend/dynamic/auth.signup.confirm.commenter.en.md
+++ b/docs/content/configuration/backend/dynamic/auth.signup.confirm.commenter.en.md
@@ -17,3 +17,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `Off`, commenters will be logged in immediately upon registration. This is not recommended due to security considerations; it may also render the user account unusable in the future if they misspelled their email address.
This setting applies only to websites embedding Comentario. For the Administration UI there's a [separate configuration item](auth.signup.confirm.user).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_AUTH_SIGNUP_CONFIRM_COMMENTER`.
diff --git a/docs/content/configuration/backend/dynamic/auth.signup.confirm.user.en.md b/docs/content/configuration/backend/dynamic/auth.signup.confirm.user.en.md
index 6a14a1d3..3aee4ae6 100644
--- a/docs/content/configuration/backend/dynamic/auth.signup.confirm.user.en.md
+++ b/docs/content/configuration/backend/dynamic/auth.signup.confirm.user.en.md
@@ -17,3 +17,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `Off`, users can log in immediately upon registration. This is not recommended due to security considerations; it may also render the user account unusable in the future if they misspelled their email address.
This setting applies only to the Administration UI. For websites embedding Comentario there's a [separate configuration item](auth.signup.confirm.commenter).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_AUTH_SIGNUP_CONFIRM_USER`.
diff --git a/docs/content/configuration/backend/dynamic/auth.signup.enabled.en.md b/docs/content/configuration/backend/dynamic/auth.signup.enabled.en.md
index 35acc2ba..d8a38804 100644
--- a/docs/content/configuration/backend/dynamic/auth.signup.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/auth.signup.enabled.en.md
@@ -20,3 +20,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter controls
* If set to `Off`, new user registrations are forbidden.
This setting applies only to the Administration UI. It can be useful for (temporarily) preventing new sign-ups.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_AUTH_SIGNUP_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.author.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.author.en.md
index 9fef72b4..93f280cf 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.author.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.author.en.md
@@ -18,3 +18,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter can be us
* When set to `On`, comment authors will see a *trashcan* button on their comments, which allows them to delete a written comment.
* If set to `Off`, comments cannot be removed by their authors once submitted (but possibly can [by domain moderators](domain.defaults.comments.deletion.moderator) if enabled).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_DELETION_AUTHOR`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.moderator.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.moderator.en.md
index 97c3b3e0..f1c002f8 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.moderator.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.deletion.moderator.en.md
@@ -18,3 +18,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter can be us
* When set to `On`, users with the moderator or owner [role](/kb/permissions/roles) and [superusers](/kb/permissions/superuser) will see a *trashcan* button on every comment, allowing them to delete any comment on the domain's pages.
* If set to `Off`, comments cannot be removed by moderators (but possibly can [by their authors](domain.defaults.comments.deletion.author) if enabled).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_DELETION_MODERATOR`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.author.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.author.en.md
index 346a93b6..de989f59 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.author.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.author.en.md
@@ -17,3 +17,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter can be us
* When set to `On`, comment authors will see a *pencil* button on their comments, which allows them to edit a written comment.
* If set to `Off`, comments cannot be changed by their authors once submitted (but possibly can [by domain moderators](domain.defaults.comments.editing.moderator) if enabled).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_EDITING_AUTHOR`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.moderator.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.moderator.en.md
index 0b35d1e3..25bfcbf1 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.moderator.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.editing.moderator.en.md
@@ -17,3 +17,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter can be us
* When set to `On`, users with the moderator or owner [role](/kb/permissions/roles) and [superusers](/kb/permissions/superuser) will see a *pencil* button on every comment, allowing them to edit any comment on the domain's pages.
* If set to `Off`, comments cannot be changed by moderators (but possibly can [by their authors](domain.defaults.comments.editing.author) if enabled).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_EDITING_MODERATOR`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.enablevoting.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.enablevoting.en.md
index a2e72f5b..17ec769e 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.enablevoting.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.enablevoting.en.md
@@ -13,3 +13,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter can be us
* When set to `On`, every comment card will contain a score and a set of upvote/downvote buttons. Also, any commenter will be able to upvote or downvote others' comments (bot not those they authored self).
* If set to `Off`, the score and the voting buttons will be hidden. It will also disable sorting comments by votes.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_ENABLEVOTING`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.rss.enabled.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.rss.enabled.en.md
index 3981741e..4108ed90 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.rss.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.rss.enabled.en.md
@@ -21,3 +21,5 @@ When RSS is enabled, the users will be able to subscribe to comment feeds using:
* `RSS` dropdown button under the [comment editor](/kb/comment-editor) (left of the sorting buttons).
* `Comment RSS feed` links in Domain properties and Domain page properties.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_RSS_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.showdeleted.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.showdeleted.en.md
index 89b26859..f2293dba 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.showdeleted.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.showdeleted.en.md
@@ -18,3 +18,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter controls
* If set to `Off`, deleted comments will be hidden in the comment tree immediately, as well as all its child comments.
This setting doesn't affect comment display in the Administration UI (it has a separate switch for hiding deleted comments).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_SHOWDELETED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.comments.text.maxlength.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.comments.text.maxlength.en.md
index a87b2fff..9e068c5a 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.comments.text.maxlength.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.comments.text.maxlength.en.md
@@ -21,3 +21,5 @@ It defines how long comment texts can be on a specific domain, representing the
* The lowest possible value for this setting is the "Twitter limit" of `140` characters.
* The top (physical) limit is `1048576` (1 MiB).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_COMMENTS_TEXT_MAXLENGTH`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.login.showforunauth.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.login.showforunauth.en.md
index 85b264e6..65a29ea4 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.login.showforunauth.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.login.showforunauth.en.md
@@ -19,3 +19,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter allows to
* If set to `Off`, the login dialog will be skipped if [commenting without registration](/configuration/frontend/domain/authentication) is enabled for this domain. Otherwise the dialog will be shown and user will be requested to log in or sign up.
When this setting is `Off`, the user can still authenticate explicitly using the `Sign in` button above the comment editor.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_LOGIN_SHOWFORUNAUTH`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.images.enabled.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.images.enabled.en.md
index f229294c..6af7d884 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.images.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.images.enabled.en.md
@@ -18,3 +18,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `Off`, commenters won't be able to insert images, and the corresponding markup will be removed from the resulting text.
This setting only applies to newly written comments and does not affect images in existing comments.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_MARKDOWN_IMAGES_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.links.enabled.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.links.enabled.en.md
index cfaaddcb..bb171b1e 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.links.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.links.enabled.en.md
@@ -18,3 +18,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `Off`, commenters won't be able to insert links, and the corresponding string will be rendered as plain, non-clickable text.
This setting only applies to newly written comments and does not affect links in existing comments.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_MARKDOWN_LINKS_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.tables.enabled.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.tables.enabled.en.md
index 243affed..f38c097e 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.markdown.tables.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.markdown.tables.enabled.en.md
@@ -16,5 +16,7 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `On`, commenters can insert [tables](/kb/markdown#tables) in comments.
* If set to `Off`, commenters won't be able to insert tables, and the corresponding markup will be removed from the resulting text.
-
+
This setting only applies to newly written comments and does not affect tables in existing comments.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_MARKDOWN_TABLES_ENABLED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablefederated.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablefederated.en.md
index 7a5d92a9..c6015fdb 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablefederated.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablefederated.en.md
@@ -21,3 +21,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter controls
This setting doesn't apply to the Administration UI, which uses a [separate configuration item](auth.signup.enabled) for that.
It also doesn't affect *existing users*, i.e. those already registered. They will be able to log in even when this setting is disabled. To disable federated login completely, switch off undesirable providers in the domain's [authentication settings](/configuration/frontend/domain/authentication).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_SIGNUP_ENABLEFEDERATED`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablelocal.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablelocal.en.md
index 874d6dc4..f2dff20e 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablelocal.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablelocal.en.md
@@ -23,3 +23,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter controls
This setting doesn't apply to the Administration UI, which uses a [separate configuration item](auth.signup.enabled) for that.
It also doesn't affect *existing users*. They will be able to log in even when this setting is disabled. To disable login with email/password completely, switch it off in the domain's [authentication settings](/configuration/frontend/domain/authentication).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_SIGNUP_ENABLELOCAL`.
diff --git a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablesso.en.md b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablesso.en.md
index 6da28064..86bc6826 100644
--- a/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablesso.en.md
+++ b/docs/content/configuration/backend/dynamic/domain.defaults.signup.enablesso.en.md
@@ -22,3 +22,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter controls
* If set to `Off`, SSO registration on websites embedding comments will be forbidden.
This setting doesn't affect *SSO users who are already registered*. They will be able to log in even when this setting is disabled. To disable SSO login completely, switch it off in the domain's [authentication settings](/configuration/frontend/domain/authentication).
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_DOMAIN_DEFAULTS_SIGNUP_ENABLESSO`.
diff --git a/docs/content/configuration/backend/dynamic/integrations.usegravatar.en.md b/docs/content/configuration/backend/dynamic/integrations.usegravatar.en.md
index 8509944d..b81d1766 100644
--- a/docs/content/configuration/backend/dynamic/integrations.usegravatar.en.md
+++ b/docs/content/configuration/backend/dynamic/integrations.usegravatar.en.md
@@ -16,3 +16,4 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
It also enables the use of Gravatar during import (e.g. from [Commento](/installation/migration/commento) or [WordPress](/installation/migration/wordpress)).
* If set to `Off`, Gravatar won't be contacted.
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_INTEGRATIONS_USEGRAVATAR`.
diff --git a/docs/content/configuration/backend/dynamic/operation.newowner.enabled.en.md b/docs/content/configuration/backend/dynamic/operation.newowner.enabled.en.md
index a3025d96..d2a27b15 100644
--- a/docs/content/configuration/backend/dynamic/operation.newowner.enabled.en.md
+++ b/docs/content/configuration/backend/dynamic/operation.newowner.enabled.en.md
@@ -15,3 +15,5 @@ This [dynamic configuration](/configuration/backend/dynamic) parameter configure
* If set to `Off`, users without domains (for example, commenters) won't be able to register their own domains in Comentario, and thus become domain owners. Most likely, this is what you want, therefore `Off` is the default.
This setting doesn't affect users who already own at least one domain.
+
+This default value of this setting can be overridden at startup using the environment variable `DYN_DEFAULT_OPERATION_NEWOWNER_ENABLED`.
diff --git a/internal/data/dyn_config.go b/internal/data/dyn_config.go
index 8595ea2a..ad5b9894 100644
--- a/internal/data/dyn_config.go
+++ b/internal/data/dyn_config.go
@@ -2,14 +2,21 @@ package data
import (
"fmt"
+ "os"
+ "strconv"
+ "strings"
+ "time"
+
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
"github.com/google/uuid"
+ "github.com/op/go-logging"
"gitlab.com/comentario/comentario/internal/api/models"
- "strconv"
- "time"
)
+// logger represents a package-wide logger instance
+var logger = logging.MustGetLogger("data")
+
// DynConfigItemSectionKey is a key of dynamic configuration item section
type DynConfigItemSectionKey string
@@ -196,6 +203,11 @@ const (
// ConfigKeyDomainDefaultsPrefix is a prefix given to domain setting keys that turn them into global domain defaults keys
const ConfigKeyDomainDefaultsPrefix = "domain.defaults."
+func getInitialDynConfigItemEnvVar(key DynConfigItemKey) (string, bool) {
+ name := "DYN_DEFAULT_" + strings.ToUpper(strings.ReplaceAll(string(key), ".", "_"))
+ return os.LookupEnv(name)
+}
+
// DefaultDynInstanceConfig is the default dynamic instance configuration
var DefaultDynInstanceConfig = DynConfigMap{
ConfigKeyAuthEmailUpdateEnabled: {DefaultValue: "false", Datatype: ConfigDatatypeBool, Section: DynConfigItemSectionAuth},
@@ -221,3 +233,15 @@ var DefaultDynInstanceConfig = DynConfigMap{
ConfigKeyDomainDefaultsPrefix + DomainConfigKeyFederatedSignupEnabled: {DefaultValue: "true", Datatype: ConfigDatatypeBool, Section: DynConfigItemSectionAuth},
ConfigKeyDomainDefaultsPrefix + DomainConfigKeySsoSignupEnabled: {DefaultValue: "true", Datatype: ConfigDatatypeBool, Section: DynConfigItemSectionAuth},
}
+
+func init() {
+ for key, item := range DefaultDynInstanceConfig {
+ value, override := getInitialDynConfigItemEnvVar(key)
+ if override {
+ if err := item.ValidateValue(value); err != nil {
+ logger.Fatalf("bad override for %q: %v", key, err)
+ }
+ item.DefaultValue = value
+ }
+ }
+}
--
GitLab

View File

@@ -0,0 +1,173 @@
{
"@esbuild/aix-ppc64@npm:0.25.1": "6de3a364b7f79f21f66d606d4d29c72ef81c741d71ab4bb941c4eabe7b6a809b1340f4dd5c943827005e421912880741320b9617d17fce762d204cfb94175223",
"@esbuild/aix-ppc64@npm:0.25.5": "fb872b34a2843293dc60e809968fedf93e0d8f7174b062decffae6ba861eb56aaea0cd0aba87ba99162ceb2a690f0cde4fc29c000b52c035e40c91ec7861d43e",
"@esbuild/android-arm64@npm:0.25.1": "716c98ad3220c71cbaedcfa34aa7c877a3fae911938c3776a66600d7f65980e384799a6832a1b9aea96c6d5a8880610f54744bd0813e743c511d44056ef528d6",
"@esbuild/android-arm64@npm:0.25.5": "c818e799b19b5587466bf68a27b578ccaaf866c1d144573fbde7659e3fd3f555422ec3e67f5bd186a87648957d1b6e74df4f847edea7219c16979c9916f36e91",
"@esbuild/android-arm@npm:0.25.1": "d2c9e95dd2027f6e14250a90a11136d9ce73a2157a8d104df4a9dd199d3c50cd91f25813536b4776630acb78596bd5a025976962c6d624df7594c32f2d9c1395",
"@esbuild/android-arm@npm:0.25.5": "a5384933f9f2ffcadce2be49da6ff43249fe42f32a04071316434e9f633fc20c8d4029072e9a53555620c3531045786297607b852579eee30b6dbc3bc9d98cd9",
"@esbuild/android-x64@npm:0.25.1": "92f1bec801b414ecdc4b73adfbb4482f4f2cfba423d33296914fa59ffdafb81facc445a7f65d1eea813c078220a0606f4be02252843bb9039ceb2755f643387c",
"@esbuild/android-x64@npm:0.25.5": "8ce115dc7e1e6735f23b4aadb2dfca29c0abd8577ce34802ea3d017a64e388928949134fe225dfe190babdc5ec01be5fc7794eca84738cdefc12c5e3789ce43b",
"@esbuild/darwin-arm64@npm:0.25.1": "9c4cd09c0bd8479e27e04e2397edccebae928184c463684490137d2b7ea3171051b66596db229af2ad3e6a911c1c8a9d10b8aed30d11d0aa155ac0d309fd5dd6",
"@esbuild/darwin-arm64@npm:0.25.5": "a009eab62f2bd284a6f2001d5e08217059186ffc16907bbe873e1de40fe9b5ed92c0db2f4c4d0dc41545838850a430c8f2f35d7bdb9cd01a1a04293acd97afca",
"@esbuild/darwin-x64@npm:0.25.1": "31b64c02be9438e175e8b343c52e0bbc7964f08a1b44e0adbfa2a1b229ccd0ad0184cdb8313272b4590298833ea0b197d82a909466caffe90105f8acb30402d0",
"@esbuild/darwin-x64@npm:0.25.5": "cac8021a7a0c549263e076913346b35a5bb81f76ffbc1abfad5e7b67303f013ac0c76f111bf624ea8447b327ec86c18a60c6ff307d743a2269f5d47313f5b2de",
"@esbuild/freebsd-arm64@npm:0.25.1": "e04018ffd760dd101a5931e0248751bdfca98e3f29be9b41051d55278907f52a3e5ab80c32168e208c2ff287510d6d5b765d3adc841bfd621af7930c10a547e6",
"@esbuild/freebsd-arm64@npm:0.25.5": "d248e7103b7094eb4288db7c9a78b2905a25b4a957f2b945531ca88d3394f45ceca2343a7c84954734534af6159bc741eb3d5c1ed9df990f7395337a1b14192c",
"@esbuild/freebsd-x64@npm:0.25.1": "438215bea2dc716d2c9ffe9b921bbde06e77d96ec0c837fd79f46bc6e195aa50e5f55490228f7433df7aa47810eec5c602a9d9cf956c1794778018632b196f34",
"@esbuild/freebsd-x64@npm:0.25.5": "8a7be0740f07f5dbb3e24bf782ca6ef518a8ce9b53e5d864221722045713586d41774cbd531df97dc868b291b3b303c12e50ca8611c3cb7b5fe09a30b38285eb",
"@esbuild/linux-arm64@npm:0.25.1": "c839788b6db471f144bc2627a117083c9a50402c76cde2f0e5411faaeb3a5cde4972bb7336b87de67cd0a65d4d5b00759668407a03b5d4ed3130d4984837429a",
"@esbuild/linux-arm64@npm:0.25.5": "ce3c8fca47cf0a92148fb288eb35a5c4a4dcf7a700730b3a48fdd63c13e17c719eb6b350378203fba773477eb5be637f47a6d52c5d4ce5bdc0075ee917156006",
"@esbuild/linux-arm@npm:0.25.1": "ecf9fd9028d2166619b9a45161a987eebb6ef3dcb0159a2607ab164c58c26a15cf274e0b1088834c07ef9166349276d595fdad5c42bce8d03a55cb213d947efa",
"@esbuild/linux-arm@npm:0.25.5": "cc81ea76ab86ed2a837c9da329f7c63412d288dc0aa608c8dcdf51705dc93d5b7f966a429be4896babe611074e5898c7e6c8e07ad7f50123a05478975294fbb4",
"@esbuild/linux-ia32@npm:0.25.1": "36f208e10a4b778a28a9002338872e52d24dfc18e25d3b41dc53892279c3ee842d76c7b608a30620f128d85344acac0dc86f203f5de7082a21fa2e908c96b68c",
"@esbuild/linux-ia32@npm:0.25.5": "bfed6750923afd56148f658f6ec8995479f5115116dc212ecb9e4c556064422e22eda855177e7c02cbc945494e4db1167101918c5fa932278115db2c7025a3f6",
"@esbuild/linux-loong64@npm:0.25.1": "75d95e6ee995c9f2abb202ca430685e5d58fbe9b0b5b01a69b498c9b360d309026d15bae7831de9c0c4f02e45028a92ffb169117c3b56dd1ac7ea8c6ef50628d",
"@esbuild/linux-loong64@npm:0.25.5": "e5c20140bbbdba53f0d86dd72961ed73e6255d2ada2d3a626f390b352170605644822ad7592f695b6e520edcefe0c5f6ba19d10694b5d11d725745d9792bde01",
"@esbuild/linux-mips64el@npm:0.25.1": "7fc22eb8a7dc9ee743113cb327eef3591bced4753f416f8dd722794a198a053ab6e120b3b13c1bb6cc89cbd02ea502187b1a3c9ebe8187407665c78995153740",
"@esbuild/linux-mips64el@npm:0.25.5": "6b3559517efd0dd1301debc7af7e275b055859c26facdda2e229b1aaab6ebea4c480a1da151c46211ee4035d95bfa7f0cdacf735b57ee99d41b69c77357310b9",
"@esbuild/linux-ppc64@npm:0.25.1": "84f914a776774bf209c5f96a3708e52477e1966b689a880c0256530063bc581125b5cc04b9700f4aa892e7770ba47c5a950a4be9f1bb3ccbe60a500383602156",
"@esbuild/linux-ppc64@npm:0.25.5": "a1a1af99d758efce928335637924dcd8ddec4201af51014e1f831b012d53a0a673b1e0c31036ec9e8c5a0311439283419ec8abdfc67ecb245fa7f7b653006ed0",
"@esbuild/linux-riscv64@npm:0.25.1": "97f47cd5695686254b58f950ca973df1fcecfebf3bd585629121a65323ffaa7f95cf821392011ee069da492b46fdff771be332c699a438cf123351610e12d621",
"@esbuild/linux-riscv64@npm:0.25.5": "6cd8dce6723b73e0f89898ab6cd52e0d009afdacdfc0d5529134de7b832c92c2e0421fbb5cbfc0e0c0b2b00a9b1ff2c4cdb9695b2c535ebc174960e986c727a7",
"@esbuild/linux-s390x@npm:0.25.1": "10760a999d432d092a8ebe5f09752ee7e8ea77a1afa5f1adfe7f9ccb5bbf77d6e0da6dce5d1a4a7cd731d89b6075723c2bc0328f446ed129c4b63c6441ba22ae",
"@esbuild/linux-s390x@npm:0.25.5": "31b86dbc93d19eb362bad3353e65d6da771118346e723582d06c05f1b6ffad1c3765001b5215ef1e8f0c2bb29130d98815359bbc88e5c08304354d5a92e6ea94",
"@esbuild/linux-x64@npm:0.25.1": "4cdb1625726580eb42432878912d5480a0321559ef2c6425c1db55f89f3fe1c35fb03b3adec92c3f52a4db751d7535f23086b80ed7b219d1edbb254ffbe96e68",
"@esbuild/linux-x64@npm:0.25.5": "f878a3e40edfd8a50de94bf982a9eaf03e636a0332af163a6c905490063aae652384fb392d4765c4338fb6f991034949c92ec768ee65c3b2fceeb494b89fe8b3",
"@esbuild/netbsd-arm64@npm:0.25.1": "f2427b094e072d2db7944b1d2a988dd9f17627976a395b941f225aec2d0565da2ea110a845eafae960af08e3eea74eb327e5eb9dbe06dc1e14f4439596c3b47c",
"@esbuild/netbsd-arm64@npm:0.25.5": "941c5e28a63a93f19122271b5490e196db12815702c2266c6d66401b6909a4364ab889611ba81c5359624e3ce61f0505a680a1179ed9a555d1415fa1c485d75d",
"@esbuild/netbsd-x64@npm:0.25.1": "c8347ecc18b175923a3cbdaef61b64815ffe0cf2cc285f4034337c2df83e78a118ebfdf2ac3a46a8d8a19ce6a0e0605d27d11570d1758ab90074c99047b82fc0",
"@esbuild/netbsd-x64@npm:0.25.5": "edbefdd88ca24a373497a7c8d1fdab418827ff89c6eee1c574159dbb4d9174552aa87753f35525a894964b77c14b012164ec5582b9f19dd4d6c1f5d45df411c7",
"@esbuild/openbsd-arm64@npm:0.25.1": "719812786b4f3ab4471a306c930ab1bf31e9d92f933ea2a34566f07d6269df5058e7d48408127daa197e6fdb21e30697303127d259b76b18936d534619a3eb15",
"@esbuild/openbsd-arm64@npm:0.25.5": "d44633a374c109d2fb9c678882016e3ec3d79f0c5f21a6e6fb0114ea709bc539200b037a4e3ec52304eea2f8c5957bf16c6f0a7af5cfde41b652c4bac604bba6",
"@esbuild/openbsd-x64@npm:0.25.1": "21590cbeda028e9b9f8131c54c36bab65a5d5bd5dd4e6bd9f80438045a655e9ac634bb3535a8650b694db267fe23bd2318a59cdec2fae1ba389ed1a00cc0bbe7",
"@esbuild/openbsd-x64@npm:0.25.5": "efc4641ea653dedc9886f0603c2e7cfc6fbe94c34d4cdaee9b060a8b9d8143d1192c45da93b3e802af2c26f72ab1ad3a3fad0e0cb297d06de55814fe83ccd32c",
"@esbuild/sunos-x64@npm:0.25.1": "e20ce3891d8717fe2cb885d92d16e9409802316eaa91071be5c7d75164d23dbc5a502be3691039051843d94192e8cf43ade61014a8bce298cfc13a8d3ddd85b0",
"@esbuild/sunos-x64@npm:0.25.5": "29860663381b6098c0fda6f69235407654dfad953e83b3f9f06a270950d5c37da4ca60a4b5915b8e2606d468b560be6179870f64a22d5b046e8a930c31a7b554",
"@esbuild/win32-arm64@npm:0.25.1": "749a211eae6a47e5ceb71898df668d083bdec2ed762116fea7772824281f793aceb0487946e20ff604d7e102d1fc8538a73f15b476ca36e07f7ddfb601f6dfa1",
"@esbuild/win32-arm64@npm:0.25.5": "a77d395251c8a62ab0cec07d5230222823fa02fbf3ef008d94b5213a335c9f949872c3f1c2f947abaa28098b669018e429af42f59616e049860a0072f3b006de",
"@esbuild/win32-ia32@npm:0.25.1": "bb45fd889d858678ec68114bfc398965ed8d44e46a9517fcd9f7b397101c2cf94d78938a2640f6f2a1fe65de4ae8830fd426cd21a28302bb92333913b3c16c85",
"@esbuild/win32-ia32@npm:0.25.5": "ff1b6cbe835082aef5b93c3e2012d51be431d05c6ae5f90a5bc89687c687e8e2340c262dedddd124b27b511616bbc4088b5a4a949d3147f677084dc6ec572629",
"@esbuild/win32-x64@npm:0.25.1": "e33291b9834095e6460bd20bb15c49361758bf66d28ccffe0c06a1565211c91f668d9cfc0cbd5bd7a5def693fe7272dbe290b08d4eadba29e750c8a9c739f564",
"@esbuild/win32-x64@npm:0.25.5": "266e69e8d37bd4deb77443588e49472e4e9791178cb39e1692eabb67cf65d8e85a932ac468e7ebb2072c8a9ee23ad413c8f0f7d954c474f643cedbbf7aad952a",
"@lmdb/lmdb-darwin-arm64@npm:3.3.0": "edc735d9d4fda2e808079e080f1a44ba6950e48effa92c3c7b22d5ba9583d2fd3db27ddd99d4e80fd2d603652d6cb80958c8e445e15edede12335e3590c1fa6d",
"@lmdb/lmdb-darwin-x64@npm:3.3.0": "479bd34458a805a7ea01a4845c25157520dde935280630f7e88cd30d10013b4eaba40ad4414fe33a9ec99bdbaeff32834942d515d15520b66094387c47e9be08",
"@lmdb/lmdb-linux-arm64@npm:3.3.0": "4963560fd102028cabd9263da1cab7d9ea78211b540cf5f860138748d64aa5ddac1e908de363325fa3241cd7e9747c373a27bd10c6fb153dde278d2dbf0528ea",
"@lmdb/lmdb-linux-arm@npm:3.3.0": "46244c250250fc9f9a6138ec099f5cec63133537aaaefca3214f48f3f8d0cee85ba7a366b3b48196c2d07946d49e896dd2eb2da3b3a002212fc05e4234817d7f",
"@lmdb/lmdb-linux-x64@npm:3.3.0": "2dc860125f7a7156bc163f3eb4b9400bf9ef8a5ee607227ab4fc03aab6c48d5390490db2bcd69343caae4241027ab616c1b86228b33ac035c0b2d70b9ff6ae12",
"@lmdb/lmdb-win32-arm64@npm:3.3.0": "7fbc5750a4f0f9b49437e69afe89b629fa81f5c5f1d407c45f9d640e51f03184c3b9bc0f3718f80735dff19e4f53f13951fbe2cc48c1da5beeb7028b47380d21",
"@lmdb/lmdb-win32-x64@npm:3.3.0": "60618f1c511939a443a67a56ce034243147f1ce8e78353655c6a49c8e10c24da38e3ba2118cb70db92eaeea8cc3ae3319067eecf73764c82b10ddba768e1e15a",
"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": "f8d48613de17e5356d273745042bbc7c0d345e1e4e5e88ed1132a3ed9ca65db9f8b908a708383d7a58ede276c105e7c9a2887fad00d5e47892010466e5312b47",
"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": "270f8831d7f6d61ff36e7118e09ec13baa633bb22dd57fa3a9e6af67f7036a3fd1beec4c8aad1c72639522300364cef98bc5ba2cddf67a3832f8a35b7fc45502",
"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": "326c19865ead39017326dd8066cde30adaf87a62b968a22d5e5369691817086f681fc291be80b7c61c5496fe915f6df546f41e14ee18b896c54de5099cf147ac",
"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": "115f627bcd7c290ddfa1d16405cc1ce388be0b295a26adb1ee2d774133a77809aa0bae83775d3c11f220544e77d34c01d607037bf9dfc6aaac67329cb5fe2818",
"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": "ab74755aa2afd27ad8f5277c7cb7a0c721028ba63c3e3109458689340d76ed4c901aa2c71ae5950f3a2149ae9e835e711a12842db219864107cc0c5c1fbdc0da",
"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": "edfea4f5455f71f608c15163467b98245d46fbd6078019347418e193968431afe632a11e8729ec39755a54563d86940899e2fe8f3d124393f91855956bd1d745",
"@napi-rs/nice-android-arm-eabi@npm:1.0.1": "a07aa7d9997cc4506e21ee1f0b69bb4a7428e1a7c5b953b3ffd50329eb2180432845c6eed9c5848e77b2778abe9f105b2370fa295f1d5a34610ab8ad2a975751",
"@napi-rs/nice-android-arm64@npm:1.0.1": "9b80463adc36b777e124b61c53e73683af3dffe5ecc3e2fa13c2c4aa2f64d3dc9b39ad3ae845f41c26bfbf6a4140882125062a6c8af42566dd51c6d0377184f9",
"@napi-rs/nice-darwin-arm64@npm:1.0.1": "33c13511e3383adf101b4aa7e15a6d1afc025c7fddc75fdbe5052062a46f777892b06b9bd11cdd5735e09e3e5eb7db0d3972f4bbc6a191cd999378d77dc92274",
"@napi-rs/nice-darwin-x64@npm:1.0.1": "9f0978ad910d0474838c570328144ae1f21dd23d5f27151f748079f16ff73b51cb035175ef9e3b89c2bd176d02bf46661a9dd511a2dcbba747def923f89428af",
"@napi-rs/nice-freebsd-x64@npm:1.0.1": "7b4960c3e4358c4a39cfafb54773ffdb6dca96ec35dc5d19a950512e45d27ce095e6ba60898fff1bf6d924236a9a611175b6c7b3eba30d0f37249bc47d5f1c46",
"@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1": "04fa092148c67c98c5879d705fa3071e0e478074433cb926e5c94b79c016f6398a8a920e482399e55bfafadf36be066eb85744549f22ad994bd3d4552ff863ce",
"@napi-rs/nice-linux-arm64-gnu@npm:1.0.1": "50f2f0ce66ac838e5996e3b13a2bc839a0ff97b8f0c36ab9dd2f539a0b7ec4d0a7ab4c586ff211f70743f56c281ac6b956ed44338511f83886990cbcc813d210",
"@napi-rs/nice-linux-arm64-musl@npm:1.0.1": "cd10edaa4f23f1466727b00527043e5a09b51e9e8ecea3af36be3f9bed82529a32f4541e3c081694a68e1e8a570b868be616775f6d46e00af4aab22a9dda819c",
"@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1": "c2c824441a9dce2967793e6fc42042f141658749ce4ed8beadfbb39a7bd4913469cdd9b6183f95ad442b8738fefd6c1543f835c7c062e61e2a99aeafb9397e91",
"@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1": "c16a3e8893bc482f791fbea0a623eda918d58e47c79581398587d8ad3f8d2394525f083d3b24ba558b8c16fd2d6ed906a19b45166ec064af594ddd107a0e457c",
"@napi-rs/nice-linux-s390x-gnu@npm:1.0.1": "f075d9774b13f418cdea271bf2e619578e04a2619e572ac23f0d810faacb403cfbba874fe098678a01be404488d9b64ecec019a20f9bd2b643d96f0e0825a2ad",
"@napi-rs/nice-linux-x64-gnu@npm:1.0.1": "9cdffbc786efe2460023d4586738073b6b241722c2018222dfff8980a6835130769708e86adcf39c5739efb862eef4e9cb78213d57e90a6e5c0b200aa23722e3",
"@napi-rs/nice-linux-x64-musl@npm:1.0.1": "ad99d37f768d7cefa7c03305f60d99203c1dff9693127ddea03ac778c90eebad0a74fd9d0d0251130e42115c5a73a2ca398f2accd198f84223ce5b3ce430f9e1",
"@napi-rs/nice-win32-arm64-msvc@npm:1.0.1": "72cbe3c39c0490c0c106b984600542488b9057e42e0be1439e3ecc29d7fd6e1cd6c8ff9c58d7cb221c8ef9afebdf8108fd0f52d40a7d759148c2b852207e3ba1",
"@napi-rs/nice-win32-ia32-msvc@npm:1.0.1": "409a65b8139c4ecb58c3affb411a2eeb9cd9874b15c9eae224dbaf98d765db88eab06e60ca32a2e43bb1cdd8addbce6fb3f41e73068ea35b1c051e768a81b402",
"@napi-rs/nice-win32-x64-msvc@npm:1.0.1": "bedccd9efadbcab0ea52177578e37df6ac609cf40fa8d08da9c1f57e40da0ef191c1260e9bdada756fa30b21fe065afa825ba99a5635a705c59020fbabd5be06",
"@parcel/watcher-android-arm64@npm:2.5.0": "2d5d66f4e904546cff638d0b27a871d695dda1205e32902f917723dc1b09a5edef4ed8064fc5c85192a4e5e5b531eb4a2d3b349015ff6170c8228e3c098d5376",
"@parcel/watcher-darwin-arm64@npm:2.5.0": "bbdbaeb31ccea5ec172adab2bb2b1a5f4b2e18ed31054d7f6b1db718238f5880e3b8bc8ac1b55c00048c7a1973e75c0c86fa04c02679f99c0bb355145c8b685b",
"@parcel/watcher-darwin-x64@npm:2.5.0": "85089bf1c0f7fb0b4007d54f97e890bf2173d1a11166e9e601b9afe6e260e9cff2eed150ea80f51aae358436376c36af75a70523f53711f16a773987422cf93b",
"@parcel/watcher-freebsd-x64@npm:2.5.0": "1355a42a68beb177f9d15b8e379b63dd2e633494e0f09a7e28a778c6a5eb082206d6690e3776e79da5263ecc8791be047c33943cfd2d09019f8f545800ed583b",
"@parcel/watcher-linux-arm-glibc@npm:2.5.0": "3c78f9ab9e9d52745f3d44200e290a64843a9346bbe6628485cc6d777a1d329fd0345a5c919daad05fb436fda59143ec2f1810789c8e594a51c7f5d8099ac682",
"@parcel/watcher-linux-arm-musl@npm:2.5.0": "80f7f97115e4d98d95735149c6b210ed1902dbf0020d20b245801272a1459f3cef75307c124c1a947450dff9d7d62440ad85e46a98e06523523170fdffab5bf1",
"@parcel/watcher-linux-arm64-glibc@npm:2.5.0": "f82fb66b301754f9bf67c7abfe41b18c987ed47f8de05750395ac7453a2c396104d44090b20450d90d5af3e9de54e06aed1520e8401343b824f3c19747cf0aa1",
"@parcel/watcher-linux-arm64-musl@npm:2.5.0": "914ebc3387884a8948594fa91520726ef9a7dfbbf7663fd00e7c0de13e08a4e7a525c9132b5439b64b9deb9b62fdfb8c5e02148013cd2383d171334ea76641c0",
"@parcel/watcher-linux-x64-glibc@npm:2.5.0": "5db33f6a134d20e8bfd8bed6d13107e7d30947e832a4f677136abee8e1c2855ea19629ccf220e95056dbff753b55fe2b698dd936f31e492b095cc6434451e9d4",
"@parcel/watcher-linux-x64-musl@npm:2.5.0": "dbf3f903c4eb6014660f4c3c0d44dcef0e21ee16908288ad0149d6c1a5c9fd7f0405d8d0e91a2493fbeef83df5784bd43f7d1426a0150e00a415b6c0eab38c98",
"@parcel/watcher-win32-arm64@npm:2.5.0": "cff6516b1dad597ca1ec8c385cf8251f5050b32ab46fc15360f2eff3a40b61b7107eee56df73764007d9bd6b826960d2f3589c8e0ce270bb5b2a292313bd7a1b",
"@parcel/watcher-win32-ia32@npm:2.5.0": "ad9d2c9ae3a7031105fc90418050a910d4b679ead36e5fdcbb1b3e4afbaf56aec6566863e3a374c645c82f57073d8f643183f19c67c8c48b0aa62224c05fdb9d",
"@parcel/watcher-win32-x64@npm:2.5.0": "aa9660bdb2fe70de5163f9f8419e263711fd30612244fb7feb58fce49a653b88ac0e1e29646fb1fc76b86fd8215e62eea5ded0616725987dfca5372041925bd2",
"@rollup/rollup-android-arm-eabi@npm:4.40.0": "723053f558eaeeb0a1fbf3b3063b930d3b1267a6aba211719927b0467f48513a514a05391689298a64624e98daa005e4685ef668787ebc228fd0527a5f17b419",
"@rollup/rollup-android-arm-eabi@npm:4.40.2": "cb502d6933de94860f9d49a4b4e849a206d10d9b1a424847cb2545667f8937ac891a37854e2934992b39521dc8b8daa2ec6b683da6bb47ef893ab24f9424c887",
"@rollup/rollup-android-arm-eabi@npm:4.44.2": "cd2f130e3dcff3eba63243f734e5f20401b6d59a9473ec8e00d93ba7043abf3aa88672a648eb87ca1daf4ce775a792559dca429483ffe7fdfc7c0e4fd3b664dd",
"@rollup/rollup-android-arm64@npm:4.40.0": "2562821c7032d2d95b891f47f02291d714d072fd91b3dbd07c528a7543f5e7d2458903cc38829feec311f1ebca6e34624262ae2e10aa32a0532b83c564db94cc",
"@rollup/rollup-android-arm64@npm:4.40.2": "42e04ae6605f8a31cc7daf484f9104e6d2174a99e39d829c24d77780cd257a6dab67f5c6a38e84e5a967ad4a64a042f1e6dfbe75444aa03517e83d8436179726",
"@rollup/rollup-android-arm64@npm:4.44.2": "d5d03eb0f71d154c41c0466f5e150ac622344400bedeb02a2fd2eb82ef128c8f9716ce542aaa27425fb9605e498904dc46bd691017bde9f934396beb4b922f05",
"@rollup/rollup-darwin-arm64@npm:4.40.0": "cde6c2f4fe819131f65f5d19f8d1fd4889a4b8cc130cb30582fde72c79e388ef4644f57c7b03f453d4048043524ca067d5e2b4b505a5568840c73021fb74b572",
"@rollup/rollup-darwin-arm64@npm:4.40.2": "8e641fd8a888504c516e76e525a7fcc099d363a82ce8569a1a5bb2fdcf632fa262e1a73b47932a922d132e0c46fab6ba04490053f63e6e4fb30c313a499b139f",
"@rollup/rollup-darwin-arm64@npm:4.44.2": "07d737451c9749d45cc6b7659943c7595b12dcfc5456dc3271cbd38c86235f7c7d48d8ac71ff9c380c322b70216be75eb944aa7171708683640bf1a17ad1bf9e",
"@rollup/rollup-darwin-x64@npm:4.40.0": "28c269104ff10f0ab87a30c93139662780b0b6b4877a95cede7d66e833d478d1eb2f5aa275f60decb8383b2c05161f315902ad8fa1a52fa76283a05ceb32bf6b",
"@rollup/rollup-darwin-x64@npm:4.40.2": "9dca62986fa2afef8c5addcb1eb4ee08afbd3aa03ece3c5372a82a785af67ae441b9782dd542018fa5bb39a6de34ea53f10795d6f6f801a0469ce7979c52c729",
"@rollup/rollup-darwin-x64@npm:4.44.2": "8b7311fcda633484cb2bd77636b7e637b5809774c07db61a9c011b56b0c0e48e9980af7e6ffbd96136b5124f4f2eace31fee195afafb7460b932d7b14013bbc1",
"@rollup/rollup-freebsd-arm64@npm:4.40.0": "27e99df8d1c5f0dfaead8fa6ce3025c5f959b4803e7683d95183761b1ecada4d877bd7f36465c424657ef650eac6199ddcf4911eda6367555633819454a5548d",
"@rollup/rollup-freebsd-arm64@npm:4.40.2": "f21c73712c4cb74a797998e8adfa83bb7ff0d6cc3e7353eae5b213b4bb3f9f481e025d37dd67aeee7488b9fc9ecd0bc8f85a61469cfa6592ed9292d14ba868d0",
"@rollup/rollup-freebsd-arm64@npm:4.44.2": "a9eda84d979bc8e4a0429c83b22969ca39f7a7e61fd00cc1d328016f307a823b5157c44782d52f1d2457c0123fc0918d71cd67eeb5bf97a3f7247412b1af2494",
"@rollup/rollup-freebsd-x64@npm:4.40.0": "3422ce75f0fe774925763b1b63dded9aee56038d167af0b7f8ca0e468a8fae86d6a8aecd0b86a79718b8fc78c5ad987ba5b98be17b95fdcd48e4307749376e1b",
"@rollup/rollup-freebsd-x64@npm:4.40.2": "9f8b6abb5be2527e6cffdaf0dd95a8bbb6f4aa5599be2bfe919e8252f57558f0a06b66748d29cb1e42d0b65e1d2ef0ec2d6a429d3c8a1a85352269d88ffbda17",
"@rollup/rollup-freebsd-x64@npm:4.44.2": "c13527958b957e58c86d4ddc9b54bfa4461e682aa7d06d487036b31e5bc3f723bdc3812ed8b2e038411ced63215417a4d0e82cc64e636f92c2689f60f753ce46",
"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0": "b32cd2a73db75926722dfd42a6c5c6f2f1631f70a8d261317a0ce54e2c5dcee849c0a59cd85de0c0c7bbea9defb4f6649b1354871e6ac7f637cc22673d1486c1",
"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": "fc205b61c54ddaac7bb45768c3b4bbd79632df3f7bbe65532f5453d54e1a31c1d3f1e4508a00323cf0656d6c5a69f0793989d11fd0805dc2621053c8c6fbcaa3",
"@rollup/rollup-linux-arm-gnueabihf@npm:4.44.2": "edc177dbcddc57acf9395c945350c4f402c445fbc6fc841eab0a42611049b15b82da725821212b02cc6ac6094c047aa428708e5a3d0b7a70bdb9ce912b782ecf",
"@rollup/rollup-linux-arm-musleabihf@npm:4.40.0": "1c1d95fe81ee31d0d9cd75258865d35d2afccd8255b856c0da9a3c8afa012feb6b9557d1c234af8f4cc5dfd9d397564c650fe2e8769cb4407f626058c2e19d9c",
"@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": "14fde6bac72d734462b9c2fa3594934454069d01422fe12e650ae6fc9e998daac3d43d1726a0aa040cac9d4de43cf75ca34d82932e0a2c3f564f49f0b6fba4af",
"@rollup/rollup-linux-arm-musleabihf@npm:4.44.2": "21ccc18bcfec016eff03895b888cd08b6ab04a69dc9a53a5c539bc80a2982bd22a306d6b04cf406e5d0b4e717080f41cec6c3c0da875ab7ac77b105b24302b05",
"@rollup/rollup-linux-arm64-gnu@npm:4.40.0": "a8d071163d135e992023a374660a72cc94af4d77a711e7720d4e3fc544a7af037add4839ef8d061503e5320ee80defd35b43a68cebad0105d16cfd870387934c",
"@rollup/rollup-linux-arm64-gnu@npm:4.40.2": "1a7c361022d74025076d322cdeb741923f1d3e0d5e1a12fd4dcc678a7c3dc8a07002f6ec4d537b6f089c75b90273cd700580b9ac1b1d45fa68908eadb524f1c7",
"@rollup/rollup-linux-arm64-gnu@npm:4.44.2": "aef944afc27c9740b39f75d187de442af1c12ec83b68ae2b36c81450d96cc920ee9247dbb9530c96ef99e33a1dc8e27db4323ca2ac6bc0d9329bdc0bced91ded",
"@rollup/rollup-linux-arm64-musl@npm:4.40.0": "5582761d9426caccee50beb1fdb06ebb16fba540eabde06e21d18f59667f7c6c99ca0c2743d1b9cdb54a3d0b28445befad52c76412632bf0d79f280022acc630",
"@rollup/rollup-linux-arm64-musl@npm:4.40.2": "2fbf7f6f28bfe5148b1a82b04569574bc865b65f6e8f874aa8b175ad3c3ee9197a9a22bc3693153f0d55ff2bd78938b15e162cafa4b77756d1933036b0520bf0",
"@rollup/rollup-linux-arm64-musl@npm:4.44.2": "419bdbe24442b348bb361639c0fdb2b728d4ee2bc66f1adf60240d9696954a84652b1a34bff9812a4f02b8908054254e7292e0ada68db84d6fc3c3e16bb58c3d",
"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0": "6d65384886c655b4a9190a2c8e3cd99d7049d13864be0f9b06c32a23ba1242bd09be0e9cba9425898a48b41bba52eb98223e34e3943924370a68f7c7800f66b2",
"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": "ae77d9e7a797868fbd6887b8b4a8a26bcd96ea632022ddc47c570d90ad6e47b2ac0b3a933885c06a0af5ad57b5f818f4531ff6961b351e9705f5af6dd26b2427",
"@rollup/rollup-linux-loongarch64-gnu@npm:4.44.2": "d877b28a7af881173e180a309b75861eaa5eef8a1c235ec6b6209761df59ab341c4e27a04fd74bde3a2519278c61510080bf5006d1f4105bdebd90f05f102d9d",
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0": "ebe38407efd0e45e92f939fe725e64695096c4389747b81f241e8a5d655526615e81512f3d61deae6aaf60669328a9bc93ac352351d6ccf8f1746caeb44bd7ab",
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": "867b6bc576e07110181f41c588b1a7ee22a6571bf5a3ceff0527c1e7c4540b5122d34b99f0c56c00d5c33a2e517fbb16c3e269cc4c08110e69dc0f0e4b2fbf26",
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.44.2": "9880d94383198bbfc7d69b5ee1e6d96fc57a1f5403751fe57f402641036f6b93327894bb39adc0cbcc00b7d2cc477be092bc59ec3b41fe3664c79e960debe0ee",
"@rollup/rollup-linux-riscv64-gnu@npm:4.40.0": "32cc2e2d03eadca60f42ba14af9723584c1ef7ee29f8a79578aacd9ce17e287d1f841aa926278d4b7cbf0f6d054c4ec045873a24c67279ca37f20e999f24bd4e",
"@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": "52f07f3e5e008cd0d277d5290524682c8ec5c03e08659b07a800fddc00b450dbf8df08612921b9fe6e4e16d60d5e282027d9b260ff520c40bf3e7c5e1efabb60",
"@rollup/rollup-linux-riscv64-gnu@npm:4.44.2": "b3e0b49859942dd6d1dd0bb8e796578529c6c7f2fcf8ebd03094644e569efba8e526f2b7e16482d4e2358db66f9126c2e563591a33820b96b689690be322c9e0",
"@rollup/rollup-linux-riscv64-musl@npm:4.40.0": "507c785bde98633f0139baccce0635047d43b19fb1d1fc770d4d88b11ef62b7885b0dac51a42c5f3e05bc0a56480928ae6304898884f0b5b0e56ad0cc98920f6",
"@rollup/rollup-linux-riscv64-musl@npm:4.40.2": "6483ab13ac5626c5b94d72aad3ffafe63a3572899824b1d37e59bc071b147f3d498864a0e19942e013a4488aa9262a92817232ca6c38339e3de62c3c4aca87e3",
"@rollup/rollup-linux-riscv64-musl@npm:4.44.2": "bf3dcb76e4932b90b3f57b992f7360f182c66eb1fef7b0bb648c29bfb1f30e8afabff37348abb58b657023f700821515afb83838f78bf37156598b1c46fba272",
"@rollup/rollup-linux-s390x-gnu@npm:4.40.0": "e464366194da4d1a72fc5ecce6c59027004b878fc36114f2d7c25812da5fe1885c29eb14d7bb318a4bb3242a99e772f7713da22f7f2d93f4b6e6a3e012f3d1f4",
"@rollup/rollup-linux-s390x-gnu@npm:4.40.2": "842ad92a20ff994091d4ba4c16f87e2f8a57e1eb9e3004c20aaeeb692bc2061619dd43ba4dd246712f8904fe1480e6211b43e9fd2e11a5faebbeebea0c79da63",
"@rollup/rollup-linux-s390x-gnu@npm:4.44.2": "8333607cdcdc6147149f5cc7174aaff2ce0e7e3d1c6df1357ff252cb981953121d158c59f64f636dd555d12e398623099f55368b18c1c43d32049f96f035acab",
"@rollup/rollup-linux-x64-gnu@npm:4.40.0": "b472cd5acd066a60bd970865be1b229ca4c31a658a5c0277b6f441396243a20c535502a0ea7ea0dca6d12e2ccf53324b7e94c0d32a4f81f0b9866fd6cc3aff5a",
"@rollup/rollup-linux-x64-gnu@npm:4.40.2": "c440df4beca32d238b0a0f0b1017fb30da52c0f705946177c01a08d7d214ae190b2070885d93e15ff5fb5741e0964e1370bdd45f8a94e9a4689816f06f18c5a0",
"@rollup/rollup-linux-x64-gnu@npm:4.44.2": "8612dc946a71ab36564e7b689bdf219283779f397bbc6851d991d05091a015fde4b29257a7061b33412e3f05babf3ab8da3fb2faabe1bab143646549d90347fc",
"@rollup/rollup-linux-x64-musl@npm:4.40.0": "f553ef17a801559ca9418eb57dd9621884bde4d0d9f01292d9bb84de271efbf4ba737ddaf78a710edd6138528f3d8e2b3d6ba1a969c9e34624ad4266bfba39db",
"@rollup/rollup-linux-x64-musl@npm:4.40.2": "9874b4cce42573d460634443ddb730d348360089bf93667309e660301e4e389d8ae80abe7f33fa9a20db5e67984e107e17d1479bdfee278d74bc60dde6ab5f83",
"@rollup/rollup-linux-x64-musl@npm:4.44.2": "6f88ead8c0849598833227092746ca086cb7e8abf9230fe8ab41efc4bcd1e55df17ff10370c52e3fe340c1f4a291bb694b33a9d017f07293b0fe2741669a6e4a",
"@rollup/rollup-win32-arm64-msvc@npm:4.40.0": "f14da0ce3062084d81fd42432ddf6c3cd869b4c48dc1acd803bc151bc3b508dbd290d60624ab5507d691b9e53bec81a508b61688304f171088549067ec86445d",
"@rollup/rollup-win32-arm64-msvc@npm:4.40.2": "b61552ab831efde1ca4823cab1982d3d681e1be269d67d60558cd2ac86fe3802f6d569300d9ada084acebae27257b00c68f9d858261a579b5d8686956aa92ba0",
"@rollup/rollup-win32-arm64-msvc@npm:4.44.2": "7cccd8e4482d8970d178feca1354b61bc18389768e5773b31d31fc951b07c13d1a639f2339a6ccf207ba9531412ced1e0a6214e4e6d35aeaa55e3977c10028c1",
"@rollup/rollup-win32-ia32-msvc@npm:4.40.0": "e6849d8cb8c276681f558b8212d58340488814e697486d9d125c1191479a4819387f681945f59c2b9fdd40020403cb72a099906960625da65d2114cf3df701e5",
"@rollup/rollup-win32-ia32-msvc@npm:4.40.2": "13ad059483b26bbf12af5108207d66a98ae2aef7599f27a506b998c781921b653dacc63ee0db57bb6f37c920163fd8bc40072e0be0ec6b1e5f52eb3f1455efeb",
"@rollup/rollup-win32-ia32-msvc@npm:4.44.2": "d9e204f93ac8e372fed1a86f5c26cc627ebc6c808968becd63660993bbf8931b90dd7b67632ffca9f0557d1dd7c49a10d3a6bce1de899a485009968c7a5a3190",
"@rollup/rollup-win32-x64-msvc@npm:4.40.0": "347f3af8176858afaec0f4f0d7951d4cda81f77c30e8260c678a11809bcdee0542762f27f6a4194562c2a8a6321a774ea523216ed8cf105e041eff7498443f28",
"@rollup/rollup-win32-x64-msvc@npm:4.40.2": "98ab8600ecbeab358c53ed563a7b586da0c5cdf26c03456a982a016b2f8eff6e2ec07055d15fe039b982a18a970744390d85a05970c9a8b1533c54702026f8df",
"@rollup/rollup-win32-x64-msvc@npm:4.44.2": "b63a31a6286e51a2aca324d981aa074ef22218e5f64a79bc53bbab16a8fe44695f852c096c2a19d381e014c982c3039bab28f5cf5707c9d2eecaac813a532443",
"@unrs/resolver-binding-android-arm-eabi@npm:1.10.1": "92045286d5f8e03ea887248a500dff810a1d5ce0a98171c1cacb915bf810f8e25da8a7ae31856884d61cf0f937fb7d84e7ce83b2fe1301dcf9dd1dba91ba7c47",
"@unrs/resolver-binding-android-arm64@npm:1.10.1": "881718bd9ad5c242a38c565c7cfc915b89a0304c9922be32f0d1e5c52ade286ae69c7da6836aaf125d71ecae133d43a042ce6e4c04752b1f6263a53093e94107",
"@unrs/resolver-binding-darwin-arm64@npm:1.10.1": "e46d4a57e383f82a1901f6cde9c3c7f2ffdbdf347dc4d1e671a51236a50ccab4b7b196d1e2cabdbbfd6258b8bec57fe0fcba5472a03df0fce9c19ff32c9efb82",
"@unrs/resolver-binding-darwin-x64@npm:1.10.1": "6d73626f92a7aa23a54f610420da727cddfdf696e65002ec5ac67b3daa17e8ce9ae36b94e77e70dbab8d4f97f83a262ee736c47e629609acc7908d4e4e224d23",
"@unrs/resolver-binding-freebsd-x64@npm:1.10.1": "93a6a9b08989878927f4b7a870f6f6c8acacac990075e89e39a296b5ed8bf6c589348c3cc7552222a8e7632b0bf934240ce5329777deccb04816d1f5879b7885",
"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.10.1": "2546374b051370e75c171114228805856f27364a84762c1b0939be5451df84d25e0f3b600ab25b65b09ce0f4ea6b59107cbe87fb3ca5612a93f1fd030a54539c",
"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.10.1": "74d5adb10ee1cceab8791560ee244fbf2d8e838a4aa8419ea9d6a49f83ec92a142261e52e8de131c993e33db9af63f209a80553fc677c8347df567598b406a0a",
"@unrs/resolver-binding-linux-arm64-gnu@npm:1.10.1": "6809af7fdbe9435c47d585392e22233162c825402c1f1a5fff06bc23a9cd61673bb02a000962d0f34f13031c0dcfd1aa9c0e00f38c02b57c0ce5b8e9e4bdf7a0",
"@unrs/resolver-binding-linux-arm64-musl@npm:1.10.1": "a051176e0135318de53e5011509ab44b8fe13be73dd224e58d07ce853f022acd9bc05fa53256f54c25476c7ff8cd2deeb51aeeac530aed5e4eb641ec9aba9be5",
"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.10.1": "4762de41578901d0b028f1a78a75c885a8334f99a2f1a4141d1d7d0287a1631f044816282113326cd98556bdfe9f346082a4e94012f25c412ea432dfd8fe7b5e",
"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.10.1": "cb6eb1ee02d794f171ab1f927b3c586a19c69da702de3e623fe7bed27dc7c383a7ba0f4fbdebfc054575fb3acc2c5bfce0d9169922c9b25e386b7d3f6f1b2ab5",
"@unrs/resolver-binding-linux-riscv64-musl@npm:1.10.1": "3090d3da2ce7d8ed6142e79a91cd197b71093d2e685c9484e95d0526cb800256feae82c956d3d53049d7ab7c0d0c5408adb85b2a8d5648298efedcc399307152",
"@unrs/resolver-binding-linux-s390x-gnu@npm:1.10.1": "5d9f1e37303ec734fffc73576a9315182043e2c145ee472c97ddf1f2d6423cf371ce70d03fe32c9eb79ee79fb33d91c3a06593535b2dbd3ab7c5e80d66ffde6d",
"@unrs/resolver-binding-linux-x64-gnu@npm:1.10.1": "1570460f6a1841dad7acc223339c4d713d45c71c74691433373744146896517978f72fcea0fa743b5f0c1f391ded7fc8b16ce8c115de2d5601ca18bfe4d4b8cc",
"@unrs/resolver-binding-linux-x64-musl@npm:1.10.1": "db81724e641c6dbda5f29ea026b0fb7f0a05dfcd2dce55f70907aa5a8bd09dcf9c7726ce77c792667c64eefda557ecd3eefe99ab6d0aae8f6070c16c74d644a0",
"@unrs/resolver-binding-wasm32-wasi@npm:1.10.1": "38eee8361bd4bc091ddc02293117f99c3daab43ac2296c2b5754cbadb48c275536e1c341a97a33cfacd0d49c9c7cc22d9b1630668e66259e9ec016f067efb29e",
"@unrs/resolver-binding-win32-arm64-msvc@npm:1.10.1": "06bc298a4f903b6e4b18731610f78e39502b947b10fbe9377f47ec56a9c81fbac218ace310c9bd0e36b5557d755bf3fa46b9fd7b07442acdd4bc2516e575881b",
"@unrs/resolver-binding-win32-ia32-msvc@npm:1.10.1": "4eb7082b17a29c14e6dc9d34a8561f8c703cb333c85f40dfd1e8c4c1355d3cd020dcff0bb6402c0fa3032a62bb9234973316573a30979111d1eaee646a7c06c4",
"@unrs/resolver-binding-win32-x64-msvc@npm:1.10.1": "5b42add796f88e567359b4f6ffd4cba3c2be937241500e78cc362dec9de79715586ac7fc47fefac5edf6341c4fa557bf09128f458847a88d5761c52342641a71"
}

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }:
# AUTO-UPDATE: nix-update --flake --version=branch=main darktable-ghost-cms-publish --subpackage npmSrc
pkgs.stdenv.mkDerivation (finalAttrs: {
# AUTO-UPDATE: nix-update --flake --version=branch=main darktable-ghost-cms-publish
pkgs.buildNpmPackage (finalAttrs: {
pname = "darktable-ghost-cms-publish";
version = "0-unstable-2025-02-23";
@@ -12,29 +12,17 @@ pkgs.stdenv.mkDerivation (finalAttrs: {
hash = "sha256-5aoGkqxMyvyK8EDsSE6kZa+dpExxVH2GRx2n87VusKE=";
};
npmSrc = pkgs.buildNpmPackage {
inherit (finalAttrs) src pname version;
nativeBuildInputs = with pkgs; [ makeWrapper ];
npmDepsHash = "sha256-K/x9ZEMNO8D+SkvVPfqVJtZaDXY5gDApRRocg/POY68=";
dontNpmBuild = true;
installPhase = ''
cp -r . $out
'';
};
npmDepsHash = "sha256-K/x9ZEMNO8D+SkvVPfqVJtZaDXY5gDApRRocg/POY68=";
dontNpmBuild = true;
# FIXME: https://github.com/NixOS/nixpkgs/issues/255890
wrapper = pkgs.writeShellApplication {
name = finalAttrs.pname;
runtimeInputs = with pkgs; [ bun ];
text = ''
exec bun ${finalAttrs.npmSrc}/src/index.ts "$@"
'';
};
installPhase = ''
mkdir -p $out/bin $out/lib/${finalAttrs.pname}
cp publish.lua $out/lib/${finalAttrs.pname}/
cp ${finalAttrs.wrapper}/bin/${finalAttrs.pname} $out/bin/
cp -r publish.lua src $out/lib/${finalAttrs.pname}/
makeWrapper ${pkgs.bun}/bin/bun $out/bin/${finalAttrs.pname} \
--add-flag "$out/lib/${finalAttrs.pname}/src/index.ts"
'';
})

View File

@@ -8,6 +8,8 @@ let
callPackage = pkgs.lib.callPackageWith { inherit pkgs inputs system; };
in
{
comentario = callPackage ./comentario { };
darktable-ghost-cms-publish = callPackage ./darktable/ghost-cms-publish { };
darktable-hald-clut = callPackage ./darktable/hald-clut { };
darktable-lua-scripts = callPackage ./darktable/lua-scripts { };
@@ -15,6 +17,7 @@ in
docker-adguardhome = callPackage ./docker/adguardhome { };
docker-authelia = callPackage ./docker/authelia { };
docker-base = callPackage ./docker/base { };
docker-comentario = callPackage ./docker/comentario { };
docker-flaresolverr = callPackage ./docker/flaresolverr { };
docker-gitea = callPackage ./docker/gitea { };
docker-gitea-act-runner = callPackage ./docker/gitea-act-runner { };
@@ -87,6 +90,7 @@ in
shlink-web-client = callPackage ./shlink-web-client { };
ssh-known-hosts-github = callPackage ./ssh/known-hosts/github { };
ssh-known-hosts-gitlab = callPackage ./ssh/known-hosts/gitlab { };
yazi-plugin-custom-shell = callPackage ./yazi/plugins/custom-shell { };

View File

@@ -0,0 +1,35 @@
{
pkgs,
inputs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
in
pkgs.dockerTools.buildImage {
name = "comentario";
fromImage = import ../base { inherit pkgs; };
copyToRoot = pkgs.buildEnv {
name = "root";
paths = with selfPkgs; [ comentario ];
pathsToLink = [
"/bin"
"/lib"
];
};
config = {
Entrypoint = [ "comentario" ];
Env = [
"HOST=0.0.0.0"
"PORT=8080"
"SECRETS_FILE=/etc/comentario/secrets.yaml"
];
ExposedPorts = {
"8080/tcp" = { };
};
WorkingDir = "/etc/comentario";
};
}

View File

@@ -18,9 +18,7 @@ pkgs.dockerTools.buildImage {
Volumes = {
"/var/www/nginx" = { };
};
Env = [
"TARGET_DIR=/var/www/nginx"
];
Env = [ "TARGET_DIR=/var/www/nginx" ];
ExposedPorts = {
"8080/tcp" = { };
};

View File

@@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> { }, ... }:
{ pkgs, ... }:
pkgs.buildGoModule (finalAttrs: {
pname = "nginx-receiver";
version = "0";

View File

@@ -191,14 +191,14 @@ func removeContents(directory string) error {
return fmt.Errorf("failed to read dir %s: %w", directory, err)
}
for _, entry := range entries {
err := os.RemoveAll(filepath.Join(directory, entry.Name()))
if err != nil {
return err
}
}
for _, entry := range entries {
err := os.RemoveAll(filepath.Join(directory, entry.Name()))
if err != nil {
return err
}
}
return nil
return nil
}
func renameOrCopyContents(sourceDirectory string) error {

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }:
# AUTO-UPDATE: nix-update --flake --version=branch=master littlelink-server --subpackage yarnSrc
# AUTO-UPDATE: nix-update --flake --version=branch=master littlelink-server
pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "littlelink-server";
version = "0-unstable-2025-06-16";
@@ -11,41 +11,28 @@ pkgs.stdenv.mkDerivation (finalAttrs: {
hash = "sha256-BUPqXpiofHlLKgbOYkZr+QEoRIdRgr8alrUzcGS9edc=";
};
yarnSrc = pkgs.stdenv.mkDerivation {
inherit (finalAttrs) src pname version;
offlineCache = pkgs.fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-nv1NgMm56wWlAYqqdH9UKTnWNhjxWBs1lmG+UCCQAzk=";
};
nativeBuildInputs = with pkgs; [
nodejs
yarnConfigHook
yarnBuildHook
npmHooks.npmInstallHook
];
yarnBuildFlags = [ "--noninteractive" ];
installPhase = ''
mkdir -p $out/lib/${finalAttrs.pname}
cp -r build node_modules $out/lib/${finalAttrs.pname}
'';
offlineCache = pkgs.fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-nv1NgMm56wWlAYqqdH9UKTnWNhjxWBs1lmG+UCCQAzk=";
};
wrapper = pkgs.writeShellApplication {
name = finalAttrs.pname;
runtimeInputs = with pkgs; [ nodejs_20 ];
text = ''
cd ${finalAttrs.yarnSrc}/lib/${finalAttrs.pname}
exec node build/server.js "$@"
'';
};
nativeBuildInputs = with pkgs; [
nodejs_20
yarnConfigHook
yarnBuildHook
npmHooks.npmInstallHook
makeWrapper
];
yarnBuildFlags = [ "--noninteractive" ];
installPhase = ''
mkdir -p $out/bin
cp ${finalAttrs.wrapper}/bin/${finalAttrs.pname} $out/bin/
mkdir -p $out/lib/${finalAttrs.pname}
cp -r build node_modules $out/lib/${finalAttrs.pname}
makeWrapper ${pkgs.nodejs_20}/bin/node $out/bin/${finalAttrs.pname} \
--run "cd $out/lib/${finalAttrs.pname}" \
--add-flag "build/server.js"
'';
meta.mainProgram = finalAttrs.pname;

View File

@@ -16,7 +16,7 @@ pkgs.rustPlatform.buildRustPackage (finalAttrs: {
env = {
VW_VERSION = finalAttrs.version;
RUST_MIN_STACK = 16777216;
RUST_MIN_STACK = 134217728;
};
nativeBuildInputs = with pkgs; [ pkg-config ];

View File

@@ -25,4 +25,6 @@ pkgs.buildGoModule (finalAttrs: {
mkdir -p $out/bin
cp "$GOPATH/bin/viya4-orders-cli" $out/bin/viya4-orders-cli
'';
meta.mainProgram = finalAttrs.pname;
})

View File

@@ -0,0 +1,21 @@
{
pkgs,
inputs,
system,
...
}:
pkgs.stdenv.mkDerivation {
pname = "ssh-known-hosts-github";
version = "0-unstable-2025-02-25";
src = inputs.self.lib.${system}.fetchers.sshKnownHosts {
host = "gitlab.com";
hash = "sha256-5flUNj4vKn1Y2YE8bkUcsW3kQLRKn8WB3uPUxlhZMTk=";
};
phases = [ "installPhase" ];
installPhase = ''
cp $src $out
'';
}