+
+ Installing arch.
+
+
diff --git a/blog/posts/2025-08-20-installing-arch.md b/blog/posts/2025-08-20-installing-arch.md
new file mode 100644
index 0000000..302157e
--- /dev/null
+++ b/blog/posts/2025-08-20-installing-arch.md
@@ -0,0 +1,70 @@
+# Installing arch w/ btrfs onto a 2012 macbook air
+
+(2025-08-20)
+
+- So I decided to redo my btrfs installation bc I fucked smth up w/ subvolumes
+ (or lack thereof) and couldn't figure out how to nicely restore the system.
+ - (I had previously converted ext4 to btrfs and it worked fine.)
+- Vaguely following [this tutorial](btrfs-tutorial), but using `@root`, `@home`,
+ and `@snapshot`.
+ - Also making a swap partition.
+ - Using `compress=zstd:15` for all when mounting.
+ (`mount -o compress=zstd:15,subvol=@root /dev/sdb3 /mnt`)
+ - Also decided to make `@var` subvol so read-only snapshots can be booted.
+ - Originally didn't want to, but to play nice with `grub-btrfs` I mounted
+ `@snapshots` to `/.snapshots`.
+- Packages for `pacstrap`: `base`, `linux`, `linux-firmware`, `intel-ucode`,
+ `btrfs-progs`, `grub`, `grub-btrfs`, `efibootmgr`, `inotify-tools`, `iwd`,
+ `nano`, `vi`, `vim`, `helix`, `man-db`, `man-pages`, `texinfo`, `git`,
+ `jujutsu`, `fish`, `sudo`, `which`, `wget`, `librsvg`, `libicns`.
+ - Note: when doing this, I tried to leave the EFI partition intact. But then
+ pacstrap threw ["Failed to commit transaction (conflicting files)" error](
+ pacman-conflicting-files)
+ and I decided to nuke it b/c I would prob have to redo it anyways.
+ - Not tested but maybe use the `-C ` option to change pacman config
+ for db path to be in `/usr/lib/pacman` instead of `/var/lib/pacman`?
+ - This is so that pacman db gets rolled back during system restore.
+ - In the pacman config, uncomment or duplicate the `DBPath` line and replace
+ `/var/lib/pacman` with `/usr/lib/pacman`. If doing this post-install,
+ then move the pacman db to the new location.
+- Bootloader: GRUB
+ - Since installing to a USB drive, *must* use `--removable` on `grub-install`.
+ - Otherwise, it is not recognized as booting I think.
+ - The `--target=x86_64-efi` arg is unnecessary b/c it's the default.
+- After installing `grub-btrfs` (works well) I decided to make a snapshot.
+ It was easy, just `btrfs subvolume snapshot -r / /.snapshots/@root-date-desc`.
+ After `grub-mkconfig` `grub-btrfs` picked it up right away and I was able to
+ boot into it.
+- Changing volume icon and name in macos boot manager:
+ - Volume icon was easy, it's in the arch wiki. You just add a
+ `.VolumeIcon.icns` file to the root of the EFI partition.
+ - Changing the name of the volume was much trickier. Renaming in fdisk didn't
+ work. It turns out that the special `.disk_label` file needed to be in the
+ `/EFI/BOOT/` directory (inside of the `/boot` partition).
+ - It also needs to be generated by the *macos* `bless` tool, which was
+ annoying.
+ - First, mount the EFI disk. (`diskutil mount`)
+ - Then, `bless --folder /Volumes/NO\ NAME/EFI/BOOT --label Arch`
+- After first boot:
+ - Start `grub-btrfs` snapshot watching: `systemctl enable grub-btrfsd --now`
+ - Configure iwd:
+ - Edit `/etc/iwd/main.conf` to be
+ ```
+ [General]
+ EnableNetworkConfiguration=true
+
+ [Network]
+ NameResolvingService=systemd
+ ```
+ That turns on dynamic ip or wtv it's called. ([iwd-enable-network-config],
+ [systemd-resolved]) If needed, `systemctl restart iwd.service`.
+ - `systemctl enable --now iwd`
+ - `systemctl enable --now systemd-resolved`
+ - `iwctl` then `station wlan0 connect ""`
+ - Adding users:
+ - Add the admin user to `%wheel`, edit the sudoers file to reflect that.
+
+[btrfs-tutorial]: https://ramsdenj.com/posts/2016-04-05-using-btrfs-for-easy-backup-and-rollback/
+[pacman-conflicting-files]: https://wiki.archlinux.org/title/Pacman#%22Failed_to_commit_transaction_(conflicting_files)%22_error
+[iwd-enable-network-config]: https://wiki.archlinux.org/title/Iwd#Enable_built-in_network_configuration
+[systemd-resolved]: https://wiki.archlinux.org/title/Systemd-resolved
diff --git a/buttons/lights.aseprite b/buttons/lights.aseprite
new file mode 100644
index 0000000000000000000000000000000000000000..5b1af81c06dc75a55d73439ed69c699cb249cbe8
GIT binary patch
literal 844
zcmeZaW?*=*l#wBVL7qW@fsuiMA%y`MC@?UB1Q`Sv1dxTP#y-Qu!0_uM7uZ%V1_lN(
z1_lOp1+bM!c4RRyFtC7Jr@+9#prl~ps$r96Y1kiTeZNrc=7O|$hiCo%WH$3@K-NA3
z^C@}WnfgKADn>Sz_Vy(P2~E*?50hvAk3ak5^zA?Y|No!8c6&=*duCQvWLQv{Q`Z_J
zqnqK$*Q=@})45LqT9eZ>e_
zBZw@rsW%a_#&!%046GoZF)%RvhZ_Nkk%~EQ4?FTQFz_%h{G4B9d{JE`Wcn&N=(98O
znftyBtecTR3q`j)gFHjUoU3OK3Nk2gFdKY}kE;Fs!DhjhvrL^2BG_N2-g#60E388O
z{qMQErrzs}e(QRFy?Ev7eJi4Wy58BJ|NZTUvU_^@*XLGR=WX9!Wxa3e?q6y7&&`W>
z@1I%CeBbVJYAM)OCI%5Kwmv<3l9NG!hsEJ{ewFJ7#Yb~93XFMq7+91~*!O_I3PT$^Ua_zrDZL^#A19Pwn?g)}7S-yY&0{{m1^k
zUSFy%80vUAbw1cqW(HOiOD(`&eS6-Kufc$a+40~1%;JX)S}aRddUJQ_-(YMwYauf2G&$7q-3|D2Mddy=tp{N32o`vdRZ%nm8jTipJ6ZQw=Aq>$o1
zsi||~d$i7_ekpL1xH&h_EiHY?#H*6IDJ6P~+l^13cyh*Mlf~vGavin Morrow