Week 07 of 2026

Development log of Better Tech Club website

6 items
  1. Setup Devenv with Miniserve via Nix Flake
  2. Write information about the Bussum group
  3. Add emojis to the local group card
  4. Adjust card sizing
  5. Use Daniel's full name
  6. Apply more semantic structure to local group card

Setup Devenv with Miniserve via Nix Flake

On by Tad Lispy

new file mode 100644
index 0000000..c5d670d
--- /dev/null
+++ b/.envrc
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+if ! has nix_direnv_version || ! nix_direnv_version 3.1.0; then
+  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.1.0/direnvrc" "sha256-yMJ2OVMzrFaDPn7q8nCBZFRYpL/f0RcHzhmw/i6btJM="
+fi
+
+export DEVENV_IN_DIRENV_SHELL=true
+
+watch_file flake.nix
+watch_file flake.lock
+if ! use flake . --no-pure-eval; then
+  echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
+fi
new file mode 100644
index 0000000..f03ce8a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.devenv
+.direnv
new file mode 100644
index 0000000..a92871e
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,312 @@
+{
+  "nodes": {
+    "cachix": {
+      "inputs": {
+        "devenv": [
+          "devenv"
+        ],
+        "flake-compat": [
+          "devenv",
+          "flake-compat"
+        ],
+        "git-hooks": [
+          "devenv",
+          "git-hooks"
+        ],
+        "nixpkgs": [
+          "devenv",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1760971495,
+        "narHash": "sha256-IwnNtbNVrlZIHh7h4Wz6VP0Furxg9Hh0ycighvL5cZc=",
+        "owner": "cachix",
+        "repo": "cachix",
+        "rev": "c5bfd933d1033672f51a863c47303fc0e093c2d2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "ref": "latest",
+        "repo": "cachix",
+        "type": "github"
+      }
+    },
+    "devenv": {
+      "inputs": {
+        "cachix": "cachix",
+        "flake-compat": "flake-compat",
+        "flake-parts": "flake-parts",
+        "git-hooks": "git-hooks",
+        "nix": "nix",
+        "nixd": "nixd",
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1770648178,
+        "narHash": "sha256-vq9yrCTzM39gX4Ljmak2+OQFnF39C411JzT5hDNxVPA=",
+        "owner": "cachix",
+        "repo": "devenv",
+        "rev": "656d347597eaf914af4dbcb78248c1cc4db785f9",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "devenv",
+        "type": "github"
+      }
+    },
+    "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1761588595,
+        "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-parts": {
+      "inputs": {
+        "nixpkgs-lib": [
+          "devenv",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1760948891,
+        "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-root": {
+      "locked": {
+        "lastModified": 1723604017,
+        "narHash": "sha256-rBtQ8gg+Dn4Sx/s+pvjdq3CB2wQNzx9XGFq/JVGCB6k=",
+        "owner": "srid",
+        "repo": "flake-root",
+        "rev": "b759a56851e10cb13f6b8e5698af7b59c44be26e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "srid",
+        "repo": "flake-root",
+        "type": "github"
+      }
+    },
+    "git-hooks": {
+      "inputs": {
+        "flake-compat": [
+          "devenv",
+          "flake-compat"
+        ],
+        "gitignore": "gitignore",
+        "nixpkgs": [
+          "devenv",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1760663237,
+        "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "type": "github"
+      }
+    },
+    "gitignore": {
+      "inputs": {
+        "nixpkgs": [
+          "devenv",
+          "git-hooks",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1709087332,
+        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
+    "nix": {
+      "inputs": {
+        "flake-compat": [
+          "devenv",
+          "flake-compat"
+        ],
+        "flake-parts": [
+          "devenv",
+          "flake-parts"
+        ],
+        "git-hooks-nix": [
+          "devenv",
+          "git-hooks"
+        ],
+        "nixpkgs": [
+          "devenv",
+          "nixpkgs"
+        ],
+        "nixpkgs-23-11": [
+          "devenv"
+        ],
+        "nixpkgs-regression": [
+          "devenv"
+        ]
+      },
+      "locked": {
+        "lastModified": 1770395975,
+        "narHash": "sha256-zg0AEZn8d4rqIIsw5XrkVL5p1y6fBj2L57awfUg+gNA=",
+        "owner": "cachix",
+        "repo": "nix",
+        "rev": "ccb6019ce2bd11f5de5fe4617c0079d8cb1ed057",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "ref": "devenv-2.32",
+        "repo": "nix",
+        "type": "github"
+      }
+    },
+    "nixd": {
+      "inputs": {
+        "flake-parts": [
+          "devenv",
+          "flake-parts"
+        ],
+        "flake-root": "flake-root",
+        "nixpkgs": [
+          "devenv",
+          "nixpkgs"
+        ],
+        "treefmt-nix": "treefmt-nix"
+      },
+      "locked": {
+        "lastModified": 1763964548,
+        "narHash": "sha256-JTRoaEWvPsVIMFJWeS4G2isPo15wqXY/otsiHPN0zww=",
+        "owner": "nix-community",
+        "repo": "nixd",
+        "rev": "d4bf15e56540422e2acc7bc26b20b0a0934e3f5e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "nixd",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "inputs": {
+        "nixpkgs-src": "nixpkgs-src"
+      },
+      "locked": {
+        "lastModified": 1770434727,
+        "narHash": "sha256-YzOZRgiqIccnkkZvckQha7wvOfN2z50xEdPvfgu6sf8=",
+        "owner": "cachix",
+        "repo": "devenv-nixpkgs",
+        "rev": "8430f16a39c27bdeef236f1eeb56f0b51b33d348",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "ref": "rolling",
+        "repo": "devenv-nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-src": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1769922788,
+        "narHash": "sha256-H3AfG4ObMDTkTJYkd8cz1/RbY9LatN5Mk4UF48VuSXc=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "207d15f1a6603226e1e223dc79ac29c7846da32e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "devenv": "devenv",
+        "nixpkgs": "nixpkgs",
+        "systems": "systems"
+      }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "treefmt-nix": {
+      "inputs": {
+        "nixpkgs": [
+          "devenv",
+          "nixd",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1734704479,
+        "narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "type": "github"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
new file mode 100644
index 0000000..4eeb7cd
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,36 @@
+{
+  inputs = {
+    nixpkgs.url = "github:cachix/devenv-nixpkgs/rolling";
+    systems.url = "github:nix-systems/default";
+    devenv.url = "github:cachix/devenv";
+    devenv.inputs.nixpkgs.follows = "nixpkgs";
+  };
+
+  nixConfig = {
+    extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
+    extra-substituters = "https://devenv.cachix.org";
+  };
+
+  outputs = { self, nixpkgs, devenv, systems, ... } @ inputs:
+    let
+      forEachSystem = nixpkgs.lib.genAttrs (import systems);
+    in
+    {
+      devShells = forEachSystem
+        (system:
+          let
+            pkgs = nixpkgs.legacyPackages.${system};
+          in
+          {
+            default = devenv.lib.mkShell {
+              inherit inputs pkgs;
+              modules = [
+                {
+                  # https://devenv.sh/reference/options/
+                  packages = [ pkgs.miniserve ];
+                }
+              ];
+            };
+          });
+    };
+}

Write information about the Bussum group

On by Tad Lispy

index 1473413..6359be5 100644
--- a/index.html
+++ b/index.html
@@ -34,7 +34,7 @@
=             max-width: 80ch;
=             padding: 12px;
=
-             p:first-of-type {
+             > p:first-of-type {
=                 font-size: 140%;
=                 line-height: 150%;
=                 hyphens: auto;
@@ -45,6 +45,15 @@
=                 text-decoration: underline;
=                 font-weight: initial;
=             }
+
+         }
+
+         .local-group {
+             background: hsl(0,0%,70%);
+             color: hsl(0,0%,20%);
+             padding: 2rem;
+             width: 100%;
+             border-radius: 0.4rem;
=         }
=        </style>
=    </head>
@@ -58,7 +67,9 @@
=        <![endif]-->
=
=        <main>
-            <img id="big-logo" src="logo.svg" alt="FOSS for Normies logo" />
+            <h1>
+                <img id="big-logo" src="logo.svg" alt="FOSS for Normies logo" />
+            </h1>
=            <p>
=                We are starting a network of <strong>local community
=                groups</strong> to promote and support free and open source
@@ -71,6 +82,18 @@
=                community centres, etc. 
=            </p>
=
+            <h2>Local groups</h2>
+
+            <section class="local-group" id="foss-for-bussum">
+                <h3>Bussum, NL</h3>
+
+                <p>Every Tuesday, 18:00 - 20:00</p>
+                <p>Bibliotheek Bussum</p>
+                <p><a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel, Hans, Marianne</p>
+            </section>
+            
+            <p>Currently there is only one group. Do you want to join the network? Get in touch.</p>
+
=            <p>⏳ More details to come. Please be patient...</p>
=        </main>
=    </body>

Add emojis to the local group card

On by Tad Lispy

index 6359be5..23c990e 100644
--- a/index.html
+++ b/index.html
@@ -86,10 +86,10 @@
=
=            <section class="local-group" id="foss-for-bussum">
=                <h3>Bussum, NL</h3>
-
-                <p>Every Tuesday, 18:00 - 20:00</p>
-                <p>Bibliotheek Bussum</p>
-                <p><a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel, Hans, Marianne</p>
+                
+                <p>🕕 Every Tuesday, 18:00 - 20:00</p>
+                <p>📍 Bibliotheek Bussum</p>
+                <p>🫂 <a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel, Hans, Marianne</p>
=            </section>
=            
=            <p>Currently there is only one group. Do you want to join the network? Get in touch.</p>

Adjust card sizing

On by Tad Lispy

index 23c990e..8b2de38 100644
--- a/index.html
+++ b/index.html
@@ -54,6 +54,7 @@
=             padding: 2rem;
=             width: 100%;
=             border-radius: 0.4rem;
+             box-sizing: border-box;
=         }
=        </style>
=    </head>

Use Daniel's full name

On by Tad Lispy

As discussed via Signal.

index 8b2de38..15682f8 100644
--- a/index.html
+++ b/index.html
@@ -90,7 +90,7 @@
=                
=                <p>🕕 Every Tuesday, 18:00 - 20:00</p>
=                <p>📍 Bibliotheek Bussum</p>
-                <p>🫂 <a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel, Hans, Marianne</p>
+                <p>🫂 <a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel Agorander, Hans, Marianne</p>
=            </section>
=            
=            <p>Currently there is only one group. Do you want to join the network? Get in touch.</p>

Apply more semantic structure to local group card

On by Tad Lispy

index 15682f8..3e8f607 100644
--- a/index.html
+++ b/index.html
@@ -55,6 +55,15 @@
=             width: 100%;
=             border-radius: 0.4rem;
=             box-sizing: border-box;
+
+             strong {
+                 font-weight: bold;
+                 text-decoration: none;
+             }
+             
+             dt {
+                 float: left;
+             }
=         }
=        </style>
=    </head>
@@ -87,10 +96,30 @@
=
=            <section class="local-group" id="foss-for-bussum">
=                <h3>Bussum, NL</h3>
-                
-                <p>🕕 Every Tuesday, 18:00 - 20:00</p>
-                <p>📍 Bibliotheek Bussum</p>
-                <p>🫂 <a href="https://tad-lispy.com/">Tad Lispy</a>, <a href="https://jewiet.com/">Fana Mehari</a>, Arleen, Daniel Agorander, Hans, Marianne</p>
+                <dl>
+                    <dt title="time">🕕</dt>
+                    <dd>Every Tuesday, 18:00 - 20:00</dd>
+                </dl>
+
+                <dl>
+                    <dt title="place">📍</dt>
+                    <dd>
+                        <strong>Bibliotheek Bussum</strong><br/>
+                        Wilhelminaplantsoen 18<br/>
+                        1404 JB Bussum
+                    </dd>
+                </dl>
+
+
+                <dl>
+                    <dt title="hosts">🫂</dt>
+                    <dd><a href="https://tad-lispy.com/">Tad Lispy</a></dd>
+                    <dd><a href="https://jewiet.com/">Fana Mehari</a></dd>
+                    <dd>Arleen</dd>
+                    <dd>Daniel Agorander</dd>
+                    <dd>Hans</dd>
+                    <dd>Marianne</dd>
+                </dl>
=            </section>
=            
=            <p>Currently there is only one group. Do you want to join the network? Get in touch.</p>