diff --git a/home/programs/browser/bookmarks.nix b/home/programs/browser/bookmarks.nix index dd8ff71..3a65067 100644 --- a/home/programs/browser/bookmarks.nix +++ b/home/programs/browser/bookmarks.nix @@ -6,7 +6,6 @@ in [ (short "tr" "Translate" "https://translate.google.no/?hl=no") (short "gm" "Gmail" "https://mail.google.com/mail/u/0/#inbox") (short "辞書" "Jisho" "https://jisho.org/?color_theme=dark") - (short "Gitea" "Gitea - nani.wtf" "https://git.nani.wtf/explore/repos") (link "GitHub" "http://github.com") (short "/u/" "danger/u/" "https://dangeru.us/") (link "PVV" "https://www.pvv.ntnu.no/") diff --git a/hosts/tsuki/configuration.nix b/hosts/tsuki/configuration.nix index d207d57..08d902a 100644 --- a/hosts/tsuki/configuration.nix +++ b/hosts/tsuki/configuration.nix @@ -7,7 +7,6 @@ ./services/atuin.nix ./services/borg.nix - ./services/gitea ./services/gitea-runners.nix ./services/grafana ./services/headscale.nix diff --git a/hosts/tsuki/services/borg.nix b/hosts/tsuki/services/borg.nix index dd6f8f6..71d5c31 100644 --- a/hosts/tsuki/services/borg.nix +++ b/hosts/tsuki/services/borg.nix @@ -13,7 +13,6 @@ in { in { postgres = createJob config.services.postgresqlBackup.location "postgres"; minecraft = createJob config.services.minecraft-servers.dataDir "minecraft"; - gitea = createJob config.services.gitea.dump.backupDir "gitea"; }; systemd.services = lib.mkMerge ((lib.flip map) (builtins.attrNames cfg.jobs) (name: { diff --git a/hosts/tsuki/services/gitea/default.nix b/hosts/tsuki/services/gitea/default.nix deleted file mode 100644 index 22796be..0000000 --- a/hosts/tsuki/services/gitea/default.nix +++ /dev/null @@ -1,151 +0,0 @@ -{ config, pkgs, unstable-pkgs, lib, secrets, ... }: let - cfg = config.services.gitea; -in { - security.pam.services."gitea".unixAuth = true; - - users.users.git = { - description = "Gitea service"; - home = config.services.gitea.stateDir; - useDefaultShell = true; - - group = "gitea"; - isSystemUser = true; - uid = config.ids.uids.git; - packages = with unstable-pkgs; [ gitea ]; - }; - - users.groups."gitea".members = [ "nginx" ]; - - sops.secrets."postgres/gitea" = rec { - restartUnits = [ "gitea.service" ]; - owner = config.services.gitea.user; - group = config.users.users.${owner}.group; - }; - - services.gitea = { - enable = true; - user = "git"; - package = unstable-pkgs.gitea; - - dump = { - enable = true; - interval = "weekly"; - backupDir = "/data/backup/gitea"; - }; - - database = { - user = "gitea"; - type = "postgres"; - socket = "/var/run/postgresql"; - createDatabase = false; - passwordFile = config.sops.secrets."postgres/gitea".path; - }; - - settings = { - server = { - PROTOCOL = "http+unix"; - HTTP_ADDR = "/run/gitea/gitea.sock"; - BUILTIN_SSH_SERVER_USER="git"; - LANDING_PAGE = "/explore/repos"; - ROOT_URL = "https://git.nani.wtf/"; - DOMAIN = "git.nani.wtf"; - }; - - service.DISABLE_REGISTRATION = true; - session.COOKIE_SECURE = true; - metrics.ENABLED = true; - - oauth2_client = { - ENABLE_AUTO_REGISTRATION = true; - OPENID_CONNECT_SCOPES = "email profile"; - UPDATE_AVATAR = true; - ACCOUNT_LINKING = "auto"; - USERNAME = "userid"; - }; - - log.LEVEL = "Info"; - - database.LOG_SQL = false; - - repository.DISABLE_STARS = true; - - ui = { - DEFAULT_THEME = "monokai"; - THEMES = lib.strings.concatStringsSep "," [ - "gitea" - "arc-green" - - # Custom - "monokai" - ]; - }; - - "ui.svg".RENDER = true; - - indexer.REPO_INDEXER_ENABLED = true; - mailer = { - ENABLED = true; - FROM = "gitea@nani.wtf"; - }; - - # Looking forward to the day I can uncomment this line - # federation.ENABLED = true; - packages.ENABLED = false; - - # TODO: fix - - # markup = let - # docutils = pkgs.python37.withPackages (ps: with ps; [ - # docutils # Provides rendering of ReStructured Text files - # pygments # Provides syntax highlighting - # ]); - # in { - # restructuredtext = { - # ENABLED = true; - # FILE_EXTENSIONS = ".rst"; - # RENDER_COMMAND = "${docutils}/bin/rst2html.py"; - # IS_INPUT_FILE = false; - # }; - # asciidoc = { - # ENABLED = true; - # FILE_EXTENSIONS = ".adoc,.asciidoc"; - # RENDER_COMMAND = "${pkgs.asciidoctor}/bin/asciidoctor -e -a leveloffset=-1 --out-file=- -"; - # IS_INPUT_FILE = false; - # }; - # }; - }; - }; - - system.activationScripts.linkGiteaThemes.text = let - themes = pkgs.stdenv.mkDerivation { - pname = "gitea-themes"; - version = "1.0.0"; - src = ./themes; - - buildInputs = with pkgs; [ lessc ]; - buildPhase = '' - mkdir out - for f in $(find -name 'theme-*.less') - do - lessc $f out/''${f%.less}.css - done; - ''; - installPhase = "mv out $out"; - }; - cssParentPath = "${config.services.gitea.stateDir}/custom/public"; - cssPath = "${cssParentPath}/css"; - in '' - if [[ ! -e "${cssPath}" ]]; then - printf "creating symlink at %s...\n" "${cssPath}" - mkdir -p "${cssParentPath}" - ln -s "${themes}" "${cssPath}" - elif [ -L "${cssPath}" ]; then - printf "replacing symlink at %s...\n" "${cssPath}" - rm ${cssPath} - ln -s "${themes}" "${cssPath}" - else - printf "ERROR: %s already exists and it is not a symlink\n" "${cssPath}" - _localstatus=1; - fi - ''; -} diff --git a/hosts/tsuki/services/gitea/themes/theme-monokai.less b/hosts/tsuki/services/gitea/themes/theme-monokai.less deleted file mode 100644 index e79b7b7..0000000 --- a/hosts/tsuki/services/gitea/themes/theme-monokai.less +++ /dev/null @@ -1,832 +0,0 @@ -// This is only a rough approximation, and needs a lot of polishing. - -// 'mk' is a prefix 'for monokai' - -@mk-bg-dark: #1e1f1c; - -@mk-bg0: #272820; -@mk-bg1: #3e3d32; -@mk-bg2: #75715e; - -@mk-fg0: #f8f8f2; -@mk-fg1: #cfcfc2; - -@mk-red: #f92672; -@mk-green: #a6e22e; -@mk-blue: #66d9ef; -@mk-violet: #ae81ff; -@mk-cyan: #a1efe4; -@mk-magenta: #fd5ff0; -@mk-yellow: #e6db74; - - -// Extra additions -@mk-orange: #fd971f; -@mk-forest-green: #2d693b; -@mk-success-green: #21ba45; -@mk-error-red: #ff4433; - -@primary: @mk-green; - -/* @import "../chroma/dark.less"; */ -// Code higlighting colors - -.chroma .hl { background-color: #3f424d; } /* LineHighlight */ -.chroma .lnt { color: @mk-fg1; } /* LineNumbersTable */ -.chroma .ln { color: @mk-fg1; } /* LineNumbers */ -.chroma .k { color: @mk-red; } /* Keyword */ -.chroma .kc { color: @mk-red; } /* KeywordConstant */ -.chroma .kd { color: @mk-red; } /* KeywordDeclaration */ -.chroma .kn { color: @mk-orange; } /* KeywordNamespace */ -.chroma .kp { color: @mk-red; } /* KeywordPseudo */ -.chroma .kr { color: @mk-red; } /* KeywordReserved */ -.chroma .kt { color: @mk-blue; } /* KeywordType */ -.chroma .n { color: @mk-green; } /* Generic Name */ -.chroma .na { color: @mk-fg0; } /* NameAttribute */ -.chroma .nb { color: @mk-red; } /* NameBuiltin */ -.chroma .bp { color: @mk-red; } /* NameBuiltinPseudo */ -.chroma .nc { color: @mk-blue; } /* NameClass */ -.chroma .no { color: @mk-violet; } /* NameConstant */ -.chroma .nd { color: @mk-violet; } /* NameDecorator */ -.chroma .ni { color: @mk-violet; } /* NameEntity */ -.chroma .ne { color: @mk-violet; } /* NameException */ -.chroma .nf { color: @mk-green; } /* NameFunction */ -.chroma .nl { color: @mk-orange; } /* NameLabel */ -.chroma .nn { color: @mk-cyan; } /* NameNamespace */ -.chroma .nx { color: @mk-blue; } /* NameOther */ -.chroma .nt { color: @mk-red; } /* NameTag */ -.chroma .nv { color: @mk-fg0; } /* NameVariable */ -.chroma .vc { color: @mk-fg0; } /* NameVariableClass */ -.chroma .vg { color: @mk-fg0; } /* NameVariableGlobal */ -.chroma .vi { color: @mk-fg0; } /* NameVariableInstance */ -.chroma .s { color: @mk-yellow; } /* LiteralString */ -.chroma .sa { color: @mk-yellow; } /* LiteralStringAffix */ -.chroma .sb { color: @mk-yellow; } /* LiteralStringBacktick */ -.chroma .sc { color: @mk-yellow; } /* LiteralStringChar */ -.chroma .dl { color: @mk-yellow; } /* LiteralStringDelimiter */ -.chroma .sd { color: @mk-yellow; } /* LiteralStringDoc */ -.chroma .s2 { color: @mk-yellow; } /* LiteralStringDouble */ -.chroma .se { color: @mk-orange; } /* LiteralStringEscape */ -.chroma .sh { color: @mk-yellow; } /* LiteralStringHeredoc */ -.chroma .si { color: @mk-yellow; } /* LiteralStringInterpol */ -.chroma .sx { color: @mk-yellow; } /* LiteralStringOther */ -.chroma .sr { color: @mk-orange; } /* LiteralStringRegex */ -.chroma .s1 { color: @mk-yellow; } /* LiteralStringSingle */ -.chroma .ss { color: @mk-yellow; } /* LiteralStringSymbol */ -.chroma .m { color: @mk-cyan; } /* LiteralNumber */ -.chroma .mb { color: @mk-cyan; } /* LiteralNumberBin */ -.chroma .mf { color: @mk-cyan; } /* LiteralNumberFloat */ -.chroma .mh { color: @mk-cyan; } /* LiteralNumberHex */ -.chroma .mi { color: @mk-cyan; } /* LiteralNumberInteger */ -.chroma .il { color: @mk-cyan; } /* LiteralNumberIntegerLong */ -.chroma .mo { color: @mk-cyan; } /* LiteralNumberOct */ -.chroma .o { color: @mk-red; } /* Operator */ -.chroma .ow { color: @mk-red; } /* OperatorWord */ -.chroma .c { color: @mk-bg2; } /* Comment */ -.chroma .ch { color: @mk-bg2; } /* CommentHashbang */ -.chroma .cm { color: @mk-bg2; } /* CommentMultiline */ -.chroma .c1 { color: @mk-bg2; } /* CommentSingle */ -.chroma .cs { color: lighten(@mk-bg2, 10%); } /* CommentSpecial */ -.chroma .cp { color: lighten(@mk-red, 20%); } /* CommentPreproc */ -.chroma .cpf { color: @mk-yellow; } /* CommentPreprocFile */ - -// TODO: -.chroma .gd { color: #fff; background-color: #5f3737; } /* GenericDeleted */ -.chroma .ge { color: #ef5; } /* GenericEmph */ -.chroma .gr { color: #f33; } /* GenericError */ -.chroma .gh { color: #fa1; } /* GenericHeading */ -.chroma .gi { color: #fff; background-color: #3a523a; } /* GenericInserted */ -.chroma .go { color: #888888; } /* GenericOutput */ -.chroma .gp { color: #555555; } /* GenericPrompt */ -.chroma .gu { color: #9daccc; } /* GenericSubheading */ -.chroma .gt { color: #f63; } /* GenericTraceback */ -.chroma .w { color: #bbbbbb; } /* TextWhitespace */ - -/* @import "../codemirror/dark.less"; */ -// what is this? - -.CodeMirror { - &.cm-s-default, - &.cm-s-paper { - .cm-property { - color: #a0cc75; - } - - .cm-header { - color: #9daccc; - } - - .cm-quote { - color: #009900; - } - - .cm-keyword { - color: #cc8a61; - } - - .cm-atom { - color: #ef5e77; - } - - .cm-number { - color: #ff5656; - } - - .cm-def { - color: #e4e4e4; - } - - .cm-variable-2 { - color: #00bdbf; - } - - .cm-variable-3 { - color: #008855; - } - - .cm-comment { - color: #8e9ab3; - } - - .cm-string { - color: #a77272; - } - - .cm-string-2 { - color: #ff5500; - } - - .cm-meta, - .cm-qualifier { - color: #ffb176; - } - - .cm-builtin { - color: #b7c951; - } - - .cm-bracket { - color: #999977; - } - - .cm-tag { - color: #f1d273; - } - - .cm-attribute { - color: #bfcc70; - } - - .cm-hr { - color: #999999; - } - - .cm-url { - color: #c5cfd0; - } - - .cm-link { - color: #d8c792; - } - - .cm-error { - color: #dbdbeb; - } - } -} - -/* theme */ - -:root { - --is-dark-theme: true; - --color-primary: @primary; - --color-primary-dark-1: lighten(@primary, 10%); - --color-primary-dark-2: lighten(@primary, 15%); - --color-primary-dark-3: lighten(@primary, 20%); - --color-primary-dark-4: lighten(@primary, 25%); - --color-primary-dark-5: lighten(@primary, 40%); - --color-primary-dark-6: lighten(@primary, 60%); - --color-primary-dark-7: lighten(@primary, 80%); - --color-primary-light-1: darken(@primary, 10%); - --color-primary-light-2: darken(@primary, 15%); - --color-primary-light-3: darken(@primary, 20%); - --color-primary-light-4: darken(@primary, 25%); - --color-primary-light-5: darken(@primary, 40%); - --color-primary-light-6: darken(@primary, 60%); - --color-primary-light-7: darken(@primary, 80%); - --color-primary-alpha-10: fade(@primary, 10%); - --color-primary-alpha-20: fade(@primary, 20%); - --color-primary-alpha-30: fade(@primary, 30%); - --color-primary-alpha-40: fade(@primary, 40%); - --color-primary-alpha-50: fade(@primary, 50%); - --color-primary-alpha-60: fade(@primary, 60%); - --color-primary-alpha-70: fade(@primary, 70%); - --color-primary-alpha-80: fade(@primary, 80%); - --color-primary-alpha-90: fade(@primary, 90%); - --color-secondary: #454a57; - --color-secondary-dark-1: #505665; - --color-secondary-dark-2: #5b6273; - --color-secondary-dark-3: #71798e; - --color-secondary-dark-4: #7f8699; - --color-secondary-dark-5: #8c93a4; - --color-secondary-dark-6: #9aa0af; - --color-secondary-dark-7: #a8adba; - --color-secondary-dark-8: #b6bac5; - --color-secondary-dark-9: #c4c7d0; - --color-secondary-dark-10: #d2d4db; - --color-secondary-dark-11: #dfe1e6; - --color-secondary-dark-12: #edeef1; - --color-secondary-dark-13: #fbfbfc; - --color-secondary-light-1: #373b46; - --color-secondary-light-2: #292c34; - --color-secondary-light-3: #1c1e23; - --color-secondary-light-4: #0e0f11; - --color-secondary-alpha-10: #454a5719; - --color-secondary-alpha-20: #454a5733; - --color-secondary-alpha-30: #454a574b; - --color-secondary-alpha-40: #454a5766; - --color-secondary-alpha-50: #454a5780; - --color-secondary-alpha-60: #454a5799; - --color-secondary-alpha-70: #454a57b3; - --color-secondary-alpha-80: #454a57cc; - --color-secondary-alpha-90: #454a57e1; - /* colors */ - --color-red: #db2828; - --color-orange: #f2711c; - --color-yellow: #fbbd08; - --color-olive: #b5cc18; - --color-green: #21ba45; - --color-teal: #00b5ad; - --color-blue: #2185d0; - --color-violet: #6435c9; - --color-purple: #a333c8; - --color-pink: #e03997; - --color-brown: #a5673f; - --color-grey: #767a85; - --color-black: #1e222e; - --color-gold: #a1882b; - --color-white: #ffffff; - - --color-diff-removed-word-bg: @mk-red; - --color-diff-added-word-bg: @mk-green; - --color-diff-removed-row-bg: #3c2626; - --color-diff-moved-row-bg: #818044; - --color-diff-added-row-bg: #283e2d; - --color-diff-removed-row-border: #634343; - --color-diff-moved-row-border: #bcca6f; - --color-diff-added-row-border: #314a37; - --color-diff-inactive: #353846; - - --color-error-border: darken(@mk-error-red, 20%); - --color-error-bg: @mk-bg-dark; - --color-error-text: @mk-error-red; - --color-success-border: darken(@mk-success-green, 20%); - --color-success-bg: @mk-bg-dark; - --color-success-text: @mk-success-green; - --color-warning-border: darken(@mk-orange, 20%); - --color-warning-bg: @mk-bg-dark; - --color-warning-text: @mk-orange; - --color-info-border: darken(@mk-blue, 20%); - --color-info-bg: @mk-bg-dark; - --color-info-text: @mk-blue; - /* target-based colors */ - --color-body: @mk-bg0; - --color-box-header: @mk-bg-dark; - --color-box-body: @mk-bg-dark; - --color-text-dark: lighten(@mk-fg0, 10%); - --color-text: @mk-fg0; - --color-text-light: @mk-fg1; - --color-text-light-2: @mk-fg1; - --color-text-light-3: @mk-fg1; - --color-footer: @mk-bg1; - --color-timeline: #4c525e; - --color-input-text: @mk-fg1; - --color-input-background: @mk-bg-dark; - --color-input-border: @mk-bg1; - --color-input-border-hover: @mk-bg2; - --color-navbar: @mk-bg1; - --color-navbar-transparent: fade(@mk-bg1, 0%); - --color-light: #00000028; - --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled))); - --color-light-border: #ffffff28; - --color-hover: #ffffff10; - --color-active: #ffffff16; - --color-menu: @mk-bg-dark; - --color-card: @mk-bg1; - --color-markup-table-row: lighten(@mk-bg-dark, 5%); - --color-markup-code-block: @mk-bg1; - --color-button: #353846; - --color-code-bg: @mk-bg-dark; - --color-code-sidebar-bg: #2e323e; - --color-shadow: #00000060; - --color-secondary-bg: #2a2e3a; - --color-text-focus: #fff; - --color-expand-button: #3c404d; - --color-placeholder-text: #6a737d; - --color-editor-line-highlight: var(--color-primary-light-5); - --color-project-board-bg: var(--color-secondary-light-2); - --color-caret: var(--color-text); /* should ideally be --color-text-dark, see #15651 */ - --color-reaction-bg: #ffffff12; - --color-reaction-active-bg: var(--color-primary-alpha-40); -} - -::-webkit-calendar-picker-indicator { - filter: invert(.8); -} - -.markup { - & h1, - & h2 { - border-bottom: 1px solid @mk-bg2; - } - - & table { - & tr - { - border-top: 1px solid @mk-bg2; - } - & td, - & th { - border: 1px solid @mk-bg2 !important; - } - } -} - -.ui { - &.card { - background: var(--color-card); - border: 1px solid @mk-bg1; - - & > .content { - border-color: @mk-bg2; - } - - & > .extra { - border-top-color: @mk-bg2; - } - } - - &.dropdown .menu, - &.menu { - background: var(--color-menu); - border: 1px solid @mk-bg1; - } - - &.segment, - &.segments, - &.attached.segment, - &.attached.header { - background: var(--color-box-body); - color: var(--color-text); - border-color: @mk-bg1; - } - - &.repository.list.item:not(:first-child) { - border-top: 1px solid @mk-bg2; - } - - &.divider { - border-bottom-color: @mk-bg2; - } - - &.button { - background-color: @mk-bg1; - } - - &.primary { - &.button, - &.buttons .button { - color: black; - background-color: @primary; - } - - &.button:hover, - &.buttons .button:hover { - color: black; - background-color: lighten(@primary, 15%); - } - } - - &.green { - &.button, - &.buttons .button { - color: black; - background-color: @mk-success-green; - } - - &.button:hover, - &.buttons .button:hover { - color: black; - background-color: lighten(@mk-success-green, 15%); - } - } - - &.blue { - &.button, - &.buttons .button { - color: black; - background-color: @mk-blue; - } - - &.button:hover, - &.buttons .button:hover { - color: black; - background-color: lighten(@mk-blue, 15%); - } - } - - &.red { - &.button, - &.buttons .button { - color: white; - background-color: @mk-error-red; - } - - &.button:hover, - &.buttons .button:hover { - color: white; - background-color: darken(@mk-error-red, 15%); - } - } - - &.basic { - &.primary { - &.button, - &.buttons .button { - color: black !important; - background-color: @primary !important; - box-shadow: inset 0 0 0 1px @primary !important; - } - - &.button:hover, - &.buttons .button:hover { - color: black !important; - background-color: lighten(@primary, 15%) !important; - } - } - - &.green { - &.button, - &.buttons .button { - color: black !important; - background-color: @mk-success-green !important; - box-shadow: inset 0 0 0 1px @mk-success-green !important; - } - - &.button:hover, - &.buttons .button:hover { - color: black !important; - background-color: lighten(@mk-success-green, 15%) !important; - } - } - - &.blue { - &.button, - &.buttons .button { - color: black !important; - background-color: @mk-blue !important; - box-shadow: inset 0 0 0 1px @mk-blue !important; - } - - &.button:hover, - &.buttons .button:hover { - color: black !important; - background-color: lighten(@mk-blue, 15%) !important; - } - } - - &.red { - &.button, - &.buttons .button { - color: white; - background-color: @mk-error-red; - } - - &.button:hover, - &.buttons .button:hover { - color: white; - background-color: darken(@mk-error-red, 15%); - } - } - } -} - -.ui.horizontal.segments > .segment { - background-color: @mk-bg-dark; - border-color: @mk-bg1; -} - -.ui.green.progress .bar { - background-color: #668844; -} - -.ui.progress.success .bar { - background-color: #7b9e57 !important; -} - -.repository { - &.file.list #repo-files-table tr { - background: @mk-bg-dark; - &:hover { - background-color: lighten(@mk-bg-dark, 20%) !important; - } - } - - & .navbar .active.item, - & .navbar .active.item:hover { - border-color: transparent !important; - } - - & .diff-stats li { - border-color: var(--color-secondary); - } - - &.release #release-list { - border-top: 1px solid @mk-bg2; - & > li .detail .dot { - background-color: #505667; - border-color: #383c4a; - } - } - - & .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { - color: #2a2e3a; - } - - &.labels .ui.basic.black.label { - background-color: #bbbbbb !important; - } -} - -.following.bar.light { - background: @mk-bg1; - border-color: var(--color-secondary-alpha-40); -} - -.following.bar .top.menu a.item:hover { - color: #fff; -} - -.feeds .list ul li.private { - background: #353945; -} - -.ui.red.label, -.ui.red.labels .label { - background-color: #7d3434 !important; - border-color: #8a2121 !important; -} - -.ui.yellow.label, -.ui.yellow.labels .label { - border-color: #664d02 !important; - background-color: #936e00 !important; -} - -.ui.accordion .title:not(.ui) { - color: #dbdbdb; -} - -.ui.green.label, -.ui.green.labels .label, -.ui.basic.green.label { - background-color: #2d693b !important; - border-color: #2d693b !important; -} - -.ui.green.labels a.label:hover, -.ui.basic.green.labels a.label:hover, -a.ui.ui.ui.green.label:hover, -a.ui.basic.green.label:hover { - background-color: #3d794b !important; - border-color: #3d794b !important; - color: #fff !important; -} - -// .ui.divider:not(.vertical):not(.horizontal) { -// border-bottom-color: var(--color-secondary); -// border-top-color: transparent; -// } - -.form .help { - color: @mk-fg1; -} - -.ui .text.light.grey { - color: #7f8699 !important; -} - -.ui.form .fields.error .field textarea, -.ui.form .fields.error .field select, -.ui.form .fields.error .field input:not([type]), -.ui.form .fields.error .field input[type="date"], -.ui.form .fields.error .field input[type="datetime-local"], -.ui.form .fields.error .field input[type="email"], -.ui.form .fields.error .field input[type="number"], -.ui.form .fields.error .field input[type="password"], -.ui.form .fields.error .field input[type="search"], -.ui.form .fields.error .field input[type="tel"], -.ui.form .fields.error .field input[type="time"], -.ui.form .fields.error .field input[type="text"], -.ui.form .fields.error .field input[type="file"], -.ui.form .fields.error .field input[type="url"], -.ui.form .field.error textarea, -.ui.form .field.error select, -.ui.form .field.error input:not([type]), -.ui.form .field.error input[type="date"], -.ui.form .field.error input[type="datetime-local"], -.ui.form .field.error input[type="email"], -.ui.form .field.error input[type="number"], -.ui.form .field.error input[type="password"], -.ui.form .field.error input[type="search"], -.ui.form .field.error input[type="tel"], -.ui.form .field.error input[type="time"], -.ui.form .field.error input[type="text"], -.ui.form .field.error input[type="file"], -.ui.form .field.error input[type="url"] { - background-color: @mk-error-red; - border: 1px solid darken(@mk-error-red, 30%); - color: lighten(@mk-error-red, 90%); -} - -.ui.form .field.error select:focus, -.ui.form .field.error input:not([type]):focus, -.ui.form .field.error input[type="date"]:focus, -.ui.form .field.error input[type="datetime-local"]:focus, -.ui.form .field.error input[type="email"]:focus, -.ui.form .field.error input[type="number"]:focus, -.ui.form .field.error input[type="password"]:focus, -.ui.form .field.error input[type="search"]:focus, -.ui.form .field.error input[type="tel"]:focus, -.ui.form .field.error input[type="time"]:focus, -.ui.form .field.error input[type="text"]:focus, -.ui.form .field.error input[type="file"]:focus, -.ui.form .field.error input[type="url"]:focus { - background-color: #522; - border: 1px solid #a04141; - color: #f9cbcb; -} - -.ui.search > .results { - background: @mk-bg-dark; - // border-color: @mk-bg0-dark; -} - -.ui.search > .results .result:hover, -.ui.category.search > .results .category .result:hover { - background: @mk-bg-dark; -} - -.ui.search > .results .result .title { - color: @mk-fg0; -} - -.ui.table { - border-color: @mk-bg1; - - thead > tr > th { - background: @mk-bg-dark; - color: @mk-fg0 !important; - } -} - - -.overflow.menu .items .item { - color: #9d9d9d; -} - -.overflow.menu .items .item:hover { - color: #dbdbdb; -} - -.ui.list > .item > .content { - color: var(--color-secondary-dark-6) !important; -} - - -.tag-code, -.tag-code td { - background: #353945 !important; - -} -.tag-code td.lines-num { - background-color: #3a3e4c !important; -} - -.tag-code td.lines-type-marker, -td.blob-hunk { - color: #dbdbdb !important; -} - -.ui.list .list > .item .header, -.ui.list > .item .header { - color: #dedede; -} - -.ui.list .list > .item .description, -.ui.list > .item .description { - color: var(--color-secondary-dark-6); -} - -.lines-num { - color: var(--color-secondary-dark-6) !important; - border-color: var(--color-secondary) !important; -} - -td.blob-excerpt { - background-color: rgba(0, 0, 0, .15); -} - -.lines-code.active, -.lines-code .active { - background: #534d1b !important; -} - -.ui.ui.ui.ui.table tr.active, -.ui.ui.table td.active { - color: #dbdbdb; -} - -.ui.active.label { - background: #393d4a; - border-color: #393d4a; - color: #dbdbdb; -} - -.ui.header .sub.header { - color: var(--color-secondary-dark-6); -} - -.ui.dividing.header { - border-bottom: 1px solid var(--color-secondary); -} - -.ui.modal > .header { - background: var(--color-secondary); - color: #dbdbdb; -} - -.ui.modal > .actions { - background: var(--color-secondary); - border-color: var(--color-secondary); -} - -.ui.modal > .content { - background: #383c4a; -} - -.minicolors-panel { - background: var(--color-secondary) !important; - border-color: #6a737d !important; -} - -/* 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); -} - -.edit-diff > div > .ui.table { - border-left-color: var(--color-secondary) !important; - border-right-color: var(--color-secondary) !important; -} - -footer .container .links > * { - border-left-color: #888; -} - -.tribute-container { - box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .6); -} - - -img[src$="/img/matrix.svg"] { - filter: invert(80%); -} - -.is-loading::after { - border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; -} - -.markup-block-error { - border: 1px solid rgba(121, 71, 66, .5) !important; - border-bottom: none !important; -} diff --git a/hosts/tsuki/services/grafana/prometheus-exporters/gitea.nix b/hosts/tsuki/services/grafana/prometheus-exporters/gitea.nix deleted file mode 100644 index a0b05a7..0000000 --- a/hosts/tsuki/services/grafana/prometheus-exporters/gitea.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ ... }: -{ - # Gitea already exports at /metrics - services.prometheus.scrapeConfigs = [{ - job_name = "gitea"; - scrape_interval = "15s"; - metrics_path = "/metrics/gitea"; - static_configs = [{ - targets = [ "localhost" ]; - }]; - }]; -} diff --git a/hosts/tsuki/services/grafana/prometheus.nix b/hosts/tsuki/services/grafana/prometheus.nix index 70259e7..cdcc51d 100644 --- a/hosts/tsuki/services/grafana/prometheus.nix +++ b/hosts/tsuki/services/grafana/prometheus.nix @@ -2,7 +2,6 @@ # TODO: Autogenerate port infrastructure imports = [ - ./prometheus-exporters/gitea.nix ./prometheus-exporters/hedgedoc.nix ./prometheus-exporters/matrix-synapse.nix ./prometheus-exporters/minecraft.nix diff --git a/hosts/tsuki/services/nginx/default.nix b/hosts/tsuki/services/nginx/default.nix index f5bf2b7..65fe5bb 100644 --- a/hosts/tsuki/services/nginx/default.nix +++ b/hosts/tsuki/services/nginx/default.nix @@ -43,7 +43,6 @@ in { "atuin".servers."unix:${sa.atuin.newSocketAddress}" = { }; "dynmap".servers."localhost:${s ports.minecraft.dynmap}" = { }; - "gitea".servers."unix:/run/gitea/gitea.sock" = { }; "grafana".servers."unix:/run/grafana/grafana.sock" = { }; "headscale".servers."localhost:${s srv.headscale.port}" = { }; "hedgedoc".servers."unix:${srv.hedgedoc.settings.path}" = { }; @@ -135,7 +134,23 @@ (proxy ["auth"] "https://kanidm" { extraConfig = "proxy_ssl_verify off;"; }) (proxy ["bw"] "http://vaultwarden" {}) (proxy ["docs"] "http://hedgedoc" {}) - (proxy ["git"] "http://gitea" {}) + (host ["git"] { + locations."/".extraConfig = '' + location /h7x4 { + location ~ /h7x4/(?[a-zA-Z0-9\./_-]*) { + return 301 $scheme://git.pvv.ntnu.no/oysteikt/$project; + } + return 301 $scheme://git.pvv.ntnu.no/oysteikt/; + } + location ~ /[Ss]chool[Ww]ork { + location ~ /[Ss]chool[Ww]ork/(?[a-zA-Z0-9\./_-]*) { + return 301 $scheme://git.pvv.ntnu.no/oysteikt-skolearbeid/$project; + } + return 301 $scheme://git.pvv.ntnu.no/oysteikt-skolearbeid/; + } + return 301 $scheme://git.pvv.ntnu.no$request_uri; + ''; + }) (proxy ["idrac"] "https://idrac" {}) (proxy ["log"] "http://grafana" enableWebsockets) (proxy ["map"] "http://dynmap" {}) diff --git a/secrets/default.yaml b/secrets/default.yaml index 3b7e902..74b982b 100644 --- a/secrets/default.yaml +++ b/secrets/default.yaml @@ -20,7 +20,6 @@ drives: nextcloud: initialPassword: ENC[AES256_GCM,data:ROG+4u6C9zBu8Ez3Jprw8cgwVd2gFErUIOBmrWL9o7/qSGPT8jnwd0T5W8E=,iv:uRdL/3Xslu/J/aPI44WxlNw3RLAvjDRPt5VttuQL/P0=,tag:IDmGXNF9PsHPaMqK5YUKIg==,type:str] postgres: - gitea: ENC[AES256_GCM,data:HyYgEgOzeOnaEvPDEXoL+fRhrnqCeGbb/wOYf2kHulxrU9PKIAcRzmNljsc=,iv:1N/N2RUQ++rAWw4VNQzhee2aV9LzOJym6cyM6CAnZUU=,tag:o7dblJrIAPd4/S8X2LKdcQ==,type:str] invidious: ENC[AES256_GCM,data:r/Jzs7U1fkCi2j5L/tOcBfakR3virj8HGrDrVZdP7VwubG4BJLvoeb14eJo=,iv:3plNFOds+HeF0HAliedczpNgPL4ZgqhCOwqbnb2e8Ag=,tag:DHm/KM9UuPiqaRxqNDb7QA==,type:str] nextcloud: ENC[AES256_GCM,data:E1tD6Z2SDbi5TUDAACjXSJJIn+/ySu0+8xhvRVFxumxjex4ZsEw+mofKIxM=,iv:E4iPVF3M8GOoQghVQtn/kCEpXl0b8MueCbtyvzFM8AA=,tag:IF4kWOuTsylqrXMoXzQaVQ==,type:str] headscale: ENC[AES256_GCM,data:UVPCZjcpm9j2dMwyAvrPfwOj84JJHrwoU5rs672FEeA=,iv:zq3J4mL/PB3EAl8LHxxC77Y4FMrZWT4QF+DOih+FIGk=,tag:UwfjKnjfJ3a6RwAWg/8BzQ==,type:str] @@ -69,8 +68,8 @@ sops: cElPYm5qK2lkTWZ1UGd6TU1NV2h4OTgK8Ecv58Ybnc6iYMjtSKTT1fYbNf4yyFgX rjQ2sU8Rqc04MqixnAkF2zSDaaJ0vqwf22MvbO3bYhpqOHwiTMbRLg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-06-09T13:40:50Z" - mac: ENC[AES256_GCM,data:dMMYtUSNPB8wq/HnFYctRhpU4uHbQfA7k/EkP4pGU0RJUfvcnAtU5KCN+WpcWPNN3xBESJ3mjDGlYp2GrdoGPfj/f/+sJd2OdgPDAagb8yRCTBmQyvnv72WCxZTcV4BkBAJJQKSiTIxZ5q/t83LxzgXJ0mQnpDXFEBNf7sLJr84=,iv:Ga9URI5SbT456/LfFAlYlRu+/TAYTC+k/AKKCL2bHMM=,tag:2lqME8FFL5/BK/vN5FA1GA==,type:str] + lastmodified: "2024-06-09T14:08:08Z" + mac: ENC[AES256_GCM,data:78N+7s7fsx8joo5QBwpugJWQ5Qq4nUfUDnR/0GFlv2gO/uzVfx9yEwSXhZZpBTIU65HhHBQjk3LYRWRAdU19zSgm1dd2DNCt15OndaFeTtGit9s39g4ROZEAOUGTA7gFHbdg69owAVckLheTETaYybwVoGSqhcox4scTpXr+4WY=,iv:ZfB6+l/FOWyXginOHDBiPuBwUs32eghA0Wv78XSpotQ=,tag:9jKTrToXS5omlsHw5oSmUQ==,type:str] pgp: - created_at: "2023-05-08T00:49:52Z" enc: |