From b4deca7d0ff343123343fc4ae2d9b348140c0e9e Mon Sep 17 00:00:00 2001 From: Joost Agterhoek Date: Mon, 26 Aug 2024 16:04:05 +0200 Subject: [PATCH] first commit with a pre-push hook, curious >.<" --- .gitignore | 1 + _index.md | 14 +++ about.md | 5 + config.toml | 198 +++++++++++++++++++++++++++++++++ content/_index.md | 13 +++ content/about.md | 5 + content/blog/_index.md | 7 ++ content/blog/my-first-post.md | 25 +++++ content/blog/my-second-post.md | 7 ++ 9 files changed, 275 insertions(+) create mode 100644 .gitignore create mode 100644 _index.md create mode 100644 about.md create mode 100644 config.toml create mode 100644 content/_index.md create mode 100644 content/about.md create mode 100644 content/blog/_index.md create mode 100644 content/blog/my-first-post.md create mode 100644 content/blog/my-second-post.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53ef3e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +sync-zola.sh diff --git a/_index.md b/_index.md new file mode 100644 index 0000000..6c11aa7 --- /dev/null +++ b/_index.md @@ -0,0 +1,14 @@ ++++ +template = "index.html" +title = "Test home page" ++++ + +Hi! + +This is my test website build with the static site generator [Zola](www.getzola.org). I want to try out a more direct workflow in writing/blogging and keeping up with projects than my [main website build with Grav](https://joostagterhoek.nl) can offer. Liking it so far! :star: + +## Blog Posts + +- 🥇 [My first blog post here](./blog/my-first-post) + +## Projects diff --git a/about.md b/about.md new file mode 100644 index 0000000..31100ea --- /dev/null +++ b/about.md @@ -0,0 +1,5 @@ ++++ +title = "About" ++++ + +Hi there! I'm Joost Agterhoek and this is one of my websites. Currently not my main one, that would be [this lovely place](https://joostagterhoek.nl). This is still a work in progress. diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..bf31632 --- /dev/null +++ b/config.toml @@ -0,0 +1,198 @@ +# The base URL of the site; the only required configuration variable. +base_url = "https://notes.joostagterhoek.nl" + +# The site title and description; used in feeds by default. +title = "Trying out a statically generated website" +description = "" + +# The default language; used in feeds. +default_language = "en" + +# The site theme to use. +theme = "anemone" + +# For overriding the default output directory `public`, set it to another value (e.g.: "docs") +output_dir = "public" + +# 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 = false + +# When set to "true", the Sass files in the `sass` directory in the site root are compiled. +# Sass files in theme directories are always compiled. +compile_sass = false + +# When set to "true", the generated HTML files are minified. +minify_html = false + +# A list of glob patterns specifying asset files to ignore when the content +# directory is processed. Defaults to none, which means that all asset files are +# copied over to the `public` directory. +# Example: +# ignored_content = ["*.{graphml,xlsx}", "temp.*", "**/build_folder"] +ignored_content = [] + +# Similar to ignored_content, a list of glob patterns specifying asset files to +# ignore when the static directory is processed. Defaults to none, which means +# that all asset files are copied over to the `public` directory +ignored_static = [] + +# When set to "true", a feed is automatically generated. +generate_feeds = true + +# The filenames to use for the feeds. Used as the template filenames, too. +# Defaults to ["atom.xml"], which has a built-in template that renders an Atom 1.0 feed. +# There is also a built-in template "rss.xml" that renders an RSS 2.0 feed. +feed_filenames = [ "atom.xml" ] + +# The number of articles to include in the feed. All items are included if +# this limit is not set (the default). +# feed_limit = 20 + +# When set to "true", files in the `static` directory are hard-linked. Useful for large +# static files. Note that for this to work, both `static` and the +# output directory need to be on the same filesystem. Note that the theme's `static` +# files are always copied, regardless of this setting. +hard_link_static = false + +# The default author for pages +author = "Joost Agterhoek" + +# The taxonomies to be rendered for the site and their configuration of the default languages +# Example: +# taxonomies = [ +# {name = "tags", feed = true}, # each tag will have its own feed +# {name = "tags"}, # you can have taxonomies with the same name in multiple languages +# {name = "categories", paginate_by = 5}, # 5 items per page for a term +# {name = "authors"}, # Basic definition: no feed or pagination +# ] +# +taxonomies = [ + {name = "tags", feed = true}, + ] + +# When set to "true", a search index is built from the pages and section +# content for `default_language`. +build_search_index = false + +# Configuration of the Markdown rendering +[markdown] +# When set to "true", all code blocks are highlighted. +highlight_code = false + +# A list of directories used to search for additional `.sublime-syntax` and `.tmTheme` files. +extra_syntaxes_and_themes = [] + +# The theme to use for code highlighting. +# See below for list of allowed values. +highlight_theme = "dracula" + +# When set to "true", emoji aliases translated to their corresponding +# Unicode emoji equivalent in the rendered Markdown files. (e.g.: :smile: => 😄) +render_emoji = true + +# Whether external links are to be opened in a new tab +# If this is true, a `rel="noopener"` will always automatically be added for security reasons +external_links_target_blank = false + +# Whether to set rel="nofollow" for all external links +external_links_no_follow = false + +# Whether to set rel="noreferrer" for all external links +external_links_no_referrer = false + +# Whether smart punctuation is enabled (changing quotes, dashes, dots in their typographic form) +# For example, `...` into `…`, `"quote"` into `“curly”` etc +smart_punctuation = false + +# 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 = false + +# Configuration of the link checker. +[link_checker] +# Skip link checking for external URLs that start with these prefixes +skip_prefixes = [ + "http://[2001:db8::]/", +] + +# Skip anchor checking for external URLs that start with these prefixes +skip_anchor_prefixes = [ + "https://caniuse.com/", +] + +# Treat internal link problems as either "error" or "warn", default is "error" +internal_level = "warn" + +# Treat external link problems as either "error" or "warn", default is "error" +external_level = "error" + +# Various slugification strategies, see below for details +# Defaults to everything being a slug +[slugify] +paths = "on" +taxonomies = "on" +anchors = "on" +# Whether to remove date prefixes for page path slugs. +# For example, content/posts/2016-10-08_a-post-with-dates.md => posts/a-post-with-dates +# When true, content/posts/2016-10-08_a-post-with-dates.md => posts/2016-10-08-a-post-with-dates +paths_keep_dates = false + +[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 path of the page/section in the index +include_path = false +# Whether to include the rendered content of the page/section in the index +include_content = true +# At which character 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 + +# Wether to produce the search index as a javascript file or as a JSON file +# Accepted value "elasticlunr_javascript" or "elasticlunr_json" +index_format = "elasticlunr_javascript" + +# Optional translation object for the default language +# Example: +# default_language = "fr" +# +# [translations] +# title = "Un titre" +# +[translations] + +# Additional languages definition +# You can define language specific config values and translations: +# title, description, generate_feed, feed_filename, taxonomies, build_search_index +# as well as its own search configuration and translations (see above for details on those) +[languages] +# For example +# [languages.fr] +# title = "Mon blog" +# generate_feed = true +# taxonomies = [ +# {name = "auteurs"}, +# {name = "tags"}, +# ] +# build_search_index = false + +# You can put any kind of data here. The data +# will be accessible in all templates +# Example: +# [extra] +# author = "Famous author" +# +# author value will be available using {{ config.extra.author }} in templates +# +[extra] + +header_nav = [ + { url = "/", name_en = "/home/", name_fr = "/accueil/" }, + { url = "/about", name_en = "/about/", name_fr = "/concernant/" }, + { url = "/journal", name_en = "/journal/", name_fr = "/journal/" }, + { url = "/blog", name_en = "/blog/", name_fr = "/blog/" } +] diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..b30f18f --- /dev/null +++ b/content/_index.md @@ -0,0 +1,13 @@ ++++ +template = "index.html" +title = "Test home page" ++++ + +Here you can find a website built with the static site generator [Zola](www.getzola.org). I want to try out a more direct workflow in writing/blogging and keeping up with projects than my [main website built with Grav](https://joostagterhoek.nl) can offer. Liking it so far! :star: + +## Blog posts +- 🥇 [My first blog post here](./blog/my-first-post) + +## Projects + +- (add gui-host-lookup) diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..31100ea --- /dev/null +++ b/content/about.md @@ -0,0 +1,5 @@ ++++ +title = "About" ++++ + +Hi there! I'm Joost Agterhoek and this is one of my websites. Currently not my main one, that would be [this lovely place](https://joostagterhoek.nl). This is still a work in progress. diff --git a/content/blog/_index.md b/content/blog/_index.md new file mode 100644 index 0000000..26e6ff8 --- /dev/null +++ b/content/blog/_index.md @@ -0,0 +1,7 @@ ++++ +paginate_by = 15 +title = "All blog posts" +sort_by = "date" ++++ + +> List of all *[tags](/tags)* diff --git a/content/blog/my-first-post.md b/content/blog/my-first-post.md new file mode 100644 index 0000000..d033b03 --- /dev/null +++ b/content/blog/my-first-post.md @@ -0,0 +1,25 @@ ++++ +title = "My first statically generated post" +date = 2024-08-24 +description = "A blog post about Obsidian, Zola and friction in writing" ++++ + +I have spent *many* hours searching and trying out different ways to manage my own website. I want it to be a resume, a place where I can blog if I want to (which is not really frequent), and most importantly, a place to showcase my development. Especially that last part has been hard: none of the setups I have tried worked so far. + +## Friction + +So what's wrong? What's holding me back? I've recently seen some YouTube-videos by [Devops Toolbox](https://youtu.be/oLpGahrsSGQ?si=YRMo5k47hx1GDHE-) and his comments on how friction in your workflow can degrade of your intended input. This got me thinking. Very recently I switched both my personal and work notes entirely to [Obsidian](https://obsidian.md/). There, I *finally* did not experience any friction, taking notes. So, I thought, why not make this wonderful writing and note taking experience that [combines Obsidian with Neovim](https://joostagterhoek.nl/blog/learning-obsidian) also work for my online presence? + +## Searching + +Unfortunately, the solution was not so easy: combining [Grav](https://www.getgrav.org) with Obsidian didn't work, because they both interpret and rely on YAML frontmatter. Given that I had already spent quite some time setting up my ideal Obsidian/Nvim-experience, I thought, well, maybe that last bit is just too good to be true. And then, I thought of statically generated websites. + +## Trying + + +I still don't have the workflow down exactly, but the ideal for me would be the following: I can write from Obsidian (phone or laptop) or Neovim a blog post, something about a project, and have it sync to and update my website seamlessly. After some failed attempts with Git and remote bare repositories (which I misunderstood), I think I *almost* have a working process. +1 => I write from my Obsidian vault (phone, laptop, Neovim) +2 => Obsidian and Neovim (with nvim.images) show me a preview of the content +3 => I sync the content to my server which puts it in the correct place and file ownership context + +I would say that I'm stuck at step 3, but not in an immovable way: I just need to configure everything right, learn how to best leverage [rsync](https://linux.die.net/man/1/rsync) and [inotify-tools](https://manpages.debian.org/bullseye/inotify-tools/inotifywait.1.en.html) to get a somewhat smart syncing going on, and then I'm in business. Oh yeah, also, I hope to get my emoji game on with [this plugin](https://github.com/Allaman/emoji.nvim?tab=readme-ov-file), because, uh, I'm a professional...? See you soon! diff --git a/content/blog/my-second-post.md b/content/blog/my-second-post.md new file mode 100644 index 0000000..95202da --- /dev/null +++ b/content/blog/my-second-post.md @@ -0,0 +1,7 @@ ++++ +title = "Trying out my new Obsidian<->Zola sync" +date = 2024-08-26 +description = "A blog post about my attempt to sync an Obsidian vault from WSL to my Zola-instance on my Yunohost-server." ++++ + +Here we are! The first post on this particular website that I hope to sync neatly from my workstation's WSL installation to my Yunohost-server. I have been thinking about and trying out various ways to do it: Git repositories, syncing services like Syncthing. But in the end, especially as I take this work laptop with me almost every other day, I don't want anything too sophisticated or requiring real maintenance. So for the sake of reliability and ease-of-use, I want to combine Obsidian (store the static files in a vault folder) with Git (version control those static files to my [Gitea-instance](https://www.code.joostagterhoek.nl) and rsync (sync the static files from my Obsidian vault folder to the server). A script on my server is waiting for new files in a user folder to copy (new or modified) or delete files from the user folder to the root path of Zola. I will try this workflow for this blog post and a few future posts or edits and see how it goes.