De hardware
| Laptop | Framework Laptop 13 |
| Processor | Intel Core Ultra 7 165H |
| Geheugen | 64 GB |
| Opslag | 1 TB NVMe, volledig versleuteld met LUKS |
Een Framework, omdat je hem zelf kunt openen, repareren en upgraden. Dat past bij hoe ik met al mijn systemen omga: ik wil weten wat erin zit.
Ubuntu met GNOME
De laptop draait Ubuntu 24.04 met GNOME op Wayland. Dat is een bewuste keuze voor een werkplek: een ondersteunde standaarddistributie waar de beveiligings- en compliance-eisen van werk op aansluiten.
Daarvoor draaide hij een tijd Omarchy (Arch Linux met Hyprland). Dat mocht om werkredenen niet blijven. Wat er wel van bleef, is de manier van werken:
- Toetsenbord eerst. Tiling via een GNOME-extensie, en sneltoetsen voor alles. Een scriptje (
shortcuts-keys) leest de actieve sneltoetsen direct uit dconf, zodat het overzicht nooit afwijkt van wat het bureaublad echt doet. - Volledige schijfversleuteling met LUKS. In de Omarchy-tijd heb ik de versleutelde schijf al eens herindeeld zonder herinstallatie. Zie het artikel.
- Aanpassen via de ondersteunde weg. Een eigen achtergrond op het inlogscherm via het officiële Ubuntu-schema, niet via gepatchte GNOME-bestanden. Zo overleeft het elke update.
De terminal
- tmux met
Ctrl+Spaceals prefix, vi-copymode die naar de Wayland-clipboard kopieert, en een popup met alle sneltoetsen en hun beschrijving (prefix ?). - starship als prompt, met de Kubernetes-context altijd in beeld.
- zoxide, fzf, lazygit, Neovim en k9s voor dagelijks werk.
Vaste versies met mise
Alle CLI-tools komen uit mise, met vaste versies waar dat ertoe doet:
kubectlstaat vast op de minorversie van de clusters. kubectl mag maar één minorversie afwijken van de API-server.fluxenistioctlstaan op exact de versie die in de clusters draait.kind,helm,rclone,pandoc,nodeen de AI-CLI's staan er ook in.
Na een clusterupgrade is het bijwerken één regel in config.toml, en elke collega met dezelfde config heeft dezelfde tools.
Veilig wisselen tussen omgevingen
- Contextwissels met een naam: aliassen per omgeving (acceptatie, productie, lokaal), plus een alias die de actieve context toont. De prompt laat altijd zien waar je zit.
- Een lokaal testcluster met een vangrail dat elke opdracht weigert als de API-server niet lokaal is. Zie Veilig werken met kubectl.
- SSH-sleutels per context in de agent laden en weer leegmaken, en een
sl-functie met autocompletion op een lijst met hosts. - VPN's op afroep: de werk-VPN via een systemd-run-unit met eigen log en status, en WireGuard naar huis met
home-upenhome-downals split tunnel, zonder DNS-overname en zonder autostart.
AI-gereedschap
- Claude Code voor het dagelijkse werk, met regels voor data en toestemming. Zie Claude Code met dataveiligheid.
cortana, mijn eigen CLI op het lokale model, enask-claudevoor escalatie met goedkeuring.- Een route-proxy als systemd user-service die automatisch kiest tussen het thuisnetwerk en de relay.
- Een wekelijks AI-verslag via een systemd-timer op vrijdag.
- Andere AI-CLI's (Codex, Gemini, opencode) staan erbij om te vergelijken. Ik kies het gereedschap per taak.
Kleine fixes die ertoe doen
- De kubectl OIDC-plugin: na een migratie stond een tool met bijna dezelfde naam geïnstalleerd, voor een ander platform. De foutmelding leek een loginprobleem.
- De connectivity-check van NetworkManager gaf achter de VPN altijd "beperkte verbinding" en een vraagteken op het netwerkicoon. Na het uitsluiten van de bekende oorzaken heb ik hem bewust uitgezet, met de reden erbij vastgelegd.
Waarom zoveel moeite?
Een werkplek die je kent tot op de laatste sneltoets, maakt je sneller en voorkomt fouten. Een context die altijd in beeld is, een guard die productie beschermt, en tools met dezelfde versie als de clusters: dat zijn de dingen die het verschil maken op de dag dat er iets misgaat.