diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 313a3e4..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Deploy Hugo site to Pages - -on: - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: false - -defaults: - run: - shell: bash - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@main - with: - submodules: true - fetch-depth: 0 - - name: Setup Pages - id: pages - uses: actions/configure-pages@main - - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/flake-checker-action@main - - name: Build with Hugo - run: nix run . - - name: Upload to GitHub Pages - uses: actions/upload-pages-artifact@main - with: - path: ./public - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@main diff --git a/.gitignore b/.gitignore index 088f2dc..565c39b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ /public/ -.hugo_build.lock .direnv diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..7b022c7 --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,7 @@ +[[language]] +name = "css" +auto-format = false + +[[language]] +name = "html" +auto-format = false diff --git a/README.md b/README.md index fa9426f..3491a2e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Webseite von Jan Kremer -[Webseite](https://jankremer.eu) +[Webseite](https://jankremer.de) ## Lizenz -CC0 1.0 \| Jan Kremer \| 2021–2025 +CC0 1.0 | Jan Kremer | 2021–2026 diff --git a/archetypes/blog.md b/archetypes/blog.md deleted file mode 100644 index 9b03f36..0000000 --- a/archetypes/blog.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: {{ replace .Name "-" " " | title }} -date: {{ .Date }} -description: -tags: -draft: true ---- diff --git a/archetypes/default.md b/archetypes/default.md deleted file mode 100644 index 29346c2..0000000 --- a/archetypes/default.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: {{ replace .Name "-" " " | title }} -date: {{ .Date }} -draft: true ---- diff --git a/archetypes/photos.md b/archetypes/photos.md deleted file mode 100644 index 9b03f36..0000000 --- a/archetypes/photos.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: {{ replace .Name "-" " " | title }} -date: {{ .Date }} -description: -tags: -draft: true ---- diff --git a/content/_index.md b/content/_index.md index a845151..e0db12e 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,2 +1,6 @@ ---- ---- ++++ +title = "Jan Kremer" +sort_by = "date" +template = "index.html" +page_template = "blog-page.html" ++++ diff --git a/content/about.md b/content/about.md index 78e227e..6695b6a 100644 --- a/content/about.md +++ b/content/about.md @@ -1,12 +1,13 @@ ---- -title: Über mich -date: 2024-12-12 ---- ++++ +title = "Über mich" +date = 2024-12-12 +updated = 2026-03-17 ++++ -Mein Name ist _Jan Kremer_. Ich bin 29 Jahre alt und bin *Apotheker*. Manchmal schreibe ich über Technik und Software die ich benutze. +Mein Name ist *Jan Kremer*. Ich bin 29 Jahre alt und habe *Pharmazie* studiert. Manchmal schreibe ich über Technik und Software die ich benutze. Wenn ich nicht gerade lerne, mache ich gerne Sport, vor allem Joggen, Kraftsport und Tanzen. ## Kontakt -[mail@jankremer.eu](mailto:mail@jankremer.eu) +[mail@jankremer.de](mailto:mail@jankremer.de) diff --git a/content/blog/_index.md b/content/blog/_index.md new file mode 100644 index 0000000..c504e1b --- /dev/null +++ b/content/blog/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Blog" +sort_by = "date" +template = "blog.html" +page_template = "blog-page.html" ++++ diff --git a/content/blog/discord.md b/content/blog/discord.md index 9fcd7e1..604c168 100644 --- a/content/blog/discord.md +++ b/content/blog/discord.md @@ -1,13 +1,23 @@ ---- -title: Discord -date: 2026-02-16T19:45:02+01:00 -tags: micro ---- ++++ +title = "Discord" +date = 2026-02-16T19:45:02+01:00 +tags = [ "micro" ] ++++ -Since [Discord announced](https://discord.com/press-releases/discord-launches-teen-by-default-settings-globally) it will start asking users for age verification, I became obsessed with reading about alternatives to the platform. And there are a lot of them. As a self-hoster, I immediately thought of Matrix and XMPP. Both have their pros and cons and different implementations. +Since +[Discord announced](https://discord.com/press-releases/discord-launches-teen-by-default-settings-globally) +it will start asking users for age verification, I became obsessed with reading +about alternatives to the platform. And there are a lot of them. As a +self-hoster, I immediately thought of Matrix and XMPP. Both have their pros and +cons and different implementations. -I was almost ready to pick one of them when I stopped and thought to myself, _would I really use them?_ +I was almost ready to pick one of them when I stopped and thought to myself, +_would I really use them?_ And my answer is a clear: **No!** -I will not replace Discord because _I don't even use Discord now_. I haven't had an account there for years. When I message my friends, it's either on Signal, WhatsApp, or iMessage, which are all end-to-end-encrypted (E2EE) messengers. The only thing I'm waiting for is E2EE RCS (Rich Communication Services) so I can ditch WhatsApp at some point. +I will not replace Discord because _I don't even use Discord now_. I haven't had +an account there for years. When I message my friends, it's either on Signal, +WhatsApp, or iMessage, which are all end-to-end-encrypted (E2EE) messengers. The +only thing I'm waiting for is E2EE RCS (Rich Communication Services) so I can +ditch WhatsApp at some point. diff --git a/content/blog/email.md b/content/blog/email.md index 6197f32..addc03c 100644 --- a/content/blog/email.md +++ b/content/blog/email.md @@ -1,8 +1,9 @@ ---- -title: Email -date: 2026-02-20T15:46:52+01:00 -description: -tags: micro ---- ++++ +title = "Email" +date = 2026-02-20T15:46:52+01:00 +tags = [ "micro" ] ++++ -It's a shame we don't have _ubiquitous decentralized chat_ equivalent to **email**. I know **Matrix** and **XMPP** exist, but neither are complete enough. And they dont't have a lot of users. +It's a shame we don't have _ubiquitous decentralized chat_ equivalent to +**email**. I know **Matrix** and **XMPP** exist, but neither are complete +enough. And they dont't have a lot of users. diff --git a/content/blog/github.md b/content/blog/github.md new file mode 100644 index 0000000..9f6d0c7 --- /dev/null +++ b/content/blog/github.md @@ -0,0 +1,9 @@ ++++ +title = "Leaving GitHub" +date = 2026-03-27 +description = "" +tags = [] +draft = true ++++ + +About a year ago I wrote a post about my self hosting journey which ended with me shutting down my server diff --git a/content/blog/markdown-tables.md b/content/blog/markdown-tables.md index 222ca2f..94c92e3 100644 --- a/content/blog/markdown-tables.md +++ b/content/blog/markdown-tables.md @@ -1,15 +1,14 @@ ---- -title: Markdown Tables Suck -date: 2023-12-25T16:28:52+01:00 -tags: - - micro ---- ++++ +title = "Markdown Tables Suck" +date = 2023-12-25T16:28:52+01:00 +tags = [ "micro" ] ++++ -Tables are arguably the worst part of Markdown. -No horizontal lines except for the mandatory one at the top. -The only feature is the possibility to align cells. +Tables are arguably the worst part of Markdown. No horizontal lines except for +the mandatory one at the top. The only feature is the possibility to align +cells. Org Mode does much better, but isn't perfect either. -Don't get me wrong. It's nice to have a simple tool for simple tables. -But sometimes I need more customizability. +Don't get me wrong. It's nice to have a simple tool for simple tables. But +sometimes I need more customizability. diff --git a/content/blog/selbsthosting.md b/content/blog/selbsthosting.md index 9296d42..27ec044 100644 --- a/content/blog/selbsthosting.md +++ b/content/blog/selbsthosting.md @@ -1,12 +1,9 @@ ---- -title: Selbsthosting -date: 2025-04-14 -description: Kleiner Computer, große Pläne -tags: - - selbsthosting - - nixos - - git ---- ++++ +title = "Selbsthosting" +date = 2025-04-14 +description = "Kleiner Computer, große Pläne" +tags = [ "selbsthosting", "nixos", "git" ] ++++ Seit etwa 2020 hat mich die Idee fasziniert, meinen _eigenen Server zu betreiben_ – also die volle Kontrolle über Daten, Dienste und Medien zu haben. Vor allem auf Reddit, und dort besonders in den Communities [r/selfhosted](https://www.reddit.com/r/selfhosted) und [r/homelab](https://www.reddit.com/r/homelab), habe ich immer wieder spannende Projekte gesehen. Lange blieb das für mich ein Traum – zu wenig Zeit, zu wenig Geld. Aber im April 2024 war es so weit: Mein kleines Selbsthosting-Abenteuer begann. @@ -38,7 +35,7 @@ Das Betriebssystem meiner Wahl ist [NixOS](https://nixos.org/). Hauptsächlich, **Deklarativ** bedeutet: Ich beschreibe in einer Konfigurationsdatei, _was_ das System tun soll – nicht _wie_. Dadurch ist mein Setup reproduzierbar, nachvollziehbar und schnell wiederherstellbar. -Viele Dienste lassen sich mit nur wenigen Zeilen Code aktivieren. Ich habe [meine Konfiguration](https://github.com/jukremer/nix-config) auf GitHub veröffentlicht, falls jemand reinschauen oder sie als Grundlage verwenden möchte. +Viele Dienste lassen sich mit nur wenigen Zeilen Code aktivieren. ~~Ich habe meine Konfiguration auf GitHub veröffentlicht, falls jemand reinschauen oder sie als Grundlage verwenden möchte.~~ ### Tailscale @@ -72,4 +69,4 @@ Ein weiterer Grund: Ich habe den Server _kaum genutzt_. Meine iCloud läuft noch Aber: Ich habe in den letzten 8 Monaten extrem viel gelernt – über Linux, Netzwerke, NixOS, Systemadministration, Sicherheit und mehr. Das Projekt hat mir gezeigt, wie viel man aus einem alten Mini-PC herausholen kann. Vielleicht wird der Server eines Tages reaktiviert – in neuer Form. Für den Moment war es vor allem: _ein spannendes Lernprojekt_. -Falls du Fragen hast oder selbst mit Selbsthosting starten willst: Schreib mir gern oder schau dir [meine Konfiguration](https://github.com/jukremer/nix-config) auf GitHub an. Vielleicht hilft dir mein Weg ja bei deinem Einstieg. +Falls du Fragen hast oder selbst mit Selbsthosting starten willst: Schreib mir gern ~~oder schau dir meine Konfiguration auf GitHub an~~. Vielleicht hilft dir mein Weg ja bei deinem Einstieg. diff --git a/content/blog/still-self-hosting.md b/content/blog/still-self-hosting.md new file mode 100644 index 0000000..5336f00 --- /dev/null +++ b/content/blog/still-self-hosting.md @@ -0,0 +1,9 @@ ++++ +title = "Still self hosting" +date = 2026-03-27 +description = "Guess who's back" +tags = [ "selbsthosting", "nixos", "git" ] +draft = true ++++ + +About a year ago I wrote a post about my self hosting journey which ended with me shutting down my server diff --git a/content/blog/timestamps.md b/content/blog/timestamps.md index 4723039..9009b05 100644 --- a/content/blog/timestamps.md +++ b/content/blog/timestamps.md @@ -1,16 +1,17 @@ ---- -title: Use Timestamps -date: 2023-11-15T10:12:30+01:00 -tags: - - micro ---- ++++ +title= "Use Timestamps" +date= 2023-11-15T10:12:30+01:00 +tags= ["micro"] ++++ -Every blog post should include a timestamp. -In fact, this extends to almost anything online and even offline. +Every blog post should include a timestamp. In fact, this extends to almost +anything online and even offline. -Also, don't make me look for the date. -Put the date as obvious as possible, preferably at the beginning of the post. +Also, don't make me look for the date. Put the date as obvious as possible, +preferably at the beginning of the post. -I was reading [Julia Evans post about nix](https://jvns.ca/blog/2023/02/28/some-notes-on-using-nix/) and it was not immediately clear to me if this was a recent post. -Only when I copied the URL to complain about it I discovered the date there. -Safari hides most of the URL by default. +I was reading +[Julia Evans post about nix](https://jvns.ca/blog/2023/02/28/some-notes-on-using-nix/) +and it was not immediately clear to me if this was a recent post. Only when I +copied the URL to complain about it I discovered the date there. Safari hides +most of the URL by default. diff --git a/content/btc.md b/content/btc.md index fd5fafc..c5511a3 100644 --- a/content/btc.md +++ b/content/btc.md @@ -1,8 +1,8 @@ ---- -title: Bitcoin -date: 2022-12-10 -tags: [crypto] ---- ++++ +title = "Bitcoin" +date = 2022-12-10 +tags = [ "crypto" ] ++++ ## Address @@ -17,9 +17,9 @@ bc1qf8qjt4gut2la8k4v3emfv7wrj6f3pfcjrj3slplnwrldkz7hqmaqaju7ym ## OpenAlias ```txt -jankremer.eu +jankremer.de ``` ```txt -btc.jankremer.eu +btc.jankremer.de ``` diff --git a/content/eth.md b/content/eth.md index 210d534..7f0cb51 100644 --- a/content/eth.md +++ b/content/eth.md @@ -1,8 +1,8 @@ ---- -title: Ethereum -date: 2022-12-10 -tags: [crypto] ---- ++++ +title = "Ethereum" +date = 2022-12-10 +tags = [ "crypto" ] ++++ ## Address diff --git a/content/fotos/_index.md b/content/fotos/_index.md new file mode 100644 index 0000000..e2e2303 --- /dev/null +++ b/content/fotos/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Fotos" +sort_by = "date" +template = "blog.html" +page_template = "blog-page.html" ++++ diff --git a/content/fotos/abendliche-bewoelkung/index.md b/content/fotos/abendliche-bewoelkung/index.md index 5ba0487..2bd2054 100644 --- a/content/fotos/abendliche-bewoelkung/index.md +++ b/content/fotos/abendliche-bewoelkung/index.md @@ -1,12 +1,8 @@ ---- -title: Abendliche Bewölkung -date: 2023-07-19T10:48:33+02:00 -description: "über Regensburg" -tags: [fotos, regensburg] ---- ++++ +title = "Abendliche Bewölkung" +date = 2023-07-19T10:48:33+02:00 +description = "über Regensburg" +tags = ["fotos", "regensburg"] ++++ -{{< figure -src="./abendliche-bewoelkung.webp" -alt="Abendliche Bewölkung über Regensburg" -caption="Abendliche Bewölkung über Regensburg" -fetchpriority="high" >}} +{{ figure(src="./abendliche-bewoelkung.webp", alt="Abendliche Bewölkung über Regensburg")}} diff --git a/content/fotos/ustronie-morskie/index.md b/content/fotos/ustronie-morskie/index.md index 7dd98c5..d51dbf0 100644 --- a/content/fotos/ustronie-morskie/index.md +++ b/content/fotos/ustronie-morskie/index.md @@ -1,42 +1,21 @@ ---- -title: Ustronie Morskie -description: Polen -date: 2025-11-15T21:53:01+01:00 -tags: [fotos, polen] ---- ++++ +title = "Ustronie Morskie" +description = "Polen" +date = 2025-11-15T21:53:01+01:00 +tags = ["fotos", "polen"] ++++ -{{< figure -src="holzwall.jpeg" -alt="Holzwall" -caption="Holzwall" -fetchpriority="high" >}} +{{ figure(src="holzwall.jpeg" alt="Holzwall" caption="Holzwall" +first=true) }} -{{< figure -src="pfote.jpeg" -alt="Pfote" -caption="Pfote" >}} +{{ figure(src="pfote.jpeg" alt="Pfote" caption="Pfote") }} -{{< figure -src="nala.jpeg" -alt="Nala" -caption="Nala" >}} +{{ figure(src="nala.jpeg" alt="Nala" caption="Nala") }} -{{< figure -src="pier.jpeg" -alt="Pier" -caption="Pier" >}} +{{ figure(src="pier.jpeg" alt="Pier" caption="Pier") }} -{{< figure -src="Dom-1.jpeg" -alt="Kolberger Dom" -caption="Kolberger Dom" >}} +{{ figure(src="dom-1.jpeg" alt="Kolberger Dom" caption="Kolberger Dom")}} -{{< figure -src="dom-2.jpeg" -alt="Kolberger Dom" -caption="Kolberger Dom" >}} +{{ figure(src="dom-2.jpeg" alt="Kolberger Dom" caption="Kolberger Dom")}} -{{< figure -src="moeve.jpeg" -alt="Möve" -caption="Möve" >}} +{{ figure(src="moeve.jpeg" alt="Möve" caption="Möve")}} diff --git a/content/xmr.md b/content/xmr.md index e3b033b..e1789f6 100644 --- a/content/xmr.md +++ b/content/xmr.md @@ -1,8 +1,8 @@ ---- -title: Monero -date: 2022-12-10 -tags: [crypto] ---- ++++ +title = "Monero" +date = 2022-12-10 +tags = [ "crypto" ] ++++ ## Address @@ -17,9 +17,9 @@ tags: [crypto] ## OpenAlias ```txt -jankremer.eu +jankremer.de ``` ```txt -xmr.jankremer.eu +xmr.jankremer.de ``` diff --git a/flake.lock b/flake.lock index 22f9724..c7cfc97 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1768364046, - "narHash": "sha256-PDFfpswLiuG/DcadTBb7dEfO3jX1fcGlCD4ZKSkC0M8=", + "lastModified": 1771892004, + "narHash": "sha256-V96pa9awm6hjnf8yGJeoC4uOirYDEPsaBbuU0stROQI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea30586ee015f37f38783006a9bc9e4aa64d7d61", + "rev": "5e4522be6bdf1600682a6f383434b057b2d77a37", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1768158989, - "narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=", + "lastModified": 1770228511, + "narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca", + "rev": "337a4fe074be1042a35086f15481d763b8ddc0e7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fd9a551..424ac44 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Hugo website"; + description = "Blog von Jan Kremer"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; treefmt = { @@ -24,10 +24,10 @@ { devShells = eachSystem (pkgs: { default = pkgs.mkShell { - name = "Hugo website"; + name = "Zola website"; buildInputs = with pkgs; [ - go - hugo + zola + vscode-langservers-extracted ]; }; }); @@ -42,30 +42,28 @@ default = { type = "app"; meta = { - description = "Build my blog"; - homepage = "https://jankremer.eu"; + description = "Build website"; + homepage = "https://jankremer.de"; license = nixpkgs.lib.licenses.cc0; }; program = (pkgs.writeShellScript "build-website" '' set -e - ${pkgs.hugo}/bin/hugo --minify + ${pkgs.zola}/bin/zola build --minify '').outPath; }; deploy = { type = "app"; meta = { - description = "Deploy to Codeberg"; - homepage = "https://kremer.codeberg.page"; + description = "Deploy to nimbus (Oracle)"; + homepage = "https://jankremer.de"; license = nixpkgs.lib.licenses.cc0; }; program = (pkgs.writeShellScript "deploy-website" '' set -e - ${pkgs.hugo}/bin/hugo --minify - cd public - git commit --all -m "Deploy" - git push + ${pkgs.zola}/bin/zola build --minify + ${pkgs.rsync}/bin/rsync -avP --delete public/ jan@jankremer.de:/var/www/jankremer.de/ '').outPath; }; }); diff --git a/hugo.toml b/hugo.toml deleted file mode 100644 index c866ab6..0000000 --- a/hugo.toml +++ /dev/null @@ -1,50 +0,0 @@ -baseURL = "https://jankremer.eu/" -title = "Jan Kremer" -copyright = "CC0 1.0" -defaultContentLanguage = "de" -enableGitInfo = true - -[params] -[params.author] -name = "Jan Kremer" -email = "mail@jankremer.eu" - -[menus] -[[menus.main]] -name = "Blog" -pageRef = "/" -weight = 1 -[[menus.main]] -name = "Fotos" -pageRef = "/fotos" -weight = 2 -[[menus.main]] -name = "Über mich" -pageRef = "/about" -weight = 3 - -[markup] -[markup.goldmark] -[markup.goldmark.renderer] -unsafe = true -[markup.goldmark.parser] -wrapStandAloneImageWithinParagraph = false -[markup.goldmark.parser.attribute] -block = true -[markup.highlight] -style = "github" - -[mediaTypes] -[mediaTypes.'application/atom+xml'] -suffixes = ['atom'] - -[outputFormats] -[outputFormats.atom] -mediaType = 'application/atom+xml' -noUgly = true - -[outputs] -home = ['html', 'rss', 'atom'] -section = ['html', 'rss', 'atom'] -taxonomy = ['html', 'rss', 'atom'] -term = ['html', 'rss', 'atom'] diff --git a/layouts/_partials/footer.html b/layouts/_partials/footer.html deleted file mode 100644 index f1bce7b..0000000 --- a/layouts/_partials/footer.html +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/layouts/_partials/head.html b/layouts/_partials/head.html deleted file mode 100644 index f58d3f2..0000000 --- a/layouts/_partials/head.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - {{ if .IsHome }} - {{ site.Title }} -{{ else }} - {{ printf "%s – %s" .Title - site.Title - }} - {{ end }} - -{{ partialCached "head/css.html" . }} -{{ partialCached "head/js.html" . }} -{{ with .OutputFormats.Get "rss" }} -{{ printf `` .Rel .MediaType.Type .Permalink site.Title | safeHTML }} -{{ end }}{{ with .OutputFormats.Get "atom" }} -{{ printf `` .Rel .MediaType.Type .Permalink site.Title | safeHTML }} -{{ end }} diff --git a/layouts/_partials/head/css.html b/layouts/_partials/head/css.html deleted file mode 100644 index 2b0820f..0000000 --- a/layouts/_partials/head/css.html +++ /dev/null @@ -1,14 +0,0 @@ -{{- with resources.Get "css/main.css" }} -{{- if eq hugo.Environment -"development" -}} - -{{- else }} -{{- with . | minify | fingerprint }} - -{{- end }} -{{- end }} -{{- end }} diff --git a/layouts/_partials/head/js.html b/layouts/_partials/head/js.html deleted file mode 100644 index 925267e..0000000 --- a/layouts/_partials/head/js.html +++ /dev/null @@ -1,16 +0,0 @@ -{{- with resources.Get "js/main.js" }} -{{- if eq hugo.Environment "development" }} -{{- with . | js.Build }} - -{{- end }} -{{- else }} -{{- $opts := dict "minify" true }} -{{- with . | js.Build -$opts | fingerprint -}} - -{{- end }} -{{- end }} -{{- end }} diff --git a/layouts/_partials/header.html b/layouts/_partials/header.html deleted file mode 100644 index e3dfeea..0000000 --- a/layouts/_partials/header.html +++ /dev/null @@ -1,2 +0,0 @@ -{{ partial "logo.svg" . }}{{ site.Title }} -{{ partial "menu.html" (dict "menuID" "main" "page" .) }} diff --git a/layouts/_partials/menu.html b/layouts/_partials/menu.html deleted file mode 100644 index da71505..0000000 --- a/layouts/_partials/menu.html +++ /dev/null @@ -1,47 +0,0 @@ -{{- /* - Renders a menu for the given menu ID. - - @context {page} page The current page. - @context {string} menuID The menu ID. - - @example: {{ partial "menu.html" (dict "menuID" "main" "page" .) -}} -*/}} -{{- $page := .page }} -{{- $menuID := .menuID }} -{{- with index site.Menus $menuID }} - -{{- end }} -{{- define "partials/inline/menu/walk.html" }} -{{- $page := .page }} -{{- range .menuEntries }} -{{- $attrs := dict "href" .URL }} -{{- if $page.IsMenuCurrent .Menu . }} -{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} -{{- else if $page.HasMenuCurrent .Menu . }} -{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} -{{- end }} -{{- $name := .Name }} -{{- with .Identifier }} -{{- with T . }} -{{- $name = . }} -{{- end }} -{{- end }} -
  • - {{ $name }} - {{- with .Children }} - - {{- end }} -
  • -{{- end }} -{{- end }} diff --git a/layouts/_partials/terms.html b/layouts/_partials/terms.html deleted file mode 100644 index b10860d..0000000 --- a/layouts/_partials/terms.html +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* For a given taxonomy, renders a list of terms assigned to the page. - @context {page} page The current page. @context {string} taxonomy The taxonony. - @example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) -}} -*/}} -{{- $page := .page }} -{{- $taxonomy := .taxonomy }} -{{- with $page.GetTerms -$taxonomy -}} -{{- $label := (index . 0).Parent.LinkTitle }} -
    - -
    -{{- end }} diff --git a/layouts/baseof.html b/layouts/baseof.html deleted file mode 100644 index a949b43..0000000 --- a/layouts/baseof.html +++ /dev/null @@ -1,16 +0,0 @@ - - - {{ partial "head.html" . }} - -
    - {{ partial "header.html" . }} -
    -
    - {{ block "main" . }}{{ end }} -
    - - - diff --git a/layouts/home.html b/layouts/home.html deleted file mode 100644 index 50eeecd..0000000 --- a/layouts/home.html +++ /dev/null @@ -1,21 +0,0 @@ -{{ define "main" }} -{{ .Content }} -{{ $pages := .Paginate (where -.Site.RegularPages "Type" "ne" "page") -}} -
    - -
    -{{ end }} diff --git a/layouts/list.atom.atom b/layouts/list.atom.atom deleted file mode 100644 index 1085f74..0000000 --- a/layouts/list.atom.atom +++ /dev/null @@ -1,60 +0,0 @@ -{{- $authorEmail := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .email }} - {{- $authorEmail = . }} - {{- end }} - {{- end }} -{{- end }} - -{{- $authorName := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .name }} - {{- $authorName = . }} - {{- end }} - {{- else }} - {{- $authorName = . }} - {{- end }} -{{- end }} - -{{- $pctx := . }} -{{- if .IsHome }}{{ $pctx = .Site }}{{ end }} -{{- $pages := slice }} -{{- if or $.IsHome $.IsSection }} -{{- $pages = $pctx.RegularPages }} -{{- else }} -{{- $pages = $pctx.Pages }} -{{- end }} -{{- $limit := .Site.Config.Services.RSS.Limit }} -{{- if ge $limit 1 }} -{{- $pages = $pages | first $limit }} -{{- end }} - - {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ .Site.Title }}{{ end }} - - - {{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }} - {{ .Permalink }} - - {{ with $authorName }}{{ . }}{{ end }} - {{ with $authorEmail }}{{ . }}{{ end }} - - Hugo - {{- range $pages }} - - {{ .Title }} - - {{ .Permalink }} - - {{ with $authorName }}{{ . }}{{ end }} - {{ with $authorEmail }}{{ . }}{{ end }} - - {{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }} - {{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }} - - {{ .Content | transform.XMLEscape | safeHTML }} - - - {{- end }} - diff --git a/layouts/list.html b/layouts/list.html deleted file mode 100644 index c62e475..0000000 --- a/layouts/list.html +++ /dev/null @@ -1,18 +0,0 @@ -{{ define "main" }} -{{ .Content }} -
    - -
    -{{ end }} diff --git a/layouts/list.rss.xml b/layouts/list.rss.xml deleted file mode 100644 index 3860ac1..0000000 --- a/layouts/list.rss.xml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $authorEmail := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .email }} - {{- $authorEmail = . }} - {{- end }} - {{- end }} -{{- end }} - -{{- $authorName := "" }} -{{- with site.Params.author }} - {{- if reflect.IsMap . }} - {{- with .name }} - {{- $authorName = . }} - {{- end }} - {{- else }} - {{- $authorName = . }} - {{- end }} -{{- end }} - -{{- $pctx := . }} -{{- if .IsHome }}{{ $pctx = .Site }}{{ end }} -{{- $pages := slice }} -{{- if or $.IsHome $.IsSection }} -{{- $pages = $pctx.RegularPages }} -{{- else }} -{{- $pages = $pctx.Pages }} -{{- end }} -{{- $limit := .Site.Config.Services.RSS.Limit }} -{{- if ge $limit 1 }} -{{- $pages = $pages | first $limit }} -{{- end }} -{{- printf "" | safeHTML }} - - - {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ .Site.Title }}{{ end }} - {{ .Permalink }} - Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ .Site.Title }} - Hugo - {{ site.Language.LanguageCode }}{{ with $authorEmail }} - {{.}}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with $authorEmail }} - {{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with .Site.Copyright }} - {{ . }}{{ end }}{{ if not .Date.IsZero }} - {{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} - {{- with .OutputFormats.Get "RSS" }} - {{ printf "" .Permalink .MediaType | safeHTML }} - {{- end }} - {{- range $pages }} - - {{ .Title }} - {{ .Permalink }} - {{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} - {{- with $authorEmail }}{{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }} - {{ .Permalink }} - - <strong>{{ .Description | transform.XMLEscape | safeHTML }}</strong> - - {{ .Content | transform.XMLEscape | safeHTML }} - - - {{- end }} - - diff --git a/layouts/single.html b/layouts/single.html deleted file mode 100644 index 9ce735a..0000000 --- a/layouts/single.html +++ /dev/null @@ -1,20 +0,0 @@ -{{ define "main" }} -
    - {{ $dateHuman := .Date | time.Format ":date_long" }} - {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }} - {{ $lastmodDateHuman := .Lastmod | time.Format ":date_long" }} - {{ $lastmodDateMachine := .Lastmod | time.Format "2006-01-02T15:04:05-07:00" }} -
    -

    - Editiert: - -

    -

    - -

    -
    -

    {{ .Title }}

    -

    {{ .Description }}

    - {{ .Content }} -
    -{{ end }} diff --git a/assets/css/main.css b/static/main.css similarity index 96% rename from assets/css/main.css rename to static/main.css index 7622b10..7aab05c 100644 --- a/assets/css/main.css +++ b/static/main.css @@ -157,6 +157,7 @@ svg { margin: 0.5rem; vertical-align: middle; fill: light-dark(var(--uchu-yin), var(--uchu-yang)); + @media (prefers-color-scheme: dark) { path { fill: white; @@ -206,7 +207,7 @@ article { height: auto; margin: 0; - figcaption > p { + figcaption>p { margin: 0.25rem 0 2rem; font-family: var(--sans-serif); text-align: center; @@ -218,7 +219,7 @@ article { height: auto; } - > p:nth-of-type(2)::first-letter { + >p:nth-of-type(2)::first-letter { font-size: 3.3rem; float: left; line-height: 3rem; @@ -302,6 +303,7 @@ footer { width: 0.75rem; vertical-align: middle; margin: 0 1px; + @media (prefers-color-scheme: dark) { path { fill: white; @@ -344,24 +346,14 @@ footer { } } -code { - font-family: var(--mono); - border-radius: 0.3rem; - font-size: 0.8rem; - margin: 0; - padding: 0 1rem; -} - -.highlight { - font-family: var(--mono); +.giallo { border: 1px solid light-dark(var(--uchu-gray), var(--uchu-dark-gray)); border-radius: 0.3rem; - margin: 1rem 0; - padding: 0 1rem; - overflow: auto; - - pre { - margin: 0; - padding: 0; - } +} + +.giallo-l { + font-family: var(--mono); + padding: 1rem; + overflow: auto; + display: block; } diff --git a/static/pharmacist-0.png b/static/pharmacist-0.png deleted file mode 100644 index dec2d66..0000000 Binary files a/static/pharmacist-0.png and /dev/null differ diff --git a/static/pharmacist-0.txt b/static/pharmacist-0.txt deleted file mode 100644 index a9f5d1d..0000000 --- a/static/pharmacist-0.txt +++ /dev/null @@ -1,15 +0,0 @@ - ▄▄▀▀▄▀▀▀▀▀▀▀▀▄▄ - ▄▀ █ - ▄▀ ▄▄▄ █ - █ ▄▀▀▀ ▀▀▀▀▀▀▀█▀ - ▀▄▄█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ - █ █ █ - ▀█▀▄ ▄▀▄ ▄▀ - █ ▀▀▀▀▀ ▀▀▀▀█ - █ █ - █ ▀▀▀▀ █ - █ ▄▀ - █ █▀▀▀▀▀▀ -▄▀▀▀▄ ▄▀▀▀▄ -█ ▀▄▀ █ -█ █ ▀▀ █ diff --git a/static/pharmacist-0.webp b/static/pharmacist-0.webp deleted file mode 100644 index a86eebb..0000000 Binary files a/static/pharmacist-0.webp and /dev/null differ diff --git a/static/pharmacist-1-blue.png b/static/pharmacist-1-blue.png deleted file mode 100644 index ff841be..0000000 Binary files a/static/pharmacist-1-blue.png and /dev/null differ diff --git a/static/pharmacist-1-bluegray.png b/static/pharmacist-1-bluegray.png deleted file mode 100644 index 1305e24..0000000 Binary files a/static/pharmacist-1-bluegray.png and /dev/null differ diff --git a/static/pharmacist-1-darkblue.png b/static/pharmacist-1-darkblue.png deleted file mode 100644 index 35c1f8c..0000000 Binary files a/static/pharmacist-1-darkblue.png and /dev/null differ diff --git a/static/pharmacist-1-darkgreen.png b/static/pharmacist-1-darkgreen.png deleted file mode 100644 index 8787dac..0000000 Binary files a/static/pharmacist-1-darkgreen.png and /dev/null differ diff --git a/static/pharmacist-1-green.png b/static/pharmacist-1-green.png deleted file mode 100644 index 660f597..0000000 Binary files a/static/pharmacist-1-green.png and /dev/null differ diff --git a/static/pharmacist-1-lightblue.png b/static/pharmacist-1-lightblue.png deleted file mode 100644 index 35e140d..0000000 Binary files a/static/pharmacist-1-lightblue.png and /dev/null differ diff --git a/static/pharmacist-1-lightgreen.png b/static/pharmacist-1-lightgreen.png deleted file mode 100644 index 79b133f..0000000 Binary files a/static/pharmacist-1-lightgreen.png and /dev/null differ diff --git a/static/pharmacist-1-lightviolet.png b/static/pharmacist-1-lightviolet.png deleted file mode 100644 index 6d63272..0000000 Binary files a/static/pharmacist-1-lightviolet.png and /dev/null differ diff --git a/static/pharmacist-1-orange.png b/static/pharmacist-1-orange.png deleted file mode 100644 index 6dcb006..0000000 Binary files a/static/pharmacist-1-orange.png and /dev/null differ diff --git a/static/pharmacist-1-pink.png b/static/pharmacist-1-pink.png deleted file mode 100644 index 7604d61..0000000 Binary files a/static/pharmacist-1-pink.png and /dev/null differ diff --git a/static/pharmacist-1-red.png b/static/pharmacist-1-red.png deleted file mode 100644 index 455f794..0000000 Binary files a/static/pharmacist-1-red.png and /dev/null differ diff --git a/static/pharmacist-1-violet.png b/static/pharmacist-1-violet.png deleted file mode 100644 index f3338e8..0000000 Binary files a/static/pharmacist-1-violet.png and /dev/null differ diff --git a/static/pharmacist-1-yellow.png b/static/pharmacist-1-yellow.png deleted file mode 100644 index 8aa3e4a..0000000 Binary files a/static/pharmacist-1-yellow.png and /dev/null differ diff --git a/static/pharmacist-1-yellow.webp b/static/pharmacist-1-yellow.webp deleted file mode 100644 index b7258b4..0000000 Binary files a/static/pharmacist-1-yellow.webp and /dev/null differ diff --git a/static/skier-1-1.png b/static/skier-1-1.png deleted file mode 100644 index 085eb45..0000000 Binary files a/static/skier-1-1.png and /dev/null differ diff --git a/static/skier-1-2.png b/static/skier-1-2.png deleted file mode 100644 index 8addb74..0000000 Binary files a/static/skier-1-2.png and /dev/null differ diff --git a/static/skier-1-3.png b/static/skier-1-3.png deleted file mode 100644 index b907cfa..0000000 Binary files a/static/skier-1-3.png and /dev/null differ diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..ef8f50e --- /dev/null +++ b/templates/404.html @@ -0,0 +1,58 @@ + + + + + 404 – {{ config.title }} + + + + + + + + + + + + + +
    + {{ load_data(path="templates/logo.svg") | safe }}Jan Kremer + +
    +
    +
    +

    404 Not Found

    +
    +
    + + + diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..c7f6a6a --- /dev/null +++ b/templates/base.html @@ -0,0 +1,70 @@ +{% import "macros.html" as macros %} + + + + + + {% if current_path == "/" %} + {{ config.title }} + {% elif section %} + {{ section.title }} – {{ config.title }} + {% elif page %} + {{ page.title }} – {{ config.title }} + {% endif %} + + + + + + + + + + + + {% block rss %} + + + {% endblock %} + + + +
    + {{ load_data(path="templates/logo.svg") | safe }}Jan Kremer + +
    +
    + {% block content %} + {% endblock content %} +
    + + + diff --git a/templates/blog-page.html b/templates/blog-page.html new file mode 100644 index 0000000..680bead --- /dev/null +++ b/templates/blog-page.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} +{% block content %} +
    +
    +

    + +

    + {% if page.updated %} +

    + Aktualisiert: +

    + {% endif %} +
    +

    {{ page.title }}

    +

    {{ page.description }}

    + {{ page.content | safe }} +
    +{% endblock content %} diff --git a/templates/blog.html b/templates/blog.html new file mode 100644 index 0000000..c4b4f0c --- /dev/null +++ b/templates/blog.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} +{% block content %} +
    + +
    +{% endblock content %} diff --git a/layouts/_partials/cc.svg b/templates/cc.svg similarity index 100% rename from layouts/_partials/cc.svg rename to templates/cc.svg diff --git a/layouts/_partials/git.svg b/templates/git.svg similarity index 100% rename from layouts/_partials/git.svg rename to templates/git.svg diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..b2afb98 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} +{% block content %} +
    + +
    +{% endblock content %} diff --git a/layouts/_partials/logo.svg b/templates/logo.svg similarity index 100% rename from layouts/_partials/logo.svg rename to templates/logo.svg diff --git a/templates/macros.html b/templates/macros.html new file mode 100644 index 0000000..b1750b5 --- /dev/null +++ b/templates/macros.html @@ -0,0 +1,6 @@ +{% macro menu_item(url, name) %} +
  • + {{ name }} +
  • +{% endmacro %} diff --git a/templates/shortcodes/figure.html b/templates/shortcodes/figure.html new file mode 100644 index 0000000..c4ff249 --- /dev/null +++ b/templates/shortcodes/figure.html @@ -0,0 +1,15 @@ +
    + + {% if caption or alt %} +
    +

    + {% if caption %} + {{ caption }} + {% elif alt %} + {{ alt }} + {% endif %} +

    +
    + {% endif %} +
    diff --git a/layouts/_partials/zero.svg b/templates/zero.svg similarity index 100% rename from layouts/_partials/zero.svg rename to templates/zero.svg diff --git a/treefmt.nix b/treefmt.nix index 7205383..9bc011c 100644 --- a/treefmt.nix +++ b/treefmt.nix @@ -2,6 +2,7 @@ programs = { nixfmt.enable = true; taplo.enable = true; + mdformat.enable = true; djlint.enable = true; }; settings.global.excludes = [ diff --git a/zola.toml b/zola.toml new file mode 100644 index 0000000..004c09b --- /dev/null +++ b/zola.toml @@ -0,0 +1,85 @@ +# The URL the site will be built for +base_url = "https://jankremer.de" + +title = "Jan Kremer" +description = "Blog von Jan Kremer" +author = "Jan Kremer" + +default_language = "de" + +# Whether dotfiles at the root level of the output directory are preserved when (re)building the site. +# Enabling this also prevents the deletion of the output folder itself on rebuilds. +# preserve_dotfiles_in_output = true + +generate_feeds = true +feed_filenames = ["atom.xml", "rss.xml"] + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = true + +[markdown] + +# CSS class to add to external links (e.g. "external-link") +# external_links_class = + +# Whether to set decoding="async" and loading="lazy" for all images +# When turned on, the alt text must be plain text. +# For example, `![xx](...)` is ok but `![*x*x](...)` isn’t ok +lazy_async_image = true +definition_list = true +bottom_footnotes = true +smart_punctuation = true + +# When set to "true", support for GitHub-style alerts, a.k.a. callouts or admonitions, is enabled in the Markdown parser. +# For example, this Markdown syntax: +# +# > [!NOTE] +# > alert note +# +# will result in the following generated HTML: +# +#
    +#

    alert note

    +#
    +# +# where the CSS class name suffix may be `note`, `tip`, `important`, `warning`, or `caution`, depending on the alert type. +# Visual appearance depends on theme-level support; refer to your theme's documentation for more information. +github_alerts = false + +# insert_anchor_links = "left" + +[markdown.highlighting] +error_on_missing_language = true + +# Whether to use inline hex colours (`inline`) or CSS classes (`class`) +style = "inline" + +light_theme = "catppuccin-latte" +dark_theme = "catppuccin-macchiato" + +# A list of files for additional JSON TextMate grammars +extra_grammars = [] + +[search] +# Whether to include the title of the page/section in the index +include_title = true +# Whether to include the description of the page/section in the index +include_description = false +# Whether to include the RFC3339 datetime of the page in the search index +include_date = false +# Whether to include the path of the page/section in the index (the permalink is always included) +include_path = false +# Whether to include the rendered content of the page/section in the index +include_content = true +# At which code point to truncate the content to. Useful if you have a lot of pages and the index would +# become too big to load on the site. Defaults to not being set. +# truncate_content_length = 100 + +# Whether to produce the search index as a javascript file or as a JSON file +# Accepted values: +# - "elasticlunr_javascript", "elasticlunr_json" +# - "fuse_javascript", "fuse_json" +index_format = "elasticlunr_javascript" + +[extra] +# Put all your custom variables here