Skip to content

Instantly share code, notes, and snippets.

View bketelsen's full-sized avatar
💭
Making tools to make the tools.

Brian Ketelsen bketelsen

💭
Making tools to make the tools.
View GitHub Profile
@bketelsen
bketelsen / native-ab-build-stats.md
Last active July 16, 2026 01:42
Building a secure native A/B OS deployment path with an autonomous agent — by the numbers

Building a secure native A/B OS deployment path with an autonomous agent — by the numbers

Project: frostyard/snosi — a bootc/mkosi-based immutable Debian Trixie OS image build system. Pull request: frostyard/snosi#409 — Secure native A/B deployment path (Phases 0–8), alongside bootc.

A single autonomous Claude Code run took a design plan for a secure native A/B disk-image deployment path (mkosi EROFS/dm-verity roots + systemd-sysupdate + Secure Boot + TPM-unlocked LUKS) — adding cayo-ab / snow-ab / snowfield-ab native products

Here’s the concrete sysext plan I’d use.

Goal Build an incus.raw system extension that overlays only /usr, while keeping Incus state on the host in /var/lib/incus, /var/cache/incus, /var/log/incus, and /run/incus.

1. Define The Artifact Create a separate dakota-incus-sysext build artifact, initially out-of-tree.

The sysext should contain:

@bketelsen
bketelsen / ujust.md
Created June 19, 2026 16:52
dakota motd bug

🫐 Bluefin Bug Report

Generated: 2026-06-19T16:51:28Z
Device ID: f9d8b6a3 (anonymised — derived from machine-id, not reversible)

System

Field Value
Image name dakota
@bketelsen
bketelsen / SKILL.md
Created April 29, 2026 20:21
Humanizer skill — remove AI writing patterns (blader v2.5.1 + zero-tolerance rules)

name: humanizer version: 2.5.1 description: | Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.

@bketelsen
bketelsen / OCIFIX.md
Created February 23, 2026 16:06
OCI Fix Options

Fixing the PAX Header / OCI Layer Problem

The Root Cause

mkosi uses GNU tar with --xattrs --pax-option=delete=atime,delete=ctime,delete=mtime to create OCI tar layers. This produces PAX extension headers that composefs-rs's custom Rust tar parser can't handle correctly. composefs-rs has an open issue (#2) acknowledging their "home-brew header handling code" needs PAX cleanup, but no fix is imminent.

What podman export | podman import Actually Loses

The test script workaround sidesteps PAX headers but is lossy:

@bketelsen
bketelsen / later output.txt
Last active February 20, 2026 11:18
bootc test suite
=== Step 7: Run tests ===
--- Running: 01-installation.sh ---
01-installation.sh 100% 1605 7.2MB/s 00:00
# Tier 1: Installation validation
# system state: running
ok - System has booted
ok - Root filesystem is read-only
ok - Composefs is active
ok - usr is read-only
@bketelsen
bketelsen / install.md
Last active January 5, 2026 17:26
install snow or snowfield

Install Snow or Snowfield

get iso

Download ISO

Install

You can keep secure boot on, snow supports chained secure boot from debian's shim.

@bketelsen
bketelsen / convert-img-to-iso.sh
Created December 8, 2025 20:46
bootable img to iso
#!/bin/bash
set -e
# This script converts a raw image with 512 byte sectors to an iso with 2048 byte sectors. The conversion
# allows for booting of the resulting iso as a (virtual) CDROM.
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <input img>"
exit 1
#!/bin/bash
# filepath: /opt/scripts/daily_backup_docker_stacks.sh
set -e
# Configuration
## dockge stack directory
COMPOSE_ROOT="/opt/stacks"
## persistent data directory
PERSIST_ROOT="/opt/persist"
@bketelsen
bketelsen / devcontainer
Created May 1, 2025 14:26
bash scripts for devcontainers
#!/bin/bash
# copy dev container files from the template directory into the current directory
dc() {
local template_dir=~/projects/templates
# get the first argument
local template=$1
if [ -z "$template" ]; then
echo "Please provide a template parameter. Options:"
# list all the templates in the template directory