From 6fb682fdffa3a3ba8b0555b45e465a0e80c40f06 Mon Sep 17 00:00:00 2001 From: DDD <58938832+dandeandean@users.noreply.github.com> Date: Sun, 3 May 2026 10:19:38 -0400 Subject: [PATCH] Hugo (#6) * crazy mess * reset everything * make site new * vibe code some nix --- .github/workflows/static-site.yml | 8 +- .gitignore | 4 +- .gitmodules | 9 +- flake.lock | 78 +++++ flake.nix | 61 ++++ home-page/.gitignore | 2 - home-page/Makefile | 6 - home-page/config.toml | 22 -- home-page/content/_index.md | 10 - home-page/content/blog/_index.md | 8 - home-page/content/blog/about.md | 23 -- home-page/flake.lock | 27 -- home-page/flake.nix | 14 - home-page/static/favicon.ico | 2 - home-page/themes/terminus | 1 - home-page/update-submodules.sh | 8 - site-hugo/.hugo_build.lock | 0 site-hugo/archetypes/default.md | 5 + site-hugo/content/archive.md | 7 + .../content/posts}/k3stailnet.md | 13 +- .../content/posts}/nixos-asahi.md | 14 +- site-hugo/hugo.yaml | 54 ++++ site-hugo/public/404.html | 206 ++++++++++++ site-hugo/public/archives/index.html | 261 +++++++++++++++ ...8e54244bcc0e5481d1d034aadc0c899c51e15c.css | 7 + site-hugo/public/categories/index.html | 212 +++++++++++++ site-hugo/public/categories/index.xml | 11 + site-hugo/public/index.html | 300 ++++++++++++++++++ site-hugo/public/index.json | 1 + site-hugo/public/index.xml | 44 +++ site-hugo/public/page/1/index.html | 9 + site-hugo/public/posts/about/index.html | 233 ++++++++++++++ site-hugo/public/posts/index.html | 257 +++++++++++++++ site-hugo/public/posts/index.xml | 44 +++ site-hugo/public/posts/k3stailnet/index.html | 297 +++++++++++++++++ .../public/posts/my-first-post/index.html | 209 ++++++++++++ site-hugo/public/posts/nixos-asahi/index.html | 291 +++++++++++++++++ site-hugo/public/posts/page/1/index.html | 9 + site-hugo/public/series/index.html | 212 +++++++++++++ site-hugo/public/series/index.xml | 11 + site-hugo/public/sitemap.xml | 25 ++ site-hugo/public/tags/index.html | 212 +++++++++++++ site-hugo/public/tags/index.xml | 11 + site-hugo/themes/PaperMod | 1 + 44 files changed, 3085 insertions(+), 154 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 home-page/.gitignore delete mode 100644 home-page/Makefile delete mode 100644 home-page/config.toml delete mode 100644 home-page/content/_index.md delete mode 100644 home-page/content/blog/_index.md delete mode 100644 home-page/content/blog/about.md delete mode 100644 home-page/flake.lock delete mode 100644 home-page/flake.nix delete mode 100644 home-page/static/favicon.ico delete mode 160000 home-page/themes/terminus delete mode 100755 home-page/update-submodules.sh create mode 100644 site-hugo/.hugo_build.lock create mode 100644 site-hugo/archetypes/default.md create mode 100644 site-hugo/content/archive.md rename {home-page/content/blog => site-hugo/content/posts}/k3stailnet.md (94%) rename {home-page/content/blog => site-hugo/content/posts}/nixos-asahi.md (96%) create mode 100644 site-hugo/hugo.yaml create mode 100644 site-hugo/public/404.html create mode 100644 site-hugo/public/archives/index.html create mode 100644 site-hugo/public/assets/css/stylesheet.a1a1b118b3e83435265dc39da18e54244bcc0e5481d1d034aadc0c899c51e15c.css create mode 100644 site-hugo/public/categories/index.html create mode 100644 site-hugo/public/categories/index.xml create mode 100644 site-hugo/public/index.html create mode 100644 site-hugo/public/index.json create mode 100644 site-hugo/public/index.xml create mode 100644 site-hugo/public/page/1/index.html create mode 100644 site-hugo/public/posts/about/index.html create mode 100644 site-hugo/public/posts/index.html create mode 100644 site-hugo/public/posts/index.xml create mode 100644 site-hugo/public/posts/k3stailnet/index.html create mode 100644 site-hugo/public/posts/my-first-post/index.html create mode 100644 site-hugo/public/posts/nixos-asahi/index.html create mode 100644 site-hugo/public/posts/page/1/index.html create mode 100644 site-hugo/public/series/index.html create mode 100644 site-hugo/public/series/index.xml create mode 100644 site-hugo/public/sitemap.xml create mode 100644 site-hugo/public/tags/index.html create mode 100644 site-hugo/public/tags/index.xml create mode 160000 site-hugo/themes/PaperMod diff --git a/.github/workflows/static-site.yml b/.github/workflows/static-site.yml index 8faa86b..5f4e06d 100644 --- a/.github/workflows/static-site.yml +++ b/.github/workflows/static-site.yml @@ -32,15 +32,11 @@ jobs: - name: Setup Pages uses: actions/configure-pages@v5 - name: Build Site - env: - NIX_SYSTEM: x86_64-linux - run: | - cd home-page - nix develop --command zola build + run: nix build .#default - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: './home-page/public' + path: './result' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index bd3a7c8..49bafb5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -book -.DS_Store +site-hugo/themes +result diff --git a/.gitmodules b/.gitmodules index 4e8f59d..05fca89 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "home-page/themes/terminus"] - path = home-page/themes/terminus - url = https://github.com/ebkalderon/terminus.git -[submodule "home-page/themes/boring"] - path = home-page/themes/boring - url = https://github.com/ssiyad/boring +[submodule "site-hugo/themes/PaperMod"] + path = site-hugo/themes/PaperMod + url = https://github.com/adityatelange/hugo-PaperMod.git diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d6a179e --- /dev/null +++ b/flake.lock @@ -0,0 +1,78 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1777578337, + "narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "15f4ee454b1dce334612fa6843b3e05cf546efab", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "papermod": { + "flake": false, + "locked": { + "lastModified": 1777798062, + "narHash": "sha256-3zq/7hNq9j3NMdPaUkUB9Yhm+aivGa3+dSHhGarUM9M=", + "owner": "adityatelange", + "repo": "hugo-PaperMod", + "rev": "2a980c81da0909619b8c6255324823bd8a4293b5", + "type": "github" + }, + "original": { + "owner": "adityatelange", + "repo": "hugo-PaperMod", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "papermod": "papermod" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..05e93af --- /dev/null +++ b/flake.nix @@ -0,0 +1,61 @@ +{ + description = "Hugo personal site"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + papermod = { + url = "github:adityatelange/hugo-PaperMod"; + flake = false; + }; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + papermod, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + serveScript = pkgs.writeShellScriptBin "hugo-serve" '' + exec ${pkgs.hugo}/bin/hugo server -D + ''; + in + { + devShells.default = pkgs.mkShell { + buildInputs = [ + pkgs.hugo + serveScript + ]; + shellHook = ""; + }; + + packages.default = pkgs.stdenv.mkDerivation { + name = "dan-deandean"; + src = ./.; + buildInputs = [ pkgs.hugo ]; + buildPhase = '' + mkdir -p site-hugo/themes + ln -s ${papermod} site-hugo/themes/PaperMod + cd site-hugo + hugo --minify + ''; + installPhase = '' + cp -r public $out + ''; + }; + + apps.serve = { + type = "app"; + program = "${serveScript}/bin/hugo-serve"; + }; + + apps.default = self.apps.${system}.serve; + } + ); +} diff --git a/home-page/.gitignore b/home-page/.gitignore deleted file mode 100644 index 785dbb3..0000000 --- a/home-page/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -public -static/processed_images/ diff --git a/home-page/Makefile b/home-page/Makefile deleted file mode 100644 index 69e882c..0000000 --- a/home-page/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -ZOLA = zola - -.PHONY: serve - -serve: - $(ZOLA) serve diff --git a/home-page/config.toml b/home-page/config.toml deleted file mode 100644 index 1d553d2..0000000 --- a/home-page/config.toml +++ /dev/null @@ -1,22 +0,0 @@ -# https://github.com/ebkalderon/terminus -theme = "terminus" - -# The URL the site will be built for -base_url = "https://dan.deandean.net" - -# Whether to automatically compile all Sass files in the sass directory -compile_sass = true - -# Whether to build a search index to be used later on by a JavaScript library -build_search_index = true - -title = "DDD" -description = "Hello Hello" - -[markdown] -# Whether to do syntax highlighting -# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola -highlight_code = true - -[extra] -# Put all your custom variables here diff --git a/home-page/content/_index.md b/home-page/content/_index.md deleted file mode 100644 index 6adc4c4..0000000 --- a/home-page/content/_index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "DDD's Blog" -[extra] -framed = true -section_path = "blog/_index.md" -max_posts = 5 -+++ - -# Welcome -I'm a avid tinkerer working as a DevOps Engineer & hope to share some of that in this dev log. diff --git a/home-page/content/blog/_index.md b/home-page/content/blog/_index.md deleted file mode 100644 index 990d827..0000000 --- a/home-page/content/blog/_index.md +++ /dev/null @@ -1,8 +0,0 @@ -+++ -title = "Blog" -description = "Mostly software, books, and lists of three things" -sort_by = "date" -paginate_by = 5 -insert_anchor_links = "right" -+++ - diff --git a/home-page/content/blog/about.md b/home-page/content/blog/about.md deleted file mode 100644 index 4d311b2..0000000 --- a/home-page/content/blog/about.md +++ /dev/null @@ -1,23 +0,0 @@ -+++ -title = "What" -description = "What am I doing here?" -sort_by = "date" -paginate_by = 5 -insert_anchor_links = "right" -date = "2025-12-02" -+++ - -# What? - -Good question. - -I'm hoping to write down some of my thoughts on computers as I white-knuckle it into the future. - -Recently I've been interested in the following: -- Distributed Systems -- Linux, Nix, et al. -- Endurance/Strength Training - -### Terminus -Shout out to [Eyal Kalderon](https://eyalkalderon.com/) for the [Zola](https://github.com/getzola/zola?tab=readme-ov-file) website theme. - diff --git a/home-page/flake.lock b/home-page/flake.lock deleted file mode 100644 index 61cd6e6..0000000 --- a/home-page/flake.lock +++ /dev/null @@ -1,27 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1764950072, - "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f61125a668a320878494449750330ca58b78c557", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/home-page/flake.nix b/home-page/flake.nix deleted file mode 100644 index 59f1261..0000000 --- a/home-page/flake.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - description = "A very basic flake"; - inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; - outputs = { self, nixpkgs }@inputs: - let - # Supported systems for your flake packages, shell, etc. - systems = [ "x86_64-linux" "aarch64-darwin" "aarch64-linux" ]; - forAllSystems = nixpkgs.lib.genAttrs systems; - in { - devShells = forAllSystems (system: - let pkgs = nixpkgs.legacyPackages.${system}; - in { default = pkgs.mkShell { packages = with pkgs; [ zola ]; }; }); - }; -} diff --git a/home-page/static/favicon.ico b/home-page/static/favicon.ico deleted file mode 100644 index 405a68a..0000000 --- a/home-page/static/favicon.ico +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/home-page/themes/terminus b/home-page/themes/terminus deleted file mode 160000 index e9e7f33..0000000 --- a/home-page/themes/terminus +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e9e7f338ff7e035346dbe55d52ce4c5f6f9547ca diff --git a/home-page/update-submodules.sh b/home-page/update-submodules.sh deleted file mode 100755 index c4cacae..0000000 --- a/home-page/update-submodules.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -if [ $(ls $(git rev-parse --show-toplevel)/home-page/themes/terminus) ] ; then - echo "Submodule already there or themes/terminus is populated" -else - echo "installing submodule" - git submodule update --init -fi - diff --git a/site-hugo/.hugo_build.lock b/site-hugo/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/site-hugo/archetypes/default.md b/site-hugo/archetypes/default.md new file mode 100644 index 0000000..0d5eebd --- /dev/null +++ b/site-hugo/archetypes/default.md @@ -0,0 +1,5 @@ +--- +date: '{{ .Date }}' +draft: true +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +--- diff --git a/site-hugo/content/archive.md b/site-hugo/content/archive.md new file mode 100644 index 0000000..640cb4c --- /dev/null +++ b/site-hugo/content/archive.md @@ -0,0 +1,7 @@ +--- +title: "Archive" +layout: "archives" +url: "/archives/" +summary: archives +--- +old and musty diff --git a/home-page/content/blog/k3stailnet.md b/site-hugo/content/posts/k3stailnet.md similarity index 94% rename from home-page/content/blog/k3stailnet.md rename to site-hugo/content/posts/k3stailnet.md index 86aa7b8..825af8c 100644 --- a/home-page/content/blog/k3stailnet.md +++ b/site-hugo/content/posts/k3stailnet.md @@ -1,11 +1,8 @@ -+++ -title = "K3s over Tailnet" -description = "Home Away From Home Lab" -sort_by = "date" -paginate_by = 5 -insert_anchor_links = "right" -date = "2026-03-02" -+++ +--- +date: '2026-03-02T08:59:36-04:00' +draft: true +title: 'K3s over Tailnet' +--- I set my home lab is set up with K3s. This is great, but I'd like to access it from not just inside my dungeon. diff --git a/home-page/content/blog/nixos-asahi.md b/site-hugo/content/posts/nixos-asahi.md similarity index 96% rename from home-page/content/blog/nixos-asahi.md rename to site-hugo/content/posts/nixos-asahi.md index d9aa50f..3f2c422 100644 --- a/home-page/content/blog/nixos-asahi.md +++ b/site-hugo/content/posts/nixos-asahi.md @@ -1,12 +1,8 @@ -+++ -title = "NixOS on Asahi" -description = "Normal MacBook" -sort_by = "date" -paginate_by = 5 -insert_anchor_links = "right" -date = "2026-01-11" -+++ - +--- +date: '2026-01-11T08:59:36-04:00' +draft: true +title: 'NixOS on Asahi' +--- I ran out of space on my 2020 Macbook Pro M1. I'm not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. diff --git a/site-hugo/hugo.yaml b/site-hugo/hugo.yaml new file mode 100644 index 0000000..c1508eb --- /dev/null +++ b/site-hugo/hugo.yaml @@ -0,0 +1,54 @@ +baseURL: https://dan.deandean.net/ +locale: en-us +title: Dan Dean +theme: ["PaperMod"] +params: + profileMode: + enabled: false + title: "Dan Dean" + subtitle: "Cloud Native Engineer" + imageUrl: "https://media.licdn.com/dms/image/v2/D4E03AQFYXobeC7jrCw/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1725187214049?e=1779321600&v=beta&t=SXTN5rtmW432hLXZzm6vV9qDfh0CDr7TOFkz9kaGdqo" # optional + imageTitle: "Handsom (or so his mother tells him) man leaning against a railing dressed in his best green crewneck" + imageWidth: 120 + imageHeight: 120 + buttons: + - name: Blog + url: "/posts" + homeInfoParams: + enabled: true + Title: Wait a Minute, Who Are You? + Content: | + Good Question; fair and concise... I'm Dan Dean. + + I'm working as a DevOps engineer, but I joke that a more accurate + title would be DevSecRelFinOps Engineer & SRE (I bill by the syllable). + My team and I solve all of the behind-the-scenes, cloud-native issues that we + face at our company to keep the applications running securly and reliably in the cloud. + In my free time I enjoy learning new technologies. + Sometimes I write about my findings in my blog. + + socialIcons: + - name: Github + url: "https://github.com/dandeandean" + - name: LinkedIn + url: "https://www.linkedin.com/in/daniel-dean-888b231b1/" + - name: Resume + url: "https://github.com/dandeandean" +languages: + en: + languageName: "English" + weight: 1 + taxonomies: + category: categories + tag: tags + series: series + menu: + main: + - name: Archive + url: archives + weight: 5 + - name: Posts + url: posts + weight: 10 + - name: Source + url: https://github.com/dandeandean/dandeandean.github.io diff --git a/site-hugo/public/404.html b/site-hugo/public/404.html new file mode 100644 index 0000000..2c449ef --- /dev/null +++ b/site-hugo/public/404.html @@ -0,0 +1,206 @@ + + + + + + + +404 Page not found | Dan Dean + + + + + + + + + + + + + + + + + +
+ +
+
+
404
+
+ + + + + + + + + + diff --git a/site-hugo/public/archives/index.html b/site-hugo/public/archives/index.html new file mode 100644 index 0000000..7f0aa76 --- /dev/null +++ b/site-hugo/public/archives/index.html @@ -0,0 +1,261 @@ + + + + + + + +Archive | Dan Dean + + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+

+ 2026 +  2 +

+
+

+ March +  1 +

+
+
+

K3s over Tailnet + + + + + +

+
+ +March 2, 2026
+ +
+
+
+
+

+ January +  1 +

+
+
+

NixOS on Asahi + + + + + +

+
+ +January 11, 2026
+ +
+
+
+
+
+ + + + + + + + + + diff --git a/site-hugo/public/assets/css/stylesheet.a1a1b118b3e83435265dc39da18e54244bcc0e5481d1d034aadc0c899c51e15c.css b/site-hugo/public/assets/css/stylesheet.a1a1b118b3e83435265dc39da18e54244bcc0e5481d1d034aadc0c899c51e15c.css new file mode 100644 index 0000000..e86c489 --- /dev/null +++ b/site-hugo/public/assets/css/stylesheet.a1a1b118b3e83435265dc39da18e54244bcc0e5481d1d034aadc0c899c51e15c.css @@ -0,0 +1,7 @@ +/* + PaperMod v8+ + License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE + Copyright (c) 2020 nanxiaobei and adityatelange + Copyright (c) 2021-2026 adityatelange +*/ +:root{--gap:24px;--content-gap:20px;--nav-width:1024px;--main-width:720px;--header-height:60px;--footer-height:60px;--radius:8px;--theme:rgb(255, 255, 255);--entry:rgb(255, 255, 255);--primary:rgb(30, 30, 30);--secondary:rgb(108, 108, 108);--tertiary:rgb(214, 214, 214);--content:rgb(31, 31, 31);--code-block-bg:rgb(28, 29, 33);--code-bg:rgb(245, 245, 245);--border:rgb(238, 238, 238);color-scheme:light}:root[data-theme=dark]{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--code-bg)}[data-theme=dark] .list{background:var(--theme)}*,::after,::before{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-y:scroll;-webkit-text-size-adjust:100%;text-size-adjust:100%}a,button,body,h1,h2,h3,h4,h5,h6{color:var(--primary)}body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:18px;line-height:1.6;word-break:break-word;background:var(--theme)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section,table{display:block}h1,h2,h3,h4,h5,h6{line-height:1.2}h1,h2,h3,h4,h5,h6,p{margin-top:0;margin-bottom:0}ul{padding:0}a{text-decoration:none}body,figure,ul{margin:0}table{width:100%;border-collapse:collapse;border-spacing:0;overflow-x:auto;word-break:keep-all}button,input,textarea{padding:0;font:inherit;background:0 0;border:0}input,textarea{outline:0}button,input[type=button],input[type=submit]{cursor:pointer}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 50px var(--theme)inset}img{display:block;max-width:100%}.not-found{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:center;height:80%;font-size:160px;font-weight:700}.archive-posts{width:100%;font-size:16px}.archive-year{margin-top:40px}.archive-year:not(:last-of-type){border-bottom:2px solid var(--border)}.archive-month{display:flex;align-items:flex-start;padding:10px 0}.archive-month-header{margin:25px 0;width:200px}.archive-month:not(:last-of-type){border-bottom:1px solid var(--border)}.archive-entry{position:relative;padding:5px;margin:10px 0}.archive-entry-title{margin:5px 0;font-weight:400}.archive-count,.archive-meta{color:var(--secondary);font-size:14px}.footer,.top-link{font-size:12px;color:var(--secondary)}.footer{max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:calc((var(--footer-height) - var(--gap))/2)var(--gap);text-align:center;line-height:24px}.footer span{margin-inline-start:1px;margin-inline-end:1px}.footer span:last-child{white-space:nowrap}.footer a{color:inherit;text-underline-offset:.25rem;text-decoration:underline}.top-link{position:fixed;bottom:4rem;right:2rem;z-index:99;background:var(--tertiary);width:2.5rem;height:2.5rem;padding:10px;border-radius:64px;transition:visibility .3s,opacity .3s cubic-bezier(.4,0,1,1)}.hidden{visibility:hidden;opacity:0}.top-link,.top-link svg{filter:drop-shadow(0 0 0 var(--theme))}.footer a:hover,.top-link:hover{color:var(--primary)}.header-nav{display:flex;flex-wrap:wrap;justify-content:space-between;max-width:calc(var(--nav-width) + var(--gap) * 2);margin:auto;line-height:var(--header-height);padding:0 var(--gap);column-gap:var(--gap)}.header-nav a{display:block}.logo,.menu{display:flex}.logo{align-items:center;column-gap:.55rem;flex-wrap:wrap}.logo a{font-size:24px;font-weight:700;display:flex;align-items:center;column-gap:.55rem}.logo a img,.logo a svg{pointer-events:none;border-radius:6px}.theme-toggle{padding:0 .4rem}[data-theme=dark] .moon{display:none}[data-theme=light] .sun{display:none}.logo-switches{display:inline-flex;gap:.4rem;align-items:inherit;min-height:stretch;flex-wrap:inherit}.logo-switches>*{min-height:inherit;align-items:center;display:inline-flex}.nav-sep{color:var(--secondary)}.lang-menu *{display:inherit;min-height:inherit;align-items:inherit}.lang-menu a{font-size:1rem;font-weight:500;padding:0 .4rem;display:inline-flex}.menu{list-style:none;word-break:keep-all;overflow-x:auto;white-space:nowrap;column-gap:var(--gap)}.menu a{font-size:16px}.menu .active{font-weight:500;text-decoration:underline;text-underline-offset:.3rem;text-decoration-thickness:2px}.main{position:relative;min-height:calc(100vh - var(--header-height) - var(--footer-height));max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:var(--gap)}.page-header h1{font-size:40px}.pagination{display:flex}.pagination a{color:var(--theme);font-size:13px;line-height:36px;background:var(--primary);border-radius:calc(36px/2);padding:0 16px}.pagination .next{margin-inline-start:auto}.social-icons a{display:inline-flex;padding:10px}.social-icons a svg{height:26px;width:26px}code{direction:ltr}div.highlight,pre{position:relative}.copy-code{display:none;position:absolute;top:4px;right:4px;color:rgba(255,255,255,.8);background:rgba(78,78,78,.8);border-radius:var(--radius);padding:0 5px;font-size:14px;user-select:none}div.highlight:hover .copy-code,pre:hover .copy-code{display:block}.md-content h3,.md-content h4,.md-content h5,.md-content h6{margin:24px 0 16px}.md-content h1{margin:40px auto 32px;font-size:40px}.md-content h2{margin:32px auto 24px;font-size:32px}.md-content h3{font-size:24px}.md-content h4{font-size:16px}.md-content h5{font-size:14px}.md-content h6{font-size:12px}.md-content a:not(.anchor){text-underline-offset:.3rem;text-decoration:underline}.md-content del{text-decoration:line-through}.md-content dl:not(:last-child),.md-content ol:not(:last-child),.md-content p:not(:last-child),.md-content figure:not(:last-child),.md-content ul:not(:last-child){margin-bottom:var(--content-gap)}.md-content ol,.md-content ul{padding-inline-start:1.25rem}.md-content li{margin-top:.3rem}.md-content li p{margin-bottom:0}.md-content dl{display:flex;flex-wrap:wrap;margin:0}.md-content dt{width:25%;font-weight:700}.md-content dd{width:75%;margin-inline-start:0;padding-inline-start:10px}.md-content dd~dd,.md-content dt~dt{margin-top:10px}.md-content table{margin-bottom:var(--content-gap)}.md-content table th,.md-content table:not(.highlighttable,.highlight table,.gist .highlight) td{min-width:80px;padding:6px 13px;line-height:1.5;border:1px solid var(--border)}.md-content table th{text-align:start}.md-content table:not(.highlighttable) td code:only-child{margin:auto 0}.md-content .highlight table{border-radius:var(--radius)}.md-content .highlight:not(table){margin-bottom:var(--content-gap);background:var(--code-block-bg)!important;border-radius:var(--radius);direction:ltr}.md-content li>.highlight{margin-inline-end:0}.md-content ul pre{margin-inline-start:calc(var(--gap) * -2)}.md-content .highlight pre{margin:0}.md-content .highlighttable{table-layout:fixed}.md-content .highlighttable td:first-child{width:40px}.md-content .highlighttable td .linenodiv{padding-inline-end:0!important}.md-content .highlighttable td .highlight,.md-content .highlighttable td .linenodiv pre{margin-bottom:0}.post-content code{padding:.2rem .3rem;font-size:.78em;line-height:1.5;background:var(--code-bg);border-radius:.2rem}.md-content pre code{display:grid;margin:auto 0;padding:10px;color:#d5d5d6;background:var(--code-block-bg)!important;border-radius:var(--radius);overflow-x:auto;word-break:break-all}.md-content blockquote{margin:1rem 0;padding-inline-start:1rem;border-inline-start:.3rem solid var(--content)}.md-content hr{margin:30px 0;height:2px;background:var(--tertiary);border:0}.md-content iframe{max-width:100%}.md-content img{border-radius:var(--radius);margin:1rem 0}.md-content img[src*="#center"]{margin:1rem auto}.md-content figure.align-center{text-align:center}.md-content figure>figcaption{color:var(--primary);font-size:16px;font-weight:700;margin:8px 0 16px}.md-content figure>figcaption>p{color:var(--secondary);font-size:14px;font-weight:400}.md-content h1:hover .anchor,.md-content h2:hover .anchor,.md-content h3:hover .anchor,.md-content h4:hover .anchor,.md-content h5:hover .anchor,.md-content h6:hover .anchor{display:inline-flex;color:var(--secondary);margin-inline-start:.5em;font-weight:500;user-select:none}.anchor:hover{color:var(--content)!important}.md-content img.in-text{display:inline;margin:auto}mark{border-radius:2px;padding:0 2px}audio{display:block;width:100%;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;height:2.5rem;margin-bottom:var(--content-gap)}audio::-webkit-media-controls-enclosure{border-radius:0}video{border:1px solid var(--code-bg);border-radius:var(--radius);max-width:100%}.first-entry{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:320px;margin:var(--gap)0 calc(var(--gap) * 2)}.first-entry .entry-header{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.first-entry .entry-header h1{font-size:34px;line-height:1.3}.first-entry .entry-header h2{font-size:40px}.first-entry .entry-content{margin:14px 0;font-size:16px;-webkit-line-clamp:3}.first-entry .entry-footer{font-size:14px}.home-info .entry-content{--content-gap:0.5rem;-webkit-line-clamp:unset;margin:0}.home-info .social-icons a:first-of-type{padding-inline-start:0}.post-entry{position:relative;margin-bottom:var(--gap);padding:var(--gap);background:var(--entry);border-radius:var(--radius);transition:transform .25s ease;border:1px solid var(--border)}.post-entry:hover,.post-entry:focus-within{transform:translateY(-2px);border-color:var(--tertiary)}.tag-entry .entry-cover{display:none}.entry-header h2{font-size:24px;line-height:1.3}.entry-content{margin:8px 0;color:var(--secondary);font-size:14px;line-height:1.6;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.home-info .entry-content p{margin-block-start:1em;margin-block-end:1em}.entry-footer{color:var(--secondary);font-size:13px}.entry-link{position:absolute;left:0;right:0;top:0;bottom:0;border-radius:var(--radius)}.entry-hint{color:var(--secondary)}.entry-hint-parent{display:flex;justify-content:space-between}.entry-cover{font-size:14px;margin-bottom:var(--gap);text-align:center;display:flex;flex-direction:column;gap:.5rem}.entry-cover img{border-radius:var(--radius);width:100%;height:auto}.entry-cover a{text-underline-offset:.3rem;text-decoration:underline}.page-header,.post-header{margin:24px auto var(--content-gap)}.post-title{font-size:40px}.post-description{margin-top:10px}.post-meta{margin-top:5px}.post-meta,.breadcrumbs{color:var(--secondary);font-size:14px}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem}.breadcrumbs a{font-size:16px}.breadcrumbs svg{height:1em}.i18n_list{display:inline-flex}.post-meta .i18n_list li{list-style:none;margin:auto 3px}.post-meta a,.toc a:hover{text-underline-offset:.3rem;text-decoration:underline}.post-meta a{color:var(--secondary);text-decoration-style:dotted}details.toc{margin-bottom:var(--content-gap);background:var(--code-bg);border-radius:var(--radius);border:1px solid var(--border)}[data-theme=dark] details.toc{background:var(--entry)}details.toc summary{padding:.5rem 1.2rem;border-radius:var(--radius)}details summary{cursor:pointer;display:list-item;width:100%;margin-inline-start:0;user-select:none}details .title{display:inline;font-weight:500;margin-inline-start:.2rem}details{interpolate-size:allow-keywords}details::details-content{height:0;opacity:0;overflow:clip;transition:height 150ms ease,opacity 150ms ease,content-visibility 150ms allow-discrete}details[open]::details-content{height:auto;opacity:1}details .inner{margin:0 2.4rem;padding-bottom:.6rem}details li ul{margin-inline-start:var(--gap)}.post-content{color:var(--content);margin:30px 0}.post-footer{margin-top:var(--content-gap)}.post-footer>*{margin-bottom:10px}.post-tags{display:flex;flex-wrap:wrap;gap:10px}.post-tags li{display:inline-block}.post-tags a,.share-buttons,.paginav{border-radius:var(--radius);background:var(--code-bg);border:1px solid var(--border)}.post-tags a{display:block;padding:0 14px;color:var(--secondary);font-size:14px;line-height:34px;background:var(--code-bg)}.post-tags a:hover,.paginav a:hover{background:var(--border)}.share-buttons{padding:10px;display:flex;justify-content:center;overflow-x:auto;gap:10px}.share-buttons li,.share-buttons a{display:inline-flex}.share-buttons a:not(:last-of-type){margin-inline-end:12px}.paginav{display:flex;line-height:1.2}.paginav .title{letter-spacing:1px;text-transform:uppercase;font-size:.8rem;color:var(--secondary)}.paginav a{width:50%;display:flex;flex-direction:column;gap:.5rem;padding:.8rem;border-radius:var(--radius)}.paginav span:hover:not(.title){text-underline-offset:.2rem;text-decoration:underline}.paginav .next{margin-inline-start:auto;text-align:right}[dir=rtl] .paginav .next{text-align:left}h1>a>svg{display:inline}.buttons,.main .profile{display:flex;justify-content:center}.main .profile{align-items:center;min-height:calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));text-align:center}.profile .profile_inner{display:flex;flex-direction:column;align-items:center;gap:1rem}.profile img{border-radius:50%}.buttons{flex-wrap:wrap;max-width:400px;gap:1rem}.button{background:var(--tertiary);border-radius:var(--radius);padding:.4rem .8rem}.searchbox input{padding:4px 10px;width:100%;color:var(--primary);font-weight:700;border:2px solid var(--tertiary);border-radius:var(--radius)}.searchResults li{list-style:none;border-radius:var(--radius);padding:10px 15px;position:relative;font-weight:500;display:flex;align-items:center;justify-content:space-between;background:var(--entry);transition:transform .25s ease;border:1px solid var(--border)}.searchResults{margin:var(--content-gap)0;width:100%;display:flex;flex-direction:column;gap:10px}.searchResults li:hover,.searchResults li:focus-within{transform:translateY(-2px);border-color:var(--tertiary)}.searchResults li .entry-link:focus{outline:2px solid var(--secondary);outline-offset:-2px}.terms-tags{display:flex;flex-wrap:wrap;gap:1em;margin-top:var(--content-gap)}.terms-tags li{display:inline-block;font-weight:500}.terms-tags a{display:block;padding:4px 10px;background:var(--tertiary);border-radius:var(--radius);transition:transform .1s}.bg{color:#cad3f5;background-color:#24273a}.chroma{color:#cad3f5;background-color:#24273a}.chroma .err{color:#ed8796}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#474733}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .line{display:flex}.chroma .k{color:#c6a0f6}.chroma .kc{color:#f5a97f}.chroma .kd{color:#ed8796}.chroma .kn{color:#8bd5ca}.chroma .kp{color:#c6a0f6}.chroma .kr{color:#c6a0f6}.chroma .kt{color:#ed8796}.chroma .na{color:#8aadf4}.chroma .nb{color:#91d7e3}.chroma .bp{color:#91d7e3}.chroma .nc{color:#eed49f}.chroma .no{color:#eed49f}.chroma .nd{color:#8aadf4;font-weight:700}.chroma .ni{color:#8bd5ca}.chroma .ne{color:#f5a97f}.chroma .nf{color:#8aadf4}.chroma .fm{color:#8aadf4}.chroma .nl{color:#91d7e3}.chroma .nn{color:#f5a97f}.chroma .py{color:#f5a97f}.chroma .nt{color:#c6a0f6}.chroma .nv{color:#f4dbd6}.chroma .vc{color:#f4dbd6}.chroma .vg{color:#f4dbd6}.chroma .vi{color:#f4dbd6}.chroma .vm{color:#f4dbd6}.chroma .s{color:#a6da95}.chroma .sa{color:#ed8796}.chroma .sb{color:#a6da95}.chroma .sc{color:#a6da95}.chroma .dl{color:#8aadf4}.chroma .sd{color:#6e738d}.chroma .s2{color:#a6da95}.chroma .se{color:#8aadf4}.chroma .sh{color:#6e738d}.chroma .si{color:#a6da95}.chroma .sx{color:#a6da95}.chroma .sr{color:#8bd5ca}.chroma .s1{color:#a6da95}.chroma .ss{color:#a6da95}.chroma .m{color:#f5a97f}.chroma .mb{color:#f5a97f}.chroma .mf{color:#f5a97f}.chroma .mh{color:#f5a97f}.chroma .mi{color:#f5a97f}.chroma .il{color:#f5a97f}.chroma .mo{color:#f5a97f}.chroma .o{color:#91d7e3;font-weight:700}.chroma .ow{color:#91d7e3;font-weight:700}.chroma .c{color:#6e738d;font-style:italic}.chroma .ch{color:#6e738d;font-style:italic}.chroma .cm{color:#6e738d;font-style:italic}.chroma .c1{color:#6e738d;font-style:italic}.chroma .cs{color:#6e738d;font-style:italic}.chroma .cp{color:#6e738d;font-style:italic}.chroma .cpf{color:#6e738d;font-weight:700;font-style:italic}.chroma .gd{color:#ed8796;background-color:#363a4f}.chroma .ge{font-style:italic}.chroma .gr{color:#ed8796}.chroma .gh{color:#f5a97f;font-weight:700}.chroma .gi{color:#a6da95;background-color:#363a4f}.chroma .gs{font-weight:700}.chroma .gu{color:#f5a97f;font-weight:700}.chroma .gt{color:#ed8796}.chroma .gl{text-decoration:underline}.chroma{background-color:unset!important}.chroma .hl{display:flex}.chroma .lnt{padding:0 0 0 12px}.highlight pre.chroma code{padding:8px 0}.highlight pre.chroma .line .cl,.chroma .ln{padding:0 10px}.chroma .lntd:last-of-type{width:100%}@media screen and (max-width:768px){:root{--gap:14px}.profile img{transform:scale(.85)}.first-entry{min-height:260px}.archive-month{flex-direction:column}.archive-year{margin-top:20px}.footer{padding:calc((var(--footer-height) - var(--gap) - 10px)/2)var(--gap)}}@media screen and (max-width:900px){.list .top-link{transform:translateY(-5rem)}}@media screen and (max-width:340px){.share-buttons{justify-content:unset}}@media(prefers-reduced-motion){.terms-tags a:active,.button:active,.post-entry:active,.top-link,.searchResults .focus,.searchResults li:active{transform:none}} \ No newline at end of file diff --git a/site-hugo/public/categories/index.html b/site-hugo/public/categories/index.html new file mode 100644 index 0000000..326ffbc --- /dev/null +++ b/site-hugo/public/categories/index.html @@ -0,0 +1,212 @@ + + + + + + + +Categories | Dan Dean + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ + + + + + + + + + diff --git a/site-hugo/public/categories/index.xml b/site-hugo/public/categories/index.xml new file mode 100644 index 0000000..5d02879 --- /dev/null +++ b/site-hugo/public/categories/index.xml @@ -0,0 +1,11 @@ + + + + Categories on Dan Dean + http://localhost:1313/categories/ + Recent content in Categories on Dan Dean + Hugo + en-us + + + diff --git a/site-hugo/public/index.html b/site-hugo/public/index.html new file mode 100644 index 0000000..d747d34 --- /dev/null +++ b/site-hugo/public/index.html @@ -0,0 +1,300 @@ + + + + + + + + +Dan Dean + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

Wait a Minute, Who Are You?

+
+
+ +

Good Question; fair and concise… I’m Dan Dean.

+

I’m working as a DevOps engineer, but I joke that a more accurate +title would be DevSecRelFinOps Engineer & SRE (I bill by the syllable). +My team and I solve all of the behind-the-scenes, cloud-native issues that we +face at our company to keep the applications running securly and reliably in the cloud. +In my free time I enjoy learning new technologies. +Sometimes I write about my findings in my blog.

+ +
+ +
+ +
+
+

K3s over Tailnet + + + + + +

+
+
+

I set my home lab is set up with K3s. This is great, but I’d like to access it from not just inside my dungeon. +To make this happen, I set up the network with Tailscale. With a NixOS, this is dirt-simple: +{ lib, config, ... }: { options = { tailscale.enable = lib.mkEnableOption "Enable Tailscale"; }; config = { services.tailscale.enable = config.tailscale.enable; }; } I added the Tailnet IP to the ~/.kube/config. +apiVersion: v1 clusters: - cluster: server: https://<Tailnet IP>:6443 name: default kubectl get nodes… +...

+
+
+ +March 2, 2026
+ +
+ +
+
+

NixOS on Asahi + + + + + +

+
+
+

I ran out of space on my 2020 Macbook Pro M1. I’m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. And if I was factory resetting it, I might as well boot it with Linux. +I spent some time (less than a week) on the Asahi Fedora Remix. Before this, I was using Nix Darwin, but Nix isn’t available on Fedora. +...

+
+
+ +January 11, 2026
+ +
+
+ + + + + + + + + + diff --git a/site-hugo/public/index.json b/site-hugo/public/index.json new file mode 100644 index 0000000..5a49048 --- /dev/null +++ b/site-hugo/public/index.json @@ -0,0 +1 @@ +[{"content":"I set my home lab is set up with K3s. This is great, but I\u0026rsquo;d like to access it from not just inside my dungeon.\nTo make this happen, I set up the network with Tailscale. With a NixOS, this is dirt-simple:\n{ lib, config, ... }: { options = { tailscale.enable = lib.mkEnableOption \u0026#34;Enable Tailscale\u0026#34;; }; config = { services.tailscale.enable = config.tailscale.enable; }; } I added the Tailnet IP to the ~/.kube/config.\napiVersion: v1 clusters: - cluster: server: https://\u0026lt;Tailnet IP\u0026gt;:6443 name: default kubectl get nodes\u0026hellip;\nUnable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for \u0026lt;Internal IP\u0026gt; not \u0026lt;Tailnet IP\u0026gt; D: Lets make sure we can actually reach the nodes over the Tailnet\u0026hellip;\n$ k get nodes --insecure-skip-tls-verify NAME STATUS ROLES AGE VERSION leonardo Ready \u0026lt;none\u0026gt; 9d v1.34.1+k3s1 raphael Ready \u0026lt;none\u0026gt; 20d v1.32.4+k3s1 splinter Ready control-plane,etcd,master 95d v1.32.7+k3s1 Yeah seems like we can.\nAfter a bit more reading, it looks like we need to rotate the cert for the new IP Luckily there\u0026rsquo;s nothing important running on this cluster!\nLet\u0026rsquo;s just restart the master node\u0026hellip; And nothing.\nAfter a bit more digging, this issue looks promising Remote Kubectl\nWe need to edit the k3s-serving secret in the kube-system to include the new Tailnet IP of the master node.\nkind: Secret metadata: annotations: listener.cattle.io/cn-\u0026lt;Internal IP\u0026gt;: 10.0.0.10 listener.cattle.io/cn-\u0026lt;Tailnet IP\u0026gt;: 10.43.0.1 After modifying the cluster secret and k3s regenerate certificates, we are back in business.\n$ k get nodes NAME STATUS ROLES AGE VERSION donatello Ready \u0026lt;none\u0026gt; 8d v1.32.4+k3s1 leonardo Ready \u0026lt;none\u0026gt; 30d v1.34.1+k3s1 raphael Ready \u0026lt;none\u0026gt; 41d v1.32.4+k3s1 splinter Ready control-plane,etcd,master 116d v1.32.7+k3s1 Future Me Is this reproducible? Probably not. Since the certs are already generated for the master node, I didn\u0026rsquo;t feel like going through the exercise of completely bootstrapping the cluster again to test a reproducible setup with the new IP. To test this, we could add the following to the cluster settings.\nif config.isK3sNode.isServer then [ \u0026#34;-tls-san=${hostTailIP}\u0026#34; ] else [ ]; ","permalink":"http://localhost:1313/posts/k3stailnet/","summary":"\u003cp\u003eI set my home lab is set up with K3s.\nThis is great, but I\u0026rsquo;d like to access it from not just inside my dungeon.\u003c/p\u003e\n\u003cp\u003eTo make this happen, I set up the network with \u003ca href=\"https://tailscale.com/\"\u003eTailscale\u003c/a\u003e.\nWith a NixOS, this is dirt-simple:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-nix\" data-lang=\"nix\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{ lib\u003cspan style=\"color:#f92672\"\u003e,\u003c/span\u003e config\u003cspan style=\"color:#f92672\"\u003e,\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e...\u003c/span\u003e }: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e options \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e { tailscale\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eenable \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e lib\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003emkEnableOption \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Enable Tailscale\u0026#34;\u003c/span\u003e; };\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e config \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e { services\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003etailscale\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eenable \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e config\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003etailscale\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eenable; };\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eI added the Tailnet IP to the \u003ccode\u003e~/.kube/config\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eapiVersion\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003ev1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eclusters\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e- \u003cspan style=\"color:#f92672\"\u003ecluster\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#f92672\"\u003eserver\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003ehttps://\u0026lt;Tailnet IP\u0026gt;:6443\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e \u003cspan style=\"color:#f92672\"\u003ename\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003edefault\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003ekubectl get nodes\u003c/code\u003e\u0026hellip;\u003c/p\u003e","title":"K3s over Tailnet"},{"content":"I ran out of space on my 2020 Macbook Pro M1. I\u0026rsquo;m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. And if I was factory resetting it, I might as well boot it with Linux.\nI spent some time (less than a week) on the Asahi Fedora Remix. Before this, I was using Nix Darwin, but Nix isn\u0026rsquo;t available on Fedora.\nThe folks in the nix community put together some solid documention about booting NixOS on Apple Silicon. I figured it was worth a shot.\nInstallation The only significant change that I made was the initial install. Since I had already installed Fedora, I figured I could just install NixOS right onto that disk partition.\nI built the ISO from scratch, made some configuration changes as per the nixos-apple-silicon docs, \u0026amp; installing the OS went sideways\u0026hellip;\nPower outage During the initial install, my machine died. Forgot to plug it in. Luckily, all of the changes were already written to disk, so I could just install from the /etc/nixos/configuration.nix file after mounting the disk again. After some time, the install went through fine.\nRestart\u0026hellip; And nothing :(\nDas U-Boot Purgatory More specifically, I was stuck in the boot menu. Naturally, this was caused by me going off-script, installing NixOS over the Fedora install.\nNow I\u0026rsquo;ve been a Linux enjoyer for while, but I haven\u0026rsquo;t played much with any boot menus. From what I can tell, however, I needed to point to the new /boot partition I made for NixOS. Simple enough.\nIn U boot, we can printenv, which tells us everything we need to know.\nThe docs for the bootflow command can be found here\nThe bootcmd was bootflow scan -b. Hmmm\u0026hellip;\nWith a bootflow list, we can see what we\u0026rsquo;re working with:\nSeq Method State Uclass Part Name FileName ------------------------------------------------------------------------------------------- 0 efi_mgr ready (none) 0 \u0026lt;NULL\u0026gt; 1 efi ready nvme 4 nvme@27bccc000.blk#1.boot /EFI/BOOT/BOOTARG64.EFI ------------------------------------------------------------------------------------------- This looks promising. This issue is, it doesn\u0026rsquo;t mean anything to me. It seemed clear that the \u0026lt;Null\u0026gt; and missing FileName were issues. So I tried booting off of the first bootflow and that did the trick.\nbootflow select 1 bootflow boot So it seems like we needed to boot the 1st bootflow instead of the 0th. This aligns with the docs for the -b option:\n-b Boot each valid bootflow as it is scanned. Typically only the first bootflow matters, since by then the system boots in the OS and U-Boot is no-longer running. bootflow scan -b is a quick way to boot the first available OS. A valid bootflow is one that made it all the way to the loaded state. Note that if -m is provided as well, booting is delayed until the user selects a bootflow. That means we needed to change the bootcmd to the following:\nsetenv bootcmd \u0026#34;bootflow scan ; bootflow select 1 ; bootflow boot\u0026#34; Then saveenv, naturally.\nAttempt II I also have a 2020 Mac Mini with the M1 chip. I figured I can\u0026rsquo;t have just one of them on Asahi \u0026amp; the other on MacOS, that\u0026rsquo;d be cruel. Also, I already had the bootable USB for NixOS on Asahi.\nThis time around it was much smoother because there wasn\u0026rsquo;t an existing Fedora partition.\nConfiguration Thanks to the reproducibility of Nix, I was able to reuse the majority of my configuration from the previous host. The code for this can be found in my nixos-config repo.\n","permalink":"http://localhost:1313/posts/nixos-asahi/","summary":"\u003cp\u003eI ran out of space on my 2020 Macbook Pro M1.\nI\u0026rsquo;m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it.\nAnd if I was factory resetting it, I might as well boot it with Linux.\u003c/p\u003e\n\u003cp\u003eI spent some time (less than a week) on the \u003ca href=\"https://asahilinux.org/fedora/\"\u003eAsahi Fedora Remix\u003c/a\u003e.\nBefore this, I was using \u003ca href=\"https://github.com/nix-darwin/nix-darwin\"\u003eNix Darwin\u003c/a\u003e, but Nix isn\u0026rsquo;t available on Fedora.\u003c/p\u003e","title":"NixOS on Asahi"}] \ No newline at end of file diff --git a/site-hugo/public/index.xml b/site-hugo/public/index.xml new file mode 100644 index 0000000..2e09db4 --- /dev/null +++ b/site-hugo/public/index.xml @@ -0,0 +1,44 @@ + + + + Dan Dean + http://localhost:1313/ + Recent content on Dan Dean + Hugo + en-us + Mon, 02 Mar 2026 08:59:36 -0400 + + + K3s over Tailnet + http://localhost:1313/posts/k3stailnet/ + Mon, 02 Mar 2026 08:59:36 -0400 + http://localhost:1313/posts/k3stailnet/ + <p>I set my home lab is set up with K3s. +This is great, but I&rsquo;d like to access it from not just inside my dungeon.</p> +<p>To make this happen, I set up the network with <a href="https://tailscale.com/">Tailscale</a>. +With a NixOS, this is dirt-simple:</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>{ lib<span style="color:#f92672">,</span> config<span style="color:#f92672">,</span> <span style="color:#f92672">...</span> }: { +</span></span><span style="display:flex;"><span> options <span style="color:#f92672">=</span> { tailscale<span style="color:#f92672">.</span>enable <span style="color:#f92672">=</span> lib<span style="color:#f92672">.</span>mkEnableOption <span style="color:#e6db74">&#34;Enable Tailscale&#34;</span>; }; +</span></span><span style="display:flex;"><span> config <span style="color:#f92672">=</span> { services<span style="color:#f92672">.</span>tailscale<span style="color:#f92672">.</span>enable <span style="color:#f92672">=</span> config<span style="color:#f92672">.</span>tailscale<span style="color:#f92672">.</span>enable; }; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></div><p>I added the Tailnet IP to the <code>~/.kube/config</code>.</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">apiVersion</span>: <span style="color:#ae81ff">v1</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">clusters</span>: +</span></span><span style="display:flex;"><span>- <span style="color:#f92672">cluster</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">server</span>: <span style="color:#ae81ff">https://&lt;Tailnet IP&gt;:6443</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">default</span> +</span></span></code></pre></div><p><code>kubectl get nodes</code>&hellip;</p> + + + NixOS on Asahi + http://localhost:1313/posts/nixos-asahi/ + Sun, 11 Jan 2026 08:59:36 -0400 + http://localhost:1313/posts/nixos-asahi/ + <p>I ran out of space on my 2020 Macbook Pro M1. +I&rsquo;m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. +And if I was factory resetting it, I might as well boot it with Linux.</p> +<p>I spent some time (less than a week) on the <a href="https://asahilinux.org/fedora/">Asahi Fedora Remix</a>. +Before this, I was using <a href="https://github.com/nix-darwin/nix-darwin">Nix Darwin</a>, but Nix isn&rsquo;t available on Fedora.</p> + + + diff --git a/site-hugo/public/page/1/index.html b/site-hugo/public/page/1/index.html new file mode 100644 index 0000000..62d71f4 --- /dev/null +++ b/site-hugo/public/page/1/index.html @@ -0,0 +1,9 @@ + + + + http://localhost:1313/ + + + + + diff --git a/site-hugo/public/posts/about/index.html b/site-hugo/public/posts/about/index.html new file mode 100644 index 0000000..cdcf376 --- /dev/null +++ b/site-hugo/public/posts/about/index.html @@ -0,0 +1,233 @@ + + + + + + + +About | DDD's Site + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +

+ About + + + + + +

+ +
+

What?

+

Good question.

+

I’m hoping to write down some of my thoughts on computers as I white-knuckle it into the future.

+

Recently I’ve been interested in the following:

+
    +
  • Distributed Systems
  • +
  • Linux, Nix, et al.
  • +
  • Endurance/Strength Training
  • +
+

Terminus

+

Shout out to Eyal Kalderon for the Zola website theme.

+ + +
+ + +
+
+ + + + + + + + + + diff --git a/site-hugo/public/posts/index.html b/site-hugo/public/posts/index.html new file mode 100644 index 0000000..3da0791 --- /dev/null +++ b/site-hugo/public/posts/index.html @@ -0,0 +1,257 @@ + + + + + + + +Posts | Dan Dean + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
+

K3s over Tailnet + + + + + +

+
+
+

I set my home lab is set up with K3s. This is great, but I’d like to access it from not just inside my dungeon. +To make this happen, I set up the network with Tailscale. With a NixOS, this is dirt-simple: +{ lib, config, ... }: { options = { tailscale.enable = lib.mkEnableOption "Enable Tailscale"; }; config = { services.tailscale.enable = config.tailscale.enable; }; } I added the Tailnet IP to the ~/.kube/config. +apiVersion: v1 clusters: - cluster: server: https://<Tailnet IP>:6443 name: default kubectl get nodes… +...

+
+
+ +March 2, 2026
+ +
+ +
+
+

NixOS on Asahi + + + + + +

+
+
+

I ran out of space on my 2020 Macbook Pro M1. I’m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. And if I was factory resetting it, I might as well boot it with Linux. +I spent some time (less than a week) on the Asahi Fedora Remix. Before this, I was using Nix Darwin, but Nix isn’t available on Fedora. +...

+
+
+ +January 11, 2026
+ +
+
+ + + + + + + + + + diff --git a/site-hugo/public/posts/index.xml b/site-hugo/public/posts/index.xml new file mode 100644 index 0000000..11810d9 --- /dev/null +++ b/site-hugo/public/posts/index.xml @@ -0,0 +1,44 @@ + + + + Posts on Dan Dean + http://localhost:1313/posts/ + Recent content in Posts on Dan Dean + Hugo + en-us + Mon, 02 Mar 2026 08:59:36 -0400 + + + K3s over Tailnet + http://localhost:1313/posts/k3stailnet/ + Mon, 02 Mar 2026 08:59:36 -0400 + http://localhost:1313/posts/k3stailnet/ + <p>I set my home lab is set up with K3s. +This is great, but I&rsquo;d like to access it from not just inside my dungeon.</p> +<p>To make this happen, I set up the network with <a href="https://tailscale.com/">Tailscale</a>. +With a NixOS, this is dirt-simple:</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>{ lib<span style="color:#f92672">,</span> config<span style="color:#f92672">,</span> <span style="color:#f92672">...</span> }: { +</span></span><span style="display:flex;"><span> options <span style="color:#f92672">=</span> { tailscale<span style="color:#f92672">.</span>enable <span style="color:#f92672">=</span> lib<span style="color:#f92672">.</span>mkEnableOption <span style="color:#e6db74">&#34;Enable Tailscale&#34;</span>; }; +</span></span><span style="display:flex;"><span> config <span style="color:#f92672">=</span> { services<span style="color:#f92672">.</span>tailscale<span style="color:#f92672">.</span>enable <span style="color:#f92672">=</span> config<span style="color:#f92672">.</span>tailscale<span style="color:#f92672">.</span>enable; }; +</span></span><span style="display:flex;"><span>} +</span></span></code></pre></div><p>I added the Tailnet IP to the <code>~/.kube/config</code>.</p> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">apiVersion</span>: <span style="color:#ae81ff">v1</span> +</span></span><span style="display:flex;"><span><span style="color:#f92672">clusters</span>: +</span></span><span style="display:flex;"><span>- <span style="color:#f92672">cluster</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">server</span>: <span style="color:#ae81ff">https://&lt;Tailnet IP&gt;:6443</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">default</span> +</span></span></code></pre></div><p><code>kubectl get nodes</code>&hellip;</p> + + + NixOS on Asahi + http://localhost:1313/posts/nixos-asahi/ + Sun, 11 Jan 2026 08:59:36 -0400 + http://localhost:1313/posts/nixos-asahi/ + <p>I ran out of space on my 2020 Macbook Pro M1. +I&rsquo;m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. +And if I was factory resetting it, I might as well boot it with Linux.</p> +<p>I spent some time (less than a week) on the <a href="https://asahilinux.org/fedora/">Asahi Fedora Remix</a>. +Before this, I was using <a href="https://github.com/nix-darwin/nix-darwin">Nix Darwin</a>, but Nix isn&rsquo;t available on Fedora.</p> + + + diff --git a/site-hugo/public/posts/k3stailnet/index.html b/site-hugo/public/posts/k3stailnet/index.html new file mode 100644 index 0000000..40a0d83 --- /dev/null +++ b/site-hugo/public/posts/k3stailnet/index.html @@ -0,0 +1,297 @@ + + + + + + + +K3s over Tailnet | Dan Dean + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +

+ K3s over Tailnet + + + + + +

+ +
+

I set my home lab is set up with K3s. +This is great, but I’d like to access it from not just inside my dungeon.

+

To make this happen, I set up the network with Tailscale. +With a NixOS, this is dirt-simple:

+
{ lib, config, ... }: {
+  options = { tailscale.enable = lib.mkEnableOption "Enable Tailscale"; };
+  config = { services.tailscale.enable = config.tailscale.enable; };
+}
+

I added the Tailnet IP to the ~/.kube/config.

+
apiVersion: v1
+clusters:
+- cluster:
+    server: https://<Tailnet IP>:6443
+  name: default
+

kubectl get nodes

+
Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for <Internal IP>
+not <Tailnet IP>
+

D: +Lets make sure we can actually reach the nodes over the Tailnet…

+

+$ k get nodes --insecure-skip-tls-verify
+NAME       STATUS   ROLES                       AGE   VERSION
+leonardo   Ready    <none>                      9d    v1.34.1+k3s1
+raphael    Ready    <none>                      20d   v1.32.4+k3s1
+splinter   Ready    control-plane,etcd,master   95d   v1.32.7+k3s1
+

Yeah seems like we can.

+

After a bit more reading, it looks like we need to rotate the cert for the new IP +Luckily there’s nothing important running on this cluster!

+

Let’s just restart the master node… And nothing.

+
+

After a bit more digging, this issue looks promising Remote Kubectl

+

We need to edit the k3s-serving secret in the kube-system to include the new Tailnet IP of the master node.

+
kind: Secret
+metadata:
+  annotations:
+    listener.cattle.io/cn-<Internal IP>: 10.0.0.10
+    listener.cattle.io/cn-<Tailnet IP>: 10.43.0.1
+

After modifying the cluster secret and k3s regenerate certificates, we are back in business.

+
$ k get nodes
+NAME        STATUS   ROLES                       AGE    VERSION
+donatello   Ready    <none>                      8d     v1.32.4+k3s1
+leonardo    Ready    <none>                      30d    v1.34.1+k3s1
+raphael     Ready    <none>                      41d    v1.32.4+k3s1
+splinter    Ready    control-plane,etcd,master   116d   v1.32.7+k3s1
+

+

Future Me

+

Is this reproducible? Probably not. +Since the certs are already generated for the master node, I didn’t feel like going through the exercise of completely bootstrapping the cluster again to test a reproducible setup with the new IP. +To test this, we could add the following to the cluster settings.

+
if config.isK3sNode.isServer then [ "-tls-san=${hostTailIP}" ] else [ ];
+
+ +
+ + +
+
+ + + + + + + + + + diff --git a/site-hugo/public/posts/my-first-post/index.html b/site-hugo/public/posts/my-first-post/index.html new file mode 100644 index 0000000..dc59bde --- /dev/null +++ b/site-hugo/public/posts/my-first-post/index.html @@ -0,0 +1,209 @@ + + + + + + + +My First Post | DDD's Site + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +

+ My First Post + + + + + +

+ +
+ + +
+
+ + + + + + + + + + diff --git a/site-hugo/public/posts/nixos-asahi/index.html b/site-hugo/public/posts/nixos-asahi/index.html new file mode 100644 index 0000000..ea87a41 --- /dev/null +++ b/site-hugo/public/posts/nixos-asahi/index.html @@ -0,0 +1,291 @@ + + + + + + + +NixOS on Asahi | Dan Dean + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +

+ NixOS on Asahi + + + + + +

+ +
+

I ran out of space on my 2020 Macbook Pro M1. +I’m not sure what it says about what kind of person I am, but to me that just meant I had to factory reset it. +And if I was factory resetting it, I might as well boot it with Linux.

+

I spent some time (less than a week) on the Asahi Fedora Remix. +Before this, I was using Nix Darwin, but Nix isn’t available on Fedora.

+

The folks in the nix community put together some solid documention about booting NixOS on Apple Silicon. +I figured it was worth a shot.

+

Installation

+

The only significant change that I made was the initial install. +Since I had already installed Fedora, I figured I could just install NixOS right onto that disk partition.

+

I built the ISO from scratch, made some configuration changes as per the nixos-apple-silicon docs, & installing the OS went sideways…

+

Power outage

+

During the initial install, my machine died. +Forgot to plug it in. +Luckily, all of the changes were already written to disk, so I could just install from the /etc/nixos/configuration.nix file after mounting the disk again. +After some time, the install went through fine.

+

Restart… And nothing :(

+

Das U-Boot Purgatory

+

More specifically, I was stuck in the boot menu. +Naturally, this was caused by me going off-script, installing NixOS over the Fedora install.

+

Now I’ve been a Linux enjoyer for while, but I haven’t played much with any boot menus. +From what I can tell, however, I needed to point to the new /boot partition I made for NixOS. +Simple enough.

+

In U boot, we can printenv, which tells us everything we need to know.

+

The docs for the bootflow command can be found here

+

The bootcmd was bootflow scan -b. +Hmmm…

+

With a bootflow list, we can see what we’re working with:

+
Seq  Method   State   Uclass   Part   Name                       FileName
+-------------------------------------------------------------------------------------------
+0    efi_mgr  ready   (none)      0   <NULL>
+1    efi      ready   nvme        4   nvme@27bccc000.blk#1.boot  /EFI/BOOT/BOOTARG64.EFI
+-------------------------------------------------------------------------------------------
+

This looks promising. This issue is, it doesn’t mean anything to me. +It seemed clear that the <Null> and missing FileName were issues. +So I tried booting off of the first bootflow and that did the trick.

+
bootflow select 1
+bootflow boot
+

So it seems like we needed to boot the 1st bootflow instead of the 0th. +This aligns with the docs for the -b option:

+
-b
+
+    Boot each valid bootflow as it is scanned. Typically only the first bootflow matters, since by then the system boots in the OS and U-Boot is no-longer running. bootflow scan -b is a quick way to boot the first available OS. A valid bootflow is one that made it all the way to the loaded state. Note that if -m is provided as well, booting is delayed until the user selects a bootflow.
+

That means we needed to change the bootcmd to the following:

+
setenv bootcmd "bootflow scan ; bootflow select 1 ; bootflow boot"
+

Then saveenv, naturally.

+

Attempt II

+

I also have a 2020 Mac Mini with the M1 chip. +I figured I can’t have just one of them on Asahi & the other on MacOS, that’d be cruel. +Also, I already had the bootable USB for NixOS on Asahi.

+

This time around it was much smoother because there wasn’t an existing Fedora partition.

+

Configuration

+

Thanks to the reproducibility of Nix, I was able to reuse the majority of my configuration from the previous host. +The code for this can be found in my nixos-config repo.

+ + +
+ + +
+
+ + + + + + + + + + diff --git a/site-hugo/public/posts/page/1/index.html b/site-hugo/public/posts/page/1/index.html new file mode 100644 index 0000000..d88ccc2 --- /dev/null +++ b/site-hugo/public/posts/page/1/index.html @@ -0,0 +1,9 @@ + + + + http://localhost:1313/posts/ + + + + + diff --git a/site-hugo/public/series/index.html b/site-hugo/public/series/index.html new file mode 100644 index 0000000..3ac70da --- /dev/null +++ b/site-hugo/public/series/index.html @@ -0,0 +1,212 @@ + + + + + + + +Series | Dan Dean + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ + + + + + + + + + diff --git a/site-hugo/public/series/index.xml b/site-hugo/public/series/index.xml new file mode 100644 index 0000000..b6c48df --- /dev/null +++ b/site-hugo/public/series/index.xml @@ -0,0 +1,11 @@ + + + + Series on Dan Dean + http://localhost:1313/series/ + Recent content in Series on Dan Dean + Hugo + en-us + + + diff --git a/site-hugo/public/sitemap.xml b/site-hugo/public/sitemap.xml new file mode 100644 index 0000000..e6ab40a --- /dev/null +++ b/site-hugo/public/sitemap.xml @@ -0,0 +1,25 @@ + + + + http://localhost:1313/ + 2026-03-02T08:59:36-04:00 + + http://localhost:1313/posts/k3stailnet/ + 2026-03-02T08:59:36-04:00 + + http://localhost:1313/posts/ + 2026-03-02T08:59:36-04:00 + + http://localhost:1313/posts/nixos-asahi/ + 2026-01-11T08:59:36-04:00 + + http://localhost:1313/archives/ + + http://localhost:1313/categories/ + + http://localhost:1313/series/ + + http://localhost:1313/tags/ + + diff --git a/site-hugo/public/tags/index.html b/site-hugo/public/tags/index.html new file mode 100644 index 0000000..45cb905 --- /dev/null +++ b/site-hugo/public/tags/index.html @@ -0,0 +1,212 @@ + + + + + + + +Tags | Dan Dean + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ + + + + + + + + + diff --git a/site-hugo/public/tags/index.xml b/site-hugo/public/tags/index.xml new file mode 100644 index 0000000..4701d67 --- /dev/null +++ b/site-hugo/public/tags/index.xml @@ -0,0 +1,11 @@ + + + + Tags on Dan Dean + http://localhost:1313/tags/ + Recent content in Tags on Dan Dean + Hugo + en-us + + + diff --git a/site-hugo/themes/PaperMod b/site-hugo/themes/PaperMod new file mode 160000 index 0000000..2a980c8 --- /dev/null +++ b/site-hugo/themes/PaperMod @@ -0,0 +1 @@ +Subproject commit 2a980c81da0909619b8c6255324823bd8a4293b5