feat: podman->docker, gitlab runner, website shim

This commit is contained in:
winston 2024-03-09 23:13:13 +01:00
parent 974ca2aa73
commit 96e9f9de3b
Signed by: winston
GPG key ID: 3786770EDBC2B481
11 changed files with 66 additions and 46 deletions

View file

@ -21,6 +21,7 @@ in {
"services/gitlab/otpFile.age".publicKeys = default; "services/gitlab/otpFile.age".publicKeys = default;
"services/gitlab/secretFile.age".publicKeys = default; "services/gitlab/secretFile.age".publicKeys = default;
"services/gitlab/initialRootPasswordFile.age".publicKeys = default; "services/gitlab/initialRootPasswordFile.age".publicKeys = default;
"services/gitlab/runner-registration.age".publicKeys = default;
"services/invidious/config.json.age".publicKeys = default; "services/invidious/config.json.age".publicKeys = default;
"services/invidious/password-database.age".publicKeys = default; "services/invidious/password-database.age".publicKeys = default;

Binary file not shown.

View file

@ -1,45 +1 @@
{config, ...}: let {}
ghcrLogin = {
registry = "ghcr.io";
username = "nekowinston";
passwordFile = config.age.secrets."containers/ghcr-token".path;
};
websitePort = "14139";
in {
virtualisation = {
podman = {
enable = true;
autoPrune = {
enable = true;
dates = "03:30";
};
};
oci-containers = {
backend = "podman";
containers = {
faerber-bot = {
image = "ghcr.io/nekowinston/faerber/faerber-discord-bot:latest";
environmentFiles = [config.age.secrets."containers/faerber.env".path];
extraOptions = ["--pull=always"];
};
website = {
image = "ghcr.io/nekowinston/winston.sh/winston-sh:latest";
login = ghcrLogin;
ports = ["127.0.0.1:${websitePort}:3000"];
extraOptions = ["--pull=always"];
};
};
};
};
services.nginx.virtualHosts."winston.sh" = {
locations."/".proxyPass = "http://127.0.0.1:${websitePort}";
forceSSL = true;
enableACME = false;
useACMEHost = "winston.sh";
};
}

View file

@ -12,5 +12,6 @@
./nitter ./nitter
./postgres.nix ./postgres.nix
./wakapi.nix ./wakapi.nix
./website
]; ];
} }

View file

@ -3,6 +3,7 @@
./module.nix ./module.nix
./nginx.nix ./nginx.nix
./secrets.nix ./secrets.nix
./runner.nix
]; ];
services.gitlab = { services.gitlab = {

View file

@ -19,5 +19,5 @@
gitlab-workhorse = pkgs.unstable.gitlab-workhorse; gitlab-workhorse = pkgs.unstable.gitlab-workhorse;
pages = pkgs.unstable.gitlab-pages; pages = pkgs.unstable.gitlab-pages;
}; };
services.gitlab-runner.package = pkgs.unstable.gitea-actions-runner; services.gitlab-runner.package = pkgs.unstable.gitlab-runner;
} }

View file

@ -0,0 +1,17 @@
{config, ...}: let
registrationConfigFile = config.age.secrets."services/gitlab/runner-registration".path;
in {
services.gitlab-runner = {
enable = true;
services = {
docker = {
inherit registrationConfigFile;
dockerImage = "docker:stable";
dockerVolumes = ["/var/run/docker.sock:/var/run/docker.sock"];
tagList = ["docker-images"];
};
};
};
virtualisation.docker.enable = true;
}

View file

@ -0,0 +1,9 @@
{
services.nginx.virtualHosts."winston.sh" = {
forceSSL = true;
enableACME = false;
useACMEHost = "winston.sh";
locations."/".root = ./www;
};
}

View file

@ -0,0 +1,5 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["www/*.html"],
dark: "media"
}

View file

@ -0,0 +1,29 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>winston.sh :: back soon</title>
<link rel="stylesheet" href="style.css">
<meta name="darkreader-lock">
</head>
<body
class="relative flex min-h-screen flex-col justify-center overflow-hidden bg-gray-50 dark:bg-gray-900 text-black dark:text-white py-6 sm:py-12">
<div class="mx-auto max-w-md flex flex-col gap-4">
<h1 class="text-xl font-extrabold">back soon.</h1>
<p>currently giving this website a new look & some new features.</p>
<ul>
<li>Discord: <a class="text-sky-500 hover:text-sky-800 dark:hover:text-sky-300"
href="https://discordapp.com/users/505490445468696576">nekowinston</a></li>
<li>Matrix: <a class="text-sky-500 hover:text-sky-800 dark:hover:text-sky-300"
href="https://matrix.to/#/@nekowinston:matrix.org">@nekowinston:matrix.org</a></li>
<li>GitHub: <a class="text-sky-500 hover:text-sky-800 dark:hover:text-sky-300"
href="https://github.com/nekowinston">nekowinston</a></li>
<li>GitLab: <a class="text-sky-500 hover:text-sky-800 dark:hover:text-sky-300"
href="https://gitlab.winston.sh">gitlab.winston.sh</a></li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
/*! tailwindcss v3.2.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.flex{display:flex}.min-h-screen{min-height:100vh}.max-w-md{max-width:28rem}.flex-col{flex-direction:column}.justify-center{justify-content:center}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-extrabold{font-weight:800}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:py-12{padding-top:3rem;padding-bottom:3rem}}