Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-07-17 21:49:47 +01:00
parent dca420751a
commit 3a110af1ec
7 changed files with 163 additions and 52 deletions

View File

@@ -9,6 +9,7 @@ in
(import ./gitea { inherit user home; }) (import ./gitea { inherit user home; })
(import ./grafana { inherit user home; }) (import ./grafana { inherit user home; })
(import ./littlelink { inherit user home; }) (import ./littlelink { inherit user home; })
(import ./lore { inherit user home; })
(import ./media { inherit user home; }) (import ./media { inherit user home; })
(import ./nextcloud { inherit user home; }) (import ./nextcloud { inherit user home; })
(import ./ntfy { inherit user home; }) (import ./ntfy { inherit user home; })

View File

@@ -3,7 +3,6 @@
config, config,
inputs, inputs,
lib, lib,
pkgs,
system, system,
... ...
}: }:
@@ -13,63 +12,61 @@ let
inherit (hmConfig.virtualisation.quadlet) networks; inherit (hmConfig.virtualisation.quadlet) networks;
in in
{ {
home-manager.users.${user} = { home-manager.users.${user}.virtualisation.quadlet.containers.littlelink.containerConfig = {
virtualisation.quadlet.containers.littlelink.containerConfig = { image = "docker-archive:${selfPkgs.docker-littlelink-server}";
image = "docker-archive:${selfPkgs.docker-littlelink-server}"; networks = [ networks.traefik.ref ];
networks = [ networks.traefik.ref ]; environments = {
environments = { NAME = "Nikolaos Karaolidis";
NAME = "Nikolaos Karaolidis"; META_TITLE = "Nikolaos Karaolidis";
META_TITLE = "Nikolaos Karaolidis"; META_DESCRIPTION = "Connect with me!";
META_DESCRIPTION = "Connect with me!"; META_AUTHOR = "Nikolaos Karaolidis";
META_AUTHOR = "Nikolaos Karaolidis"; META_INDEX_STATUS = "all";
META_INDEX_STATUS = "all";
LANG = "en"; LANG = "en";
THEME = "Dark"; THEME = "Dark";
OG_TITLE = "Nikolaos Karaolidis"; OG_TITLE = "Nikolaos Karaolidis";
OG_SITE_NAME = "Nikolaos Karaolidis"; OG_SITE_NAME = "Nikolaos Karaolidis";
OG_URL = "https://social.karaolidis.com"; OG_URL = "https://social.karaolidis.com";
OG_IMAGE = "https://cloud.karaolidis.com/s/profile/preview"; OG_IMAGE = "https://cloud.karaolidis.com/s/profile/preview";
OG_IMAGE_WIDTH = "400"; OG_IMAGE_WIDTH = "400";
OG_IMAGE_HEIGHT = "400"; OG_IMAGE_HEIGHT = "400";
FAVICON_URL = "https://cloud.karaolidis.com/s/jupiter-favicon/preview"; FAVICON_URL = "https://cloud.karaolidis.com/s/jupiter-favicon/preview";
AVATAR_URL = "https://cloud.karaolidis.com/s/profile/preview"; AVATAR_URL = "https://cloud.karaolidis.com/s/profile/preview";
AVATAR_2X_URL = "https://cloud.karaolidis.com/s/profile/preview"; AVATAR_2X_URL = "https://cloud.karaolidis.com/s/profile/preview";
AVATAR_ALT = "Nick Karaolidis Profile Picture"; AVATAR_ALT = "Nick Karaolidis Profile Picture";
BUTTON_ORDER = lib.strings.concatStringsSep "," [ BUTTON_ORDER = lib.strings.concatStringsSep "," [
"GHOST" "GHOST"
"EMAIL" "EMAIL"
"LINKED_IN" "LINKED_IN"
"GITEA" "GITEA"
"GITHUB" "GITHUB"
"INSTAGRAM" "INSTAGRAM"
"DISCORD" "DISCORD"
"REDDIT" "REDDIT"
"YOUTUBE" "YOUTUBE"
"STEAM" "STEAM"
];
GHOST = "https://blog.karaolidis.com/";
EMAIL = "nick@karaolidis.com";
EMAIL_TEXT = "E-mail";
LINKED_IN = "https://www.linkedin.com/in/nikolaos-karaolidis";
GITEA = "https://git.karaolidis.com/karaolidis";
GITHUB = "https://github.com/karaolidis";
INSTAGRAM = "https://www.instagram.com/karaolidis";
DISCORD = "https://discord.com/users/Nick%%20Karaolidis#1594";
REDDIT = "https://www.reddit.com/user/Nikas36";
YOUTUBE = "https://www.youtube.com/@karaolidis";
STEAM = "https://steamcommunity.com/profiles/76561198118267119";
};
labels = [
"traefik.enable=true"
"traefik.http.routers.littlelink.rule=Host(`social.karaolidis.com`)"
]; ];
GHOST = "https://blog.karaolidis.com/";
EMAIL = "nick@karaolidis.com";
EMAIL_TEXT = "E-mail";
LINKED_IN = "https://www.linkedin.com/in/nikolaos-karaolidis";
GITEA = "https://git.karaolidis.com/karaolidis";
GITHUB = "https://github.com/karaolidis";
INSTAGRAM = "https://www.instagram.com/karaolidis";
DISCORD = "https://discord.com/users/Nick%%20Karaolidis#1594";
REDDIT = "https://www.reddit.com/user/Nikas36";
YOUTUBE = "https://www.youtube.com/@karaolidis";
STEAM = "https://steamcommunity.com/profiles/76561198118267119";
}; };
labels = [
"traefik.enable=true"
"traefik.http.routers.littlelink.rule=Host(`social.karaolidis.com`)"
];
}; };
} }

View File

@@ -0,0 +1,23 @@
{ user, home }:
{
config,
inputs,
system,
...
}:
let
selfPkgs = inputs.self.packages.${system};
hmConfig = config.home-manager.users.${user};
inherit (hmConfig.virtualisation.quadlet) networks;
in
{
home-manager.users.${user}.virtualisation.quadlet.containers.lore.containerConfig = {
image = "docker-archive:${selfPkgs.docker-nginx}";
networks = [ networks.traefik.ref ];
volumes = [ "${./index.html}:/var/www/nginx/index.html:ro" ];
labels = [
"traefik.enable=true"
"traefik.http.routers.lore.rule=Host(`lore.karaolidis.com`)"
];
};
}

View File

@@ -0,0 +1,23 @@
<!doctype html>
<html>
<head>
<title>Karaolidis Lore</title>
<meta charset="utf-8" />
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
width: 100%;
font-size: 10rem;
margin: 0;
background-color: #f8f8f8;
}
</style>
</head>
<body>
🐌 🪴 🦇 🦐
</body>
</html>

View File

@@ -21,6 +21,7 @@
docker-littlelink-server = import ./docker/littlelink-server { inherit pkgs inputs system; }; docker-littlelink-server = import ./docker/littlelink-server { inherit pkgs inputs system; };
docker-mariadb = import ./docker/mariadb { inherit pkgs; }; docker-mariadb = import ./docker/mariadb { inherit pkgs; };
docker-nextcloud = import ./docker/nextcloud { inherit pkgs; }; docker-nextcloud = import ./docker/nextcloud { inherit pkgs; };
docker-nginx = import ./docker/nginx { inherit pkgs; };
docker-ntfy = import ./docker/ntfy { inherit pkgs; }; docker-ntfy = import ./docker/ntfy { inherit pkgs; };
docker-oidcwarden = import ./docker/oidcwarden { inherit pkgs inputs system; }; docker-oidcwarden = import ./docker/oidcwarden { inherit pkgs inputs system; };
docker-outline = import ./docker/outline { inherit pkgs; }; docker-outline = import ./docker/outline { inherit pkgs; };

View File

@@ -0,0 +1,66 @@
{ pkgs, ... }:
let
nginxConfig = pkgs.writeTextDir "/etc/nginx/nginx.conf" ''
user root;
daemon off;
pid /var/run/nginx.pid;
events { }
http {
include ${pkgs.nginx}/conf/mime.types;
default_type application/octet-stream;
charset utf-8;
access_log off;
error_log /dev/stderr;
server {
listen 80 default_server;
root /var/www/nginx;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}
'';
in
pkgs.dockerTools.buildImage {
name = "nginx";
fromImage = import ../base { inherit pkgs; };
copyToRoot = pkgs.buildEnv {
name = "root";
paths = with pkgs; [
nginxConfig
nginx
];
pathsToLink = [
"/bin"
"/etc"
];
};
runAsRoot = ''
mkdir -p /var/run /var/log/nginx
'';
config = {
Entrypoint = [ "nginx" ];
Cmd = [
"-c"
"/etc/nginx/nginx.conf"
];
WorkingDir = "/var/www/nginx";
Volumes = {
"/var/www/nginx" = { };
};
ExposedPorts = {
"80/tcp" = { };
};
};
}

View File

@@ -21,7 +21,7 @@ let
http { http {
include ${pkgs.nginx}/conf/mime.types; include ${pkgs.nginx}/conf/mime.types;
default_type application/octet-stream; default_type application/octet-stream;
charset utf-8; charset utf-8;