dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
commit ce07ba5b5dff15a498d57212c5a4243fe55fd729 parent 2b9f7d0c708b0194b11f08c824fad95bf6308821 Author: maydayv7 <maydayv7@gmail.com> Date: Thu, 1 Jan 2026 04:26:09 +0530 site: Write first proper blog
Diffstat:
| M | .github/workflows/build.yml | | | 9 | ++++----- |
| M | .github/workflows/check.yml | | | 9 | +++------ |
| M | .github/workflows/website.yml | | | 4 | ++++ |
| M | README.md | | | 57 | ++------------------------------------------------------- |
| M | flake.lock | | | 12 | ++++++------ |
| M | flake.nix | | | 2 | +- |
| D | site/content/blog/nix.md | | | 44 | -------------------------------------------- |
| M | site/content/blog/nixos.md | | | 142 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- |
| M | site/sass/_post.scss | | | 9 | ++++++++- |
| M | site/templates/macros/posts.html | | | 3 | ++- |
10 files changed, 163 insertions(+), 128 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml @@ -9,12 +9,11 @@ on: - "**.lock" pull_request: types: [opened, synchronize, reopened, ready_for_review] + paths: + - "**.lock" + - "**.nix" paths-ignore: - - "**.md" - - "**.yml" - - "docs/**" - - "files/**" - - "shells/**" + - "site/**" env: NIX_SHOW_STATS: 1 jobs: diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml @@ -2,12 +2,9 @@ name: "ci: Check Syntax" on: workflow_dispatch: push: - paths-ignore: - - "**.md" - - "**.yml" - - "docs/**" - - "files/**" - - "shells/**" + paths: + - "**.lock" + - "**.nix" env: NIX_SHOW_STATS: 1 jobs: diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml @@ -32,6 +32,7 @@ jobs: mkdir -p site/public cp -rL result/* site/public/ - name: Deploy to Cloudflare + id: deploy uses: cloudflare/wrangler-action@v3 with: workingDirectory: "site" @@ -40,3 +41,6 @@ jobs: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} gitHubToken: ${{ secrets.GITHUB_TOKEN }} + - name: Print Deployment URL + run: | + echo "Site deployed to: ${{ steps.deploy.outputs.deployment-url }}" diff --git a/README.md b/README.md @@ -11,7 +11,6 @@ This [repository](https://github.com/maydayv7/dotfiles) contains the configuration and `dotfiles` for my continuously evolving multi-PC setup (using [Nix](https://nixos.org/)). All the devices I own, controlled by code. It also builds and deploys my website to [maydayv7.cc](https://maydayv7.cc). -You can follow along with my [NixOS Desktop](https://maydayv7.cc/series/nixos-desktop/) Series <details> <summary><b>Pictures</b></summary> @@ -396,8 +395,8 @@ _In case you are using the `advanced` filesystem scheme, you may need to set the <details> <summary><b>Build It Yourself</b></summary> -If you really want to get dirty with Nix and decide to invest oodles of your time into building your own configuration, this repository can be used as inspiration. -You can check out the list of links below to resourceful Nix documentation/tutorials/projects that may be helpful in your endeavour. +If you really want to get dirty with Nix and decide to invest oodles of your time into building your own configuration, this repository can be used as inspiration. +Follow along with my [NixOS Desktop](https://maydayv7.cc/series/nixos-desktop/) Series **Welcome** to the Nix Community! ;) @@ -445,58 +444,6 @@ The [`home-manager`](https://github.com/nix-community/home-manager) module is us The `config.user.homeConfig` option, from which the final user configuration is built, has been declared in [`modules/user/default.nix`](./modules/user/default.nix) in order to effortlessly configure shared configuration for all users of the system. The system `config` can be accessed using the `sys` parameter in `home-manager` modules -## Links - -**See:** A [Curated List](https://github.com/nix-community/awesome-nix) of the Best Resources in the Nix Community -**Also:** [This](https://nixos-and-flakes.thiscute.world/) website for beginners starting out with NixOS and Flakes - -- Official [Documentation](https://nixos.org/learn.html) -- NixOS [Manual](https://nixos.org/manual/nixpkgs/stable) -- Nix [Pills](https://nixos.org/guides/nix-pills/) -- NixOS [Discourse](https://discourse.nixos.org/) -- NixOS [Package Search](https://search.nixos.org/) -- [`nixpkgs`](https://github.com/NixOS/nixpkgs) Package Repository -- [NUR](https://github.com/nix-community/NUR) Nix User Repository -- NixOS [Hardware Modules](https://github.com/nixos/hardware) -- Home Manager [Options](https://nix-community.github.io/home-manager/options.html) - -### Other Sources - -- Tweag [Article](https://www.tweag.io/blog/2020-05-25-flakes/) introducing Flakes -- Serokell's [Blog](https://serokell.io/blog/practical-nix-flakes) on Flakes -- Jordan Isaac's [Blog](https://jdisaacs.com/series/nixos-desktop/) for porting configuration to Flakes -- Jon Ringer's [Videos](https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ) on General NixOS Tooling and Hackery -- Justin's [Notes](https://github.com/justinwoo/nix-shorts) on using Nix -- Lan Tian's Series of [Blog Posts](https://lantian.pub/en/article/modify-website/nixos-initial-config-flake-deploy.lantian/) on NixOS -- Christine's [Blog Posts](https://christine.website/blog/series/nixos) addressing NixOS Security -- [Graham's](https://grahamc.com/blog/erase-your-darlings) and [Elis'](https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/) Blog Posts on Ephemeral Partition Schemes - -### Other Configurations - -Here are some repositories that I may have shamelessly rummaged through for building my `dotfiles`: -_Thanks a lot! ;)_ - -- [4JX](https://github.com/4JX/nixos-config) -- [balsoft](https://code.balsoft.ru/balsoft/nixos-config) -- [bbigras](https://github.com/bbigras/nix-config) -- [cole-h](https://github.com/cole-h/nixos-config/) -- [colemickens](https://github.com/cole-mickens/nixcfg) -- [davidtwco](https://github.com/davidtwco/veritas) -- [fufexan](https://github.com/fufexan/dotfiles) -- [gvolpe](https://github.com/gvolpe/nix-config) -- [hlissner](https://github.com/hlissner/dotfiles) -- [jordanisaacs](https://github.com/jordanisaacs/dotfiles) -- [kclejeune](https://github.com/kclejeune/system) -- [lovesegfault](https://github.com/lovesegfault/nix-config) -- [lucasew](https://github.com/lucasew/nixcfg) -- [nobbz](https://github.com/NobbZ/nixos-config) -- [rasendubi](https://github.com/rasendubi/dotfiles) -- [sioodmy](https://github.com/sioodmy/dotfiles) -- [tejing1](https://github.com/tejing1/nixos-config) -- [vlaci](https://github.com/vlaci/nixos-config) -- [wiltaylor](https://github.com/wiltaylor/dotfiles) -- [wimpysworld](https://github.com/wimpysworld/nix-config) - --- <details> diff --git a/flake.lock b/flake.lock @@ -201,7 +201,7 @@ "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "revCount": 69, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69" + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" }, "original": { "type": "tarball", @@ -524,15 +524,15 @@ ] }, "locked": { - "lastModified": 1766917993, - "narHash": "sha256-Hf5T3qQX4hgGQITFSCqsIorMo0FxcI4TsygB1iruUeU=", - "owner": "kaylorben", + "lastModified": 1767190262, + "narHash": "sha256-C1BMnQasK43IQz3/dC0a/uNbf2bQhvk8rVw47x9h0q0=", + "owner": "FlameFlag", "repo": "nixcord", - "rev": "63871baa87897231803d617eab908261caa5907c", + "rev": "38592e01087877116adc2af0876aebb61083b531", "type": "github" }, "original": { - "owner": "kaylorben", + "owner": "FlameFlag", "repo": "nixcord", "type": "github" } diff --git a/flake.nix b/flake.nix @@ -127,7 +127,7 @@ # Discord Module nixcord = { - url = "github:kaylorben/nixcord"; + url = "github:FlameFlag/nixcord"; inputs = { nixpkgs.follows = "unstable"; flake-parts.follows = "framework"; diff --git a/site/content/blog/nix.md b/site/content/blog/nix.md @@ -1,44 +0,0 @@ -+++ -title = "The Nix Cheat Sheet" -description = "A Handy Rubric for the Nix Ecosystem" -date = 2022-02-20 - -[taxonomies] -series = ["NixOS Desktop"] -tags = ["Linux", "Nix", "NixOS"] - -[extra] -ToC = true -edit = true -comments = true -+++ - -# Under Construction! - -This Page is still under development and may remain unfinished or subjected to major changes over time - -# Introduction - -**Nix** is a purely **_functional_** _package manager_. This means that it treats packages like _values_ built by _functions_ that don’t have side-effects, and never change after they have been built (known as **immutability**). This results in the _purity_ of a package which ensures _reproducibility_ in any environment and at any future point in time. For every package that it builds, it firsts computes a **derivation** (by evaluating expressions written in the Nix _language_) which consists of information about all the _dependencies_ of a package, build commands, miscellaneous meta-information, and a _prefix_ or **_store path_** into which said package shall be installed, which is in the form of <code>/nix/store/<b>HASH</b>-<i>NAME</i>-<i>VERSION</i></code>, where the _hash_ is built from all the input dependencies required to build the package. Then, it **_realises_** that derivation by running the specified build commands in an isolated environment (in a **_sandbox_**). This allows Nix to guarantee reproducibility, and allows it to support **_binary cache_**, by _substituting_ the store path from some other location. This also enables us to have **_multiple versions_** of the same package, since each one will have it's own isolated prefix, and makes easy to **_rollback_** to a previous version of a package. And since the build environment is completely isolated from the host system, non-privileged users can install software completely _securely_ - -**NixOS** is a GNU/Linux distribution that uses Nix, both a package manager, as well as a _configuration_ manager. The system derivation is realised from **_configuration files_** written in the Nix language containing data about all the applications to be installed on the system and subsequently their configuration. In addition to all the benefits provided by Nix, because of the way it is configured, all updates and rollbacks are atomic (and can be automated), and in case anything doesn't function as intended, such as when the system doesn't even boot, every single derivation that was installed [^1] is listed in the boot loader, and you can boot directly into it. This, along with the fact that NixOS provides for completely reproducible configurations, and allows to easily switch between conflicting package arrangements, makes it an ideal choice for use in multi-PC setups, such as home office configurations, for small organizations or even to rejuvenate individual setups with the amount of benefits that it offers. Thus, I have chosen NixOS above all others in pursuit of a reliable, relatively stable distro that I could conveniently use to manage the computers that I own - -[**`nixpkgs`**](https://github.com/nixos/nixpkgs), basically the main _package repository_ to use with Nix, is a giant collection of package descriptions as well as configuration modules written in the Nix language, that serves to build multiple applications for our day-to-day use, as well as the tools required to properly define a NixOS Configuration. It provides a vast number of applications, programs and services, language-specific package sets, cross-compilation tools, and many other such packages, which makes Nix such a powerful tool - -The Nix **programming language** is simple, _lazy_ [^2], pure, functional, and dynamically typed, which specializes in building packages. The Nix [Pills](https://nixos.org/guides/nix-pills/) Tutorial dives into the language syntax and semantics in detail - -# Resources - -Below is a list of handy, helpful resources and documentation that can be used to learn more about the Nix ecosystem in depth: - -- Official [Documentation](https://nixos.org/learn.html) and the NixOS [Manual](https://nixos.org/manual/nixpkgs/stable) -- Serokell's [Blog](https://serokell.io/blog/what-is-nix) introducing Nix -- Justin's [Notes](https://github.com/justinwoo/nix-shorts) on using Nix -- Tweag [Article](https://www.tweag.io/blog/2020-05-25-flakes/) introducing Flakes -- Serokell's [Blog](https://serokell.io/blog/practical-nix-flakes) on Flakes Usage - -# Footnotes - -[^1]: Provided that they are not **_garbage collected_** - Removing or modifying a package from the configuration doesn't exactly delete older versions from the system. All they do is create a new derivation that no longer contains symlinks to the older packages. Since disk space is limited, unused packages should be removed at some point, which can be done using `nix-collect-garbage -d` or `nix store --gc` - -[^2]: Evaluation of expressions is delayed until their values are actually needed. For more information, see [this](https://en.wikipedia.org/wiki/Lazy_evaluation) diff --git a/site/content/blog/nixos.md b/site/content/blog/nixos.md @@ -1,11 +1,11 @@ +++ title = "My NixOS Configuration" -description = "An Extensive Article on how I built my NixOS Desktop Configuration" -date = 2025-01-10 +description = "Prelude" +date = 2026-01-01 [taxonomies] series = ["NixOS Desktop"] -tags = ["Linux", "NixOS", "Flakes"] +tags = ["Linux", "NixOS"] [extra] ToC = true @@ -17,15 +17,103 @@ comments = true This Page is still under development and may remain unfinished or subjected to major changes over time -# Caution +# I don't know Linux -**Important:** Nix >= 2.19 +Go away already. +If you’re looking for a beginner’s guide, this is not it. This is a postmortem of a bad idea that worked. -It is not recommended to use NixOS if you are a beginner just starting out, without acquaintance with either the command-line or functional programming languages, since the learning curve is steep, debugging issues is difficult, documentation is shallow, and the effort required/time spent isn't worth the hassle for a novice/casual user +I sadly do not possess much patience, and quite frankly, most of the rest of this page/series will go over your head. +However, if your tastes are sufficiently messed up - or if you enjoy watching someone over-engineer their computer to the point of absurdity - this might hopefully be a fun read. -# Resources +My entire life has been a contradiction of sorts, notwithstanding the OS I currently use. I chose arguably the most difficult distro to learn to use specifically so I would never have to learn how to fix it again. -Below is a list of handy, helpful resources and documentation that can be used to learn more about the Nix Ecosystem: +# What is this "NixOS" thing? + +If you've ever used Linux before (like Ubuntu or Arch), you know the drill: you install the OS, you run a bunch of terminal commands to install software, you edit a text file here and there, and eventually, you have a system that feels like home. + +But you also know the **fear**. + +The fear that if you delete the wrong file, mess with the wrong package, or even upgrade to a new release, your computer might implode, and you'll have no idea how to get back to the way things were. + +> That's \*\*\*\*\*\*\* it I'm switching back to Windows forever +> +> --> **Me** +> (right after the 69420th distro-hop that caused my system to crash and burn) + +**NixOS is different.** + +Basically, you define a **blueprint** - a single configuration file that describes exactly how you want your computer to function. You want Firefox? You write `firefox` in the file. You wanna set your wallpaper? Just chuck it into the file. + +After you're done, [Nix](https://github.com/NixOS/nix) looks at it, nods, and builds your entire operating system from scratch to match exactly what you wrote. If you mess up, you just undo the text in the file, and your computer goes back to being perfect. + +--- + +_Now that the theatrics are out of the way, let's proceed to see more of it_ + +# The Descent into Madness + +It started innocently enough. I just wanted a system that was **reproducible**. + +I began with **Nix Flakes**, the "Gateway Drug" [^1] of the ecosystem. Instead of vaguely gesturing at a repository and hoping for the best, `flake.nix` locks every input dependency of my system to a specific commit hash. It is the ultimate insurance policy: if I compile this system today, or in about 10 years in the midst of an imminent meteor strike that may or may not wipe out all life, I will get the exact same binary output. + +But having a reproducible system wasn't enough. It had to be **obedient**. + +I pulled in [**Home Manager**](https://github.com/nix-community/home-manager) because configuring the OS wasn't enough; I needed to micromanage my user config files too. Then came [**Stylix**](https://github.com/nix-community/stylix). I declare a single image and a color scheme, and Stylix brutally enforces this theme across everything. It forces CSS into [Waybar](https://github.com/Alexays/Waybar), recompiles all my app themes, and even bullies my terminal into submission. But why stop there? I grabbed [**Spicetify**](https://github.com/Gerg-L/spicetify-nix) to force Spotify to match my aesthetic, and [**Nixcord**](https://github.com/FlameFlag/nixcord) for Discord cuz the default grey was offending my eyes. + +**"Okay, it's pretty," you say. "But is it useful?"** + +You have no idea. + +I don't "install" development tools. I have a [directory](https://github.com/maydayv7/dotfiles/tree/main/shells) that defines isolated environments for C++, Python, JavaScript and so on. When I `cd` into a project, [Direnv](https://direnv.net/) and [**Lorri**](https://github.com/nix-community/lorri) kick in, and the compiler, linter, LSP and whatnot just _appear_ in my shell. When I leave, they vanish. + +Every little thing is specified in code. Like when I open [VS Code](https://code.visualstudio.com/), my settings and extensions are already present, and automatically updated. Heck even my **_Printer_** configuration is defined in a Nix file. Yes, really. + +**Oh, you thought that would be enough to satiate me?** + +Please. + +I needed to know that my system was _spiritually_ pure. So I formatted my drive with [ZFS](https://github.com/openzfs/zfs) (it's own merits aside) and implemented [**Impermanence**](https://github.com/nix-community/impermanence). +Every time I reboot, my root filesystem is nuked. Wiped. Gone. My OS is resurrected from a blank slate every boot, preserving only what I explicitly whitelist on a separate dataset. +To manage secrets without them dying in the purge, I use [**sops-nix**](https://github.com/Mic92/sops-nix) to encrypt passwords and API keys using GPG, directly into my publicly hosted `git` repo, without leaking any sensitive data. + +**At this point most people would stop** + +Well I didn't. + +I still wanted to play games and run Android apps. A normal person would dual-boot or use an emulator. I chose violence. + +I run [Waydroid](https://github.com/waydroid/waydroid) to virtualize Android directly on the Linux kernel. Then, for the pièce de résistance, I set up [VFIO](https://docs.kernel.org/driver-api/vfio.html) GPU Passthrough [^2]. I pass that GPU directly into a Windows Virtual Machine and use [Looking Glass](https://looking-glass.io/) to stream the video output back to my PC screen with negligible latency. + +I've also declaratively configured [**Minecraft Servers**](https://github.com/Infinidoge/nix-minecraft) (that 2 week period lasted for months actually, don't judge) and [Wine](https://www.winehq.org/) applications (huge shoutout to [Erosanix](https://github.com/emmanuelrosa/erosanix)). + +**The result of all this?** + +If I buy a new computer today, I don't spend a week installing drivers and recovering passwords. + +I clone my repository. I run one single command. + +And I go get a coffee. Soon as I return [^3], I spin up a AAA Windows game, inside a VM, displayed on a tiling Linux WM (heck even choose between [Hyprland](https://hypr.land/) and [Niri](https://github.com/YaLTeR/niri)), on a system that deletes and rebuilds itself on every boot. + +God, I love NixOS. + +# A Fair Warning + +Before you rush off to install this magical operating system, we need to have a serious chat. + +**NixOS is hard.** + +I don't mean "Linux is hard" kind of hard. I mean "I have to relearn how computers work" kind of hard. + +- **It is not standard Linux**: Most tutorials you find on the internet simply will not work here. You can't just `apt install` your problems away. +- **The Documentation is... sparse**: Sometimes you will be reading a manual, and sometimes you will be reading 5-year-old Reddit threads praying for an answer. +- **Patience is key** (_or severe OCD tbh_): If you are not acquainted with the command line, programming languages, random crash logs, or want a computer that "just works" to play games or browse the web, consider yourself warned. Cuz this setup costs time, sanity, and the ability to casually refactor the codebase 2 minutes before a presentation. + +# Still Reading? + +If you really want to get dirty with Nix and decide to invest oodles of your time into building your own configuration, my [repository](https://github.com/maydayv7/dotfiles) can be used as inspiration. +You can check out the list of links below to resourceful Nix documentation/tutorials/projects that may be helpful in your endeavour, as they were in mine. + +## Links **See:** A [Curated List](https://github.com/nix-community/awesome-nix) of the Best Resources in the Nix Community **Also:** [This](https://nixos-and-flakes.thiscute.world/) website for beginners starting out with NixOS and Flakes @@ -42,9 +130,45 @@ Below is a list of handy, helpful resources and documentation that can be used t ### Other Sources +- Tweag [Article](https://www.tweag.io/blog/2020-05-25-flakes/) introducing Flakes +- Serokell's [Blog](https://serokell.io/blog/practical-nix-flakes) on Flakes - Jordan Isaac's [Blog](https://jdisaacs.com/series/nixos-desktop/) for porting configuration to Flakes -- Jon Ringer's [Videos](https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ) on General NixOS Tooling and Hackery +- Jon Ringer's [Videos](https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ) on general NixOS Tooling and Hackery - Justin's [Notes](https://github.com/justinwoo/nix-shorts) on using Nix - Lan Tian's Series of [Blog Posts](https://lantian.pub/en/article/modify-website/nixos-initial-config-flake-deploy.lantian/) on NixOS - Christine's [Blog Posts](https://christine.website/blog/series/nixos) addressing NixOS Security - [Graham's](https://grahamc.com/blog/erase-your-darlings) and [Elis'](https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/) Blog Posts on Ephemeral Partition Schemes + +### Other Configurations + +Here are some repositories that I may have shamelessly rummaged through for building my `dotfiles`: +_Thanks a lot! ;)_ + +- [4JX](https://github.com/4JX/nixos-config) +- [balsoft](https://code.balsoft.ru/balsoft/nixos-config) +- [bbigras](https://github.com/bbigras/nix-config) +- [cole-h](https://github.com/cole-h/nixos-config/) +- [colemickens](https://github.com/cole-mickens/nixcfg) +- [davidtwco](https://github.com/davidtwco/veritas) +- [fufexan](https://github.com/fufexan/dotfiles) +- [gvolpe](https://github.com/gvolpe/nix-config) +- [hlissner](https://github.com/hlissner/dotfiles) +- [jordanisaacs](https://github.com/jordanisaacs/dotfiles) +- [kclejeune](https://github.com/kclejeune/system) +- [lovesegfault](https://github.com/lovesegfault/nix-config) +- [lucasew](https://github.com/lucasew/nixcfg) +- [nobbz](https://github.com/NobbZ/nixos-config) +- [rasendubi](https://github.com/rasendubi/dotfiles) +- [sioodmy](https://github.com/sioodmy/dotfiles) +- [tejing1](https://github.com/tejing1/nixos-config) +- [vlaci](https://github.com/vlaci/nixos-config) +- [wiltaylor](https://github.com/wiltaylor/dotfiles) +- [wimpysworld](https://github.com/wimpysworld/nix-config) + +--- + +[^1]: [Meaning](http://gateway-drug.urbanup.com/2175521) ig + +[^2]: [Arch Wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF) + +[^3]: T&C Apply ;) diff --git a/site/sass/_post.scss b/site/sass/_post.scss @@ -4,7 +4,7 @@ blockquote { border-left: 4px solid var(--accent-alpha-70); color: var(--color); font-style: italic; - padding: 1em 10px 5px 50px; + padding: 1em 10px 1px 50px; position: relative; &:after { @@ -132,6 +132,13 @@ blockquote { content: "#### "; } + p { + strong, + b { + font-weight: 900; + } + } + ul { list-style: none; margin-left: 0px; diff --git a/site/templates/macros/posts.html b/site/templates/macros/posts.html @@ -6,7 +6,8 @@ </span> {% else %} <span class="post-readtime"> <span class="post-icon"></span> <i>{{ page.reading_time }}</i> min </span> - {% endif %} :: <span class="post-wordcount"> <span class="post-icon"></span> <i>{{ page.word_count }}</i> words </span> {{ posts::taxonomies(taxonomy=page.taxonomies) }} + :: <span class="post-wordcount"> <span class="post-icon"></span> <i>{{ page.word_count }}</i> words </span> + {% endif %} {{ posts::taxonomies(taxonomy=page.taxonomies) }} </div> {% endmacro meta %} {% macro date(date, updated) %} <span class="post-date">