Creating My Own Hugo Theme

Thu, 8 May 2025·
Thomas Ekström Hansen
Thomas Ekström Hansen

When I originally set up this website during the COVID-19 pandemic, I decided to use the “Academic” theme from Hugo Blox (or Wowchemy Hugo Academic, as it was known back then). It was a tiny bit of a pain to get self-hosted, rather than through their solutions via Netlify, but it was manageable and I loved the colour themes, the multi-language support (because I vastly overestimated my amount of free time), and that the themes were both desktop- and mobile-friendly. However, a consistent pattern with Hugo Blox – other constantly changing the org’s name, don’t know what’s up with that – has been that updating the theme to its latest version is a chore.

“But surely you don’t need to update the theme? If it ain’t broke, don’t fix it.” – I mean, you’re not wrong. But Hugo still seems to be moving quite fast, so occasionally things break, and then I’d like my site to build again. And also, I think not updating my website’s theme just also goes against whatever same masochistic naturally curious tendencies that have me running a rolling distro as my daily driver; for better and for worse, I like being on the bleeding edge.

And that is kind of the crux of it: I’m not annoyed that things break between updates, that can happen for even the best software, no I’m annoyed that every time the site theme breaks, it breaks:

  • in a new way, which depends on Hugo, or the theme, or both;
  • the structure of the theme, changing what specific directories for different content types are called;
  • the theme itself, completely removing colours or features which the theme itself originally used.

If it were just that the theme needed patching every time, that would be fine. But having an effectively novel code base to learn every update is incredibly tiresome, and I want out. As I said at the start of this post, I’m already going against the intended use of the theme by self-hosting it, Geo Cushen – the creator behind Hugo Academic Wowchemy Hugo Blox – seems to be running it in a SaaS direction, with self-hosting being possible thanks to the whole thing being open source (which is amazingly generous by the way) but not officially being supported (the documentation for doing so is sparse and usually a bit behind the current version). Which is completely fair, the guy needs to make a living, nobody is forcing him to make several, in my opinion, great Hugo themes, much less to open-source theme. I am very grateful for the use I’ve gotten out of this, but I’m not interested in running my own site via a third-party, zero-code solution, and that is the primary focus of Hugo Blox. So, fair cop, I will have to move to something else.

By far the easiest option would be to find another theme, but I’ve had a look at other themes, and none of them really match what I want my website to be: my own little place on the Internet to put and manage my thoughts, projects, pictures, whatever, without any algorithm or data mining overlords baked in. Some themes are too minimalist or quirky, or they are effectively a web-CV. The former, whilst I appreciate the aesthetic, are a bit too far removed from “useable/intelligible to the everyday person” for my tastes; and similarly, I get why people want the latter, but in my book that’s what LinkedIn and, y’know, my actual PDF-format CV are for.

So the only option seems to be to write my own. This way, I get something which (hopefully) looks how I would like it to, and where I know the codebase, meaning I can (again, hopefully) figure out what broke, why, and how to fix it. Regardless of update-mania. It doesn’t have to be pretty, it just has to work and be understandable by me (although I’m going to put it on GitHub, in case anyone else wants to use it). Up-to-date tutorials for how to create a Hugo theme seem few and far between, a downside of Hugo still being a relatively new static site generator, but both Tomo’s “Create a Hugo Theme From Scratch” and MayADevBe’s “How to create a Hugo Theme” seem recent enough that things have hopefully not changed drastically.

Let’s see how it goes!


As always, thank you so much for reading! I hope this more rambly post was interesting in some way or another. And if you’re reading this, given that my blog currently doesn’t build at all, I guess I was successful! I intend to keep maintaining and polishing the theme over time, so maybe you’re viewing this and it looks awful, or maybe the site has finally become the lush paradise I wanted it to be. Can’t wait to see for myself either way, I’m sure it’ll be fun and I’ll learn something new : )