diff --git a/.sops.yaml b/.sops.yaml
index d00a72f..3cde5b1 100644
--- a/.sops.yaml
+++ b/.sops.yaml
@@ -1,11 +1,7 @@
keys:
- &primary age1sseqwwa7fc0ftry8njyuagdg28fkmtdwmj6m7p3etjsj83suee3shfzjyz
creation_rules:
- - path_regex: secrets/spacestation.yaml$
+ - path_regex: secrets.yaml$
key_groups:
- age:
- - *primary
- - path_regex: secrets/spacestation.lesser.json$
- key_groups:
- - age:
- - *primary
+ - *primary
diff --git a/abaduh/adguard.nix b/abaduh/adguard.nix
new file mode 100644
index 0000000..7112e0e
--- /dev/null
+++ b/abaduh/adguard.nix
@@ -0,0 +1,47 @@
+{lib, ...}: {
+ services.adguardhome = {
+ enable = true;
+ openFirewall = true;
+ port = 8753;
+ settings = {
+ filters =
+ lib.mapAttrsToList (n: v: {
+ enabled = true;
+ id = n;
+ name = n;
+ url = v;
+ }) {
+ "Hagezi's Multi PRO" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/pro.txt";
+
+ "Hagezi's Badware Hoster" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/hoster.txt";
+
+ "Hagezi's DNS Bypass blocking" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/doh-vpn-proxy-bypass.txt";
+
+ "Hagezi's Dynamic DNS blocking" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/dyndns.txt";
+
+ "Hagezi's Gambling" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/gambling.txt";
+
+ "Hagezi's Native - LG webOS" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/native.lgwebos.txt";
+
+ "Hagezi's Native - Tiktok (Agressive)" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/hosts/native.tiktok.extended.txt";
+
+ "Hagezi's Native - Microsoft/Windows" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/native.winoffice.txt";
+
+ "Hagezi's Pop-up Ads" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/popupads.txt";
+
+ "Hagezi's TIF" = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/tif.txt";
+ };
+ user_rules = [
+ "@@||tumblr.com^$important"
+ "@@||wordpress.com^$important"
+ "@@||tailscale.com^$important"
+ "@@||torproject.org^$important"
+ "@@||neocities.org^$important"
+ ];
+ };
+ };
+
+ # Ports needed to access the DNS resolver
+ networking.firewall.allowedTCPPorts = [53];
+ networking.firewall.allowedUDPPorts = [53 51820];
+}
diff --git a/abaduh/default.nix b/abaduh/default.nix
new file mode 100644
index 0000000..84772c3
--- /dev/null
+++ b/abaduh/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+ imports = [
+ ./adguard.nix
+ ];
+}
diff --git a/capytal/TRADEMARK b/capytal/TRADEMARK.md
similarity index 100%
rename from capytal/TRADEMARK
rename to capytal/TRADEMARK.md
diff --git a/capytal/analytics.nix b/capytal/analytics.nix
index 2ce7cfb..16a9897 100644
--- a/capytal/analytics.nix
+++ b/capytal/analytics.nix
@@ -1,28 +1,40 @@
-{config, ...}: let
- port = config.services.medama.port;
+{
+ config,
+ self,
+ ...
+}: let
+ cfg = config.services.medama;
in {
+ imports = [
+ self.nixosModules.medama
+ ];
+
services.medama.enable = true;
- services.medama.port = 6010;
+ services.medama.port = 9840;
services.medama.cors = [
"capytal.cc"
"forge.capytal.company"
];
- services.caddy.virtualHosts.":${toString (port + 1)}" = {
- extraConfig = ''
- reverse_proxy /api/* http://localhost:${toString port}
+ services.anubis.instances."medama" = {
+ settings = {
+ BIND = ":${toString (cfg.port + 2)}";
+ BIND_NETWORK = "tcp";
+ METRICS_BIND = ":${toString (cfg.port + 3)}";
+ METRICS_BIND_NETWORK = "tcp";
+ SERVE_ROBOTS_TXT = true;
+ TARGET = "http://localhost:${toString cfg.port}";
+ ED25519_PRIVATE_KEY_HEX_FILE = config.sops.secrets."medama/anubis/hexFile".path;
+ };
+ };
- reverse_proxy http://localhost:${toString (port + 2)} {
+ services.caddy.virtualHosts.":${toString (cfg.port + 1)}" = {
+ extraConfig = ''
+ reverse_proxy /api/* http://localhost:${toString cfg.port}
+
+ reverse_proxy http://localhost:${toString (cfg.port + 2)} {
header_up X-Real-Ip {remote_host}
}
'';
};
-
- services.anubis.instances."medama" = {
- bind = ":${toString (port + 2)}";
- metricsBind = ":${toString (port + 3)}";
- serveRobotsTxt = true;
- target = "http://localhost:${toString port}";
- ed25519PrivateKeyHexFile = config.sops.secrets."medama/anubis/hexFile".path;
- };
}
diff --git a/capytal/default.nix b/capytal/default.nix
index 75ad17c..add774b 100644
--- a/capytal/default.nix
+++ b/capytal/default.nix
@@ -1,11 +1,28 @@
-{...}: {
+{config, ...}: {
imports = [
./analytics.nix
- ./network.nix
+ ./forgejo.nix
./websites.nix
-
- ./forgejo
- ./garage.nix
- ./sqld.nix
];
+
+ services.caddy.enable = true;
+
+ virtualisation.oci-containers.containers.cloudflare-tunnel = {
+ image = "cloudflare/cloudflared:latest";
+ autoStart = true;
+ extraOptions = [
+ "--network=host"
+ ];
+ cmd = [
+ "tunnel"
+ "--no-autoupdate"
+ "run"
+ ];
+ environmentFiles = [
+ config.sops.secrets."cloudflared/tunnel-env".path
+ ];
+ };
+
+ # Caddy Ports
+ networking.firewall.allowedTCPPorts = [80 433];
}
diff --git a/capytal/forgejo.nix b/capytal/forgejo.nix
new file mode 100644
index 0000000..fc5b5ac
--- /dev/null
+++ b/capytal/forgejo.nix
@@ -0,0 +1,66 @@
+{
+ config,
+ lib,
+ pkgs-unstable,
+ ...
+}: let
+ cfg = config.services.forgejo;
+in {
+ services.forgejo = {
+ enable = true;
+ package = pkgs-unstable.forgejo;
+ settings = let
+ initList = l: (lib.strings.concatStringsSep "," l);
+ in {
+ DEFAULT = {
+ APP_NAME = "Capytal Code";
+ };
+ server = rec {
+ HTTP_PORT = 9960;
+ DOMAIN = "forge.capytal.company";
+ ROOT_URL = "https://${DOMAIN}";
+ };
+ repository = {
+ DEFAULT_REPO_UNITS = initList [
+ "repo.code"
+ "repo.issues"
+ "repo.pulls"
+ ];
+ };
+ admin = {
+ DISABLE_REGULAR_ORG_CREATION = true;
+ USER_DISABLED_FEATURES = "deletion manage_ssh_keys manage_gpg_keys";
+ EXTERNAL_USER_DISABLED_FEATURES = "deletion manage_ssh_keys manage_gpg_keys";
+ };
+ service = {
+ DISABLE_REGISTRATION = true;
+ };
+ security = {
+ REVERSE_PROXY_TRUSTED_PROXIES = "127.0.0.0/8,::1/128";
+ };
+ ui = {
+ # DEFAULT_THEME = "capytal-dark";
+ };
+ };
+ };
+
+ services.anubis.instances."forgejo" = {
+ settings = {
+ BIND = ":${toString (cfg.settings.server.HTTP_PORT + 2)}";
+ BIND_NETWORK = "tcp";
+ METRICS_BIND = ":${toString (cfg.settings.server.HTTP_PORT + 3)}";
+ METRICS_BIND_NETWORK = "tcp";
+ SERVE_ROBOTS_TXT = true;
+ TARGET = "http://localhost:${toString cfg.settings.server.HTTP_PORT}";
+ ED25519_PRIVATE_KEY_HEX_FILE = config.sops.secrets."forgejo/anubis/hexFile".path;
+ };
+ };
+
+ services.caddy.virtualHosts.":${toString (cfg.settings.server.HTTP_PORT + 1)}" = {
+ extraConfig = ''
+ reverse_proxy http://localhost${config.services.anubis.instances."forgejo".settings.BIND} {
+ header_up X-Real-Ip {remote_host}
+ }
+ '';
+ };
+}
diff --git a/capytal/forgejo/assets/fonts/CalSans.ttf b/capytal/forgejo/assets/fonts/CalSans.ttf
deleted file mode 100644
index 4a2950a..0000000
Binary files a/capytal/forgejo/assets/fonts/CalSans.ttf and /dev/null differ
diff --git a/capytal/forgejo/assets/fonts/CalSans.woff b/capytal/forgejo/assets/fonts/CalSans.woff
deleted file mode 100644
index da45991..0000000
Binary files a/capytal/forgejo/assets/fonts/CalSans.woff and /dev/null differ
diff --git a/capytal/forgejo/assets/fonts/CalSans.woff2 b/capytal/forgejo/assets/fonts/CalSans.woff2
deleted file mode 100644
index 36d71b7..0000000
Binary files a/capytal/forgejo/assets/fonts/CalSans.woff2 and /dev/null differ
diff --git a/capytal/forgejo/assets/icon.png b/capytal/forgejo/assets/icon.png
deleted file mode 100644
index 491a401..0000000
Binary files a/capytal/forgejo/assets/icon.png and /dev/null differ
diff --git a/capytal/forgejo/assets/icon.svg b/capytal/forgejo/assets/icon.svg
deleted file mode 100644
index 7f479ff..0000000
--- a/capytal/forgejo/assets/icon.svg
+++ /dev/null
@@ -1,288 +0,0 @@
-
-
-
-
diff --git a/capytal/forgejo/assets/img/home-logo.png b/capytal/forgejo/assets/img/home-logo.png
deleted file mode 100644
index 6b10717..0000000
Binary files a/capytal/forgejo/assets/img/home-logo.png and /dev/null differ
diff --git a/capytal/forgejo/assets/img/home-logo.svg b/capytal/forgejo/assets/img/home-logo.svg
deleted file mode 100644
index 5e19548..0000000
--- a/capytal/forgejo/assets/img/home-logo.svg
+++ /dev/null
@@ -1,288 +0,0 @@
-
-
-
-
diff --git a/capytal/forgejo/assets/js/capytal-theme.js b/capytal/forgejo/assets/js/capytal-theme.js
deleted file mode 100644
index fb486db..0000000
--- a/capytal/forgejo/assets/js/capytal-theme.js
+++ /dev/null
@@ -1,69 +0,0 @@
-const CAPYTAL_THEME_NAME = "capytal-dark";
-
-(() => {
- let version = document.querySelector('div.left-links > a[href="/admin/config"]')?.textContent
- if (!version) {
- console.warn(`${CAPYTAL_THEME_NAME}: unable to find Forgejo instance version!`)
- return
- }
-
- console.debug(`${CAPYTAL_THEME_NAME}: version found ${version}`)
-
- let style = document.querySelector(`link[href="/assets/css/theme-${CAPYTAL_THEME_NAME}.css?v=${version}"`)
- if (!style) {
- console.warn(`${CAPYTAL_THEME_NAME}: capytal theme not selected, skipping!`)
- return
- }
-
- console.log(`${CAPYTAL_THEME_NAME}: starting to apply theme modifications`)
-
- labelStyles()
-})()
-
-function labelStyles() {
- /** @type {Element[]} */
- let labels = [];
- document.querySelectorAll('.labels-list').forEach(e => labels = labels.concat(...e.children))
- document.querySelectorAll('ul.issue-label-list').forEach(e => labels = labels.concat(...e.children))
- document.querySelectorAll('div.filter.menu.ugc-labels').forEach(e => {
- for (let c of e.children) {
- let label = c.querySelector('span.ui.label.scope-parent') ?? c.querySelector('div.ui.label')
- if (label) {
- labels.push(label)
- }
- }
- })
-
- for (let label of labels) {
- console.log(label)
-
- let left = label.querySelector('.scope-left')
- let right = label.querySelector('.scope-right')
-
- if (!left && !right) {
- label = (label.querySelector('div.ui.label')?? label)
-
- let color = label.getAttribute('style')?.split(' ')?.at(-2)
- label.setAttribute('style', `color: ${color} !important;`+
- `border: solid 1px ${color} !important;`+
- `background-color: ${color.slice(0, -2) + '22'} !important;`)
- }
-
- if (left) {
- let color = left.getAttribute('style')?.split(' ')?.at(-2)
- left.setAttribute('style', `color: ${color} !important;`+
- `border: solid 1px ${color} !important;`+
- `border-right: solid 0px !important;`+
- `background-color: transparent !important;`)
- }
-
- if (right) {
- let color = right.getAttribute('style')?.split(' ')?.at(-2)
- right.setAttribute('style', `color: ${color} !important;`+
- `border: solid 1px ${color} !important;`+
- `border-left: solid 0px !important;`+
- `background-color: ${color.slice(0, -2) + '22'} !important;`)
- }
- }
-
-}
diff --git a/capytal/forgejo/assets/light-asset.svg b/capytal/forgejo/assets/light-asset.svg
deleted file mode 100644
index caaed16..0000000
--- a/capytal/forgejo/assets/light-asset.svg
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
diff --git a/capytal/forgejo/customization.nix b/capytal/forgejo/customization.nix
deleted file mode 100644
index 2bdd3ef..0000000
--- a/capytal/forgejo/customization.nix
+++ /dev/null
@@ -1,110 +0,0 @@
-{...}: {
- services.forgejo.customization = {
- assets = ./assets;
- templates = ./templates;
- theme = {
- "capytal-dark" = ./themes/theme-capytal-dark.css;
- "bthree-dark" = ./themes/theme-bthree-dark.css;
- };
- options.label."Default" = {
- "scope/a11y" = {
- color = "d4b3a5";
- description = "Accessibility issues and improvements";
- exclusive = true;
- };
- "scope/i18n" = {
- color = "dbb594";
- description = "Internationalization issues and improvements";
- exclusive = true;
- };
- "scope/security" = {
- color = "ff977d";
- description = "Test suite changes";
- exclusive = true;
- };
- "scope/documentation" = {
- color = "e796f3";
- description = "Documentation changes";
- exclusive = true;
- };
- "scope/testing" = {
- color = "ff949d";
- description = "Test suite changes";
- exclusive = true;
- };
- "kind/enhancement" = {
- color = "4ccce6";
- description = "Improvement on existing functionality";
- exclusive = true;
- };
- "kind/bug" = {
- color = "70b8ff";
- description = "Something isn't working";
- exclusive = true;
- };
- "kind/feature" = {
- color = "9eb1ff";
- description = "New functionality";
- exclusive = true;
- };
- "priority/low" = {
- color = "bde56c";
- description = "The priority is low";
- exclusive = true;
- priority = "low";
- };
- "priority/medium" = {
- color = "f5e147";
- description = "The priority is medium";
- exclusive = true;
- priority = "medium";
- };
- "priority/high" = {
- color = "ff9592";
- description = "The priority is high";
- exclusive = true;
- priority = "high";
- };
- "priority/critical" = {
- color = "ff977d";
- description = "The priority is high";
- exclusive = true;
- priority = "critical";
- };
- "BREAKING-CHANGE" = {
- color = "b4b4b4";
- description = "This change breaks existing functionality";
- };
- "status/to-do" = {
- color = "71d083";
- description = "This is confirmed and needs work";
- exclusive = true;
- };
- "status/in-progress" = {
- color = "f5e147";
- description = "This is being worked on";
- exclusive = true;
- };
- "status/needs-info" = {
- color = "ffa057";
- description = "This needs more information to continue";
- exclusive = true;
- };
- "status/blocked" = {
- color = "ff977d";
- description = "This is blocked due to something";
- exclusive = true;
- };
- "status/abandoned" = {
- color = "b6ecf7";
- description = "This is in hiatus/abandoned until further notice";
- exclusive = true;
- };
- "status/wont-fix" = {
- color = "b5b3ad";
- description = "This issue won't be fixed";
- exclusive = true;
- };
- };
- };
-}
diff --git a/capytal/forgejo/default.nix b/capytal/forgejo/default.nix
deleted file mode 100644
index 35eb11f..0000000
--- a/capytal/forgejo/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- config,
- pkgs-unstable,
- ...
-}: let
- secrets = config.spacestation-secrets.lesser;
- forgejoCfg = secrets.capytal.services.forgejo;
-in {
- imports = [
- ../../modules/forgejo
- ./customization.nix
- ];
- services.forgejo = {
- enable = true;
- package = pkgs-unstable.forgejo;
- actions = {
- enable = true;
- token = forgejoCfg.actions.token;
- url = "https://forge.capytal.company";
- labels = forgejoCfg.actions.labels;
- };
- users = {
- enable = true;
- users = {
- user1 = {
- name = /. + config.sops.secrets."forgejo/user1/name".path;
- password = /. + config.sops.secrets."forgejo/user1/password".path;
- email = /. + config.sops.secrets."forgejo/user1/email".path;
- admin = true;
- };
- };
- };
- settings = {
- DEFAULT = {
- APP_NAME = "Capytal Code";
- };
- server = rec {
- HTTP_PORT = forgejoCfg.port;
- DOMAIN = "forge.capytal.company";
- ROOT_URL = "https://${DOMAIN}";
- };
- project = {
- PROJECT_BOARD_BASIC_KANBAN_TYPE = [
- ];
- };
- repository = {
- DEFAULT_REPO_UNITS = [
- "repo.code"
- "repo.issues"
- "repo.pulls"
- ];
- };
- admin = {
- DISABLE_REGULAR_ORG_CREATION = true;
- USER_DISABLED_FEATURES = "deletion manage_ssh_keys manage_gpg_keys";
- EXTERNAL_USER_DISABLED_FEATURES = "deletion manage_ssh_keys manage_gpg_keys";
- };
- service = {
- DISABLE_REGISTRATION = true;
- };
- security = {
- REVERSE_PROXY_TRUSTED_PROXIES = "127.0.0.0/8,::1/128";
- };
- ui = {
- DEFAULT_THEME = "capytal-dark";
- };
- };
- };
-}
diff --git a/capytal/forgejo/templates/custom/body_inner_pre.tmpl b/capytal/forgejo/templates/custom/body_inner_pre.tmpl
deleted file mode 100644
index fdd6a67..0000000
--- a/capytal/forgejo/templates/custom/body_inner_pre.tmpl
+++ /dev/null
@@ -1,718 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/capytal/forgejo/templates/custom/header.tmpl b/capytal/forgejo/templates/custom/header.tmpl
deleted file mode 100644
index d968181..0000000
--- a/capytal/forgejo/templates/custom/header.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
diff --git a/capytal/forgejo/templates/home.tmpl b/capytal/forgejo/templates/home.tmpl
deleted file mode 100644
index 25510f9..0000000
--- a/capytal/forgejo/templates/home.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-{{template "base/head" .}}
-
-
-
-

-
-
-
From dreams, to code.
-
-
-
-
-
-{{template "base/footer" .}}
diff --git a/capytal/forgejo/themes/theme-bthree-dark.css b/capytal/forgejo/themes/theme-bthree-dark.css
deleted file mode 100644
index 43cef3c..0000000
--- a/capytal/forgejo/themes/theme-bthree-dark.css
+++ /dev/null
@@ -1,519 +0,0 @@
-/* bthree dark theme */
-:root {
- --is-dark-theme: true;
-
- /* Colors. */
- /* Some colors must be set as HEX, due to the monaco-editor no supporting
- * conversion of non-hex colors. https: //github.com/microsoft/monaco-editor/issues/1815 */
- color-scheme: dark;
- --color-primary: hsl(204deg, 90%, 60%);
- --color-primary-hover: hsl(204deg, 90%, 50%);
- --color-primary-bg: hsla(204deg, 100%, 36%, .6);
- --color-primary-text: hsl(204deg, 90%, 72%);
-
- --color-primary-contrast: hsl(0, 0%, 100%);
- --color-primary-dark-1: #14a1ff;
- --color-primary-dark-2: #47b6ff;
- --color-primary-dark-3: #66c2ff;
- --color-primary-dark-4: #8fd2ff;
- --color-primary-dark-5: #addeff;
- --color-primary-dark-6: #c7e9ff;
- --color-primary-dark-7: #e0f3ff;
-
- --color-primary-light-1: #007acc;
- --color-primary-light-2: #006eb8;
- --color-primary-light-3: #005c99;
- --color-primary-light-4: #005085;
- --color-primary-light-5: #003d66;
- --color-primary-light-6: #003152;
- --color-primary-light-7: #001f33;
-
- --color-primary-alpha-10: #008deb1a;
- --color-primary-alpha-20: #008deb33;
- --color-primary-alpha-30: #008deb4d;
- --color-primary-alpha-40: #008deb66;
- --color-primary-alpha-50: #008deb80;
- --color-primary-alpha-60: #008deb99;
- --color-primary-alpha-70: #008debb3;
- --color-primary-alpha-80: #008debcc;
- --color-primary-alpha-90: #008debe6;
-
- --color-secondary: hsl(213, 12%, 30%);
- --color-secondary-bg: hsl(213, 16%, 20%);
- --color-secondary-dark-1: hsl(213, 12%, 35%);
- --color-secondary-dark-2: hsl(213, 12%, 40%);
- --color-secondary-dark-3: hsl(213, 12%, 50%);
- --color-secondary-dark-4: hsl(213, 12%, 55%);
- --color-secondary-dark-5: hsl(213, 12%, 60%);
- --color-secondary-dark-6: #9aa3af;
- --color-secondary-dark-7: hsl(213, 12%, 69%);
- --color-secondary-dark-8: hsl(213, 12%, 74%);
- --color-secondary-dark-9: hsl(213, 11%, 79%);
- --color-secondary-dark-10: hsl(213, 11%, 84%);
- --color-secondary-dark-11: hsl(213, 12%, 89%);
- --color-secondary-dark-12: hsl(213, 12%, 94%);
- --color-secondary-dark-13: hsl(213, 14%, 98%);
-
- --color-secondary-light-1: hsl(213, 12%, 24%);
- --color-secondary-light-2: hsl(213, 12%, 18%);
- --color-secondary-light-3: hsl(213, 11%, 12%);
- --color-secondary-light-4: hsl(213, 8%, 6%);
-
- --color-secondary-alpha-10: hsla(213, 12%, 31%, 0.1);
- --color-secondary-alpha-20: hsla(213, 12%, 31%, 0.2);
- --color-secondary-alpha-30: hsla(213, 12%, 31%, 0.3);
- --color-secondary-alpha-40: hsla(213, 12%, 31%, 0.4);
- --color-secondary-alpha-50: hsla(213, 12%, 31%, 0.5);
- --color-secondary-alpha-60: hsla(213, 12%, 31%, 0.6);
- --color-secondary-alpha-70: hsla(213, 12%, 31%, 0.7);
- --color-secondary-alpha-80: hsla(213, 12%, 31%, 0.8);
- --color-secondary-alpha-90: hsla(213, 12%, 31%, 0.9);
-
- /* Colors for buttons, labels, etc. */
- --color-red: hsl(0, 56.4%, 54.1%);
- --color-red-light: hsl(0, 56.5%, 48.6%);
- --color-red-dark-1: hsl(3deg, 75%, 59%);
- --color-orange: hsl(23.8, 89%, 42.4%);
- --color-orange-light: hsl(23.6, 88.7%, 38%);
- --color-yellow: hsl(44.8, 97%, 40.6%);
- --color-yellow-light: hsl(44.8, 96.8%, 37%);
- --color-olive: hsl(67.5, 79.1%, 36%);
- --color-olive-light: hsl(67.4, 79.3%, 32%);
- --color-green: hsl(124deg 41% 35%);
- --color-green-light: hsl(124deg 41% 45%);
- --color-teal: hsl(177, 100%, 28.4%);
- --color-teal-light: hsl(176.8, 100%, 26%);
- --color-blue: hsl(206, 56%, 50.2%);
- --color-blue-light: hsl(206, 55%, 45.3%);
- --color-blue-dark-1: hsl(213deg, 89%, 64%);
- --color-blue-dark-bg: hsla(213deg, 89%, 64%, .15);
- --color-violet: hsl(259.2, 66.5%, 65%);
- --color-violet-light: hsl(259.1, 66.2%, 58%);
- --color-violet-dark-1: hsl(262deg, 66%, 66%);
- --color-violet-dark-bg: hsla(262deg, 66%, 66%, .15);
- --color-purple: hsl(285, 55.9%, 58%);
- --color-purple-light: hsl(285, 55.6%, 52%);
- --color-pink: hsl(326, 64.6%, 50.2%);
- --color-pink-light: hsl(326, 64.5%, 45%);
- --color-brown: hsl(23.4, 33%, 48%);
- --color-brown-light: hsl(23.5, 33%, 43%);
- --color-grey: hsl(213, 12%, 30%);
- --color-grey-light: hsl(213, 12%, 40%);
- --color-black: hsl(213, 21%, 15%);
- --color-black-light: hsl(223, 20%, 13%);
- --color-gold: hsl(47, 50%, 46.3%);
- --color-white: #ffffff;
-
- /* Color: diff */
- --color-diff-added-word-bg: hsl(120, 25.5%, 32%);
- --color-diff-removed-word-bg: hsl(0, 37%, 32%);
-
- --color-diff-added-row-bg: hsla(123, 36%, 43%, 0.1);
- --color-diff-added-row-linesnum-bg: hsla(123, 36%, 40%, 0.2);
- --color-diff-added-row-border: hsl(134.4, 20%, 24%);
- --color-diff-removed-row-bg: hsl(0, 20%, 20%);
- --color-diff-removed-row-linesnum-bg: hsl(0, 25%, 23%);
- --color-diff-removed-row-border: hsl(0, 19%, 33%);
- --color-diff-moved-row-bg: hsl(59, 31%, 38.6%);
- --color-diff-moved-row-border: hsl(69.2, 46%, 61%);
-
- --color-diff-inactive: hsl(229, 14%, 13%);
-
- /* Color: messages and status. */
- --color-error-border: hsl(0, 42%, 44.1%);
- --color-error-bg: hsl(0, 42.9%, 23%);
- --color-error-bg-active: hsl(0, 27.3%, 37%);
- --color-error-bg-hover: hsl(0, 33.3%, 30%);
- --color-error-text: hsl(0, 79.3%, 88.6%);
- --color-success-border: hsl(136, 33.3%, 40.6%);
- --color-success-bg: hsl(150, 23%, 20%);
- --color-success-text: hsl(116, 46%, 58.4%);
- --color-warning-border: hsl(50, 100%, 37%);
- --color-warning-bg: hsl(60, 9.4%, 20.8%);
- --color-warning-text: hsl(44.7, 96.8%, 50.8%);
- --color-info-border: hsl(210, 50%, 37.6%);
- --color-info-bg: hsl(216.3, 33.3%, 22.4%);
- --color-info-text: hsl(213deg, 89%, 64%);
-
- --color-body: #202327;
-
- --color-box-header: hsl(213, 12%, 22%);
- --color-box-body: hsl(213, 12%, 18%);
- --color-box-body-highlight: hsla(204deg, 60%, 15%, .15);
-
- --color-text: #bbc0ca;
- --color-text-dark: hsl(220, 26%, 89%);
- --color-text-light: hsl(224, 9.2%, 68%);
- --color-text-light-1: hsl(224, 7.8%, 62%);
- --color-text-light-2: hsl(224, 6.8%, 57%);
- --color-text-light-3: hsl(224.3, 9.3%, 48.4%);
-
- /* "color-light" is actually a subtle black in dark themes, to darken an element.
- * against different backgrounds. */
- --color-light: hsla(0, 0%, 0%, 0.2);
- --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled)));
- --color-light-border: hsla(0, 0%, 100%, 0.2);
-
- --color-hover: hsla(213, 18%, 90%, .05);
- --color-active: hsla(213, 18%, 90%, .1);
-
- --color-menu: hsl(213, 12%, 21%);
- --color-card: transparent;
-
- --color-markup-table-row: hsla(0, 0%, 100%, 0);
- --color-markup-code-block: hsla(0, 0%, 100%, 0.1);
- --color-markup-code-inline: hsla(0, 0%, 100%, 0.1);
-
- --color-code-bg: #1e2329;
- --color-code-line-bg-hover: hsl(213, 16%, 16%);
- --color-code-sidebar-bg: hsl(213, 15%, 21%);
-
- --color-tooltip-text: #fbfdff;
- --color-tooltip-bg: #000017f0;
-
- /* Navbar. */
- --color-navbar: hsl(213, 10%, 18%);
- --color-nav-bg: hsl(213, 10%, 18%);
- --color-nav-hover-bg: hsla(213, 18%, 90%, .05);
- --color-header-wrapper: hsl(213, 10%, 18%);
- --color-navbar-transparent: hsla(213, 10%, 14%, 0);
- --color-header-bar: hsl(213, 10%, 18%);
-
- /* Inputs. */
- --color-input-text: #d6dbe6;
- --color-input-background: #17191c;
- --color-input-toggle-background: #454d57;
- --color-input-border: #454d57;
- --color-input-border-hover: #505668;
- --color-placeholder-text: #6a737d;
-
- --color-editor-line-highlight: var(--color-primary-light-5);
- --color-project-board-bg: var(--color-secondary-light-2);
-
- --color-highlight-fg: #87651e;
- --color-highlight-bg: #352c1c;
- --color-overlay-backdrop: #080808c0;
-
- --color-button: #282d33;
-
- --color-caret: var(--color-text);
- --color-border: var(--color-secondary-alpha-40);
-
- --color-reaction-bg: hsla(0, 0%, 100%, 0.1);
- --color-reaction-active-bg: var(--color-primary-alpha-30);
-
- --color-small-accent: var(--color-primary-light-5);
- --color-active-line: hsl(53.6, 50.9%, 22%);
-
- /* Labels. e.g. issues count indicator in repo tabs. */
- --color-label-text: var(--color-text-light);
- --color-label-bg: var(--color-secondary-alpha-60);
- --color-label-active-bg: hsl(220, 10.6%, 33.3%);
-
- /* Footer. */
- --color-footer: hsl(213, 14.8%, 21%);
- --color-footer-text: var(--color-text-light-3);
- --color-footer-links: var(--color-text-light-1);
-}
-
-/* Custom styling of individual elements.
- * Using !important is bad, but unfortunately gitea does it already in _base.less. */
-
-/* Primary button. */
-.ui.primary.button,
-.ui.primary.buttons .button {
- background-color: var(--color-primary-bg) !important;
- border-color: var(--color-primary-bg) !important;
- color: var(--color-primary-text) !important;
-}
-
-a.ui.primary.label:hover,
-.ui.primary.button:hover,
-.ui.primary.buttons .button:hover {
- background-color: var(--color-primary-hover) !important;
- color: var(--color-primary-contrast) !important;
-}
-
-.ui.primary.label {
- background-color: var(--color-primary-bg) !important;
- border-color: var(--color-primary-bg) !important;
- color: var(--color-primary) !important;
-}
-
-/* (from arc-green)
- * invert emojis that are hard to read otherwise */
-.emoji[aria-label="check mark"],
-.emoji[aria-label="currency exchange"],
-.emoji[aria-label="TOP arrow"],
-.emoji[aria-label="END arrow"],
-.emoji[aria-label="ON! arrow"],
-.emoji[aria-label="SOON arrow"],
-.emoji[aria-label="heavy dollar sign"],
-.emoji[aria-label="copyright"],
-.emoji[aria-label="registered"],
-.emoji[aria-label="trade mark"],
-.emoji[aria-label="multiply"],
-.emoji[aria-label="plus"],
-.emoji[aria-label="minus"],
-.emoji[aria-label="divide"],
-.emoji[aria-label="curly loop"],
-.emoji[aria-label="double curly loop"],
-.emoji[aria-label="wavy dash"],
-.emoji[aria-label="paw prints"],
-.emoji[aria-label="musical note"],
-.emoji[aria-label="musical notes"] {
- filter: invert(100%) hue-rotate(180deg);
-}
-
-/* Code syntax highlighting. */
-.tag-code .code-inner {
- opacity: .5;
-}
-
-.same-code .lines-num.lines-num-old,
-.same-code .lines-num.lines-num-new {
- color: var(--color-text-light-3) !important;
-}
-
-.add-code .lines-num.lines-num-old,
-.add-code .lines-num.lines-num-new {
- background-color: var(--color-diff-added-row-linesnum-bg);
- color: var(--color-text-dark-2) !important;
-}
-
-.del-code .lines-num.lines-num-old,
-.diff-unified .del-code .lines-num.lines-num-old,
-.del-code .lines-num.lines-num-new {
- background-color: var(--color-diff-removed-row-linesnum-bg);
- color: var(--color-text-dark-2) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.add-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.del-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody .diff-unified tr:hover .del-code .lines-num {
- color: var(--color-text-dark) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num {
- color: var(--color-text-dark-2) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-code,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-type-marker {
- background-color: var(--color-code-line-bg-hover) !important;
-}
-
-/* From web_src/less/themes/chroma/dark.less */
-:root {
- --color-syntax-NameBuiltinPseudo: #fabd2f;
- --color-syntax-Comment: #777e94;
- --color-syntax-CommentSingle: #777e94;
- --color-syntax-CommentHashbang: #777e94;
- --color-syntax-CommentMultiline: #777e94;
- --color-syntax-CommentPreproc: #8ec07c;
- --color-syntax-CommentPreprocFile: #649bc4;
- --color-syntax-CommentSpecial: #9075cd;
- --color-syntax-LiteralStringDelimiter: #649bc4;
-
- --color-syntax-GenericDeleted-text: #fff;
- --color-syntax-GenericDeleted-bg: #5f3737;
- --color-syntax-GenericEmph: #ddee30;
- --color-syntax-GenericHeading: #ffaa10;
- --color-syntax-GenericInserted-text: #fff;
- --color-syntax-GenericInserted-bg: #3a523a;
- --color-syntax-GenericOutput: #777e94;
- --color-syntax-GenericPrompt: #ebdbb2;
- --color-syntax-GenericError: #ff4433;
- --color-syntax-GenericStrong: #ebdbb2;
- --color-syntax-GenericTraceback: #ff7540;
- --color-syntax-GenericSubheading: #b8bb26;
- --color-syntax-LineHighlight: #3f424d;
- --color-syntax-LiteralNumberIntegerLong: #649bc4;
- --color-syntax-Keyword: #f47067;
- --color-syntax-KeywordConstant: #649bc4;
- --color-syntax-KeywordDeclaration: #ff7540;
- --color-syntax-KeywordNamespace: #ffaa10;
- --color-syntax-KeywordPseudo: #5f8700;
- --color-syntax-KeywordReserved: #ff7540;
- --color-syntax-KeywordType: #fabd2f;
- --color-syntax-LineNumbers: #7f8699;
- --color-syntax-LineNumbersTable: #7f8699;
- --color-syntax-LiteralNumber: #649bc4;
- --color-syntax-LiteralNumberBin: #649bc4;
- --color-syntax-LiteralNumberFloat: #649bc4;
- --color-syntax-LiteralNumberHex: #649bc4;
- --color-syntax-LiteralNumberInteger: #649bc4;
- --color-syntax-LiteralNumberOct: #649bc4;
- --color-syntax-Name: #adbac7;
- --color-syntax-NameAttribute: #b8bb26;
- --color-syntax-NameBuiltin: #fabd2f;
- --color-syntax-NameClass: #f69d50;
- --color-syntax-NameDecorator: #dcbdfb;
- --color-syntax-NameException: #ff7540;
- --color-syntax-NameFunction: #dcbdfb;
- --color-syntax-NameEntity: #fabd2f;
- --color-syntax-NameLabel: #ff7540;
- --color-syntax-NameNamespace: #ffaa10;
- --color-syntax-NameConstant: #649bc4;
- --color-syntax-NameTag: #ff7540;
- --color-syntax-NameVariable: #ebdbb2;
- --color-syntax-NameOther: #b6bac5;
- --color-syntax-Operator: #6cb6ff;
- --color-syntax-OperatorWord: #6cb6ff;
- --color-syntax-Punctuation: #d2d4db;
- --color-syntax-LiteralString: #b8bb26;
- --color-syntax-LiteralStringSingle: #96d0ff;
- --color-syntax-LiteralStringDouble: #96d0ff;
- --color-syntax-LiteralStringAffix: #649bc4;
- --color-syntax-LiteralStringBacktick: #b8bb26;
- --color-syntax-LiteralStringChar: #649bc4;
- --color-syntax-LiteralStringDoc: #777e94;
- --color-syntax-LiteralStringEscape: #ff7540;
- --color-syntax-LiteralStringHeredoc: #649bc4;
- --color-syntax-LiteralStringInterpol: #ffaa10;
- --color-syntax-LiteralStringRegex: #9075cd;
- --color-syntax-LiteralStringSymbol: #ff7540;
- --color-syntax-LiteralStringOther: #ffaa10;
- --color-syntax-NameVariableClass: #ff7540;
- --color-syntax-NameVariableGlobal: #ffaa10;
- --color-syntax-NameVariableInstance: #ffaa10;
- --color-syntax-TextWhitespace: #7f8699;
-}
-
-.chroma .bp { color: var(--color-syntax-NameBuiltinPseudo) } /* NameBuiltinPseudo */
-.chroma .c { color: var(--color-syntax-Comment) } /* Comment */
-.chroma .c1 { color: var(--color-syntax-CommentSingle) } /* CommentSingle */
-.chroma .ch { color: var(--color-syntax-CommentHashbang) } /* CommentHashbang */
-.chroma .cm { color: var(--color-syntax-CommentMultiline) } /* CommentMultiline */
-.chroma .cp { color: var(--color-syntax-CommentPreproc) } /* CommentPreproc */
-.chroma .cpf { color: var(--color-syntax-CommentPreprocFile) } /* CommentPreprocFile */
-.chroma .cs { color: var(--color-syntax-CommentSpecial) } /* CommentSpecial */
-.chroma .dl { color: var(--color-syntax-LiteralStringDelimiter) } /* LiteralStringDelimiter */
-.chroma .gd { color: var(--color-syntax-GenericDeleted-text); background-color: var(--color-syntax-GenericDeleted-bg); } /* GenericDeleted */
-.chroma .ge { color: var(--color-syntax-GenericEmph); } /* GenericEmph */
-.chroma .gh { color: var(--color-syntax-GenericHeading); } /* GenericHeading */
-.chroma .gi { color: var(--color-syntax-GenericInserted-text); background-color: var(--color-syntax-GenericInserted-bg); } /* GenericInserted */
-.chroma .go { color: var(--color-syntax-GenericOutput); } /* GenericOutput */
-.chroma .gp { color: var(--color-syntax-GenericPrompt); } /* GenericPrompt */
-.chroma .gr { color: var(--color-syntax-GenericError); } /* GenericError */
-.chroma .gs { color: var(--color-syntax-GenericStrong); } /* GenericStrong */
-.chroma .gt { color: var(--color-syntax-GenericTraceback); } /* GenericTraceback */
-.chroma .gu { color: var(--color-syntax-GenericSubheading); } /* GenericSubheading */
-.chroma .hl { background-color: var(--color-syntax-LineHighlight); } /* LineHighlight */
-.chroma .il { color: var(--color-syntax-LiteralNumberIntegerLong); } /* LiteralNumberIntegerLong */
-.chroma .k { color: var(--color-syntax-Keyword); } /* Keyword */
-.chroma .kc { color: var(--color-syntax-KeywordConstant); } /* KeywordConstant */
-.chroma .kd { color: var(--color-syntax-KeywordDeclaration); } /* KeywordDeclaration */
-.chroma .kn { color: var(--color-syntax-KeywordNamespace); } /* KeywordNamespace */
-.chroma .kp { color: var(--color-syntax-KeywordPseudo); } /* KeywordPseudo */
-.chroma .kr { color: var(--color-syntax-KeywordReserved); } /* KeywordReserved */
-.chroma .kt { color: var(--color-syntax-KeywordType); } /* KeywordType */
-.chroma .ln { color: var(--color-syntax-LineNumbers); } /* LineNumbers */
-.chroma .lnt { color: var(--color-syntax-LineNumbersTable); } /* LineNumbersTable */
-.chroma .m { color: var(--color-syntax-LiteralNumber); } /* LiteralNumber */
-.chroma .mb { color: var(--color-syntax-LiteralNumberBin); } /* LiteralNumberBin */
-.chroma .mf { color: var(--color-syntax-LiteralNumberFloat); } /* LiteralNumberFloat */
-.chroma .mh { color: var(--color-syntax-LiteralNumberHex); } /* LiteralNumberHex */
-.chroma .mi { color: var(--color-syntax-LiteralNumberInteger); } /* LiteralNumberInteger */
-.chroma .mo { color: var(--color-syntax-LiteralNumberOct); } /* LiteralNumberOct */
-.chroma .n { color: var(--color-syntax-Name); } /* Name */
-.chroma .na { color: var(--color-syntax-NameAttribute); } /* NameAttribute */
-.chroma .nb { color: var(--color-syntax-NameBuiltin); } /* NameBuiltin */
-.chroma .nc { color: var(--color-syntax-NameClass); } /* NameClass */
-.chroma .nd { color: var(--color-syntax-NameDecorator); } /* NameDecorator */
-.chroma .ne { color: var(--color-syntax-NameException); } /* NameException */
-.chroma .nf { color: var(--color-syntax-NameFunction); } /* NameFunction */
-.chroma .ni { color: var(--color-syntax-NameEntity); } /* NameEntity */
-.chroma .nl { color: var(--color-syntax-NameLabel); } /* NameLabel */
-.chroma .nn { color: var(--color-syntax-NameNamespace); } /* NameNamespace */
-.chroma .no { color: var(--color-syntax-NameConstant); } /* NameConstant */
-.chroma .nt { color: var(--color-syntax-NameTag); } /* NameTag */
-.chroma .nv { color: var(--color-syntax-NameVariable); } /* NameVariable */
-.chroma .nx { color: var(--color-syntax-NameOther); } /* NameOther */
-.chroma .o { color: var(--color-syntax-Operator); } /* Operator */
-.chroma .ow { color: var(--color-syntax-OperatorWord); } /* OperatorWord */
-.chroma .p { color: var(--color-syntax-Punctuation); } /* Punctuation */
-.chroma .s { color: var(--color-syntax-LiteralString); } /* LiteralString */
-.chroma .s1 { color: var(--color-syntax-LiteralStringSingle); } /* LiteralStringSingle */
-.chroma .s2 { color: var(--color-syntax-LiteralStringDouble); } /* LiteralStringDouble */
-.chroma .sa { color: var(--color-syntax-LiteralStringAffix); } /* LiteralStringAffix */
-.chroma .sb { color: var(--color-syntax-LiteralStringBacktick); } /* LiteralStringBacktick */
-.chroma .sc { color: var(--color-syntax-LiteralStringChar); } /* LiteralStringChar */
-.chroma .sd { color: var(--color-syntax-LiteralStringDoc); } /* LiteralStringDoc */
-.chroma .se { color: var(--color-syntax-LiteralStringEscape); } /* LiteralStringEscape */
-.chroma .sh { color: var(--color-syntax-LiteralStringHeredoc); } /* LiteralStringHeredoc */
-.chroma .si { color: var(--color-syntax-LiteralStringInterpol); } /* LiteralStringInterpol */
-.chroma .sr { color: var(--color-syntax-LiteralStringRegex); } /* LiteralStringRegex */
-.chroma .ss { color: var(--color-syntax-LiteralStringSymbol); } /* LiteralStringSymbol */
-.chroma .sx { color: var(--color-syntax-LiteralStringOther); } /* LiteralStringOther */
-.chroma .vc { color: var(--color-syntax-NameVariableClass); } /* NameVariableClass */
-.chroma .vg { color: var(--color-syntax-NameVariableGlobal); } /* NameVariableGlobal */
-.chroma .vi { color: var(--color-syntax-NameVariableInstance); } /* NameVariableInstance */
-.chroma .w { color: var(--color-syntax-TextWhitespace); } /* TextWhitespace */
-
-/* From web_src/less/codemirror/dark.less */
-.CodeMirror.cm-s-default .cm-property, .CodeMirror.cm-s-paper .cm-property {
- color: #a0cc75;
-}
- .CodeMirror.cm-s-default .cm-header, .CodeMirror.cm-s-paper .cm-header {
- color: #9daccc;
-}
- .CodeMirror.cm-s-default .cm-quote, .CodeMirror.cm-s-paper .cm-quote {
- color: #009900;
-}
- .CodeMirror.cm-s-default .cm-keyword, .CodeMirror.cm-s-paper .cm-keyword {
- color: #cc8a61;
-}
- .CodeMirror.cm-s-default .cm-atom, .CodeMirror.cm-s-paper .cm-atom {
- color: #ef5e77;
-}
- .CodeMirror.cm-s-default .cm-number, .CodeMirror.cm-s-paper .cm-number {
- color: #ff5656;
-}
- .CodeMirror.cm-s-default .cm-def, .CodeMirror.cm-s-paper .cm-def {
- color: #e4e4e4;
-}
- .CodeMirror.cm-s-default .cm-variable-2, .CodeMirror.cm-s-paper .cm-variable-2 {
- color: #00bdbf;
-}
- .CodeMirror.cm-s-default .cm-variable-3, .CodeMirror.cm-s-paper .cm-variable-3 {
- color: #008855;
-}
- .CodeMirror.cm-s-default .cm-comment, .CodeMirror.cm-s-paper .cm-comment {
- color: #8e9ab3;
-}
- .CodeMirror.cm-s-default .cm-string, .CodeMirror.cm-s-paper .cm-string {
- color: #a77272;
-}
- .CodeMirror.cm-s-default .cm-string-2, .CodeMirror.cm-s-paper .cm-string-2 {
- color: #ff5500;
-}
- .CodeMirror.cm-s-default .cm-meta, .CodeMirror.cm-s-default .cm-qualifier, .CodeMirror.cm-s-paper .cm-meta, .CodeMirror.cm-s-paper .cm-qualifier {
- color: #ffb176;
-}
- .CodeMirror.cm-s-default .cm-builtin, .CodeMirror.cm-s-paper .cm-builtin {
- color: #b7c951;
-}
- .CodeMirror.cm-s-default .cm-bracket, .CodeMirror.cm-s-paper .cm-bracket {
- color: #999977;
-}
- .CodeMirror.cm-s-default .cm-tag, .CodeMirror.cm-s-paper .cm-tag {
- color: #f1d273;
-}
- .CodeMirror.cm-s-default .cm-attribute, .CodeMirror.cm-s-paper .cm-attribute {
- color: #bfcc70;
-}
- .CodeMirror.cm-s-default .cm-hr, .CodeMirror.cm-s-paper .cm-hr {
- color: #999999;
-}
- .CodeMirror.cm-s-default .cm-url, .CodeMirror.cm-s-paper .cm-url {
- color: #c5cfd0;
-}
- .CodeMirror.cm-s-default .cm-link, .CodeMirror.cm-s-paper .cm-link {
- color: #d8c792;
-}
- .CodeMirror.cm-s-default .cm-error, .CodeMirror.cm-s-paper .cm-error {
- color: #dbdbeb;
-}
diff --git a/capytal/forgejo/themes/theme-capytal-dark.css b/capytal/forgejo/themes/theme-capytal-dark.css
deleted file mode 100644
index 3fc44e6..0000000
--- a/capytal/forgejo/themes/theme-capytal-dark.css
+++ /dev/null
@@ -1,606 +0,0 @@
-/* capytal dark theme */
-:root * {
- --is-dark-theme: true;
-
- /* Colors. */
- /* Some colors must be set as HEX, due to the monaco-editor no supporting
- * conversion of non-hex colors. https: //github.com/microsoft/monaco-editor/issues/1815 */
- color-scheme: dark;
- --color-primary: var(--color-text-light);
- --color-primary-hover: var(--color-text-light);
- --color-primary-bg: var(--color-box-header);
- --color-primary-text: var(--color-text);
-
- --color-primary-contrast: #191919;
- --color-primary-dark-1: #111111;
- --color-primary-dark-2: #191919;
- --color-primary-dark-3: #222222;
- --color-primary-dark-4: #2a2a2a;
- --color-primary-dark-5: #313131;
- --color-primary-dark-6: #3a3a3a;
- --color-primary-dark-7: #484848;
-
- --color-primary-light-1: #eeeeee;
- --color-primary-light-2: #b4b4b4;
- --color-primary-light-3: #7b7b7b;
- --color-primary-light-4: #6e6e6e;
- --color-primary-light-5: #606060;
- --color-primary-light-6: #484848;
- --color-primary-light-7: #3a3a3a;
-
- --color-primary-alpha-10: #eeeeee1a;
- --color-primary-alpha-20: #eeeeee33;
- --color-primary-alpha-30: #eeeeee4d;
- --color-primary-alpha-40: #eeeeee66;
- --color-primary-alpha-50: #eeeeee80;
- --color-primary-alpha-60: #eeeeee99;
- --color-primary-alpha-70: #eeeeeeb3;
- --color-primary-alpha-80: #eeeeeecc;
- --color-primary-alpha-90: #eeeeeee6;
-
- --color-secondary: #2a2a2a00;
- --color-secondary-bg: hsl(213, 16%, 20%);
- --color-secondary-dark-1: hsl(213, 12%, 35%);
- --color-secondary-dark-2: hsl(213, 12%, 40%);
- --color-secondary-dark-3: hsl(213, 12%, 50%);
- --color-secondary-dark-4: hsl(213, 12%, 55%);
- --color-secondary-dark-5: hsl(213, 12%, 60%);
- --color-secondary-dark-6: #9aa3af;
- --color-secondary-dark-7: hsl(213, 12%, 69%);
- --color-secondary-dark-8: hsl(213, 12%, 74%);
- --color-secondary-dark-9: hsl(213, 11%, 79%);
- --color-secondary-dark-10: hsl(213, 11%, 84%);
- --color-secondary-dark-11: hsl(213, 12%, 89%);
- --color-secondary-dark-12: hsl(213, 12%, 94%);
- --color-secondary-dark-13: hsl(213, 14%, 98%);
-
- --color-secondary-light-1: hsl(213, 12%, 24%);
- --color-secondary-light-2: hsl(213, 12%, 18%);
- --color-secondary-light-3: hsl(213, 11%, 12%);
- --color-secondary-light-4: hsl(213, 8%, 6%);
-
- --color-secondary-alpha-10: hsla(213, 12%, 31%, 0.1);
- --color-secondary-alpha-20: hsla(213, 12%, 31%, 0.2);
- --color-secondary-alpha-30: hsla(213, 12%, 31%, 0.3);
- --color-secondary-alpha-40: hsla(213, 12%, 31%, 0.4);
- --color-secondary-alpha-50: hsla(213, 12%, 31%, 0.5);
- --color-secondary-alpha-60: hsla(213, 12%, 31%, 0.6);
- --color-secondary-alpha-70: hsla(213, 12%, 31%, 0.7);
- --color-secondary-alpha-80: hsla(213, 12%, 31%, 0.8);
- --color-secondary-alpha-90: hsla(213, 12%, 31%, 0.9);
-
- /* Colors for buttons, labels, etc. */
- --color-red: hsl(0, 56.4%, 54.1%);
- --color-red-light: hsl(0, 56.5%, 48.6%);
- --color-red-dark-1: hsl(3deg, 75%, 59%);
- --color-orange: hsl(23.8, 89%, 42.4%);
- --color-orange-light: hsl(23.6, 88.7%, 38%);
- --color-yellow: hsl(44.8, 97%, 40.6%);
- --color-yellow-light: hsl(44.8, 96.8%, 37%);
- --color-olive: hsl(67.5, 79.1%, 36%);
- --color-olive-light: hsl(67.4, 79.3%, 32%);
- --color-green: hsl(124deg 41% 35%);
- --color-green-light: hsl(124deg 41% 45%);
- --color-teal: hsl(177, 100%, 28.4%);
- --color-teal-light: hsl(176.8, 100%, 26%);
- --color-blue: hsl(206, 56%, 50.2%);
- --color-blue-light: hsl(206, 55%, 45.3%);
- --color-blue-dark-1: hsl(213deg, 89%, 64%);
- --color-blue-dark-bg: hsla(213deg, 89%, 64%, .15);
- --color-violet: hsl(259.2, 66.5%, 65%);
- --color-violet-light: hsl(259.1, 66.2%, 58%);
- --color-violet-dark-1: hsl(262deg, 66%, 66%);
- --color-violet-dark-bg: hsla(262deg, 66%, 66%, .15);
- --color-purple: hsl(285, 55.9%, 58%);
- --color-purple-light: hsl(285, 55.6%, 52%);
- --color-pink: hsl(326, 64.6%, 50.2%);
- --color-pink-light: hsl(326, 64.5%, 45%);
- --color-brown: hsl(23.4, 33%, 48%);
- --color-brown-light: hsl(23.5, 33%, 43%);
- --color-grey: hsl(213, 12%, 30%);
- --color-grey-light: hsl(213, 12%, 40%);
- --color-black: hsl(213, 21%, 15%);
- --color-black-light: hsl(223, 20%, 13%);
- --color-gold: hsl(47, 50%, 46.3%);
- --color-white: #ffffff;
-
- /* Color: diff */
- --color-diff-added-word-bg: hsl(120, 25.5%, 32%);
- --color-diff-removed-word-bg: hsl(0, 37%, 32%);
-
- --color-diff-added-row-bg: hsla(123, 36%, 43%, 0.1);
- --color-diff-added-row-linesnum-bg: hsla(123, 36%, 40%, 0.2);
- --color-diff-added-row-border: hsl(134.4, 20%, 24%);
- --color-diff-removed-row-bg: hsl(0, 20%, 20%);
- --color-diff-removed-row-linesnum-bg: hsl(0, 25%, 23%);
- --color-diff-removed-row-border: hsl(0, 19%, 33%);
- --color-diff-moved-row-bg: hsl(59, 31%, 38.6%);
- --color-diff-moved-row-border: hsl(69.2, 46%, 61%);
-
- --color-diff-inactive: hsl(229, 14%, 13%);
-
- /* Color: messages and status. */
- --color-error-border: hsl(0, 42%, 44.1%);
- --color-error-bg: hsl(0, 42.9%, 23%);
- --color-error-bg-active: hsl(0, 27.3%, 37%);
- --color-error-bg-hover: hsl(0, 33.3%, 30%);
- --color-error-text: hsl(0, 79.3%, 88.6%);
- --color-success-border: var(--color-success-text);
- --color-success-bg: #0e1512;
- --color-success-text: #3dd68c;
- --color-warning-border: hsl(50, 100%, 37%);
- --color-warning-bg: hsl(60, 9.4%, 20.8%);
- --color-warning-text: hsl(44.7, 96.8%, 50.8%);
- --color-info-border: hsl(210, 50%, 37.6%);
- --color-info-bg: hsl(216.3, 33.3%, 22.4%);
- --color-info-text: hsl(213deg, 89%, 64%);
-
- --color-body: #090909;
-
- --color-box-header: #121212;
- --color-box-body: #101010;
- --color-box-body-highlight: #111111;
-
- --color-text: #b4b4b4;
- --color-text-dark: #191919;
- --color-text-light: #eeeeee;
- --color-text-light-1: #eeeeee;
- --color-text-light-2: #b4b4b4;
- --color-text-light-3: #7b7b7b;
-
- /* "color-light" is actually a subtle black in dark themes, to darken an element.
- * against different backgrounds. */
- --color-light: hsla(0, 0%, 0%, 0.2);
- --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled)));
- --color-light-border: hsla(0, 0%, 100%, 0.2);
-
- --color-hover: hsla(213, 18%, 90%, .05);
- --color-active: hsla(213, 18%, 90%, .1);
-
- --color-menu: var(--color-box-body);
- --color-card: transparent;
-
- --color-markup-table-row: hsla(0, 0%, 100%, 0);
- --color-markup-code-block: hsla(0, 0%, 100%, 0.1);
- --color-markup-code-inline: hsla(0, 0%, 100%, 0.1);
-
- /* --color-code-bg: var(--color-box-body); */
- --color-code-line-bg-hover: hsl(213, 16%, 16%);
- --color-code-sidebar-bg: hsl(213, 15%, 21%);
-
- --color-tooltip-text: #fbfdff;
- --color-tooltip-bg: #000017f0;
-
- /* Navbar. */
- --color-navbar: var(--color-box-header);
- --color-nav-bg: var(--color-navbar);
- --color-nav-hover-bg: hsla(0, 0%, 10%, .05); /* #191919 */
- --color-header-wrapper: var(--color-navbar);
- --color-navbar-transparent: hsla(213, 10%, 14%, 0);
- --color-header-bar: var(--color-navbar);
-
- /* Inputs. */
- --color-input-text: var(--color-text-light);
- --color-input-background: var(--color-box-header);
- --color-input-toggle-background: var(--color-box-header);
- --color-input-border: var(--color-text-dark);
- --color-input-border-hover: var(--color-text-light-3);
- --color-placeholder-text: var(--color-text-light-3);
-
- --color-editor-line-highlight: var(--color-primary-light-5);
- --color-project-board-bg: var(--color-secondary-light-2);
-
- --color-highlight-fg: #87651e;
- --color-highlight-bg: #352c1c;
- --color-overlay-backdrop: #080808c0;
-
- --color-button: #282d3;
-
- --color-caret: var(--color-text);
- --color-border: var(--color-secondary-alpha-40);
-
- --color-reaction-bg: hsla(0, 0%, 100%, 0.1);
- --color-reaction-active-bg: var(--color-primary-alpha-30);
-
- --color-small-accent: var(--color-primary-light-5);
- --color-active-line: hsl(53.6, 50.9%, 22%);
-
- /* Labels. e.g. issues count indicator in repo tabs. */
- --color-label-text: var(--color-text-light);
- --color-label-bg: var(--color-secondary-alpha-60);
- --color-label-active-bg: hsl(220, 10.6%, 33.3%);
-
- /* Footer. */
- --color-footer: var(--color-nav-bg);
- --color-footer-text: var(--color-text-light-3);
- --color-footer-links: var(--color-text-light-1);
-}
-
-:root {
- --icon-check-square-bold: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M12 22c-4.714 0-7.071 0-8.536-1.465C2 19.072 2 16.714 2 12s0-7.071 1.464-8.536C4.93 2 7.286 2 12 2s7.071 0 8.535 1.464C22 4.93 22 7.286 22 12s0 7.071-1.465 8.535C19.072 22 16.714 22 12 22m4.03-13.03a.75.75 0 0 1 0 1.06l-5 5a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 1 1 1.06-1.06l1.47 1.47l4.47-4.47a.75.75 0 0 1 1.06 0' clip-rule='evenodd'/%3E%3C/svg%3E");
- --icon-minus-quare-line-duotone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='currentColor' stroke-width='1.5'%3E%3Cpath d='M2 12c0-4.714 0-7.071 1.464-8.536C4.93 2 7.286 2 12 2s7.071 0 8.535 1.464C22 4.93 22 7.286 22 12s0 7.071-1.465 8.535C19.072 22 16.714 22 12 22s-7.071 0-8.536-1.465C2 19.072 2 16.714 2 12Z' opacity='.5'/%3E%3Cpath stroke-linecap='round' d='M15 12H9'/%3E%3C/g%3E%3C/svg%3E");
- --icon-stop-circle-bold: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2S2 6.477 2 12s4.477 10 10 10M8.586 8.586C8 9.172 8 10.114 8 12s0 2.828.586 3.414S10.114 16 12 16s2.828 0 3.414-.586S16 13.886 16 12s0-2.828-.586-3.414S13.886 8 12 8s-2.828 0-3.414.586' clip-rule='evenodd'/%3E%3C/svg%3E");
- --icon-stop-circle-line-duotone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='currentColor' stroke-width='1.5'%3E%3Ccircle cx='12' cy='12' r='10' opacity='.5'/%3E%3Cpath d='M8 12c0-1.886 0-2.828.586-3.414S10.114 8 12 8s2.828 0 3.414.586S16 10.114 16 12s0 2.828-.586 3.414S13.886 16 12 16s-2.828 0-3.414-.586S8 13.886 8 12Z'/%3E%3C/g%3E%3C/svg%3E");
-}
-
-/* Custom styling of individual elements.
- * Using !important is bad, but unfortunately gitea does it already in _base.less. */
-
-/* Primary button. */
-.ui.primary.button,
-.ui.primary.buttons .button {
- background-color: var(--color-primary-bg) !important;
- border-color: var(--color-primary-text) !important;
- color: var(--color-primary-text) !important;
-}
-
-a.ui.primary.label:hover,
-.ui.primary.button:hover,
-.ui.primary.buttons .button:hover {
- background-color: var(--color-primary-hover) !important;
- color: var(--color-primary-contrast) !important;
-}
-
-.ui.primary.label {
- background-color: var(--color-primary-bg) !important;
- border-color: var(--color-primary-bg) !important;
- color: var(--color-primary) !important;
-}
-
-/* Primary Checkboxes */
-.ui.checkbox input[type="checkbox"] {
- display: none
-}
-.ui.checkbox input[type="checkbox"] + label::before {
- content: "";
- width: 1.4rem;
- height: 1.4rem;
- top: -0.1rem;
- left: -2.1rem;
- -webkit-mask: var(--icon-minus-quare-line-duotone) no-repeat;
- mask: var(--icon-minus-quare-line-duotone) no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- background-color: currentColor;
- color: var(--color-primary-text);
- position: absolute;
-}
-
-.ui.checkbox input[type="checkbox"]:checked + label::before {
- -webkit-mask: var(--icon-check-square-bold) no-repeat;
- mask: var(--icon-check-square-bold) no-repeat;
-}
-
-.ui.radio input[type="radio"] {
- display: none
-}
-.ui.radio input[type="radio"] + label::before {
- content: "";
- width: 1.4rem;
- height: 1.4rem;
- top: -0.1rem;
- left: -2.1rem;
- -webkit-mask: var(--icon-stop-circle-line-duotone) no-repeat;
- mask: var(--icon-stop-circle-line-duotone) no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- background-color: currentColor;
- color: var(--color-primary-text);
- position: absolute;
-}
-
-.ui.radio input[type="radio"]:checked + label::before {
- -webkit-mask: var(--icon-stop-circle-bold) no-repeat;
- mask: var(--icon-stop-circle-bold) no-repeat;
-}
-
-
-.markup input[type="checkbox"] {
- width: 1.1rem;
- height: 1.1rem;
- -webkit-mask: var(--icon-minus-quare-line-duotone) no-repeat;
- mask: var(--icon-minus-quare-line-duotone) no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- background-color: currentColor;
- color: var(--color-primary-text);
- position: absolute;
- margin-top: 0.25rem !important;
-}
-
-.markup input[type="checkbox"]:checked {
- -webkit-mask: var(--icon-check-square-bold) no-repeat;
- mask: var(--icon-check-square-bold) no-repeat;
-}
-
-/* Tabs */
-.ui.secondary.pointing.menu .active.item,
-.ui.secondary.pointing.menu .active.item:hover,
-.ui.secondary.pointing.menu .active.item:focus,
-.ui.secondary.pointing.menu .dropdown.item:hover,
-.ui.secondary.pointing.menu .dropdown.item:focus {
- color: var(--color-primary-text);
-}
-
-/* (from arc-green)
- * invert emojis that are hard to read otherwise */
-.emoji[aria-label="check mark"],
-.emoji[aria-label="currency exchange"],
-.emoji[aria-label="TOP arrow"],
-.emoji[aria-label="END arrow"],
-.emoji[aria-label="ON! arrow"],
-.emoji[aria-label="SOON arrow"],
-.emoji[aria-label="heavy dollar sign"],
-.emoji[aria-label="copyright"],
-.emoji[aria-label="registered"],
-.emoji[aria-label="trade mark"],
-.emoji[aria-label="multiply"],
-.emoji[aria-label="plus"],
-.emoji[aria-label="minus"],
-.emoji[aria-label="divide"],
-.emoji[aria-label="curly loop"],
-.emoji[aria-label="double curly loop"],
-.emoji[aria-label="wavy dash"],
-.emoji[aria-label="paw prints"],
-.emoji[aria-label="musical note"],
-.emoji[aria-label="musical notes"] {
- filter: invert(100%) hue-rotate(180deg);
-}
-
-/* Code syntax highlighting. */
-::selection {
- background: var(--color-dark-3) !important;
- color: var(--color-light-1) !important;
-}
-
-.tag-code .code-inner {
- opacity: .5;
-}
-
-.same-code .lines-num.lines-num-old,
-.same-code .lines-num.lines-num-new {
- color: var(--color-text-light-3) !important;
-}
-
-.add-code .lines-num.lines-num-old,
-.add-code .lines-num.lines-num-new {
- background-color: var(--color-diff-added-row-linesnum-bg);
- color: var(--color-text-dark-2) !important;
-}
-
-.del-code .lines-num.lines-num-old,
-.diff-unified .del-code .lines-num.lines-num-old,
-.del-code .lines-num.lines-num-new {
- background-color: var(--color-diff-removed-row-linesnum-bg);
- color: var(--color-text-dark-2) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.add-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.del-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody .diff-unified tr:hover .del-code .lines-num {
- color: var(--color-text-dark) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num {
- color: var(--color-text-dark-2) !important;
-}
-
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-code,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-num,
-.repository .diff-file-box .file-body.file-code table tbody tr.same-code:hover .lines-type-marker {
- background-color: var(--color-code-line-bg-hover) !important;
-}
-
-/* From web_src/less/themes/chroma/dark.less */
-:root {
- --color-syntax-NameBuiltinPseudo: #fabd2f;
- --color-syntax-Comment: #777e94;
- --color-syntax-CommentSingle: #777e94;
- --color-syntax-CommentHashbang: #777e94;
- --color-syntax-CommentMultiline: #777e94;
- --color-syntax-CommentPreproc: #8ec07c;
- --color-syntax-CommentPreprocFile: #649bc4;
- --color-syntax-CommentSpecial: #9075cd;
- --color-syntax-LiteralStringDelimiter: #649bc4;
-
- --color-syntax-GenericDeleted-text: #fff;
- --color-syntax-GenericDeleted-bg: #5f3737;
- --color-syntax-GenericEmph: #ddee30;
- --color-syntax-GenericHeading: #ffaa10;
- --color-syntax-GenericInserted-text: #fff;
- --color-syntax-GenericInserted-bg: #3a523a;
- --color-syntax-GenericOutput: #777e94;
- --color-syntax-GenericPrompt: #ebdbb2;
- --color-syntax-GenericError: #ff4433;
- --color-syntax-GenericStrong: #ebdbb2;
- --color-syntax-GenericTraceback: #ff7540;
- --color-syntax-GenericSubheading: #b8bb26;
- --color-syntax-LineHighlight: #3f424d;
- --color-syntax-LiteralNumberIntegerLong: #649bc4;
- --color-syntax-Keyword: #f47067;
- --color-syntax-KeywordConstant: #649bc4;
- --color-syntax-KeywordDeclaration: #ff7540;
- --color-syntax-KeywordNamespace: #ffaa10;
- --color-syntax-KeywordPseudo: #5f8700;
- --color-syntax-KeywordReserved: #ff7540;
- --color-syntax-KeywordType: #fabd2f;
- --color-syntax-LineNumbers: #7f8699;
- --color-syntax-LineNumbersTable: #7f8699;
- --color-syntax-LiteralNumber: #649bc4;
- --color-syntax-LiteralNumberBin: #649bc4;
- --color-syntax-LiteralNumberFloat: #649bc4;
- --color-syntax-LiteralNumberHex: #649bc4;
- --color-syntax-LiteralNumberInteger: #649bc4;
- --color-syntax-LiteralNumberOct: #649bc4;
- --color-syntax-Name: #adbac7;
- --color-syntax-NameAttribute: #b8bb26;
- --color-syntax-NameBuiltin: #fabd2f;
- --color-syntax-NameClass: #f69d50;
- --color-syntax-NameDecorator: #dcbdfb;
- --color-syntax-NameException: #ff7540;
- --color-syntax-NameFunction: #dcbdfb;
- --color-syntax-NameEntity: #fabd2f;
- --color-syntax-NameLabel: #ff7540;
- --color-syntax-NameNamespace: #ffaa10;
- --color-syntax-NameConstant: #649bc4;
- --color-syntax-NameTag: #ff7540;
- --color-syntax-NameVariable: #ebdbb2;
- --color-syntax-NameOther: #b6bac5;
- --color-syntax-Operator: #6cb6ff;
- --color-syntax-OperatorWord: #6cb6ff;
- --color-syntax-Punctuation: #d2d4db;
- --color-syntax-LiteralString: #b8bb26;
- --color-syntax-LiteralStringSingle: #96d0ff;
- --color-syntax-LiteralStringDouble: #96d0ff;
- --color-syntax-LiteralStringAffix: #649bc4;
- --color-syntax-LiteralStringBacktick: #b8bb26;
- --color-syntax-LiteralStringChar: #649bc4;
- --color-syntax-LiteralStringDoc: #777e94;
- --color-syntax-LiteralStringEscape: #ff7540;
- --color-syntax-LiteralStringHeredoc: #649bc4;
- --color-syntax-LiteralStringInterpol: #ffaa10;
- --color-syntax-LiteralStringRegex: #9075cd;
- --color-syntax-LiteralStringSymbol: #ff7540;
- --color-syntax-LiteralStringOther: #ffaa10;
- --color-syntax-NameVariableClass: #ff7540;
- --color-syntax-NameVariableGlobal: #ffaa10;
- --color-syntax-NameVariableInstance: #ffaa10;
- --color-syntax-TextWhitespace: #7f8699;
-}
-
-.chroma .bp { color: var(--color-syntax-NameBuiltinPseudo) } /* NameBuiltinPseudo */
-.chroma .c { color: var(--color-syntax-Comment) } /* Comment */
-.chroma .c1 { color: var(--color-syntax-CommentSingle) } /* CommentSingle */
-.chroma .ch { color: var(--color-syntax-CommentHashbang) } /* CommentHashbang */
-.chroma .cm { color: var(--color-syntax-CommentMultiline) } /* CommentMultiline */
-.chroma .cp { color: var(--color-syntax-CommentPreproc) } /* CommentPreproc */
-.chroma .cpf { color: var(--color-syntax-CommentPreprocFile) } /* CommentPreprocFile */
-.chroma .cs { color: var(--color-syntax-CommentSpecial) } /* CommentSpecial */
-.chroma .dl { color: var(--color-syntax-LiteralStringDelimiter) } /* LiteralStringDelimiter */
-.chroma .gd { color: var(--color-syntax-GenericDeleted-text); background-color: var(--color-syntax-GenericDeleted-bg); } /* GenericDeleted */
-.chroma .ge { color: var(--color-syntax-GenericEmph); } /* GenericEmph */
-.chroma .gh { color: var(--color-syntax-GenericHeading); } /* GenericHeading */
-.chroma .gi { color: var(--color-syntax-GenericInserted-text); background-color: var(--color-syntax-GenericInserted-bg); } /* GenericInserted */
-.chroma .go { color: var(--color-syntax-GenericOutput); } /* GenericOutput */
-.chroma .gp { color: var(--color-syntax-GenericPrompt); } /* GenericPrompt */
-.chroma .gr { color: var(--color-syntax-GenericError); } /* GenericError */
-.chroma .gs { color: var(--color-syntax-GenericStrong); } /* GenericStrong */
-.chroma .gt { color: var(--color-syntax-GenericTraceback); } /* GenericTraceback */
-.chroma .gu { color: var(--color-syntax-GenericSubheading); } /* GenericSubheading */
-.chroma .hl { background-color: var(--color-syntax-LineHighlight); } /* LineHighlight */
-.chroma .il { color: var(--color-syntax-LiteralNumberIntegerLong); } /* LiteralNumberIntegerLong */
-.chroma .k { color: var(--color-syntax-Keyword); } /* Keyword */
-.chroma .kc { color: var(--color-syntax-KeywordConstant); } /* KeywordConstant */
-.chroma .kd { color: var(--color-syntax-KeywordDeclaration); } /* KeywordDeclaration */
-.chroma .kn { color: var(--color-syntax-KeywordNamespace); } /* KeywordNamespace */
-.chroma .kp { color: var(--color-syntax-KeywordPseudo); } /* KeywordPseudo */
-.chroma .kr { color: var(--color-syntax-KeywordReserved); } /* KeywordReserved */
-.chroma .kt { color: var(--color-syntax-KeywordType); } /* KeywordType */
-.chroma .ln { color: var(--color-syntax-LineNumbers); } /* LineNumbers */
-.chroma .lnt { color: var(--color-syntax-LineNumbersTable); } /* LineNumbersTable */
-.chroma .m { color: var(--color-syntax-LiteralNumber); } /* LiteralNumber */
-.chroma .mb { color: var(--color-syntax-LiteralNumberBin); } /* LiteralNumberBin */
-.chroma .mf { color: var(--color-syntax-LiteralNumberFloat); } /* LiteralNumberFloat */
-.chroma .mh { color: var(--color-syntax-LiteralNumberHex); } /* LiteralNumberHex */
-.chroma .mi { color: var(--color-syntax-LiteralNumberInteger); } /* LiteralNumberInteger */
-.chroma .mo { color: var(--color-syntax-LiteralNumberOct); } /* LiteralNumberOct */
-.chroma .n { color: var(--color-syntax-Name); } /* Name */
-.chroma .na { color: var(--color-syntax-NameAttribute); } /* NameAttribute */
-.chroma .nb { color: var(--color-syntax-NameBuiltin); } /* NameBuiltin */
-.chroma .nc { color: var(--color-syntax-NameClass); } /* NameClass */
-.chroma .nd { color: var(--color-syntax-NameDecorator); } /* NameDecorator */
-.chroma .ne { color: var(--color-syntax-NameException); } /* NameException */
-.chroma .nf { color: var(--color-syntax-NameFunction); } /* NameFunction */
-.chroma .ni { color: var(--color-syntax-NameEntity); } /* NameEntity */
-.chroma .nl { color: var(--color-syntax-NameLabel); } /* NameLabel */
-.chroma .nn { color: var(--color-syntax-NameNamespace); } /* NameNamespace */
-.chroma .no { color: var(--color-syntax-NameConstant); } /* NameConstant */
-.chroma .nt { color: var(--color-syntax-NameTag); } /* NameTag */
-.chroma .nv { color: var(--color-syntax-NameVariable); } /* NameVariable */
-.chroma .nx { color: var(--color-syntax-NameOther); } /* NameOther */
-.chroma .o { color: var(--color-syntax-Operator); } /* Operator */
-.chroma .ow { color: var(--color-syntax-OperatorWord); } /* OperatorWord */
-.chroma .p { color: var(--color-syntax-Punctuation); } /* Punctuation */
-.chroma .s { color: var(--color-syntax-LiteralString); } /* LiteralString */
-.chroma .s1 { color: var(--color-syntax-LiteralStringSingle); } /* LiteralStringSingle */
-.chroma .s2 { color: var(--color-syntax-LiteralStringDouble); } /* LiteralStringDouble */
-.chroma .sa { color: var(--color-syntax-LiteralStringAffix); } /* LiteralStringAffix */
-.chroma .sb { color: var(--color-syntax-LiteralStringBacktick); } /* LiteralStringBacktick */
-.chroma .sc { color: var(--color-syntax-LiteralStringChar); } /* LiteralStringChar */
-.chroma .sd { color: var(--color-syntax-LiteralStringDoc); } /* LiteralStringDoc */
-.chroma .se { color: var(--color-syntax-LiteralStringEscape); } /* LiteralStringEscape */
-.chroma .sh { color: var(--color-syntax-LiteralStringHeredoc); } /* LiteralStringHeredoc */
-.chroma .si { color: var(--color-syntax-LiteralStringInterpol); } /* LiteralStringInterpol */
-.chroma .sr { color: var(--color-syntax-LiteralStringRegex); } /* LiteralStringRegex */
-.chroma .ss { color: var(--color-syntax-LiteralStringSymbol); } /* LiteralStringSymbol */
-.chroma .sx { color: var(--color-syntax-LiteralStringOther); } /* LiteralStringOther */
-.chroma .vc { color: var(--color-syntax-NameVariableClass); } /* NameVariableClass */
-.chroma .vg { color: var(--color-syntax-NameVariableGlobal); } /* NameVariableGlobal */
-.chroma .vi { color: var(--color-syntax-NameVariableInstance); } /* NameVariableInstance */
-.chroma .w { color: var(--color-syntax-TextWhitespace); } /* TextWhitespace */
-
-/* From web_src/less/codemirror/dark.less */
-.CodeMirror.cm-s-default .cm-property, .CodeMirror.cm-s-paper .cm-property {
- color: #a0cc75;
-}
- .CodeMirror.cm-s-default .cm-header, .CodeMirror.cm-s-paper .cm-header {
- color: #9daccc;
-}
- .CodeMirror.cm-s-default .cm-quote, .CodeMirror.cm-s-paper .cm-quote {
- color: #009900;
-}
- .CodeMirror.cm-s-default .cm-keyword, .CodeMirror.cm-s-paper .cm-keyword {
- color: #cc8a61;
-}
- .CodeMirror.cm-s-default .cm-atom, .CodeMirror.cm-s-paper .cm-atom {
- color: #ef5e77;
-}
- .CodeMirror.cm-s-default .cm-number, .CodeMirror.cm-s-paper .cm-number {
- color: #ff5656;
-}
- .CodeMirror.cm-s-default .cm-def, .CodeMirror.cm-s-paper .cm-def {
- color: #e4e4e4;
-}
- .CodeMirror.cm-s-default .cm-variable-2, .CodeMirror.cm-s-paper .cm-variable-2 {
- color: #00bdbf;
-}
- .CodeMirror.cm-s-default .cm-variable-3, .CodeMirror.cm-s-paper .cm-variable-3 {
- color: #008855;
-}
- .CodeMirror.cm-s-default .cm-comment, .CodeMirror.cm-s-paper .cm-comment {
- color: #8e9ab3;
-}
- .CodeMirror.cm-s-default .cm-string, .CodeMirror.cm-s-paper .cm-string {
- color: #a77272;
-}
- .CodeMirror.cm-s-default .cm-string-2, .CodeMirror.cm-s-paper .cm-string-2 {
- color: #ff5500;
-}
- .CodeMirror.cm-s-default .cm-meta, .CodeMirror.cm-s-default .cm-qualifier, .CodeMirror.cm-s-paper .cm-meta, .CodeMirror.cm-s-paper .cm-qualifier {
- color: #ffb176;
-}
- .CodeMirror.cm-s-default .cm-builtin, .CodeMirror.cm-s-paper .cm-builtin {
- color: #b7c951;
-}
- .CodeMirror.cm-s-default .cm-bracket, .CodeMirror.cm-s-paper .cm-bracket {
- color: #999977;
-}
- .CodeMirror.cm-s-default .cm-tag, .CodeMirror.cm-s-paper .cm-tag {
- color: #f1d273;
-}
- .CodeMirror.cm-s-default .cm-attribute, .CodeMirror.cm-s-paper .cm-attribute {
- color: #bfcc70;
-}
- .CodeMirror.cm-s-default .cm-hr, .CodeMirror.cm-s-paper .cm-hr {
- color: #999999;
-}
- .CodeMirror.cm-s-default .cm-url, .CodeMirror.cm-s-paper .cm-url {
- color: #c5cfd0;
-}
- .CodeMirror.cm-s-default .cm-link, .CodeMirror.cm-s-paper .cm-link {
- color: #d8c792;
-}
- .CodeMirror.cm-s-default .cm-error, .CodeMirror.cm-s-paper .cm-error {
- color: #dbdbeb;
-}
diff --git a/capytal/garage.nix b/capytal/garage.nix
deleted file mode 100644
index a0f8dd6..0000000
--- a/capytal/garage.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- config,
- pkgs,
- ...
-}: let
- secrets = config.spacestation-secrets.lesser;
- garageCfg = secrets.capytal.services.garage;
-in {
- imports = [];
-
- services.garage.enable = true;
- services.garage.package = pkgs.garage_1_x;
- services.garage.settings = {
- db_engine = "sqlite";
-
- replication_factor = 1;
-
- rpc_bind_addr = "[::]:${toString garageCfg.rpc.port}";
- rpc_public_addr = "127.0.0.1:${toString garageCfg.rpc.port}";
- rpc_secret = garageCfg.rpc.token;
-
- s3_api = {
- s3_region = "garage";
- api_bind_addr = "[::]:${toString garageCfg.api.port}";
- root_domain = ".s3.garage.localhost";
- };
-
- s3_web = {
- bind_addr = "[::]:${toString garageCfg.web.port}";
- root_domain = ".web.garage.localhost";
- index = "index.html";
- };
-
- k2v_api = {
- api_bind_addr = "[::]:${toString garageCfg.k2v.port}";
- };
-
- admin = {
- api_bind_addr = "[::]:${toString garageCfg.admin.port}";
- admin_token = garageCfg.admin.token;
- metrics_token = garageCfg.admin.metrics_token;
- };
- };
-
- networking.firewall.allowedTCPPorts = [
- garageCfg.rpc.port
- garageCfg.api.port
- garageCfg.web.port
- garageCfg.k2v.port
- garageCfg.admin.port
- ];
-
- environment.systemPackages = with pkgs; [awscli2];
-}
diff --git a/capytal/network.nix b/capytal/network.nix
deleted file mode 100644
index 3f1061a..0000000
--- a/capytal/network.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{config, ...}: {
- imports = [];
-
- services.caddy.enable = true;
- services.caddy.virtualHosts = let
- forgejo-port = config.services.forgejo.settings.server.HTTP_PORT;
- in {
- ":${toString (forgejo-port + 10)}" = {
- extraConfig = ''
- reverse_proxy http://localhost${config.services.anubis.instances."forgejo".bind} {
- header_up X-Real-Ip {remote_host}
- }
- '';
- };
- };
-
- services.anubis.enable = true;
- services.anubis.instances = {
- "forgejo" = let
- forgejo-port = config.services.forgejo.settings.server.HTTP_PORT;
- in {
- bind = ":${toString (forgejo-port + 20)}";
- metricsBind = ":${toString (forgejo-port + 30)}";
- serveRobotsTxt = true;
- target = "http://localhost:${toString forgejo-port}";
- ed25519PrivateKeyHexFile = config.sops.secrets."forgejo/anubis/hexFile".path;
- };
- };
-
- virtualisation.oci-containers.containers.cloudflare-tunnel = {
- image = "cloudflare/cloudflared:latest";
- autoStart = true;
- extraOptions = [
- "--network=host"
- ];
- cmd = [
- "tunnel"
- "--no-autoupdate"
- "run"
- ];
- environmentFiles = [
- config.sops.secrets."cloudflared/tunnel-env".path
- ];
- };
-
- networking.firewall.allowedTCPPorts = [
- 80
- 433
- ];
-}
diff --git a/capytal/sqld.nix b/capytal/sqld.nix
deleted file mode 100644
index 9efec04..0000000
--- a/capytal/sqld.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- secrets = config.spacestation-secrets.lesser;
- sqldCfg = secrets.capytal.services.sqld;
-in {
- imports = [];
-
- environment.systemPackages = [
- pkgs.sqld
- ];
-
- systemd.services.sqld = with lib; let
- sqld = escapeShellArg (getExe' pkgs.sqld "sqld");
- in {
- after = ["network.target" "network-online.target"];
- wants = ["network.target" "network-online.target"];
- wantedBy = ["multi-user.target"];
- serviceConfig = {
- ExecStart = "${sqld} --http-listen-addr ${secrets.device-ip}:${toString sqldCfg.http-port} --grpc-listen-addr ${secrets.device-ip}:${toString sqldCfg.grpc-port}";
- };
- };
-
- networking.firewall.allowedTCPPorts = [
- 8080
- ];
-}
diff --git a/capytal/websites.nix b/capytal/websites.nix
index a8e9f80..145ca17 100644
--- a/capytal/websites.nix
+++ b/capytal/websites.nix
@@ -2,7 +2,10 @@
config,
inputs,
...
-}: {
+}: let
+ cfg-capytal = config.services.capytalcc.web;
+ cfg-keikos = config.services.keikos.web;
+in {
imports = [
inputs.capytalcc.nixosModules.default
inputs.keikoswork.nixosModules.default
@@ -10,22 +13,22 @@
services.capytalcc.web = {
enable = true;
- port = 7010;
+ port = 9900;
};
- services.caddy.virtualHosts.":${toString (config.services.capytalcc.web.port + 1)}" = {
+ services.caddy.virtualHosts.":${toString (cfg-capytal.port + 1)}" = {
extraConfig = ''
- reverse_proxy http://localhost:${toString config.services.capytalcc.web.port}
+ reverse_proxy http://localhost:${toString cfg-capytal.port}
'';
};
services.keikos.web = {
enable = true;
- port = 7030;
+ port = 9910;
envFile = config.sops.secrets."keiko/env-file".path;
};
- services.caddy.virtualHosts.":${toString (config.services.keikos.web.port + 1)}" = {
+ services.caddy.virtualHosts.":${toString (cfg-keikos.port + 1)}" = {
extraConfig = ''
- reverse_proxy http://localhost:${toString config.services.keikos.web.port}
+ reverse_proxy http://localhost:${toString cfg-keikos.port}
'';
};
}
diff --git a/services/default.nix b/common/default.nix
similarity index 69%
rename from services/default.nix
rename to common/default.nix
index 2108063..b7af5c0 100644
--- a/services/default.nix
+++ b/common/default.nix
@@ -1,6 +1,5 @@
{...}: {
imports = [
- ./adguardhome.nix
./tailscale.nix
];
}
diff --git a/common/tailscale.nix b/common/tailscale.nix
new file mode 100644
index 0000000..e041634
--- /dev/null
+++ b/common/tailscale.nix
@@ -0,0 +1,18 @@
+{
+ config,
+ lib,
+ ...
+}:
+with lib; {
+ services.tailscale = {
+ enable = true;
+ extraUpFlags = [
+ "--advertise-exit-node"
+ ];
+ useRoutingFeatures = "both";
+ permitCertUid = mkIf config.services.caddy.enable "caddy";
+ };
+
+ boot.kernel.sysctl."net.ipv4.ip_forward" = mkDefault 1;
+ boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = mkDefault 1;
+}
diff --git a/configuration.nix b/configuration.nix
index f07573c..e1ed110 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -1,26 +1,22 @@
{
+ inputs,
config,
pkgs,
...
}: {
imports = [
- ./hardware-configuration.nix
- ./services
- ./modules
- ./secrets.nix
./capytal
+ ./abaduh
+ ./common
+
+ ./secrets.nix
+
+ ./hardware-configuration.nix
];
- programs.nh.enable = true;
- programs.nh.flake = "/home/guz/nix";
-
- profiles.locale.enable = true;
-
+ # User settings
programs.zsh.enable = true;
- programs.mosh.enable = true;
- programs.mosh.openFirewall = true;
-
users.users."guz" = {
shell = pkgs.zsh;
hashedPasswordFile = builtins.toString config.sops.secrets."guz/password".path;
@@ -30,8 +26,20 @@
openssh.authorizedKeys.keyFiles = [
./.ssh/guz.pub
];
+ packages = with pkgs;
+ [
+ libinput
+ ]
+ ++ (with inputs.dot013-nix.packages.${pkgs.system}.devkit; [
+ git
+ lazygit
+ starship
+ zellij
+ zsh
+ ]);
};
+ # GnuPG
programs.gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gnome3;
@@ -40,41 +48,62 @@
};
};
- environment.systemPackages = with pkgs; [
- git
- libinput
- ];
+ security.rtkit.enable = true;
+ # Nix commands
nix.settings.experimental-features = ["nix-command" "flakes"];
- nix.package = pkgs.nixVersions.nix_2_21;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 10d";
};
+ programs.nh.enable = true;
+ programs.nh.flake = "/home/guz/nix";
+
+ # Locale settings
+ i18n.defaultLocale = "en_US.UTF-8";
+ i18n.extraLocaleSettings = rec {
+ LC_ADDRESS = "pt_BR.UTF-8";
+ LC_IDENTIFICATION = LC_ADDRESS;
+ LC_MEASUREMENT = LC_ADDRESS;
+ LC_MONETARY = LC_ADDRESS;
+ LC_NAME = LC_ADDRESS;
+ LC_NUMERIC = LC_ADDRESS;
+ LC_PAPER = LC_ADDRESS;
+ LC_TELEPHONE = LC_ADDRESS;
+ LC_TIME = LC_ADDRESS;
+ };
+
+ console.keyMap = "br-abnt2";
+
+ time.timeZone = "America/Sao_Paulo";
+
+ # Networking
networking = {
networkmanager.enable = true;
hostName = "spacestation";
wireless.enable = false;
dhcpcd.enable = true;
- defaultGateway = "${config.spacestation-secrets.lesser.devices.defaultGateway}";
+ defaultGateway = "192.168.0.1";
interfaces."eno1".ipv4.addresses = [
{
- address = "${config.spacestation-secrets.lesser.devices.spacestation}";
+ address = "192.168.0.110";
prefixLength = 24;
}
];
nameservers = ["9.9.9.9"];
};
+ # SSH/Mosh configuration
services.openssh.enable = true;
services.openssh.settings = {
PasswordAuthentication = false;
PermitRootLogin = "forced-commands-only";
};
- security.rtkit.enable = true;
+ programs.mosh.enable = true;
+ programs.mosh.openFirewall = true;
# Bootloader.
boot.loader.systemd-boot.enable = true;
diff --git a/modules/adguardhome.nix b/modules/adguardhome.nix
deleted file mode 100644
index 53a618e..0000000
--- a/modules/adguardhome.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.services.adguardhome;
-in {
- imports = [];
- options.services.adguardhome = with lib;
- with lib.types; {
- dns.filters = mkOption {
- type = attrsOf (submodule ({lib, ...}: {
- options = {
- name = mkOption {
- type = nullOr str;
- default = null;
- };
- url = mkOption {
- type = str;
- };
- enabled = mkOption {
- type = bool;
- default = true;
- };
- };
- }));
- default = {};
- };
- dns.rewrites = mkOption {
- type = attrsOf str;
- default = {};
- };
- };
- config = with lib;
- mkIf cfg.enable {
- networking.firewall.allowedTCPPorts = [53];
- networking.firewall.allowedUDPPorts = [53 51820];
-
- services.adguardhome = {
- settings = {
- filtering.rewrites = builtins.attrValues (builtins.mapAttrs
- (from: to: {
- domain = from;
- answer = to;
- })
- cfg.dns.rewrites);
- filters = attrValues (mapAttrs
- (id: list: {
- name =
- if isNull list.name
- then id
- else list.name;
- ID = id;
- url = list.url;
- enabled = list.enabled;
- })
- cfg.dns.filters);
- };
- };
- };
-}
diff --git a/modules/anubis/default.nix b/modules/anubis/default.nix
deleted file mode 100644
index d751a29..0000000
--- a/modules/anubis/default.nix
+++ /dev/null
@@ -1,155 +0,0 @@
-{
- config,
- lib,
- pkgs-unstable,
- ...
-}: let
- cfg = config.services.anubis;
-in {
- options.services.anubis = with lib; {
- enable = mkEnableOption "Enable anubis systemd services";
- user = mkOption {
- type = with types; str;
- default = "anubis";
- };
- group = mkOption {
- type = with types; str;
- default = cfg.user;
- };
- package = mkOption {
- type = with types; package;
- default = pkgs-unstable.callPackage ./derivation.nix {}; # it uses Golang 1.24.1
- };
- instances = mkOption {
- type = with types;
- attrsOf (submodule ({
- config,
- lib,
- ...
- }: {
- options = with lib; {
- user = mkOption {
- type = with types; str;
- default = cfg.user;
- };
- group = mkOption {
- type = with types; str;
- default = cfg.group;
- };
- bind = mkOption {
- type = with types; str;
- default = ":8923";
- };
- bindNetwork = mkOption {
- type = with types; (enum ["tcp" "tcp4" "tcp6" "unix" "unixpacket"]);
- default = "tcp";
- };
- cookieDomain = mkOption {
- type = with types; str;
- default = "";
- };
- cookiePartitioned = mkOption {
- type = with types; bool;
- default = false;
- };
- difficulty = mkOption {
- type = with types; ints.unsigned;
- default = 5;
- };
- ed25519PrivateKeyHex = mkOption {
- type = with types; str;
- default = "";
- };
- ed25519PrivateKeyHexFile = mkOption {
- type = with types; (either str path);
- default = "";
- };
- metricsBind = mkOption {
- type = with types; str;
- default = ":9090";
- };
- metricsBindNetwork = mkOption {
- type = with types; (enum ["tcp" "tcp4" "tcp6" "unix" "unixpacket"]);
- default = "tcp";
- };
- socketMode = mkOption {
- type = with types; nullOr ints.unsigned;
- default = null;
- };
- policyFName = mkOption {
- type = with types; str;
- default = "";
- };
- serveRobotsTxt = mkOption {
- type = with types; bool;
- default = false;
- };
- target = mkOption {
- type = with types; str;
- default = "http://localhost:3923";
- };
- useRemoteAddress = mkOption {
- type = with types; bool;
- default = false;
- };
- };
- }));
- default = {};
- };
- };
- config = lib.mkIf cfg.enable {
- systemd.services = with lib;
- with lib.attrsets;
- mapAttrs' (n: v:
- nameValuePair "anubis-${n}" {
- after = ["network.target"];
- wantedBy = ["multi-user.target"];
- environment = {
- BIND = toString v.bind;
- BIND_NETWORK = toString v.bindNetwork;
- COOKIE_DOMAIN = toString v.cookieDomain;
- COOKIE_PARTITIONED = toString v.cookiePartitioned;
- DIFFICULTY = toString v.difficulty;
- ED25519_PRIVATE_KEY_HEX = toString v.ed25519PrivateKeyHex;
- ED25519_PRIVATE_KEY_HEX_FILE = toString v.ed25519PrivateKeyHexFile;
- METRICS_BIND = toString v.metricsBind;
- METRICS_BIND_NETWORK = toString v.metricsBindNetwork;
- SOCKET_MODE = mkIf (!isNull v.socketMode) (toString v.socketMode);
- POLICY_FNAME = toString v.policyFName;
- SERVE_ROBOTS_TXT = toString v.serveRobotsTxt;
- TARGET = toString v.target;
- USE_REMOTE_ADDRESS = toString v.useRemoteAddress;
- };
- serviceConfig = {
- Type = "simple";
- User = v.user;
- Group = v.user;
- ExecStart = "${escapeShellArg (getExe cfg.package)}";
- Restart = "on-success";
- };
- })
- cfg.instances;
-
- users.users = with lib.attrsets;
- (mapAttrs' (n: v:
- nameValuePair (v.user) {
- isSystemUser = true;
- group = v.group;
- })
- cfg.instances)
- // {
- "${cfg.user}" = {
- isSystemUser = true;
- group = cfg.group;
- };
- };
-
- users.groups = with lib.attrsets;
- (mapAttrs' (n: v:
- nameValuePair (v.user) {})
- cfg.instances)
- // {
- "${cfg.group}" = {};
- };
- };
-}
diff --git a/modules/anubis/derivation.nix b/modules/anubis/derivation.nix
deleted file mode 100644
index d490448..0000000
--- a/modules/anubis/derivation.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- buildGoModule,
- fetchFromGitHub,
- ...
-}:
-buildGoModule {
- name = "Anubis";
- pname = "anubis";
- version = "1.15.2";
-
- src = fetchFromGitHub {
- owner = "TecharoHQ";
- repo = "anubis";
- rev = "35e0a8179a70678708ceb90c9a285940f99b9774";
- hash = "sha256-5OqpmuRTrM+hseIhR2sTb+K01Co6X+Rhb6mN+U54NAI=";
- };
-
- vendorHash = "sha256-Rcra5cu7zxGm2LhL2x9Kd3j/uQaEb8OOh/j5Rhh8S1k=";
-
- doCheck = false;
-
- meta = {
- mainProgram = "anubis";
- };
-}
diff --git a/modules/default.nix b/modules/default.nix
deleted file mode 100644
index d2773f7..0000000
--- a/modules/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{...}: {
- imports = [
- ./adguardhome.nix
- ./anubis
- ./forgejo
- ./locales.nix
- ./medama.nix
- ./nh
- ./tailscale.nix
- ];
-}
diff --git a/modules/forgejo/default.nix b/modules/forgejo/default.nix
index 6b57a65..dc771e7 100644
--- a/modules/forgejo/default.nix
+++ b/modules/forgejo/default.nix
@@ -154,23 +154,23 @@ in {
virtualisation.docker.enable = mkIf cfg.actions.enable (mkDefault true);
virtualisation.oci-containers.backend = mkIf cfg.actions.enable (mkDefault "docker");
- services.gitea-actions-runner = mkIf cfg.actions.enable {
- package =
- if config.services.gitea.enable
- then pkgs.gitea-actions-runner
- else pkgs.forgejo-actions-runner;
- instances."forgejo${toString cfg.settings.server.HTTP_PORT}" = {
- enable = mkDefault true;
- token = mkDefault cfg.actions.token;
- name = mkDefault "${cfg.settings.DEFAULT.APP_NAME} - Actions";
- url = cfg.actions.url;
- labels = mkDefault cfg.actions.labels;
- settings = {
- runner = {
- insecure = true;
- };
- };
- };
- };
+ # services.gitea-actions-runner = mkIf cfg.actions.enable {
+ # package =
+ # if config.services.gitea.enable
+ # then pkgs.gitea-actions-runner
+ # else pkgs.forgejo-actions-runner;
+ # instances."forgejo${toString cfg.settings.server.HTTP_PORT}" = {
+ # enable = mkDefault true;
+ # token = mkDefault cfg.actions.token;
+ # name = mkDefault "${cfg.settings.DEFAULT.APP_NAME} - Actions";
+ # url = cfg.actions.url;
+ # labels = mkDefault cfg.actions.labels;
+ # settings = {
+ # runner = {
+ # insecure = true;
+ # };
+ # };
+ # };
+ # };
};
}
diff --git a/modules/locales.nix b/modules/locales.nix
deleted file mode 100644
index 2c1803c..0000000
--- a/modules/locales.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.profiles.locale;
-in {
- imports = [];
- options.profiles.locale = with lib;
- with lib.types; {
- enable = mkEnableOption "";
- locale = mkOption {
- type = str;
- default = "en_US.UTF-8";
- };
- extraLocales = mkOption {
- type = attrsOf str;
- default = rec {
- LC_ADDRESS = "pt_BR.UTF-8";
- LC_IDENTIFICATION = LC_ADDRESS;
- LC_MEASUREMENT = LC_ADDRESS;
- LC_MONETARY = LC_ADDRESS;
- LC_NAME = LC_ADDRESS;
- LC_NUMERIC = LC_ADDRESS;
- LC_PAPER = LC_ADDRESS;
- LC_TELEPHONE = LC_ADDRESS;
- LC_TIME = LC_ADDRESS;
- };
- };
- keymap.layout = mkOption {
- type = str;
- default = "br";
- };
- keymap.variant = mkOption {
- type = str;
- default = "";
- };
- keymap.console = mkOption {
- type = str;
- default = "br-abnt2";
- };
- timeZone = mkOption {
- type = str;
- default = "America/Sao_Paulo";
- };
- };
- config = {
- i18n = {
- defaultLocale = cfg.locale;
- extraLocaleSettings = cfg.extraLocales;
- };
-
- services.xserver = {
- xkb.layout = cfg.keymap.layout;
- xkb.variant = cfg.keymap.variant;
- };
-
- console.keyMap = cfg.keymap.console;
-
- time = {
- timeZone = cfg.timeZone;
- };
- };
-}
diff --git a/modules/nh/default.nix b/modules/nh/default.nix
deleted file mode 100644
index 34bfb2a..0000000
--- a/modules/nh/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- cfg = config.programs.nh;
- wrapper = pkgs.writeShellScriptBin "nh" ''
- function alejandra() { ${pkgs.alejandra}/bin/alejandra "$@"; }
- function git() { ${pkgs.git}/bin/git "$@"; }
- function lazygit() { ${pkgs.lazygit}/bin/lazygit "$@"; }
- function nh() { ${pkgs.nh}/bin/nh "$@"; }
- function shellharden() { ${pkgs.shellharden}/bin/shellharden "$@"; }
-
- FLAKE_DIR=${toString cfg.flake}
-
- ${builtins.readFile ./wrapper.sh}
- '';
-in {
- options.programs.nh = with lib; with lib.types; {};
- config = with lib;
- mkIf cfg.enable {
- programs.nh.package = wrapper;
- # programs.nh.clean.enable = mkDefault true;
- };
-}
diff --git a/modules/nh/wrapper.sh b/modules/nh/wrapper.sh
deleted file mode 100644
index ab336cc..0000000
--- a/modules/nh/wrapper.sh
+++ /dev/null
@@ -1,154 +0,0 @@
-function set_colors() {
- COLOR_CYAN='\033[0;35m'
- COLOR_RED='\033[0;31m'
- COLOR_YELLOW='\033[1;33m'
- COLOR_NC='\033[0m'
-}
-function set_labels() {
- set_colors
- function echo_info() {
- if [ -t 1 ]; then
- echo -e "${COLOR_CYAN}INFO:${COLOR_NC} $@";
- else
- echo -e "INFO: $@";
- fi
- }
- function echo_warn() {
- if [ -t 1 ]; then
- echo -e "${COLOR_YELLOW}WARN:${COLOR_NC} $@";
- else
- echo -e "WARN: $@";
- fi
- }
- function echo_error() {
- if [ -t 1 ]; then
- echo -e "${COLOR_RED}ERRO:${COLOR_NC} $@";
- else
- echo -e "ERRO: $@";
- fi
- }
-}
-set_labels
-
-function decrypt_lesser_secrets() {
- set -e
- pushd "$FLAKE_DIR" > /dev/null
-
- for f in ./secrets/*.lesser.*; do
- local filename="$(basename -- "$f")"
- local extension="${filename##*.}"
- local filename="${filename%.*}"
- local subextenstion="${filename##*.}"
-
- if [[ "$subextenstion" == "decrypted" ]]; then
- echo_warn "$PREFIX - File already decrypted! file=$f"
- else
- echo_info "$PREFIX - Decrypting lesser secret file. file=$f"
- sops --output "./secrets/$filename.decrypted.$extension" -d "$f"
- fi
- done
-
- echo_info "$PREFIX - Adding decrypted secret files"
- git add ./secrets/*.decrypted.*
-
- popd > /dev/null
-}
-
-function remove_decrypted_secrets() {
- set -e
- pushd "$FLAKE_DIR" > /dev/null
-
- echo_info "$PREFIX - Removing descrypted files"
- for f in "$FLAKE_DIR"/secrets/*.decrypted.*; do
- echo_info "$PREFIX - Removing descrypted files. file=$f"
- git reset "$f"
- rm "$f"
- done
-
- popd > /dev/null
-}
-
-function format_files() {
- set -e
- pushd "$FLAKE_DIR" > /dev/null
-
- echo_info "$PREFIX - Formatting *.nix files"
- alejandra . &>/dev/null \
- || (alejandra . ; \
- echo_error - "$PREFIX - Failed to format files" \
- && exit 1)
-
- echo_info "$PREFIX - Formatting *.sh files"
- find "$FLAKE_DIR" -type f -name "*.sh" -execdir shellharden --replace {} \;
-
- popd > /dev/null
-}
-
-function build_os() {
- set -e
- pushd "$FLAKE_DIR" > /dev/null
-
- echo_info "$PREFIX - Building NixOS"
- nh os switch "$@" "$FLAKE_DIR" \
- || (echo_error "$PREFIX - Failed to build NixOS" \
- && remove_decrypted_secrets \
- && exit 1)
-
- popd > /dev/null
-}
-
-case "$1" in
- "os")
- case "$2" in
- "switch")
- PREFIX="nh os switch"
-
- decrypt_lesser_secrets
- format_files
-
- shift 2
- build_os "$@"
-
- remove_decrypted_secrets
- ;;
- *) echo_error "\"$2\" subcommand does not exist"
- ;;
- esac
- ;;
- "edit")
- pushd "$FLAKE_DIR" > /dev/null
-
- "$EDITOR" .
-
- popd > /dev/null
- ;;
- "sync")
- pushd "$FLAKE_DIR" > /dev/null
-
- lazygit
-
- popd > /dev/null
- ;;
- "secrets")
- PREFIX="nh secrets"
- case "$2" in
- "-d"|"--decrypt") decrypt_lesser_secrets
- ;;
- "-r"|"--remove") remove_decrypted_secrets
- ;;
- esac
- ;;
- "format")
- pushd "$FLAKE_DIR" > /dev/null
-
- format_files
-
- popd > /dev/null
- ;;
- "--")
- shift 1
- nh "$@"
- ;;
- *) echo_error "\"$1\" command does not exist"
- ;;
-esac
diff --git a/modules/tailscale.nix b/modules/tailscale.nix
deleted file mode 100644
index 816fde0..0000000
--- a/modules/tailscale.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.services.tailscale;
-in {
- imports = [];
- options.services.tailscale = with lib;
- with lib.types; {
- exitNode = mkOption {
- type = bool;
- default = false;
- };
- };
- config = with lib;
- mkIf cfg.enable {
- services.tailscale = {
- extraUpFlags = [
- (
- if cfg.exitNode
- then "--advertise-exit-node"
- else null
- )
- (
- if cfg.exitNode
- then "--exit-node"
- else null
- )
- ];
- useRoutingFeatures = mkDefault (
- if cfg.exitNode
- then "server"
- else "client"
- );
- };
-
- systemd.services."tailscaled" = mkIf config.services.caddy.enable (mkDefault {
- serviceConfig = {
- Environment = ["TS_PERMIT_CERT_UID=caddy"];
- };
- });
-
- boot.kernel.sysctl."net.ipv4.ip_forward" = mkIf cfg.exitNode (mkDefault 1);
- boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = mkIf cfg.exitNode (mkDefault 1);
- };
-}
diff --git a/services/adguardhome.nix b/services/adguardhome.nix
deleted file mode 100644
index 45d989a..0000000
--- a/services/adguardhome.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{config, ...}: let
- secrets = config.spacestation-secrets.lesser;
- adguardCfg = secrets.guz.services.adguard;
-in {
- imports = [
- ../modules/adguardhome.nix
- ];
- services.adguardhome = {
- enable = true;
- openFirewall = true;
- port = adguardCfg.port;
- dns.filters = {
- "Hagezi's Multi PRO" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/pro.txt";
- };
- "Hagezi's Badware Hoster" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/hoster.txt";
- };
- "Hagezi's DNS Bypass blocking" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/doh-vpn-proxy-bypass.txt";
- };
- "Hagezi's Dynamic DNS blocking" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/dyndns.txt";
- };
- "Hagezi's Gambling" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/gambling.txt";
- };
- "Hagezi's Native - LG webOS" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/native.lgwebos.txt";
- };
- "Hagezi's Native - Tiktok (Agressive)" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/hosts/native.tiktok.extended.txt";
- };
- "Hagezi's Native - Microsoft/Windows" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/native.winoffice.txt";
- };
- "Hagezi's Pop-up Ads" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/popupads.txt";
- };
- "Hagezi's TIF" = {
- url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/tif.txt";
- };
- };
- settings.user_rules = [
- "@@||tumblr.com^$important"
- "@@||wordpress.com^$important"
- "@@||tailscale.com^$important"
- "@@||torproject.org^$important"
- "@@||neocities.org^$important"
- ];
- };
-}
diff --git a/services/tailscale.nix b/services/tailscale.nix
deleted file mode 100644
index 9cd318c..0000000
--- a/services/tailscale.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{...}: {
- imports = [
- ../modules/tailscale.nix
- ];
- services.tailscale = {
- enable = true;
- useRoutingFeatures = "both";
- exitNode = true;
- };
-}