diff --git a/config.toml b/config.toml
index 685cbca..33adc1a 100644
--- a/config.toml
+++ b/config.toml
@@ -1,6 +1,6 @@
baseurl = "https://www.devroom.io"
title = "devroom.io"
-theme = "devroom-2020"
+theme = "devroom-2024"
languagecode = "en"
defaultcontentlanguage = "en"
@@ -36,76 +36,3 @@ enableGitInfo = true
footerquote = "Live now; make now always the most precious time. Now will never come again.
– Jean-Luc Picard"
mainSections = ["posts", "projects"]
-
-[[params.skill]]
- content = "Software Engineer, consultant and architect at Kabisa"
- weight = 10
-[[params.skill]]
- content = "Fanatical homelab admin (read more)"
- weight = 20
-[[params.skill]]
- content = "Bass guitar player, piano player, and music producer"
- weight = 30
-[[params.skill]]
- content = "Drive-way home-wrencher (not a car mechanic); current project: Volkswagen Golf 3 Cabrio"
- weight = 40
-
-[[params.popular]]
- name = "Volkswagen Golf III Cabrio (1994)"
- url = "/projects/volkswagen-golf-iii-cabrio-1994/"
- weight = 150
-[[params.popular]]
- name = "Cherry-Picking specific commits from another branch"
- url = "/2010/06/10/cherry-picking-specific-commits-from-another-branch/"
- weight = 100
-[[params.popular]]
- name = "Installing Node.js and NPM on Ubuntu/Debian"
- url = "/2011/10/24/installing-node-js-and-npm-on-ubuntu-debian/"
- weight = 100
-[[params.popular]]
- name = "How to create and apply a patch with Git"
- url = "/2009/10/26/how-to-create-and-apply-a-patch-with-git/"
- weight = 100
-[[params.popular]]
- name = "Git: Squash your latests commits into one"
- url = "/2011/07/05/git-squash-your-latests-commits-into-one/"
- weight = 50
-[[params.popular]]
- name = "Building a DIY Home Server with FreeNAS"
- url = "/2020/02/28/building-a-diy-home-server-with-freenas/"
- weight = 50
-[[params.popular]]
- name = "How to create and apply a patch with Subversion"
- url = "/2007/07/03/how-to-create-and-apply-a-patch-with-subversion/"
- weight = 50
-[[params.popular]]
- name = "Repair: Philips 42\" 3D LED TV with Ambilight"
- url = "/projects/repair-philips-42pfl6057h-12/"
- weight = 50
-
-
-# Menu links
-[[menu.main]]
- name = "devroom.io"
- weight = 1
- url = "/"
-[[menu.main]]
- name = "blog"
- weight = 10
- url = "/posts/"
-[[menu.main]]
- name = "projects"
- weight = 20
- url = "/projects/"
-[[menu.main]]
- name = "about"
- weight = 40
- url = "/about/"
-[[menu.main]]
- name = "gpg"
- weight = 90
- url = "/gpg/"
-[[menu.main]]
- name = "contact"
- weight = 100
- url = "/contact/"
diff --git a/themes/devroom-2024/LICENSE b/themes/devroom-2024/LICENSE
new file mode 100644
index 0000000..faff36e
--- /dev/null
+++ b/themes/devroom-2024/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2020 YOUR_NAME_HERE
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/themes/devroom-2024/archetypes/default.md b/themes/devroom-2024/archetypes/default.md
new file mode 100644
index 0000000..c17bbb0
--- /dev/null
+++ b/themes/devroom-2024/archetypes/default.md
@@ -0,0 +1,7 @@
++++
+date = {{ .Date }}
+title = "{{ replace .Name "-" " " | title }}"
+draft = true
+tags = []
+description = ""
++++
diff --git a/themes/devroom-2024/assets/scss/devroom.scss b/themes/devroom-2024/assets/scss/devroom.scss
new file mode 100644
index 0000000..f71bb17
--- /dev/null
+++ b/themes/devroom-2024/assets/scss/devroom.scss
@@ -0,0 +1,396 @@
+@import url('https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap');
+
+$h1_font_size: 2.0rem;
+$h2_font_size: 1.7rem;
+$header_size: 1.2rem;
+
+$font_size: 16px;
+$code_font_size: 16px;
+$code_line_height: 17px;
+$line-height: 1.6;
+
+$accent: rgb(90, 126, 193);
+$background: rgb(40, 44, 53);
+$backdrop: $background;
+$text: rgb(226, 226, 226);
+$subtext: #868686;
+$links: $accent;
+$footer: $text;
+$meta: $text;
+$header: $text;
+$highlight: $links;
+$code_background: $background;
+$code_border_color: $background;
+$code: #ff9327;
+$separator: darken(desaturate($accent, 20%), 20%);
+
+html, body {
+ background-color: $backdrop;
+ color: $text;
+ font-family: "Mulish", sans-serif;
+ font-size: $font_size;
+ line-height: $line-height;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code, pre {
+ font-family: monospace;
+}
+
+.important {
+ width: 100%;
+ display: block;
+ font-style: italic;
+}
+
+.important::before {
+ content: '\f0a4';
+ font-family: "Font Awesome 6 Free";
+ font-size: 1rem;
+ margin-right: 0.7rem;
+}
+
+.container {
+ background-color: $background;
+ padding: 1rem 1.5rem;
+ margin: 1rem auto;
+ max-width: 1200px;
+ min-height: 100vh;
+}
+
+a, a:hover {
+ color: $links;
+ text-decoration: none;
+}
+
+nav {
+ margin-bottom: 2rem;
+ text-align: right;
+ vertical-align: bottom;
+
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+
+ a.brand {
+ text-align: left;
+ flex: 1;
+ display: block;
+ color: $text;
+ font-weight: 800;
+ font-size: 1.6rem;
+ }
+
+ .menu {
+ flex: 2;
+
+ display: flex;
+ gap: 0.8rem;
+ justify-content: flex-end;
+
+ a {
+ color: $text;
+ font-weight: 700;
+
+ }
+ }
+}
+
+
+h1, h2, h3, h4, h5 {
+ font-family: "Mulish", sans-serif;
+ font-size: $header_size;
+ font-weight: 900;
+ line-height: $header_size * 1.9;
+ color: $header;
+ margin: 0.67rem 0;
+}
+
+h1 {
+ font-size: $h1_font_size;
+ color: $text;
+ margin-bottom: 1.6rem;
+}
+
+h2 {
+ font-size: $h2_font_size;
+}
+
+b,
+strong {
+ font-weight: bold;
+}
+
+blockquote {
+ border-left: 5px solid $code_border_color;
+ padding-left: 1rem;
+}
+
+.auto-width img {
+ width: auto;
+}
+
+img {
+ width: 98%;
+ border-radius: 1.6rem;
+ margin: 0 auto;
+ display: block;
+}
+
+.img--caption {
+ display: block;
+ font-style: italic;
+ font-size: 0.92rem;
+ text-align: center;
+}
+
+.gallery-view {
+ display: flex;
+ flex-flow: row wrap;
+
+ figure {
+ max-width: 48%;
+ min-width: 48%;
+ margin: 0.5rem 0;
+ flex: 1;
+
+ img {
+ width: 90%;
+ }
+
+ .img--caption {
+ margin: 0 auto;
+ padding-top: 0.5rem;
+ max-width: 80%;
+ line-height: 1.1rem;
+ }
+ }
+
+}
+
+ol {
+ list-style-position: outside;
+}
+
+ul {
+ list-style-position: outside;
+}
+
+span.begin-task-list + ul {
+ list-style-type: none;
+ padding-left: 1rem;
+
+ input[type="checkbox"] {
+ margin-right: 0.4rem;
+ list-style-image:url("/images/unchecked.png");
+ }
+
+ input[type="checkbox"]:checked {
+ list-style-image:url("/images/checked.png");
+ }
+}
+
+header {
+ margin-bottom: 1.5rem;
+}
+
+footer {
+ color: $footer;
+ border-top: 1px solid $footer;
+ margin-top: 1.5rem;
+
+ em {
+ background-color: $background;
+ color: $text;
+ }
+}
+
+small {
+ font-size: 100%;
+ color: $footer;
+}
+
+.meta {
+ color: $meta;
+ font-weight: normal;
+}
+
+code {
+ color: $code;
+}
+
+
+pre, code {
+ font-family: 'IBM Plex Mono', monospace;
+ font-size: $code_font_size;
+ line-height: $code_line_height;
+}
+
+pre > code {
+ overflow-wrap: normal;
+ white-space: pre;
+ color: $text;
+ background-color: $background !important;
+}
+
+pre {
+ background-color: $code_background !important;
+ padding: 1rem 1rem 1rem 2.5rem;
+ overflow-x: auto;
+ overflow-y: hidden;
+ line-height: $line-height;
+ border: 2px solid $code_border_color;
+}
+
+table td, table th {
+ padding: 0.2rem 1rem;
+}
+
+img.about-avatar {
+ width: 16rem;
+ float: right;
+ border-radius: 50%;
+ margin-left: 1rem;
+ margin-bottom: 1rem;
+}
+
+.fi {
+ font-size: $font_size * 1.2;
+ padding-top: 0.5rem;
+}
+
+// bootstrap SVG-Icons
+.bi {
+ display: inline-block;
+ vertical-align: middle;
+ padding-bottom: 0.25rem;
+ }
+
+ .bi-link {
+ width: 1.4rem;
+ height: 1.4rem;
+ color: $links;
+ }
+
+// Front-page post feed
+
+.main-page {
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+.narrow {
+ max-width: 780px;
+ margin: 0 auto;
+}
+
+article.post {
+ display: flex;
+ align-items: center;
+ line-height: 1;
+ overflow: hidden;
+ position: relative;
+ padding: 0.1rem 0;
+
+ &+article.post {
+ border-top: 1px solid $separator;
+ }
+
+ .calendar {
+ text-transform: uppercase;
+ color: $links;
+ font-size: 12px;
+ font-weight: 600;
+ margin-right: 1.5rem;
+ min-width: 50px;
+ }
+
+ .title {
+ flex-grow: 1;
+ font-size: $font-size;
+ font-weight: normal;
+ line-height: 1.3;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding-right: 1rem;
+ white-space: nowrap;
+ }
+
+ .actions {
+ font-size: 14px;
+ white-space: nowrap;
+
+ @media (max-width: 600px) {
+ display: none;
+ }
+ }
+
+ .permalink {
+ bottom: 0;
+ left: 0;
+ outline: none;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 50;
+ }
+}
+
+article.full {
+ .created_on, .updated_on {
+ color: $subtext;
+ text-align: center;
+ text-transform: uppercase;
+ font-size: 13px;
+ font-weight: 600;
+ }
+
+ .updated_on {
+ display: none;
+ }
+
+ h1 {
+ text-align: center;
+ }
+
+ .article-head {
+ margin: 5rem 0;
+ }
+}
+
+a.tag {
+ background-color: $accent;
+ color: $text;
+ padding: 2px 8px 4px;
+ margin: 0 2px;
+ border-radius: 6px;
+ font-size: 13px;
+ text-transform: lowercase;
+}
+
+.article-about {
+ margin: 4rem 0;
+ display: flex;
+ flex-direction: row;
+
+ & > * {
+ flex: 1;
+ }
+
+ .previous-article, .next-article {
+ font-size: 48px;
+ }
+
+ .article-author {
+ flex: 4;
+ flex-grow: 999;
+
+ text-align: center;
+
+ img {
+ max-width: 64px;
+ border-radius: 50%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/themes/devroom-2024/layouts/404.html b/themes/devroom-2024/layouts/404.html
new file mode 100644
index 0000000..e69de29
diff --git a/themes/devroom-2024/layouts/_default/_markup/render-heading.html b/themes/devroom-2024/layouts/_default/_markup/render-heading.html
new file mode 100644
index 0000000..ab16dfe
--- /dev/null
+++ b/themes/devroom-2024/layouts/_default/_markup/render-heading.html
@@ -0,0 +1,8 @@
+
{{ .Site.Params.info }}
+ + +