akkoma: add initial config
This commit is contained in:
parent
9f9f6d7b76
commit
e6de0b8257
9 changed files with 899 additions and 26 deletions
12
.sops.yaml
12
.sops.yaml
|
@ -46,3 +46,15 @@ creation_rules:
|
|||
- *emily
|
||||
age:
|
||||
- *girldick
|
||||
- path_regex: secrets/hosts/seras.yaml
|
||||
key_groups:
|
||||
- pgp:
|
||||
- *emily
|
||||
age:
|
||||
- *seras
|
||||
- path_regex: secrets/services/akkoma.yaml
|
||||
key_groups:
|
||||
- pgp:
|
||||
- *emily
|
||||
age:
|
||||
- *seras
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
{ ... }: {
|
||||
{ ... }: {
|
||||
imports = [
|
||||
../../common
|
||||
../../profiles/builder.nix
|
||||
../../profiles/headless.nix
|
||||
../../profiles/kartoffel.nix
|
||||
../../profiles/lxc.nix
|
||||
../../services/akkoma
|
||||
../../services/nginx.nix
|
||||
../../services/hydra
|
||||
../../services/update-nixfiles.nix
|
||||
|
|
280
config/services/akkoma/default.nix
Normal file
280
config/services/akkoma/default.nix
Normal file
|
@ -0,0 +1,280 @@
|
|||
{ config, pkgs, ... }: {
|
||||
sops.secrets."services/akkoma/mailerPassword" = {
|
||||
sopsFile = ../../../secrets/services/akkoma.yaml;
|
||||
};
|
||||
sops.secrets."services/akkoma/deepl" = {
|
||||
sopsFile = ../../../secrets/services/akkoma.yaml;
|
||||
};
|
||||
services.akkoma = {
|
||||
enable = true;
|
||||
extraStatic."emoji/blobs.gg" = pkgs.akkoma-emoji.blobs_gg;
|
||||
|
||||
extraStatic."static/styles.json" = pkgs.writeText "styles.json" (builtins.toJSON {
|
||||
pleroma-dark = "/static/themes/pleroma-dark.json";
|
||||
pleroma-light = "/static/themes/pleroma-light.json";
|
||||
pleroma-amoled = [ "Pleroma Dark AMOLED" "#000000" "#111111" "#b0b0b1" "#d8a070" "#aa0000" "#0fa00f" "#0095ff" "#d59500"];
|
||||
classic-dark = [ "Classic Dark" "#161c20" "#282e32" "#b9b9b9" "#baaa9c" "#d31014" "#0fa00f" "#0095ff" "#ffa500" ];
|
||||
bird = [ "Bird" "#f8fafd" "#e6ecf0" "#14171a" "#0084b8" "#e0245e" "#17bf63" "#1b95e0" "#fab81e"];
|
||||
ir-black = [ "Ir Black" "#000000" "#242422" "#b5b3aa" "#ff6c60" "#FF6C60" "#A8FF60" "#96CBFE" "#FFFFB6" ];
|
||||
monokai = [ "Monokai" "#272822" "#383830" "#f8f8f2" "#f92672" "#F92672" "#a6e22e" "#66d9ef" "#f4bf75" ];
|
||||
|
||||
redmond-xx = "/static/themes/redmond-xx.json";
|
||||
redmond-xx-se = "/static/themes/redmond-xx-se.json";
|
||||
redmond-xxi = "/static/themes/redmond-xxi.json";
|
||||
breezy-dark = "/static/themes/breezy-dark.json";
|
||||
breezy-light = "/static/themes/breezy-light.json";
|
||||
paper = "/static/themes/paper.json";
|
||||
thekanata = "/static/themes/thekanata.json";
|
||||
ihatebeingalive = "/static/themes/ihatebeingalive.json";
|
||||
elly-mod = "/static/themes/elly-mod.json";
|
||||
});
|
||||
|
||||
extraStatic."static/themes/elly-mod.json" = pkgs.writeText "elly-mod.json" (builtins.readFile ./elly-mod.json);
|
||||
|
||||
extraStatic."static/terms-of-service.html" = pkgs.writeText "terms-of-service.html" ''
|
||||
<h3>Likes are now florps. The timeline goes sideways.</h3>
|
||||
'';
|
||||
|
||||
extraStatic."images/akkoma-wp.png" = pkgs.fetchurl {
|
||||
url = "https://kyouma.net/akkoma-wp.avif";
|
||||
hash = "sha256-p0slibhwLExsGUzCSZHIl6tNm28r4fB3iJsI6peRFRs=";
|
||||
};
|
||||
|
||||
extraStatic."favicon.png" = let
|
||||
rev = "697a8211b0f427a921e7935a35d14bb3e32d0a2c";
|
||||
in pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "favicon.png";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/TilCreator/NixOwO/${rev}/NixOwO_plain.svg";
|
||||
hash = "sha256-tWhHMfJ3Od58N9H5yOKPMfM56hYWSOnr/TGCBi8bo9E=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with pkgs; [ librsvg ];
|
||||
|
||||
dontUnpack = true;
|
||||
installPhase = ''
|
||||
rsvg-convert -o $out -w 96 -h 96 $src
|
||||
'';
|
||||
};
|
||||
|
||||
frontends = {
|
||||
primary = {
|
||||
package = pkgs.akkoma-fe-domi;
|
||||
name = "akkoma-fe";
|
||||
ref = "5f0339ce00";
|
||||
};
|
||||
admin = {
|
||||
package = pkgs.akkoma-frontends.admin-fe;
|
||||
name = "admin-fe";
|
||||
ref = "stable";
|
||||
};
|
||||
};
|
||||
};
|
||||
services.akkoma.config = let
|
||||
inherit ((pkgs.formats.elixirConf { }).lib) mkRaw mkAtom mkMap;
|
||||
in {
|
||||
":pleroma" = {
|
||||
":instance" = {
|
||||
name = "florp.social";
|
||||
email = "contact@florp.social";
|
||||
notify_email = "akkoma@florp.social";
|
||||
description = "Likes are now florps. The timeline goes sideways.";
|
||||
instance_thumbnail = "/instance/thumbnail.avif";
|
||||
limit = 69420;
|
||||
description_limit = 69420;
|
||||
remote_limit = 131072;
|
||||
upload_limit = 160 * 1024 * 1024;
|
||||
avatar_upload_limit = 16 * 1024 * 1024;
|
||||
background_upload_limit = 32 * 1024 * 1024;
|
||||
banner_upload_limit = 32 * 1024 * 1024;
|
||||
registrations_open = true;
|
||||
registration_reason_length = 2048;
|
||||
account_approval_required = true;
|
||||
account_activation_required = true;
|
||||
federation = false;
|
||||
federation_incoming_replies_max_depth = 1024;
|
||||
max_pinned_statuses = 10;
|
||||
safe_dm_mentions = true;
|
||||
remote_post_retention_days = 365;
|
||||
user_bio_length = 8192;
|
||||
user_name_length = 64;
|
||||
max_account_fields = 8;
|
||||
cleanup_attachments = true;
|
||||
local_bubble = [
|
||||
"solitary.social"
|
||||
"donotsta.re"
|
||||
"chaos.social"
|
||||
];
|
||||
};
|
||||
|
||||
"Pleroma.Captcha".method = mkRaw "Pleroma.Captcha.Kocaptcha";
|
||||
|
||||
"Pleroma.Web.Endpoint".url.host = "florp.social";
|
||||
|
||||
"Pleroma.Emails.Mailer" = {
|
||||
enabled = true;
|
||||
adapter = mkRaw "Swoosh.Adapters.SMTP";
|
||||
relay = "mail.kyouma.net";
|
||||
username = "akkoma@florp.social";
|
||||
password._secret = config.sops.secrets."services/akkoma/mailerPassword".path;
|
||||
port = 465;
|
||||
ssl = true;
|
||||
auth = mkRaw ":always";
|
||||
};
|
||||
|
||||
":database".rum_enabled = true;
|
||||
|
||||
":media_proxy" = {
|
||||
enabled = true;
|
||||
base_url = "https://cache.florp.social";
|
||||
proxy_opts.redirect_on_failure = true;
|
||||
proxy_opts.max_body_length = 64 * 1024 * 1024;
|
||||
};
|
||||
|
||||
":media_preview_proxy" = {
|
||||
enabled = false;
|
||||
thumbnail_max_width = 1920;
|
||||
thumbnail_max_height = 1080;
|
||||
min_content_length = 128 * 1024;
|
||||
};
|
||||
|
||||
"Pleroma.Upload".base_url = "https://media.florp.social";
|
||||
|
||||
"Pleroma.Upload".filters = map mkRaw [
|
||||
"Pleroma.Upload.Filter.Exiftool.ReadDescription"
|
||||
"Pleroma.Upload.Filter.Exiftool.StripMetadata"
|
||||
"Pleroma.Upload.Filter.Dedupe"
|
||||
"Pleroma.Upload.Filter.AnonymizeFilename"
|
||||
];
|
||||
|
||||
":mrf".policies = map mkRaw [
|
||||
"Pleroma.Web.ActivityPub.MRF.SimplePolicy"
|
||||
"Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy"
|
||||
];
|
||||
|
||||
":mrf_simple" = {
|
||||
reject = mkMap {
|
||||
"bae.st" = "harassment";
|
||||
"brighteon.social" = "incompatible";
|
||||
"detroitriotcity.com" = "incompatible";
|
||||
"freeatlantis.com" = "incompatible";
|
||||
"freespeechextremist.com" = "incompatible";
|
||||
"gab.com" = "incompatible";
|
||||
"gleasonator.com" = "incompatible";
|
||||
"kitsunemimi.club" = "incompatible";
|
||||
"poa.st" = "incompatible";
|
||||
"seal.cafe" = "harassment";
|
||||
"social.quodverum.com" = "incompatible";
|
||||
"spinster.xyz" = "incompatible";
|
||||
"truthsocial.co.in" = "incompatible";
|
||||
"varishangout.net" = "incompatible";
|
||||
|
||||
"activitypub-troll.cf" = "security";
|
||||
"misskey-forkbomb.cf" = "security";
|
||||
"repl.co" = "security";
|
||||
};
|
||||
|
||||
followers_only = mkMap {
|
||||
"bitcoinhackers.org" = "annoying";
|
||||
};
|
||||
};
|
||||
|
||||
":mrf_object_age".threshold = 90 * 24 * 3600;
|
||||
|
||||
":frontend_configurations" = {
|
||||
pleroma_fe = mkMap {
|
||||
background = "/images/akkoma-wp.png";
|
||||
collapseMessageWithSubject = true;
|
||||
hideSiteFavicon = true;
|
||||
streaming = true;
|
||||
webPushNotifications = true;
|
||||
useStreamingApi = true;
|
||||
scopeCopy = true;
|
||||
showFeaturesPanel = false;
|
||||
subjectLineBehavior = "masto";
|
||||
alwaysShowSubjectInput = true;
|
||||
postContentType = "text/markdown";
|
||||
modalOnRepeat = true;
|
||||
minimalScopesMode = true;
|
||||
redirectRootNoLogin = "/about";
|
||||
translationLanguage = "EN";
|
||||
theme = "elly-mod";
|
||||
};
|
||||
};
|
||||
|
||||
":restrict_unauthenticated" = {
|
||||
timelines = mkMap {
|
||||
local = false;
|
||||
federated = true;
|
||||
};
|
||||
};
|
||||
|
||||
":translator" = {
|
||||
enabled = true;
|
||||
module = mkRaw "Pleroma.Akkoma.Translators.DeepL";
|
||||
};
|
||||
|
||||
":deepl" = {
|
||||
tier = mkAtom ":free";
|
||||
api_key._secret = config.sops.secrets."services/akkoma/deepl".path;
|
||||
};
|
||||
};
|
||||
|
||||
":web_push_encryption".":vapid_details" = {
|
||||
subject = "mailto:contact@florp.social";
|
||||
};
|
||||
|
||||
":joken".":default_signer"._secret = "/var/lib/secrets/akkoma/jwt-signer";
|
||||
};
|
||||
services.postgresql.extraPlugins = [
|
||||
pkgs.postgresql15Packages.rum
|
||||
];
|
||||
services.nginx = {
|
||||
package = pkgs.tengine;
|
||||
clientMaxBodySize = "256m";
|
||||
commonHttpConfig = ''
|
||||
proxy_cache_path /var/cache/nginx/cache/akkoma-media-cache
|
||||
levels= keys_zone=akkoma_media_cache:32m max_size=32g
|
||||
inactive=1y use_temp_path=off;
|
||||
|
||||
access_log off;
|
||||
'';
|
||||
};
|
||||
kyouma.nginx.virtualHosts = {
|
||||
"florp.social".locations."/".proxyPass = "http://unix:/run/akkoma/socket";
|
||||
|
||||
"media.florp.social" = {
|
||||
useACMEHost = "florp.social";
|
||||
locations."/".proxyPass = "http://unix:/run/akkoma/socket";
|
||||
};
|
||||
|
||||
"cache.florp.social" = {
|
||||
useACMEHost = "florp.social";
|
||||
locations."/" = {
|
||||
proxyPass = "http://unix:/run/akkoma/socket";
|
||||
extraConfig = ''
|
||||
proxy_cache akkoma_media_cache;
|
||||
|
||||
# Cache objects in slices of 1 MiB
|
||||
slice 1m;
|
||||
proxy_cache_key $host$uri$is_args$args$slice_range;
|
||||
proxy_set_header Range $slice_range;
|
||||
|
||||
# Decouple proxy and upstream responses
|
||||
proxy_buffering on;
|
||||
proxy_cache_lock on;
|
||||
proxy_ignore_client_abort on;
|
||||
|
||||
# Default cache times for various responses
|
||||
proxy_cache_valid 200 1y;
|
||||
proxy_cache_valid 206 301 304 1h;
|
||||
|
||||
# Allow serving of stale items
|
||||
proxy_cache_use_stale error timeout invalid_header updating;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
security.acme.certs."florp.social".extraDomainNames = [ "cache.florp.social" "media.florp.social" ];
|
||||
}
|
529
config/services/akkoma/elly-mod.json
Normal file
529
config/services/akkoma/elly-mod.json
Normal file
|
@ -0,0 +1,529 @@
|
|||
{
|
||||
"_pleroma_theme_version": 2,
|
||||
"name": "elly's theme (mod)",
|
||||
"theme": {
|
||||
"themeEngineVersion": 3,
|
||||
"shadows": {
|
||||
"panel": [
|
||||
{
|
||||
"color": "#000000",
|
||||
"x": "1",
|
||||
"y": "2",
|
||||
"blur": "6",
|
||||
"spread": 0,
|
||||
"alpha": 0.6
|
||||
}
|
||||
],
|
||||
"topBar": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"blur": 4,
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": 0.6
|
||||
}
|
||||
],
|
||||
"popup": [
|
||||
{
|
||||
"x": 2,
|
||||
"y": 2,
|
||||
"blur": 3,
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": 0.5
|
||||
}
|
||||
],
|
||||
"avatar": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 1,
|
||||
"blur": 8,
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": 0.7
|
||||
}
|
||||
],
|
||||
"avatarStatus": [],
|
||||
"panelHeader": [
|
||||
{
|
||||
"color": "#ffffff",
|
||||
"x": 0,
|
||||
"y": "40",
|
||||
"blur": "40",
|
||||
"spread": "-40",
|
||||
"inset": true,
|
||||
"alpha": "0.1"
|
||||
}
|
||||
],
|
||||
"button": [
|
||||
{
|
||||
"color": "#ffffff",
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": "0",
|
||||
"spread": "1",
|
||||
"alpha": "0.15",
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"color": "#000000",
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": "1",
|
||||
"spread": 0,
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"buttonHover": [
|
||||
{
|
||||
"color": "#318cbc",
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"alpha": 1,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"color": "#000000",
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": "1",
|
||||
"spread": 0,
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"buttonPressed": [
|
||||
{
|
||||
"color": "#bebebe",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"blur": "0",
|
||||
"spread": "50",
|
||||
"alpha": 0.5,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"color": "#ffffff",
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"alpha": 0.2,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"color": "#000000",
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": 0,
|
||||
"spread": 0,
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"input": [
|
||||
{
|
||||
"color": "#FFFFFF",
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"alpha": "0.2",
|
||||
"inset": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"colors": {
|
||||
"underlay": "#000000",
|
||||
"bg": "#070e1b",
|
||||
"fg": "#31363b",
|
||||
"cRed": "#c42d38",
|
||||
"cGreen": "#22b325",
|
||||
"cOrange": "#d7d720",
|
||||
"cBlue": "#ffffff",
|
||||
"accent": "#3daee9",
|
||||
"link": "#318cbc",
|
||||
"text": "#bebebe",
|
||||
"badgeNotification": "#024297",
|
||||
"badgeNotificationText": "#ffffff",
|
||||
"alertNeutral": "#bebebe",
|
||||
"alertNeutralText": "#ffffff",
|
||||
"alertPopupNeutral": "#bebebe",
|
||||
"alertPopupNeutralText": "#000000",
|
||||
"alertSuccess": "#22b325",
|
||||
"alertSuccessText": "#ffffff",
|
||||
"alertPopupSuccess": "#22b325",
|
||||
"alertPopupSuccessText": "#000000",
|
||||
"alertWarning": "#d7d720",
|
||||
"alertWarningText": "#ffffff",
|
||||
"alertPopupWarning": "#d7d720",
|
||||
"alertPopupWarningText": "#000000",
|
||||
"alertError": "#ff090f",
|
||||
"alertErrorText": "#bebebe",
|
||||
"alertPopupError": "#ff090f",
|
||||
"alertPopupErrorText": "#ffffff",
|
||||
"panel": "#0d1a31",
|
||||
"panelText": "#bebebe",
|
||||
"alertNeutralPanelText": "#ffffff",
|
||||
"alertSuccessPanelText": "#ffffff",
|
||||
"alertWarningPanelText": "#ffffff",
|
||||
"alertErrorPanelText": "#bebebe",
|
||||
"fgText": "#bebebe",
|
||||
"topBar": "#0d1a31",
|
||||
"topBarText": "#bebebe",
|
||||
"input": "#18223d",
|
||||
"inputTopbarText": "#bebebe",
|
||||
"inputPanelText": "#bebebe",
|
||||
"inputText": "#bebebe",
|
||||
"btn": "#18223d",
|
||||
"btnText": "#bebebe",
|
||||
"btnTopBarText": "#bebebe",
|
||||
"btnDisabled": "#0c121c",
|
||||
"btnDisabledTopBarText": "#393d45",
|
||||
"btnPanelText": "#bebebe",
|
||||
"btnDisabledPanelText": "#393d45",
|
||||
"btnDisabledText": "#393d45",
|
||||
"btnToggled": "#1b1d1f",
|
||||
"btnToggledTopBarText": "#bebebe",
|
||||
"btnToggledPanelText": "#bebebe",
|
||||
"btnToggledText": "#bebebe",
|
||||
"btnPressed": "#1b1d1f",
|
||||
"btnPressedTopBarText": "#bebebe",
|
||||
"btnPressedTopBar": "#1b1d1f",
|
||||
"btnPressedPanelText": "#bebebe",
|
||||
"btnPressedPanel": "#1b1d1f",
|
||||
"btnPressedText": "#bebebe",
|
||||
"tabActiveText": "#bebebe",
|
||||
"tabText": "#bebebe",
|
||||
"tab": "#1b1d1f",
|
||||
"fgLink": "#543fe7",
|
||||
"topBarLink": "#bebebe",
|
||||
"panelLink": "#38a5ed",
|
||||
"panelFaint": "#bebebe",
|
||||
"icon": "#63666d",
|
||||
"poll": "#1d4f6e",
|
||||
"pollText": "#bebebe",
|
||||
"border": "#363c41",
|
||||
"postCyantext": "#ffffff",
|
||||
"postGreentext": "#22b325",
|
||||
"postLink": "#3daee9",
|
||||
"lightText": "#f2f2f2",
|
||||
"popover": "#070e1b",
|
||||
"selectedMenuPopover": "#0d1930",
|
||||
"highlight": "#0d1930",
|
||||
"highlightText": "#bebebe",
|
||||
"selectedMenu": "#0d1930",
|
||||
"selectedMenuText": "#bebebe",
|
||||
"selectedMenuPopoverIcon": "#666c77",
|
||||
"highlightLink": "#3daee9",
|
||||
"selectedMenuLink": "#3daee9",
|
||||
"selectedMenuPopoverLink": "#3daee9",
|
||||
"selectedMenuPopoverText": "#bebebe",
|
||||
"faintLink": "#3daee9",
|
||||
"highlightFaintLink": "#3daee9",
|
||||
"selectedMenuFaintLink": "#3daee9",
|
||||
"selectedMenuPopoverFaintLink": "#3daee9",
|
||||
"faint": "#bebebe",
|
||||
"highlightFaintText": "#bebebe",
|
||||
"selectedMenuFaintText": "#bebebe",
|
||||
"selectedMenuPopoverFaintText": "#bebebe",
|
||||
"highlightLightText": "#f2f2f2",
|
||||
"selectedMenuLightText": "#f2f2f2",
|
||||
"selectedMenuPopoverLightText": "#f2f2f2",
|
||||
"selectedMenuIcon": "#666c77",
|
||||
"selectedPost": "#0d1930",
|
||||
"selectedPostText": "#bebebe",
|
||||
"selectedPostIcon": "#666c77",
|
||||
"selectedPostLink": "#3daee9",
|
||||
"selectedPostFaintLink": "#3daee9",
|
||||
"highlightPostLink": "#3daee9",
|
||||
"selectedPostPostLink": "#3daee9",
|
||||
"selectedPostLightText": "#f2f2f2",
|
||||
"selectedPostFaintText": "#bebebe",
|
||||
"popoverText": "#bebebe",
|
||||
"popoverIcon": "#63666d",
|
||||
"popoverLink": "#3daee9",
|
||||
"postFaintLink": "#3daee9",
|
||||
"popoverPostFaintLink": "#3daee9",
|
||||
"popoverFaintLink": "#3daee9",
|
||||
"popoverFaintText": "#bebebe",
|
||||
"popoverPostLink": "#3daee9",
|
||||
"popoverLightText": "#f2f2f2",
|
||||
"highlightIcon": "#666c77",
|
||||
"highlightPostFaintLink": "#3daee9",
|
||||
"profileTint": "#070e1b",
|
||||
"profileBg": "#03070f",
|
||||
"wallpaper": "#050a13"
|
||||
},
|
||||
"opacity": {
|
||||
"underlay": 0.15,
|
||||
"bg": 0.85,
|
||||
"alert": 0.5,
|
||||
"alertPopup": 0.95,
|
||||
"panel": 0.75,
|
||||
"input": 0.9,
|
||||
"btn": 0.9,
|
||||
"faint": 0.5,
|
||||
"border": 0.55,
|
||||
"popover": 1,
|
||||
"profileTint": 0.5
|
||||
},
|
||||
"radii": {
|
||||
"btn": "3",
|
||||
"input": "4",
|
||||
"checkbox": "1",
|
||||
"panel": "3",
|
||||
"avatar": "4",
|
||||
"avatarAlt": "4",
|
||||
"tooltip": 2,
|
||||
"attachment": "3"
|
||||
},
|
||||
"fonts": {
|
||||
"interface": {
|
||||
"family": "sans-serif"
|
||||
},
|
||||
"input": {
|
||||
"family": "inherit"
|
||||
},
|
||||
"post": {
|
||||
"family": "inherit"
|
||||
},
|
||||
"postCode": {
|
||||
"family": "monospace"
|
||||
}
|
||||
}
|
||||
},
|
||||
"source": {
|
||||
"themeEngineVersion": 3,
|
||||
"fonts": {},
|
||||
"shadows": {
|
||||
"panel": [
|
||||
{
|
||||
"x": "1",
|
||||
"y": "2",
|
||||
"blur": "6",
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": 0.6
|
||||
}
|
||||
],
|
||||
"button": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": "0",
|
||||
"spread": "1",
|
||||
"color": "#ffffff",
|
||||
"alpha": "0.15",
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": "1",
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"panelHeader": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": "40",
|
||||
"blur": "40",
|
||||
"spread": "-40",
|
||||
"inset": true,
|
||||
"color": "#ffffff",
|
||||
"alpha": "0.1"
|
||||
}
|
||||
],
|
||||
"buttonHover": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"color": "--link",
|
||||
"alpha": 1,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": "1",
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"buttonPressed": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"blur": "0",
|
||||
"spread": "50",
|
||||
"color": "--faint",
|
||||
"alpha": 0.5,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"color": "#ffffff",
|
||||
"alpha": 0.2,
|
||||
"inset": true
|
||||
},
|
||||
{
|
||||
"x": "1",
|
||||
"y": "1",
|
||||
"blur": 0,
|
||||
"spread": 0,
|
||||
"color": "#000000",
|
||||
"alpha": "0.3",
|
||||
"inset": false
|
||||
}
|
||||
],
|
||||
"input": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": "0",
|
||||
"blur": 0,
|
||||
"spread": "1",
|
||||
"color": "#FFFFFF",
|
||||
"alpha": "0.2",
|
||||
"inset": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"opacity": {
|
||||
"bg": "0.85",
|
||||
"border": "0.55",
|
||||
"panel": "0.75",
|
||||
"btn": "0.9",
|
||||
"input": "0.9"
|
||||
},
|
||||
"colors": {
|
||||
"bg": "#070e1b",
|
||||
"fg": "#31363b",
|
||||
"text": "#bebebe",
|
||||
"underlay": "#000000",
|
||||
"link": "#318cbc",
|
||||
"accent": "#3daee9",
|
||||
"faint": "#bebebe",
|
||||
"faintLink": "#3daee9",
|
||||
"postFaintLink": "#3daee9",
|
||||
"cBlue": "#ffffff",
|
||||
"cRed": "#c42d38",
|
||||
"cGreen": "#22b325",
|
||||
"cOrange": "#d7d720",
|
||||
"highlight": "#0d1930",
|
||||
"highlightLightText": "#f2f2f2",
|
||||
"highlightPostLink": "#3daee9",
|
||||
"highlightFaintText": "#bebebe",
|
||||
"highlightFaintLink": "#3daee9",
|
||||
"highlightPostFaintLink": "#3daee9",
|
||||
"highlightText": "#bebebe",
|
||||
"highlightLink": "#3daee9",
|
||||
"highlightIcon": "#666c77",
|
||||
"popover": "#070e1b",
|
||||
"popoverLightText": "#f2f2f2",
|
||||
"popoverPostLink": "#3daee9",
|
||||
"popoverFaintText": "#bebebe",
|
||||
"popoverFaintLink": "#3daee9",
|
||||
"popoverPostFaintLink": "#3daee9",
|
||||
"popoverText": "#bebebe",
|
||||
"popoverLink": "#3daee9",
|
||||
"popoverIcon": "#63666d",
|
||||
"selectedPost": "#0d1930",
|
||||
"selectedPostFaintText": "#bebebe",
|
||||
"selectedPostLightText": "#f2f2f2",
|
||||
"selectedPostPostLink": "#3daee9",
|
||||
"selectedPostFaintLink": "#3daee9",
|
||||
"selectedPostText": "#bebebe",
|
||||
"selectedPostLink": "#3daee9",
|
||||
"selectedPostIcon": "#666c77",
|
||||
"selectedMenu": "#0d1930",
|
||||
"selectedMenuLightText": "#f2f2f2",
|
||||
"selectedMenuFaintText": "#bebebe",
|
||||
"selectedMenuFaintLink": "#3daee9",
|
||||
"selectedMenuText": "#bebebe",
|
||||
"selectedMenuLink": "#3daee9",
|
||||
"selectedMenuIcon": "#666c77",
|
||||
"selectedMenuPopover": "#0d1930",
|
||||
"selectedMenuPopoverLightText": "#f2f2f2",
|
||||
"selectedMenuPopoverFaintText": "#bebebe",
|
||||
"selectedMenuPopoverFaintLink": "#3daee9",
|
||||
"selectedMenuPopoverText": "#bebebe",
|
||||
"selectedMenuPopoverLink": "#3daee9",
|
||||
"selectedMenuPopoverIcon": "#666c77",
|
||||
"lightText": "#f2f2f2",
|
||||
"postLink": "#3daee9",
|
||||
"border": "#363c41",
|
||||
"poll": "#1d4f6e",
|
||||
"pollText": "#bebebe",
|
||||
"icon": "#63666d",
|
||||
"fgText": "#bebebe",
|
||||
"fgLink": "#543fe7",
|
||||
"panel": "#0d1a31",
|
||||
"panelText": "#bebebe",
|
||||
"panelFaint": "#bebebe",
|
||||
"panelLink": "#38a5ed",
|
||||
"topBar": "#0d1a31",
|
||||
"topBarText": "#bebebe",
|
||||
"topBarLink": "#bebebe",
|
||||
"tab": "#1b1d1f",
|
||||
"tabText": "#bebebe",
|
||||
"tabActiveText": "#bebebe",
|
||||
"btn": "#18223d",
|
||||
"btnText": "#bebebe",
|
||||
"btnPanelText": "#bebebe",
|
||||
"btnTopBarText": "#bebebe",
|
||||
"btnPressed": "#1b1d1f",
|
||||
"btnPressedText": "#bebebe",
|
||||
"btnPressedPanel": "#1b1d1f",
|
||||
"btnPressedPanelText": "#bebebe",
|
||||
"btnPressedTopBar": "#1b1d1f",
|
||||
"btnPressedTopBarText": "#bebebe",
|
||||
"btnToggled": "#1b1d1f",
|
||||
"btnToggledText": "#bebebe",
|
||||
"btnToggledPanelText": "#bebebe",
|
||||
"btnToggledTopBarText": "#bebebe",
|
||||
"btnDisabled": "#0c121c",
|
||||
"btnDisabledText": "#393d45",
|
||||
"btnDisabledPanelText": "#393d45",
|
||||
"btnDisabledTopBarText": "#393d45",
|
||||
"input": "#18223d",
|
||||
"inputText": "#bebebe",
|
||||
"inputPanelText": "#bebebe",
|
||||
"inputTopbarText": "#bebebe",
|
||||
"alertError": "#ff090f",
|
||||
"alertErrorText": "#bebebe",
|
||||
"alertErrorPanelText": "#bebebe",
|
||||
"alertWarning": "#d7d720",
|
||||
"alertWarningText": "#ffffff",
|
||||
"alertWarningPanelText": "#ffffff",
|
||||
"alertNeutral": "#bebebe",
|
||||
"alertNeutralText": "#ffffff",
|
||||
"alertNeutralPanelText": "#ffffff",
|
||||
"badgeNotification": "#024297",
|
||||
"badgeNotificationText": "#ffffff"
|
||||
},
|
||||
"radii": {
|
||||
"btn": "3",
|
||||
"input": "4",
|
||||
"checkbox": "1",
|
||||
"panel": "3",
|
||||
"avatar": "4",
|
||||
"avatarAlt": "4",
|
||||
"attachment": "3"
|
||||
}
|
||||
}
|
||||
}
|
21
flake.lock
21
flake.lock
|
@ -559,26 +559,6 @@
|
|||
"url": "https://git.lix.systems/lix-project/hydra"
|
||||
}
|
||||
},
|
||||
"iceshrimp": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718289195,
|
||||
"narHash": "sha256-xmkExjsTztXW4/AYb3d3Er6Wwg4r7AVwq7rv9E93+Ec=",
|
||||
"ref": "refs/heads/dev",
|
||||
"rev": "746c6319d3425ccfacc906535c67951e161996d9",
|
||||
"revCount": 47,
|
||||
"type": "git",
|
||||
"url": "https://iceshrimp.dev/iceshrimp/packaging"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://iceshrimp.dev/iceshrimp/packaging"
|
||||
}
|
||||
},
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
|
@ -1018,7 +998,6 @@
|
|||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"hydra": "hydra",
|
||||
"iceshrimp": "iceshrimp",
|
||||
"kyouma-www": "kyouma-www",
|
||||
"lix": "lix",
|
||||
"lix-module": "lix-module",
|
||||
|
|
|
@ -29,10 +29,6 @@
|
|||
url = "git+https://git.lix.systems/lix-project/hydra?ref=main&rev=799441dcf6d595efb0def686ca0815aef398627b";
|
||||
inputs.lix.follows = "lix";
|
||||
};
|
||||
iceshrimp = {
|
||||
url = "git+https://iceshrimp.dev/iceshrimp/packaging";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
kyouma-www = {
|
||||
url = "git+https://woof.rip/emily/kyouma-net.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
40
pkgs/akkoma-fe-domi/default.nix
Normal file
40
pkgs/akkoma-fe-domi/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
akkoma-frontends,
|
||||
fetchFromGitea,
|
||||
fetchYarnDeps
|
||||
}:
|
||||
akkoma-frontends.akkoma-fe.overrideAttrs (let
|
||||
src = fetchFromGitea {
|
||||
domain = "git.sakamoto.pl";
|
||||
owner = "domi";
|
||||
repo = "akkoma-fe";
|
||||
rev = "5f0339ce005ccb12365128089edb5fd77f60841b";
|
||||
hash = "sha256-AHmJyOFmQZXmNMMsp8ONm9Itns1H/idEKl8+sxn2RSA=";
|
||||
};
|
||||
offlineCache = fetchYarnDeps {
|
||||
yarnLock = "${src}/yarn.lock";
|
||||
hash = "sha256-7WB6nmxNckMdftKds2OgD2kClvCCT/I5vmthV0jrkSs=";
|
||||
};
|
||||
in {
|
||||
version = "unstable-2024-07-20";
|
||||
pname = "akkoma-fe-domi";
|
||||
inherit src offlineCache;
|
||||
postPatch = ''
|
||||
# Build scripts assume to be used within a Git repository checkout
|
||||
sed -E -i '/^let commitHash =/,/;$/clet commitHash = "${builtins.substring 0 7 src.rev}";' \
|
||||
build/webpack.prod.conf.js
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
export HOME="$(mktemp -d)"
|
||||
|
||||
yarn config --offline set yarn-offline-mirror ${offlineCache}
|
||||
fixup-yarn-lock yarn.lock
|
||||
|
||||
yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
})
|
|
@ -5,4 +5,5 @@ final: prev: {
|
|||
build-worker-oci = final.callPackage ./build-worker-oci/default.nix {};
|
||||
librespeed-rust = final.callPackage ./librespeed-rust/default.nix {};
|
||||
librespeed-go = final.callPackage ./librespeed-go/default.nix {};
|
||||
akkoma-fe-domi = final.callPackage ./akkoma-fe-domi/default.nix {};
|
||||
}
|
||||
|
|
35
secrets/services/akkoma.yaml
Normal file
35
secrets/services/akkoma.yaml
Normal file
|
@ -0,0 +1,35 @@
|
|||
services:
|
||||
akkoma:
|
||||
mailerPassword: ENC[AES256_GCM,data:kNep5V0HVr17bEIY2/AbwRUPqkfHKf9xnOnYi5sMJ+STWjVrQf+AzdueJTAf9Nym,iv:Usmu0uM5ev60Ui8h9zLUcDDJIHNSxAFtMq5LyLwmAsA=,tag:fNIhB8LGJwWO3zzQWgm68A==,type:str]
|
||||
deepl: ENC[AES256_GCM,data:JVJkCm6UFUlownU/oRTmZ5o85mPv935Hj56JcXCt3PwNmx1kQbyj,iv:UzvGgVter1/9U8g/HQ2FfWNviD0KgWRLnW9fzgfGDag=,tag:q65bd26xFQ6Av71hy8u2fA==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1ht2wetcyl9rzu45e02pqqwgmyfsfe6y6ygxyuxpfhnkdm62d3pqsg3uqvd
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZTi9Ha0tQRGE2L3BzclpW
|
||||
NnduRVVRUnhkV1pEOXllZTA0bnN0NENESlM4Ck9jSTcxcjJIdThvUk9IM1FCOGNv
|
||||
V1FNV2ZHbHlTaWNBL0VvSGxhSzlWSDgKLS0tIEFoWEozY0VSWVA0cVp5dkI4NHNH
|
||||
RVQ3aDd0c1RDNWd2eGxiNURGRXVXS2sKTT4LpWSIb9hjrcdUWOhieUeUHop0pwoA
|
||||
OfOv3y3dp7tYc5HRREN5jkVx29jb2lrml0ycu9ek58S8+bolfzN8yQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-10-31T16:57:58Z"
|
||||
mac: ENC[AES256_GCM,data:VJpsLBdnle6bP6ALxLS2eTOEbiHJbNc5D+pvsoJulI9VODtBk0p1VvJv9ilToxh4oiwctMmCKSO4R9NyuZUqoqwwlYtW6tFDITBA2eg/iu/uQjcuuKLC+fFGdtnTpZcShUyMds3qi8Z8Iegk2sSMLk5QXCE2QhMUQ50VN4TXF2c=,iv:rOF34iqckOJMAVm+3RDSdlrJh4hgnyiTut3SM1e0w0E=,tag:cMjMkKkN8UFWGQqQfWBUnA==,type:str]
|
||||
pgp:
|
||||
- created_at: "2024-10-31T16:40:38Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hF4D1GtNSlou/HkSAQdAmS/QDuU40+HtiMoCa9byz80b6lGMd6cvqxYShifFxUgw
|
||||
Bn34D6HB6z3nQxWanlOCkA2ud8GBUhEFlLjsQf29apfWuWxKpNv37Olou1/vGvNm
|
||||
0l4BIzFesU+aoIUi+Fp0GbJ1+ObzRvGZq1IULChsDgbbvDnHah7yvN5wKYwj6x7f
|
||||
ZhPpm40+FLea1najiN6igUD6oUy8TSYnCgPODef4FeI0ZwFqF5MaucY8CNuWsugS
|
||||
=1vZk
|
||||
-----END PGP MESSAGE-----
|
||||
fp: B04F01A7A98A13020C39B4A68AB7B773A214ACE5
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.1
|
Loading…
Reference in a new issue