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 @@ +{{ .Text | safeHTML }} + + + + + + + \ No newline at end of file diff --git a/themes/devroom-2024/layouts/_default/baseof.html b/themes/devroom-2024/layouts/_default/baseof.html new file mode 100644 index 0000000..1dd97c5 --- /dev/null +++ b/themes/devroom-2024/layouts/_default/baseof.html @@ -0,0 +1,53 @@ + + + + + + {{ with .Site.Params.author }} + + {{ end }} {{ with .Site.Params.description }} + + {{ end }} {{ with .Site.Params.keywords }} + + {{ end }} {{ if .Permalink }} + + + {{ end }} + {{ block "title" . }}{{ .Site.Title }}{{ end }} + {{ hugo.Generator }} + + {{ if .Site.IsServer }} {{ $cssOpts := (dict "targetPath" "css/devroom.css" + "enableSourceMap" true ) }} {{ $styles := resources.Get "scss/devroom.scss" + | resources.ExecuteAsTemplate "style.devroom.css" . | toCSS $cssOpts }} + + {{ else }} {{ $cssOpts := (dict "targetPath" "css/devroom.css" ) }} {{ + $styles := resources.Get "scss/devroom.scss" | resources.ExecuteAsTemplate + "style.devroom.css" . | toCSS $cssOpts | minify | fingerprint }} + + {{ end }} + + + + + + + +
+ {{ partial "header.html" . }} +
{{ block "content" . }}{{ end }}
+ {{ partial "footer.html" . }} +
+ + + diff --git a/themes/devroom-2024/layouts/_default/list.html b/themes/devroom-2024/layouts/_default/list.html new file mode 100644 index 0000000..4a9cf0b --- /dev/null +++ b/themes/devroom-2024/layouts/_default/list.html @@ -0,0 +1,11 @@ +{{ define "title" }} + {{- if eq .Kind "taxonomy" -}} + {{- i18n .Data.Singular | title -}} + {{- print "" -}} + {{- end -}} + + {{- .Title }} · {{ .Site.Title -}} +{{ end }} +{{ define "content" }} + {{ partial "list.html" . }} +{{ end }} \ No newline at end of file diff --git a/themes/devroom-2024/layouts/_default/rss.xml b/themes/devroom-2024/layouts/_default/rss.xml new file mode 100644 index 0000000..7d99230 --- /dev/null +++ b/themes/devroom-2024/layouts/_default/rss.xml @@ -0,0 +1,32 @@ +{{ $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} +{{- $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 -- gohugo.io{{ with .Site.LanguageCode }} + {{.}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Copyright }} + {{.}}{{end}}{{ if not .Date.IsZero }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} + {{ with .OutputFormats.Get "RSS" }} + {{ printf "" .Permalink .MediaType | safeHTML }} + {{ end }} + {{ range $pages }} + + {{ .Title }} + {{ .Permalink }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{ with .Site.Author.email }}{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} + {{ .Permalink }} + {{ .Summary | html }} + + {{ end }} + + \ No newline at end of file diff --git a/themes/devroom-2024/layouts/_default/single.html b/themes/devroom-2024/layouts/_default/single.html new file mode 100644 index 0000000..affa805 --- /dev/null +++ b/themes/devroom-2024/layouts/_default/single.html @@ -0,0 +1,6 @@ +{{ define "title" }} + {{ .Title }} · {{ .Site.Title }} +{{ end }} +{{ define "content" }} + {{ partial "page.html" . }} +{{ end }} \ No newline at end of file diff --git a/themes/devroom-2024/layouts/index.html b/themes/devroom-2024/layouts/index.html new file mode 100644 index 0000000..ab26f29 --- /dev/null +++ b/themes/devroom-2024/layouts/index.html @@ -0,0 +1,3 @@ +{{ define "content" }} + {{ partial "home.html" . }} +{{ end }} \ No newline at end of file diff --git a/themes/devroom-2024/layouts/partials/footer.html b/themes/devroom-2024/layouts/partials/footer.html new file mode 100644 index 0000000..aa706ed --- /dev/null +++ b/themes/devroom-2024/layouts/partials/footer.html @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/themes/devroom-2024/layouts/partials/header.html b/themes/devroom-2024/layouts/partials/header.html new file mode 100644 index 0000000..e305490 --- /dev/null +++ b/themes/devroom-2024/layouts/partials/header.html @@ -0,0 +1,12 @@ +
+ +
diff --git a/themes/devroom-2024/layouts/partials/home.html b/themes/devroom-2024/layouts/partials/home.html new file mode 100644 index 0000000..f121eee --- /dev/null +++ b/themes/devroom-2024/layouts/partials/home.html @@ -0,0 +1,24 @@ +{{ $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} + +
+

{{ .Site.Params.info }}

+ +

Read more about me »

+
+ +
+{{ range $pages.GroupByDate "2006" }} +

{{ .Key }}

+ +
+ {{ range .Pages }} +
+
{{ time.Format "02 Jan" .Date }}
+

{{ .Title }}

+
{{ .ReadingTime }} min read »
+ +
+ {{ end }} +
+{{ end }} +
\ No newline at end of file diff --git a/themes/devroom-2024/layouts/partials/list.html b/themes/devroom-2024/layouts/partials/list.html new file mode 100644 index 0000000..5fc1e3d --- /dev/null +++ b/themes/devroom-2024/layouts/partials/list.html @@ -0,0 +1,16 @@ +
+

+ {{- if eq .Kind "taxonomy" -}} + {{- i18n .Data.Singular | title -}} + {{- print "Tagged " -}} + {{- end -}} + + {{- .Title -}} +

+ + +
\ No newline at end of file diff --git a/themes/devroom-2024/layouts/partials/page.html b/themes/devroom-2024/layouts/partials/page.html new file mode 100644 index 0000000..389aae7 --- /dev/null +++ b/themes/devroom-2024/layouts/partials/page.html @@ -0,0 +1,4 @@ +
+

{{ .Title }}

+ {{ .Content }} +
\ No newline at end of file diff --git a/themes/devroom-2024/layouts/partials/post.html b/themes/devroom-2024/layouts/partials/post.html new file mode 100644 index 0000000..526152e --- /dev/null +++ b/themes/devroom-2024/layouts/partials/post.html @@ -0,0 +1,41 @@ +{{ $lastmod := .Lastmod.Format "2006-01-02" }} +{{ $date := .Date.Format "2006-01-02" }} + +
+
+
+ {{ if not (eq $lastmod $date) }} +
Last updated
+ {{ end }} + +

{{ .Title }}

+
+ +
+
+ {{ .Content }} +
+
+ +
+
Tags: + {{ range .Params.tags }} + {{ . }} + {{ end }} +
+
+ +
+
+ +
+
+ +
diff --git a/themes/devroom-2024/layouts/partials/taxonomy/tags.html b/themes/devroom-2024/layouts/partials/taxonomy/tags.html new file mode 100644 index 0000000..b6bf5ab --- /dev/null +++ b/themes/devroom-2024/layouts/partials/taxonomy/tags.html @@ -0,0 +1,6 @@ +{{- range $index, $el := . -}} + {{- if gt $index 0 }} + + {{- end }} + {{ . | lower }} +{{- end -}} diff --git a/themes/devroom-2024/layouts/posts/single.html b/themes/devroom-2024/layouts/posts/single.html new file mode 100644 index 0000000..352a77c --- /dev/null +++ b/themes/devroom-2024/layouts/posts/single.html @@ -0,0 +1,6 @@ +{{ define "title" }} + {{ .Title }} · {{ .Site.Title }} +{{ end }} +{{ define "content" }} + {{ partial "post.html" . }} +{{ end }} \ No newline at end of file diff --git a/themes/devroom-2024/layouts/projects/single.html b/themes/devroom-2024/layouts/projects/single.html new file mode 100644 index 0000000..352a77c --- /dev/null +++ b/themes/devroom-2024/layouts/projects/single.html @@ -0,0 +1,6 @@ +{{ define "title" }} + {{ .Title }} · {{ .Site.Title }} +{{ end }} +{{ define "content" }} + {{ partial "post.html" . }} +{{ end }} \ No newline at end of file diff --git a/themes/devroom-2024/theme.toml b/themes/devroom-2024/theme.toml new file mode 100644 index 0000000..89e250b --- /dev/null +++ b/themes/devroom-2024/theme.toml @@ -0,0 +1,15 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "de Vroom 2024" +license = "MIT" +licenselink = "https://git.devroom.io/ariejan/devroom-2020/blob/master/LICENSE" +description = "" +homepage = "https://www.devroom.io" +tags = [] +features = [] +min_version = "0.120" + +[author] + name = "Ariejan de Vroom" + homepage = "https://www.devroom.io"