diff --git a/.gitignore b/.gitignore
index d4ba081..f18cdab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,4 @@
_gen
# downloaded by nix
-themes
+themes/poison
diff --git a/layouts/.gitkeep b/content/posts/_index.md
similarity index 100%
rename from layouts/.gitkeep
rename to content/posts/_index.md
diff --git a/content/projects/servicepoint/servicepoint.md b/content/projects/servicepoint/servicepoint.md
deleted file mode 100644
index 580bdf3..0000000
--- a/content/projects/servicepoint/servicepoint.md
+++ /dev/null
@@ -1,5 +0,0 @@
-+++
-date = '2025-04-06T12:24:08+02:00'
-draft = true
-title = 'servicepoint'
-+++
diff --git a/flake.nix b/flake.nix
index d1738f8..25eae1b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -28,12 +28,14 @@
devShells = forAllSystems (
{ pkgs, system, ... }:
{
- default = pkgs.mkShellNoCC rec {
+ default = pkgs.mkShellNoCC {
inputsFrom = [ self.packages.${system}.default ];
shellHook = ''
mkdir -p themes
ln -snf "${self.packages.${system}.hugo-theme-poison}" themes/poison
+
+ alias hugo="hugo --baseURL=http://localhost/"
'';
};
}
diff --git a/hugo.toml b/hugo.toml
index 87533cf..5ce6ecf 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -2,41 +2,41 @@
baseURL = '/'
#languageCode = 'en-us'
title = 'zerforschen+'
-theme = 'poison'
+theme = 'own-theme'
pluralizelisttitles = false
[params]
- brand = "zerforschen+"
- description = ""
- dark_mode = true
- front_page_content = ["posts", "projects"]
- menu = [
- # Dict keys:
- # Name: The name to display on the menu.
- # URL: The directory relative to the content directory.
- # HasChildren: If the directory's files should be listed. Default is true.
- # Limit: If the files should be listed, how many should be shown.
+brand = "zerforschen+"
+description = ""
+dark_mode = true
+front_page_content = ["posts", "projects"]
+menu = [
+ # Dict keys:
+ # Name: The name to display on the menu.
+ # URL: The directory relative to the content directory.
+ # HasChildren: If the directory's files should be listed. Default is true.
+ # Limit: If the files should be listed, how many should be shown.
- {Name = "About", URL = "/about/", HasChildren = false},
+ { Name = "About", URL = "/about/", HasChildren = false },
- {Name = "Posts", URL = "/posts/", HasChildren = true, Limit = 99},
+ { Name = "Posts", URL = "/posts/", HasChildren = true, Limit = 99 },
- # {Name = "Projects", URL = "/projects/"},
- ]
+ # {Name = "Projects", URL = "/projects/"},
+]
- #email_url = "mailto://user@domain"
- github_url = "https://github.com/kaesaecracker"
- mastodon_url = "https://chaos.social/@vinzenz"
- matrix_url = "https://matrix.org"
- forgejo_url = "https://git.berlin.ccc.de/vinzenz"
- rss_icon = true
+#email_url = "mailto://user@domain"
+github_url = "https://github.com/kaesaecracker"
+mastodon_url = "https://chaos.social/@vinzenz"
+matrix_url = "https://matrix.org"
+forgejo_url = "https://git.berlin.ccc.de/vinzenz"
+rss_icon = true
[taxonomies]
- series = 'series'
- tags = 'tags'
+series = 'series'
+tags = 'tags'
[params.meta]
- favicon = true
+favicon = true
[pagination]
- pagerSize = 10
+pagerSize = 10
diff --git a/themes/own-theme/archetypes/default.md b/themes/own-theme/archetypes/default.md
new file mode 100644
index 0000000..c6f3fce
--- /dev/null
+++ b/themes/own-theme/archetypes/default.md
@@ -0,0 +1,5 @@
++++
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+date = {{ .Date }}
+draft = true
++++
diff --git a/themes/own-theme/assets/css/main.css b/themes/own-theme/assets/css/main.css
new file mode 100644
index 0000000..45e655d
--- /dev/null
+++ b/themes/own-theme/assets/css/main.css
@@ -0,0 +1,19 @@
+body {
+ font-family: sans-serif;
+ line-height: 1.5;
+ margin: 1rem;
+}
+
+header {
+ border-bottom: 1px solid;
+ margin-bottom: 1rem;
+}
+
+footer {
+ border-top: 1px solid;
+ margin-top: 1rem;
+}
+
+a {
+ text-decoration: none;
+}
diff --git a/themes/own-theme/assets/js/main.js b/themes/own-theme/assets/js/main.js
new file mode 100644
index 0000000..e2aac52
--- /dev/null
+++ b/themes/own-theme/assets/js/main.js
@@ -0,0 +1 @@
+console.log('This site was generated by Hugo.');
diff --git a/themes/own-theme/hugo.toml b/themes/own-theme/hugo.toml
new file mode 100644
index 0000000..6c35bc4
--- /dev/null
+++ b/themes/own-theme/hugo.toml
@@ -0,0 +1,23 @@
+baseURL = 'https://example.org/'
+languageCode = 'en-US'
+title = 'My New Hugo Site'
+
+[[menus.main]]
+name = 'Home'
+pageRef = '/'
+weight = 10
+
+[[menus.main]]
+name = 'Posts'
+pageRef = '/posts'
+weight = 20
+
+[[menus.main]]
+name = 'Tags'
+pageRef = '/tags'
+weight = 30
+
+[module]
+ [module.hugoVersion]
+ extended = false
+ min = "0.116.0"
diff --git a/themes/own-theme/layouts/_default/baseof.html b/themes/own-theme/layouts/_default/baseof.html
new file mode 100644
index 0000000..39dcbec
--- /dev/null
+++ b/themes/own-theme/layouts/_default/baseof.html
@@ -0,0 +1,17 @@
+
+
+
+ {{ partial "head.html" . }}
+
+
+
+ {{ partial "header.html" . }}
+
+
+ {{ block "main" . }}{{ end }}
+
+
+ {{ partial "footer.html" . }}
+
+
+
diff --git a/themes/own-theme/layouts/_default/home.html b/themes/own-theme/layouts/_default/home.html
new file mode 100644
index 0000000..0df6597
--- /dev/null
+++ b/themes/own-theme/layouts/_default/home.html
@@ -0,0 +1,7 @@
+{{ define "main" }}
+ {{ .Content }}
+ {{ range site.RegularPages }}
+
+ {{ .Summary }}
+ {{ end }}
+{{ end }}
diff --git a/themes/own-theme/layouts/_default/list.html b/themes/own-theme/layouts/_default/list.html
new file mode 100644
index 0000000..50fc92d
--- /dev/null
+++ b/themes/own-theme/layouts/_default/list.html
@@ -0,0 +1,8 @@
+{{ define "main" }}
+ {{ .Title }}
+ {{ .Content }}
+ {{ range .Pages }}
+
+ {{ .Summary }}
+ {{ end }}
+{{ end }}
diff --git a/layouts/_default/rss.xml b/themes/own-theme/layouts/_default/rss.xml
similarity index 100%
rename from layouts/_default/rss.xml
rename to themes/own-theme/layouts/_default/rss.xml
diff --git a/themes/own-theme/layouts/_default/single.html b/themes/own-theme/layouts/_default/single.html
new file mode 100644
index 0000000..7e286c8
--- /dev/null
+++ b/themes/own-theme/layouts/_default/single.html
@@ -0,0 +1,10 @@
+{{ define "main" }}
+ {{ .Title }}
+
+ {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
+ {{ $dateHuman := .Date | time.Format ":date_long" }}
+ {{ $dateHuman }}
+
+ {{ .Content }}
+ {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
+{{ end }}
diff --git a/themes/own-theme/layouts/partials/footer.html b/themes/own-theme/layouts/partials/footer.html
new file mode 100644
index 0000000..e69de29
diff --git a/themes/own-theme/layouts/partials/head.html b/themes/own-theme/layouts/partials/head.html
new file mode 100644
index 0000000..62ce25b
--- /dev/null
+++ b/themes/own-theme/layouts/partials/head.html
@@ -0,0 +1,6 @@
+
+
+{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}
+{{ partialCached "head/css.html" . }}
+{{ partialCached "head/js.html" . }}
+
\ No newline at end of file
diff --git a/themes/own-theme/layouts/partials/head/css.html b/themes/own-theme/layouts/partials/head/css.html
new file mode 100644
index 0000000..91b928d
--- /dev/null
+++ b/themes/own-theme/layouts/partials/head/css.html
@@ -0,0 +1,9 @@
+{{- with resources.Get "css/main.css" }}
+ {{- if eq hugo.Environment "development" }}
+
+ {{- else }}
+ {{- with . | minify | fingerprint }}
+
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/themes/own-theme/layouts/partials/head/js.html b/themes/own-theme/layouts/partials/head/js.html
new file mode 100644
index 0000000..18fe842
--- /dev/null
+++ b/themes/own-theme/layouts/partials/head/js.html
@@ -0,0 +1,12 @@
+{{- 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/themes/own-theme/layouts/partials/header.html b/themes/own-theme/layouts/partials/header.html
new file mode 100644
index 0000000..f23e6b8
--- /dev/null
+++ b/themes/own-theme/layouts/partials/header.html
@@ -0,0 +1,3 @@
+{{ site.Title }}
+{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
+{{ partial "socials.html" . }}
\ No newline at end of file
diff --git a/themes/own-theme/layouts/partials/menu.html b/themes/own-theme/layouts/partials/menu.html
new file mode 100644
index 0000000..7183180
--- /dev/null
+++ b/themes/own-theme/layouts/partials/menu.html
@@ -0,0 +1,51 @@
+{{- /*
+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 }}
+
+
+ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
+
+
+{{- 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 }}
+
+ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
+
+ {{- end }}
+
+ {{- end }}
+{{- end }}
diff --git a/layouts/partials/sidebar/socials.html b/themes/own-theme/layouts/partials/socials.html
similarity index 100%
rename from layouts/partials/sidebar/socials.html
rename to themes/own-theme/layouts/partials/socials.html
diff --git a/themes/own-theme/layouts/partials/terms.html b/themes/own-theme/layouts/partials/terms.html
new file mode 100644
index 0000000..8a6ebec
--- /dev/null
+++ b/themes/own-theme/layouts/partials/terms.html
@@ -0,0 +1,23 @@
+{{- /*
+For a given taxonomy, renders a list of terms assigned to the page.
+
+@context {page} page The current page.
+@context {string} taxonomy The taxonomy.
+
+@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/themes/own-theme/static/favicon.ico b/themes/own-theme/static/favicon.ico
new file mode 100644
index 0000000..67f8b77
Binary files /dev/null and b/themes/own-theme/static/favicon.ico differ
diff --git a/themes/own-theme/theme.toml b/themes/own-theme/theme.toml
new file mode 100644
index 0000000..c04ec33
--- /dev/null
+++ b/themes/own-theme/theme.toml
@@ -0,0 +1,31 @@
+name = 'the theme'
+# license = ''
+# licenselink = 'https://github.com/owner/repo/LICENSE'
+# description = 'Theme description'
+#
+# # The home page of the theme, where the source can be found
+# homepage = 'https://github.com/owner/repo'
+#
+# # If you have a running demo of the theme
+# demosite = 'https://owner.github.io/repo'
+#
+# # Taxonomy terms
+# tags = ['blog', 'company']
+# features = ['some', 'awesome', 'features']
+#
+# # If the theme has multiple authors
+# authors = [
+# {name = 'Name of author', homepage = 'Website of author'},
+# {name = 'Name of author', homepage = 'Website of author'}
+# ]
+#
+# # If the theme has a single author
+# [author]
+# name = 'Your name'
+# homepage = 'Your website'
+#
+# # If porting an existing theme
+# [original]
+# author = 'Name of original author'
+# homepage = 'Website of original author'
+# repo = 'https://github.com/owner/repo'