Timeline
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2026-09-28
16:40
nitrokey auth: fix PAM fallback and authfile registration bugs

EL10 pam_u2f has no nullok — use nouserok, and make the control flag sufficient (required fails the whole stack without a token, hanging GDM/sudo).

Registration: pamu2fcfg already emits '<user>:<handle>,...' — the scripts were prepending the username again, producing a malformed authfile that silently matched nothing (this broke the first real deployment). Stop double-prefixing in setup_nitrokey.sh and nitrokey-register.sh; also stop touching/chmod'ing the authfile before the atomic install, drop the dead for-loop, and fix the wrong -i flag.

Patch PAM files in place instead of prepending the include, keep '-auth optional' lines (GNOME keyring), and verify the fragment got included — auto-revert when no auth line is found. leaf check-in: e7c348d5f9 user: andrew tags: master, trunk

06:51
Merge server-side README update (744649f) check-in: 843fd996a1 user: andrew tags: master, trunk
06:30
update the README with latest configs check-in: 744649f18f user: andrew tags: master, trunk
06:26
Fix unbound variables in patch_pam (set -u aborted mid-setup)

patch_pam declared unused $2/$3 params while callers passed only one, awk -v referenced shell $name/$frag inconsistently, and the idempotency check grepped a dangling $marker. Verified with full sandboxed dry run: all three PAM files patched correctly, idempotent rerun, --remove restores .orig files. Real run enroll failed at patch_pam before this fix. check-in: 98a20bffeb user: andrew tags: master, trunk

06:06
almalinux: nitrokey as default auth (LUKS FIDO2, login/sudo via pam_u2f) with password fallback; docs + setup/register scripts, nothing applied to system yet check-in: 3704b29dd0 user: andrew tags: master, trunk
05:00
pull our rpms during install check-in: fd741b828a user: andrew tags: master, trunk
03:59
add almalinux setup script check-in: abd6c64708 user: andrew tags: master, trunk
2026-09-27
19:26
fish: add ~/.local/bin to PATH if present; also use hx on almalinux check-in: 97361c38eb user: andrew tags: master, trunk
2026-08-18
23:30
force openssh server and systemd-timesyncd check-in: deae69862d user: sourcehut@lewman.us tags: master, trunk
23:27
it's hx on ubuntu, not helix check-in: b84126775f user: sourcehut@lewman.us tags: master, trunk
18:18
remove nft.local from the setup scripts check-in: 1e91b1aa9b user: sourcehut@lewman.us tags: master, trunk
2026-08-02
03:06
Fix ssh.nft Option A to use inline sets instead of top-level tables

Table definitions can't appear inside a chain block (where the include happens). Replaced with inline address sets that work directly in-chain. check-in: e53f7b9f25 user: sourcehut@lewman.us tags: master, trunk

02:57
remove the old nft local and command shell check-in: 1a6221806f user: sourcehut@lewman.us tags: master, trunk
02:44
create matrix.nft ruleset check-in: a1afb050a2 user: sourcehut@lewman.us tags: master, trunk
02:42
Fix nftables service files to use declarative config syntax

Service .nft files used `add rule` (command syntax) but were included via `include` in a declarative config, which is invalid. Moved includes inside the chain in base.nft and converted service rules to bare declarative expressions. Also commented out all ssh.nft rules as a choose-one template and fixed install instructions in nft.local. check-in: 73ccad5bb1 user: sourcehut@lewman.us tags: master, trunk

2026-07-08
07:46
fix ipv6 slaac renewal failure in pf common.rules

ICMPv6 pass-in rule used "to $ext_if" but Router Advertisements are sent to multicast ff02::1, which doesn't match interface unicast addresses. This silently dropped unsolicited RAs after the initial state expired, preventing SLAAC address renewal. Also split the scrub rule to avoid applying random-id (IPv4-only) to IPv6 traffic. check-in: fc3738a23c user: sourcehut@lewman.us tags: master, trunk

2026-06-30
21:51
Rename FreeBSD upgrade script to .fish and harden for x86-only

The script uses fish syntax but had a .sh extension, causing bashls parse errors. Rename to .fish to reflect the actual interpreter.

Additional fixes: - Add OS guard at the top: exit early if not FreeBSD 15.0 or newer - Remove dead ARM64 code path (script is x86-only); hardcode bootx64.efi - Simplify minor version parsing (drop unnecessary capture group + pipe) - mkdir -p EFI destination dirs before copying loader.efi - Add error checks after both loader.efi cp commands check-in: ccba8f8022 user: sourcehut@lewman.us tags: master, trunk

2026-06-21
06:08
Simplify AGENTS.md to core essentials check-in: d1474244bd user: sourcehut@lewman.us tags: master, trunk
05:59
make the setup scripts 755 check-in: 1b44562fb5 user: sourcehut@lewman.us tags: master, trunk
2026-06-20
06:25
Refine Ubuntu setup with full-upgrade and flatpak flathub integration

Replace apt-get upgrade with full-upgrade to handle package removals. Install flatpak separately before other packages, add flathub remote, and install gnome-software-plugin-flatpak for GUI integration. check-in: da9e3fa006 user: sourcehut@lewman.us tags: master, trunk

05:52
add ubuntu snap removal commands for history check-in: a30f8a2767 user: sourcehut@lewman.us tags: master, trunk
05:49
Add flatpak to Ubuntu setup package list

Installs flatpak via apt alongside the rest of the standard tools so the system has a snap-free alternative package manager ready. check-in: f3381d6bf4 user: sourcehut@lewman.us tags: master, trunk

05:48
Enforce strict SSH moduli size requirement across all setup scripts

Change the awk filter from >= 3071 to > 3071 so only moduli strictly larger than 3071 (i.e. 3072 or higher) are kept. This aligns with the intended "3072-bit minimum" policy.

Affected: Arch, Fedora, and FreeBSD setup scripts. check-in: 86031511bf user: sourcehut@lewman.us tags: master, trunk

05:48
Add Ubuntu setup script with snap removal and hardening

Creates ubuntu/setup_ubuntu.sh that: - Purges snap and blocks reinstall via apt pin - Installs standard tooling via apt (btop, fastfetch, fish, helix, etc.) - Regenerates SSH host keys (ed25519 + RSA-4096) - Applies the same hardening as Arch: nftables, journald limits, systemd-resolved DNS, kernel lockdown, and service disables check-in: 6d8c9073cd user: sourcehut@lewman.us tags: master, trunk

2026-06-19
07:14
Fix nftables syntax errors by adding required semicolons

nftables requires semicolons after flush ruleset, include statements, and add rule commands when not inside a table block. Without them the parser fails with "unexpected include" and "unexpected end of file". check-in: d589d4f160 user: sourcehut@lewman.us tags: master, trunk

07:06
Fix Arch setup to tolerate missing services gracefully

Add error suppression to systemctl disable/stop calls for avahi, cups, and resolved so the script succeeds on minimal installs where these units may not exist. check-in: bd2f09d22d user: sourcehut@lewman.us tags: master, trunk

07:05
Fix Arch setup script bugs and harden security defaults

- Generate the missing RSA-4096 SSH host key required by sshd_config and include 3071-bit moduli instead of filtering them out. - Correct nftables source paths and enable systemd-resolved so DNS works immediately after the script finishes. - Make config appends idempotent and use strict bash error handling to prevent partial system states on re-runs or pipeline failures. check-in: 05eef99a1f user: sourcehut@lewman.us tags: master, trunk

06:58
draft archinstall.json check-in: 9bbd042996 user: sourcehut@lewman.us tags: master, trunk
2026-06-17
21:46
Add automated FreeBSD upgrade script with boot environment snapshots

Replaces the minimal upgrade snippet with a full fish script that safely upgrades FreeBSD using the base system packages method.

- Requires a version argument (e.g. 15.1-RELEASE) - Creates a ZFS boot environment snapshot for rollback - Automatically computes ABI and OSVERSION from the version string - Detects UEFI vs BIOS and upgrades the boot loader appropriately - Prompts for confirmation before running destructive gpart commands - Checks for .pkgnew files that need manual merging check-in: b9f24f7ba4 user: sourcehut@lewman.us tags: master, trunk

2026-06-12
07:16
restructure nftables with modular includes

Split monolithic nftables.conf into separate rule files under nft.d/, mirroring the pf/ organization. Added base, syncthing, ssh, http, and irc rule sets. Updated arch setup script to copy the new directory structure. check-in: 43d230dc69 user: sourcehut@lewman.us tags: master, trunk

2026-05-31
05:17
switch to openrsync check-in: 66e324b2bd user: sourcehut@lewman.us tags: master, trunk
2026-05-16
04:24
really fix the grep check-in: 683577e583 user: sourcehut@lewman.us tags: master, trunk
04:15
support cachyos too check-in: 7299441fa7 user: sourcehut@lewman.us tags: master, trunk
2026-05-15
21:22
add endeavourOS for the user who asked for it. clean up the grep ID to match the primary OS check-in: 5c3deac9a8 user: sourcehut@lewman.us tags: master, trunk
2026-05-04
04:27
add irc rules check-in: 1193b3a0dd user: sourcehut@lewman.us tags: master, trunk
2026-05-02
23:38
update setup_fedora.sh to support both Fedora Workstation and Silverblue check-in: b6def8d6ac user: sourcehut@lewman.us tags: master, trunk
2026-04-15
08:10
update resolved to use same dns servers as bsd remove errant comment from common.rules check-in: b32ac6cb01 user: sourcehut@lewman.us tags: master, trunk
2026-04-11
17:06
corrected paths, only use one set of OS instructions check-in: 4c8bf20e25 user: sourcehut@lewman.us tags: master, trunk
2026-04-10
22:08
use modulate state for tcp consistently check-in: d69ec3e517 user: sourcehut@lewman.us tags: master, trunk
2026-04-04
04:28
update path to files, log blocked packets, set mtu to 1500 check-in: c32129da8c user: sourcehut@lewman.us tags: master, trunk
04:18
docs: add AGENTS.md with coding guidelines check-in: 45c434b857 user: sourcehut@lewman.us tags: master, trunk
2026-03-17
18:39
refactor(fish): replace every alias with a function

All remaining alias statements have been turned into proper fish functions, removing any 'alias' keyword from the config file. This improves maintainability and follows fish best‑practice conventions. check-in: eafa7324a4 user: sourcehut@lewman.us tags: master, trunk

18:24
fix(fish): drop ldot alias, keep only l. function for hidden files

- Removed the now‑redundant alias from the Nerd‑Font block. - function remains, providing a reliable way to list only dotfiles regardless of Nerd‑Font presence. - No functional changes beyond the cleanup of the unused alias. check-in: 83351b5166 user: sourcehut@lewman.us tags: master, trunk

18:13
clean up tmux.conf, remove comments, update for xterm check-in: 77c4acaad6 user: sourcehut@lewman.us tags: master, trunk
18:10
chore(tmux): modernize UTF-8 handling and set xterm-256color terminal

- Remove deprecated and options (UTF‑8 is always on in tmux ≥2.2). - Add comment explaining automatic UTF‑8 support. - Set to for proper 256‑color support. - Keep existing theme and status settings unchanged. check-in: 2a573e8f46 user: sourcehut@lewman.us tags: master, trunk

16:46
enable utf-8 inside tmux by default check-in: 2fef9c0a99 user: sourcehut@lewman.us tags: master, trunk
16:46
fix up function name for nerd_font detection check-in: 2714930df9 user: sourcehut@lewman.us tags: master, trunk
01:12
feat(fish): add Nerd Font detection and conditional ls/eza aliases

- Introduce __has_nerd_font function that checks for installed Nerd Fonts via fc-list. - Conditionally set ls‑style aliases (la, ll, lt, l.) only when a Nerd Font is present. - Prefer eza with icons if available; otherwise fall back to GNU ls with -F flag. - Improves visual directory listings while keeping compatibility on systems without Nerd Fonts. check-in: c8d87b7552 user: sourcehut@lewman.us tags: master, trunk

2026-03-07
07:41
replace exa with eza check-in: f0cb8b15bd user: sourcehut@lewman.us tags: master, trunk
2026-03-05
07:10
don't overwrite hx if helix/EDITOR is already hx check-in: f3ad0a4e67 user: sourcehut@lewman.us tags: master, trunk