From 96e9f9de3b9ad7361fa8eeecda401d3c35135868 Mon Sep 17 00:00:00 2001 From: winston Date: Sat, 9 Mar 2024 23:13:13 +0100 Subject: [PATCH] feat: podman->docker, gitlab runner, website shim --- config/secrets/secrets.nix | 1 + .../services/gitlab/runner-registration.age | Bin 0 -> 400 bytes config/services/containers.nix | 46 +----------------- config/services/default.nix | 1 + config/services/gitlab/default.nix | 1 + config/services/gitlab/module.nix | 2 +- config/services/gitlab/runner.nix | 17 +++++++ config/services/website/default.nix | 9 ++++ config/services/website/tailwind.config.js | 5 ++ config/services/website/www/index.html | 29 +++++++++++ config/services/website/www/style.css | 1 + 11 files changed, 66 insertions(+), 46 deletions(-) create mode 100644 config/secrets/services/gitlab/runner-registration.age create mode 100644 config/services/gitlab/runner.nix create mode 100644 config/services/website/default.nix create mode 100644 config/services/website/tailwind.config.js create mode 100644 config/services/website/www/index.html create mode 100644 config/services/website/www/style.css diff --git a/config/secrets/secrets.nix b/config/secrets/secrets.nix index c1f0181..e4c8800 100644 --- a/config/secrets/secrets.nix +++ b/config/secrets/secrets.nix @@ -21,6 +21,7 @@ in { "services/gitlab/otpFile.age".publicKeys = default; "services/gitlab/secretFile.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/password-database.age".publicKeys = default; diff --git a/config/secrets/services/gitlab/runner-registration.age b/config/secrets/services/gitlab/runner-registration.age new file mode 100644 index 0000000000000000000000000000000000000000..78c034dd5d1ae6dc9362a51f7e36d4823f953cec GIT binary patch literal 400 zcmV;B0dM|cXJsvAZewzJaCB*JZZ2$aRa#MDO;R;D>H3YQFKdJdPNF0YIJL2 zMm1${RxwL6VMl0FD`HbOXf|a~WN$S@OL1f}P010!Nl75{tVOv^;*?BeSnX*Xg4W-k$xuH8B;Wo+Z7PAGWiy|X*C(p@|O(IF3XBZ(4=0QTgLjWBP-jw?Q literal 0 HcmV?d00001 diff --git a/config/services/containers.nix b/config/services/containers.nix index 96b81c3..0967ef4 100644 --- a/config/services/containers.nix +++ b/config/services/containers.nix @@ -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"; - }; -} +{} diff --git a/config/services/default.nix b/config/services/default.nix index aaafb24..3cdef05 100644 --- a/config/services/default.nix +++ b/config/services/default.nix @@ -12,5 +12,6 @@ ./nitter ./postgres.nix ./wakapi.nix + ./website ]; } diff --git a/config/services/gitlab/default.nix b/config/services/gitlab/default.nix index 7d99af3..c60367c 100644 --- a/config/services/gitlab/default.nix +++ b/config/services/gitlab/default.nix @@ -3,6 +3,7 @@ ./module.nix ./nginx.nix ./secrets.nix + ./runner.nix ]; services.gitlab = { diff --git a/config/services/gitlab/module.nix b/config/services/gitlab/module.nix index d454dc9..cbf3978 100644 --- a/config/services/gitlab/module.nix +++ b/config/services/gitlab/module.nix @@ -19,5 +19,5 @@ gitlab-workhorse = pkgs.unstable.gitlab-workhorse; pages = pkgs.unstable.gitlab-pages; }; - services.gitlab-runner.package = pkgs.unstable.gitea-actions-runner; + services.gitlab-runner.package = pkgs.unstable.gitlab-runner; } diff --git a/config/services/gitlab/runner.nix b/config/services/gitlab/runner.nix new file mode 100644 index 0000000..10a993a --- /dev/null +++ b/config/services/gitlab/runner.nix @@ -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; +} diff --git a/config/services/website/default.nix b/config/services/website/default.nix new file mode 100644 index 0000000..fbbc5a4 --- /dev/null +++ b/config/services/website/default.nix @@ -0,0 +1,9 @@ +{ + services.nginx.virtualHosts."winston.sh" = { + forceSSL = true; + enableACME = false; + useACMEHost = "winston.sh"; + + locations."/".root = ./www; + }; +} diff --git a/config/services/website/tailwind.config.js b/config/services/website/tailwind.config.js new file mode 100644 index 0000000..64b4550 --- /dev/null +++ b/config/services/website/tailwind.config.js @@ -0,0 +1,5 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["www/*.html"], + dark: "media" +} diff --git a/config/services/website/www/index.html b/config/services/website/www/index.html new file mode 100644 index 0000000..96ae45f --- /dev/null +++ b/config/services/website/www/index.html @@ -0,0 +1,29 @@ + + + + + + winston.sh :: back soon + + + + + +
+

back soon.

+

currently giving this website a new look & some new features.

+ +
+ + + \ No newline at end of file diff --git a/config/services/website/www/style.css b/config/services/website/www/style.css new file mode 100644 index 0000000..0da0572 --- /dev/null +++ b/config/services/website/www/style.css @@ -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}} \ No newline at end of file