Published multiple files
All checks were successful
Build and Deploy Quartz / build (push) Successful in 27s
All checks were successful
Build and Deploy Quartz / build (push) Successful in 27s
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /06 AUTHOR/11 METADATA/Phil Skentelbery.md
|
||||
permalink: /about
|
||||
title: Phil Skentelbery
|
||||
created: 2026-01-29T14:04:18.712-07:00
|
||||
modified: 2026-01-10T21:07:06.051-07:00
|
||||
modified: 2026-02-05T12:14:05.453-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
11
content/06 AUTHOR/12 MUSINGS/Fear and Loathing in AI Land.md
Normal file
11
content/06 AUTHOR/12 MUSINGS/Fear and Loathing in AI Land.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /musings/fear-and-loathing-in-ai-land
|
||||
title: Fear and Loathing in AI Land
|
||||
created: 2026-01-29T14:04:18.780-07:00
|
||||
modified: 2026-02-05T12:14:05.457-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
In my life time I do not recall a technology quite so ubiquitous yet reviled as AI. For the purpose of this note, AI is a placeholder for generative AI, your LLMs like ChatGPT, Claude, and Grok. These products have gone from niche tools to consumer products in a few short years and are
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /06 AUTHOR/12 MUSINGS/Social Media Isn't Social.md
|
||||
permalink: /musings/social-media-isnt-social
|
||||
title: Social Media Isn't Social
|
||||
created: 2026-01-29T14:04:18.833-07:00
|
||||
modified: 2026-01-21T13:54:49.189-07:00
|
||||
modified: 2026-02-05T12:14:05.455-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/11 TRAVEL/11.11 PLACES/US, CO, Fairplay.md
|
||||
permalink: /places/us-co-fairplay
|
||||
title: US - CO - Fairplay
|
||||
created: 2026-01-29T14:04:18.765-07:00
|
||||
modified: 2026-01-11T15:54:06.320-07:00
|
||||
modified: 2026-02-05T12:15:21.732-07:00
|
||||
tags:
|
||||
- travel
|
||||
- city
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/11 TRAVEL/11.11 PLACES/US, NV, Las Vegas.md
|
||||
permalink: /places/us-nv-las-vegas
|
||||
title: US - NV - Las Vegas
|
||||
created: 2026-01-29T14:04:18.359-07:00
|
||||
modified: 2026-01-20T14:53:41.338-07:00
|
||||
modified: 2026-02-05T12:15:21.734-07:00
|
||||
tags:
|
||||
- travel
|
||||
- city
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/12 HABITS/12.11 DAILY/10 MLD.md
|
||||
title: 10 Minimum Lovable Day
|
||||
permalink: /habits/mld
|
||||
title: Minimum Lovable Day
|
||||
created: 2026-01-29T14:04:18.832-07:00
|
||||
modified: 2025-07-29T07:24:00.606-06:00
|
||||
modified: 2026-02-05T12:15:47.051-07:00
|
||||
tags:
|
||||
- productivity
|
||||
cssclasses: ""
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /habits/inbox-triage
|
||||
title: Inbox Triage (AM)
|
||||
created: 2026-01-29T14:04:18.363-07:00
|
||||
modified: 2026-02-05T12:15:47.053-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
Morning triage of my inbox (email and teams)
|
||||
- If you can respond in 2 mins or less, do it
|
||||
- If it needs to be [[Email Delegation \| delegated]] do it
|
||||
- If it requires deep work tag it as such and move to a dedicated folder
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/VeraCrypt.md
|
||||
permalink: /apps/veracrypt
|
||||
title: VeraCrypt
|
||||
created: 2026-01-29T14:04:18.863-07:00
|
||||
modified: 2026-02-05T09:11:56.232-07:00
|
||||
modified: 2026-02-05T12:16:30.767-07:00
|
||||
tags:
|
||||
- encryption
|
||||
- security
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/aerc.md
|
||||
permalink: /apps/aerc
|
||||
title: aerc
|
||||
created: 2026-01-30T08:09:11.034-07:00
|
||||
modified: 2026-02-05T09:11:56.234-07:00
|
||||
modified: 2026-02-05T12:16:17.106-07:00
|
||||
tags:
|
||||
- email
|
||||
- terminal
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/atuin.md
|
||||
permalink: /apps/atuin
|
||||
title: atuin
|
||||
created: 2026-01-30T08:29:14.283-07:00
|
||||
modified: 2026-02-05T09:11:56.236-07:00
|
||||
modified: 2026-02-05T12:16:17.109-07:00
|
||||
tags:
|
||||
- shell
|
||||
- history
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/impala.md
|
||||
permalink: /apps/impala
|
||||
title: impala
|
||||
created: 2026-02-05T09:36:55.334-07:00
|
||||
modified: 2026-02-05T09:41:11.146-07:00
|
||||
modified: 2026-02-05T12:16:17.110-07:00
|
||||
tags:
|
||||
- wifi
|
||||
- network
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/isync.md
|
||||
permalink: /apps/isync
|
||||
title: isync (mbsync)
|
||||
created: 2026-01-30T08:09:43.461-07:00
|
||||
modified: 2026-02-05T09:12:58.913-07:00
|
||||
modified: 2026-02-05T12:16:17.112-07:00
|
||||
tags:
|
||||
- email
|
||||
- sync
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/nvim.md
|
||||
permalink: /apps/nvim
|
||||
title: nvim (Neovim)
|
||||
created: 2026-01-30T08:08:10.433-07:00
|
||||
modified: 2026-02-05T09:12:58.916-07:00
|
||||
modified: 2026-02-05T12:16:17.114-07:00
|
||||
tags:
|
||||
- editor
|
||||
- terminal
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/qutebrowser.md
|
||||
permalink: /apps/qutebrowser
|
||||
title: qutebrowser
|
||||
created: 2026-01-31T15:46:19.286-07:00
|
||||
modified: 2026-02-05T09:12:58.917-07:00
|
||||
modified: 2026-02-05T12:16:30.762-07:00
|
||||
tags:
|
||||
- browser
|
||||
- web
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/urlref.md
|
||||
permalink: /apps/urlref
|
||||
title: urlref
|
||||
created: 2026-01-29T14:04:18.714-07:00
|
||||
modified: 2026-01-19T18:40:10.504-07:00
|
||||
modified: 2026-02-05T12:16:30.765-07:00
|
||||
tags:
|
||||
- web
|
||||
- note_taking
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/whosthere.md
|
||||
permalink: /apps/whosthere
|
||||
title: whosthere
|
||||
created: 2026-02-05T08:46:27.958-07:00
|
||||
modified: 2026-02-05T09:12:58.918-07:00
|
||||
modified: 2026-02-05T12:16:30.769-07:00
|
||||
tags:
|
||||
- network
|
||||
- lan
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/zathura.md
|
||||
permalink: /apps/zathura
|
||||
title: zathura
|
||||
created: 2026-02-05T09:08:26.899-07:00
|
||||
modified: 2026-02-05T09:12:58.920-07:00
|
||||
modified: 2026-02-05T12:16:30.770-07:00
|
||||
tags:
|
||||
- pdf
|
||||
- documents
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.12 PROCESSES/Backups.md
|
||||
permalink: /processes/backups
|
||||
title: Backups
|
||||
created: 2026-01-29T14:04:18.777-07:00
|
||||
modified: 2026-01-21T22:48:12.310-07:00
|
||||
modified: 2026-02-05T12:16:56.630-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/00 - Start Here.md
|
||||
title: 00 - Start Here
|
||||
permalink: /os
|
||||
title: Arch Linux Setup Guide
|
||||
created: 2026-02-05T09:20:32.962-07:00
|
||||
modified: 2026-02-05T09:32:01.211-07:00
|
||||
modified: 2026-02-05T12:17:52.896-07:00
|
||||
tags:
|
||||
- guide
|
||||
- arch
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/AppImage Management.md
|
||||
permalink: /os/appimage
|
||||
title: AppImage Management
|
||||
created: 2026-01-29T15:05:11.266-07:00
|
||||
modified: 2026-02-05T09:21:56.851-07:00
|
||||
modified: 2026-02-05T12:17:52.899-07:00
|
||||
tags:
|
||||
- appimage
|
||||
- apps
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell.md
|
||||
permalink: /os/ashell
|
||||
title: Ashell
|
||||
created: 2026-01-29T15:16:18.996-07:00
|
||||
modified: 2026-02-05T09:23:59.109-07:00
|
||||
modified: 2026-02-05T12:17:52.901-07:00
|
||||
tags:
|
||||
- hyprland
|
||||
- statusbar
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Audio.md
|
||||
permalink: /os/audio
|
||||
title: Audio
|
||||
created: 2026-01-29T15:21:02.328-07:00
|
||||
modified: 2026-02-05T09:20:32.969-07:00
|
||||
modified: 2026-02-05T12:17:52.903-07:00
|
||||
tags:
|
||||
- audio
|
||||
- pipewire
|
||||
|
||||
465
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Base Install.md
Normal file
465
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Base Install.md
Normal file
@@ -0,0 +1,465 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /os/base-install
|
||||
title: Base Install
|
||||
created: 2026-01-29T14:10:28.844-07:00
|
||||
modified: 2026-02-05T12:17:52.905-07:00
|
||||
tags:
|
||||
- arch
|
||||
- installation
|
||||
- luks
|
||||
- btrfs
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
My Arch Linux installation guide for Framework Laptop 13 (AMD Ryzen 7040). LUKS2 encrypted BTRFS with Limine bootloader.
|
||||
|
||||
> Based on guides by [yovko](https://gist.github.com/yovko/512326b904d120f3280c163abfbcb787) and [mgajewskik](https://gist.github.com/mgajewskik/a9331171c31b6e8839c427210ba76730), adapted for Framework AMD hardware.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
- **Encryption:** LUKS2 on system partition
|
||||
- **Filesystem:** BTRFS with subvolumes (snapshots, compression)
|
||||
- **Bootloader:** Limine (lightweight, Snapper-friendly)
|
||||
- **Hardware:** Framework Laptop 13 AMD (Ryzen 7040 series)
|
||||
|
||||
---
|
||||
|
||||
## Preparation
|
||||
|
||||
Boot from the [official Arch ISO](https://archlinux.org/download/).
|
||||
|
||||
### Connect to WiFi
|
||||
|
||||
```bash
|
||||
iwctl station wlan0 connect <SSID>
|
||||
```
|
||||
|
||||
### Set keymap and font
|
||||
|
||||
```bash
|
||||
loadkeys us
|
||||
setfont ter-132b
|
||||
```
|
||||
|
||||
### Verify UEFI mode
|
||||
|
||||
```bash
|
||||
cat /sys/firmware/efi/fw_platform_size
|
||||
# Should return 64
|
||||
```
|
||||
|
||||
### (Optional) SSH in from another machine
|
||||
|
||||
```bash
|
||||
passwd # set root password
|
||||
ip addr show # get IP
|
||||
# From other machine: ssh root@<ip>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disk Partitioning
|
||||
|
||||
Assuming single-boot Arch on `/dev/nvme0n1`.
|
||||
|
||||
### Wipe existing partitions
|
||||
|
||||
```bash
|
||||
sgdisk --zap-all /dev/nvme0n1
|
||||
```
|
||||
|
||||
### Create partitions
|
||||
|
||||
- **ESP:** 2GB FAT32 for `/boot`
|
||||
- **System:** Rest of disk, LUKS2 encrypted BTRFS
|
||||
|
||||
```bash
|
||||
parted --script /dev/nvme0n1 \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 1MiB 2049MiB \
|
||||
set 1 esp on \
|
||||
mkpart Linux btrfs 2050MiB 100%
|
||||
```
|
||||
|
||||
### Format ESP
|
||||
|
||||
```bash
|
||||
mkfs.fat -F 32 /dev/nvme0n1p1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Encryption Setup
|
||||
|
||||
### Create LUKS container
|
||||
|
||||
```bash
|
||||
cryptsetup luksFormat /dev/nvme0n1p2
|
||||
```
|
||||
|
||||
**Save the UUID** — you'll need it for the bootloader:
|
||||
|
||||
```bash
|
||||
cryptsetup luksUUID /dev/nvme0n1p2
|
||||
```
|
||||
|
||||
### Open the container
|
||||
|
||||
```bash
|
||||
cryptsetup open /dev/nvme0n1p2 root
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## BTRFS Setup
|
||||
|
||||
### Format and mount
|
||||
|
||||
```bash
|
||||
mkfs.btrfs /dev/mapper/root
|
||||
mount /dev/mapper/root /mnt
|
||||
```
|
||||
|
||||
### Create subvolumes
|
||||
|
||||
```bash
|
||||
btrfs subvolume create /mnt/@
|
||||
btrfs subvolume create /mnt/@home
|
||||
btrfs subvolume create /mnt/@var_log
|
||||
btrfs subvolume create /mnt/@var_cache
|
||||
btrfs subvolume create /mnt/@snapshots
|
||||
```
|
||||
|
||||
### Remount with subvolumes
|
||||
|
||||
```bash
|
||||
umount /mnt
|
||||
|
||||
mount -o compress=zstd:1,noatime,subvol=@ /dev/mapper/root /mnt
|
||||
mount --mkdir -o compress=zstd:1,noatime,subvol=@home /dev/mapper/root /mnt/home
|
||||
mount --mkdir -o compress=zstd:1,noatime,subvol=@var_log /dev/mapper/root /mnt/var/log
|
||||
mount --mkdir -o compress=zstd:1,noatime,subvol=@var_cache /dev/mapper/root /mnt/var/cache
|
||||
mount --mkdir -o compress=zstd:1,noatime,subvol=@snapshots /dev/mapper/root /mnt/.snapshots
|
||||
mount --mkdir /dev/nvme0n1p1 /mnt/boot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Install Base System
|
||||
|
||||
```bash
|
||||
pacman -Syy
|
||||
|
||||
pacstrap -K /mnt \
|
||||
base base-devel linux linux-firmware linux-headers \
|
||||
git vim neovim \
|
||||
btrfs-progs efibootmgr limine cryptsetup \
|
||||
networkmanager iwd wireless-regdb \
|
||||
reflector bash-completion zsh \
|
||||
pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber sof-firmware \
|
||||
bluez bluez-utils \
|
||||
acpi acpid power-profiles-daemon \
|
||||
firewalld cups avahi nss-mdns \
|
||||
util-linux terminus-font openssh man sudo rsync \
|
||||
amd-ucode mesa vulkan-radeon libva-mesa-driver
|
||||
```
|
||||
|
||||
### Generate fstab
|
||||
|
||||
```bash
|
||||
genfstab -U /mnt >> /mnt/etc/fstab
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## System Configuration
|
||||
|
||||
### Chroot in
|
||||
|
||||
```bash
|
||||
arch-chroot /mnt
|
||||
```
|
||||
|
||||
### Timezone and locale
|
||||
|
||||
```bash
|
||||
ln -sf /usr/share/zoneinfo/America/Denver /etc/localtime
|
||||
hwclock --systohc
|
||||
|
||||
# Edit /etc/locale.gen, uncomment en_US.UTF-8 UTF-8
|
||||
vim /etc/locale.gen
|
||||
locale-gen
|
||||
echo "LANG=en_US.UTF-8" > /etc/locale.conf
|
||||
```
|
||||
|
||||
### Console font and keymap
|
||||
|
||||
```bash
|
||||
cat > /etc/vconsole.conf << EOF
|
||||
KEYMAP=us
|
||||
FONT=ter-132b
|
||||
EOF
|
||||
```
|
||||
|
||||
### Hostname
|
||||
|
||||
```bash
|
||||
echo "framework" > /etc/hostname
|
||||
```
|
||||
|
||||
### Root password
|
||||
|
||||
```bash
|
||||
passwd
|
||||
```
|
||||
|
||||
### Create user
|
||||
|
||||
```bash
|
||||
useradd -mG wheel phil
|
||||
passwd phil
|
||||
EDITOR=vim visudo # uncomment %wheel ALL=(ALL:ALL) ALL
|
||||
```
|
||||
|
||||
### Configure mkinitcpio
|
||||
|
||||
Edit `/etc/mkinitcpio.conf`:
|
||||
|
||||
```bash
|
||||
MODULES=(btrfs)
|
||||
BINARIES=(/usr/bin/btrfs)
|
||||
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
|
||||
```
|
||||
|
||||
> **Note:** Add `resume` after `filesystems` if you want hibernation support.
|
||||
|
||||
Regenerate:
|
||||
|
||||
```bash
|
||||
mkinitcpio -P
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Limine Bootloader
|
||||
|
||||
### Install Limine
|
||||
|
||||
```bash
|
||||
mkdir -p /boot/EFI/limine
|
||||
cp /usr/share/limine/BOOTX64.EFI /boot/EFI/limine/
|
||||
```
|
||||
|
||||
### Create NVRAM entry
|
||||
|
||||
```bash
|
||||
efibootmgr --create --disk /dev/nvme0n1 --part 1 \
|
||||
--label "Arch Linux" \
|
||||
--loader '\EFI\limine\BOOTX64.EFI' \
|
||||
--unicode
|
||||
```
|
||||
|
||||
### Configure Limine
|
||||
|
||||
Create `/boot/EFI/limine/limine.conf`:
|
||||
|
||||
```
|
||||
timeout: 3
|
||||
|
||||
/Arch Linux
|
||||
protocol: linux
|
||||
path: boot():/vmlinuz-linux
|
||||
cmdline: quiet cryptdevice=UUID=<YOUR-LUKS-UUID>:root root=/dev/mapper/root rw rootflags=subvol=@ rootfstype=btrfs cfg80211.ieee80211_regdom=US
|
||||
module_path: boot():/initramfs-linux.img
|
||||
|
||||
/Arch Linux (fallback)
|
||||
protocol: linux
|
||||
path: boot():/vmlinuz-linux
|
||||
cmdline: quiet cryptdevice=UUID=<YOUR-LUKS-UUID>:root root=/dev/mapper/root rw rootflags=subvol=@ rootfstype=btrfs cfg80211.ieee80211_regdom=US
|
||||
module_path: boot():/initramfs-linux-fallback.img
|
||||
```
|
||||
|
||||
Replace `<YOUR-LUKS-UUID>` with the UUID from earlier.
|
||||
|
||||
---
|
||||
|
||||
## Enable Services
|
||||
|
||||
```bash
|
||||
systemctl enable NetworkManager
|
||||
systemctl enable iwd
|
||||
systemctl enable bluetooth
|
||||
systemctl enable cups
|
||||
systemctl enable avahi-daemon
|
||||
systemctl enable firewalld
|
||||
systemctl enable acpid
|
||||
systemctl enable power-profiles-daemon
|
||||
systemctl enable reflector.timer
|
||||
systemctl enable fstrim.timer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Framework AMD Tweaks
|
||||
|
||||
### Disable PC speaker
|
||||
|
||||
Create `/etc/modprobe.d/nobeep.conf`:
|
||||
|
||||
```
|
||||
blacklist pcspkr
|
||||
blacklist snd_pcsp
|
||||
```
|
||||
|
||||
### Lid behavior
|
||||
|
||||
Edit `/etc/systemd/logind.conf`:
|
||||
|
||||
```ini
|
||||
HandlePowerKey=ignore
|
||||
HandlePowerKeyLongPress=poweroff
|
||||
HandleLidSwitch=suspend
|
||||
HandleLidSwitchExternalPower=suspend
|
||||
HandleLidSwitchDocked=ignore
|
||||
```
|
||||
|
||||
### WiFi performance (MediaTek RZ616)
|
||||
|
||||
The AMD Framework uses MediaTek WiFi which needs some tuning.
|
||||
|
||||
**Set regulatory domain** — without this you're stuck on 2.4GHz:
|
||||
|
||||
```bash
|
||||
# Add to Limine cmdline:
|
||||
cfg80211.ieee80211_regdom=US
|
||||
```
|
||||
|
||||
**Use iwd as NetworkManager backend** for better stability:
|
||||
|
||||
Create `/etc/NetworkManager/conf.d/wifi-backend.conf`:
|
||||
|
||||
```ini
|
||||
[device]
|
||||
wifi.backend=iwd
|
||||
```
|
||||
|
||||
**Disable WiFi power saving** to prevent disconnects:
|
||||
|
||||
Create `/etc/modprobe.d/mt7921.conf`:
|
||||
|
||||
```
|
||||
options mt7921e power_save=0
|
||||
```
|
||||
|
||||
### Headphone jack buzz fix
|
||||
|
||||
The AMD board has a slight buzz when audio is idle. Disable power saving:
|
||||
|
||||
Create `/etc/modprobe.d/audio-powersave.conf`:
|
||||
|
||||
```
|
||||
options snd_hda_intel power_save=0
|
||||
```
|
||||
|
||||
### USB-A expansion card power drain
|
||||
|
||||
Avoid placing USB-A cards in the **two rear slots** — they cause higher idle power drain. Front slots are fine.
|
||||
|
||||
### HDMI/DisplayPort expansion cards
|
||||
|
||||
Don't use the **front-left slot** for HDMI/DP cards — may not work on AMD.
|
||||
|
||||
---
|
||||
|
||||
## Reboot
|
||||
|
||||
```bash
|
||||
exit
|
||||
umount -R /mnt
|
||||
cryptsetup close root
|
||||
reboot
|
||||
```
|
||||
|
||||
Remove the USB drive.
|
||||
|
||||
---
|
||||
|
||||
## Post-Install
|
||||
|
||||
### Connect to WiFi
|
||||
|
||||
```bash
|
||||
nmcli device wifi connect <SSID> password <password>
|
||||
```
|
||||
|
||||
### Install paru (AUR helper)
|
||||
|
||||
```bash
|
||||
sudo pacman -S --needed git base-devel
|
||||
git clone https://aur.archlinux.org/paru.git
|
||||
cd paru && makepkg -si
|
||||
cd .. && rm -rf paru
|
||||
```
|
||||
|
||||
### Enable pacman colors
|
||||
|
||||
Uncomment `Color` in `/etc/pacman.conf`.
|
||||
|
||||
### Time sync
|
||||
|
||||
```bash
|
||||
timedatectl set-ntp true
|
||||
```
|
||||
|
||||
### Pacman hook for Limine updates
|
||||
|
||||
Create `/etc/pacman.d/hooks/99-limine.hook`:
|
||||
|
||||
```ini
|
||||
[Trigger]
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Type = Package
|
||||
Target = limine
|
||||
|
||||
[Action]
|
||||
Description = Deploying Limine after upgrade...
|
||||
When = PostTransaction
|
||||
Exec = /usr/bin/cp /usr/share/limine/BOOTX64.EFI /boot/EFI/limine/
|
||||
```
|
||||
|
||||
### BIOS updates
|
||||
|
||||
Framework AMD is well supported on LVFS. Check for updates:
|
||||
|
||||
```bash
|
||||
sudo pacman -S fwupd
|
||||
fwupdmgr refresh
|
||||
fwupdmgr get-updates
|
||||
fwupdmgr update
|
||||
```
|
||||
|
||||
> **Note:** If you have a batch 1 or 2 device, make sure BIOS is at least 3.03 before updating further.
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup]] — graphical environment
|
||||
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network]] — advanced networking
|
||||
- Snapper for BTRFS snapshots
|
||||
- Swap/hibernation setup
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [Arch Wiki: Framework Laptop 13](https://wiki.archlinux.org/title/Framework_Laptop_13)
|
||||
- [Arch Wiki: Installation Guide](https://wiki.archlinux.org/title/Installation_guide)
|
||||
- [Arch Wiki: Limine](https://wiki.archlinux.org/title/Limine)
|
||||
- [Arch Wiki: BTRFS](https://wiki.archlinux.org/title/Btrfs)
|
||||
- [Arch Wiki: dm-crypt](https://wiki.archlinux.org/title/Dm-crypt)
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Disks.md
|
||||
permalink: /os/disks
|
||||
title: Disks
|
||||
created: 2026-01-29T21:46:53.106-07:00
|
||||
modified: 2026-02-05T09:21:21.430-07:00
|
||||
modified: 2026-02-05T12:18:02.151-07:00
|
||||
tags:
|
||||
- disks
|
||||
- automount
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Fonts.md
|
||||
permalink: /os/fonts
|
||||
title: Fonts
|
||||
created: 2026-01-29T15:24:42.068-07:00
|
||||
modified: 2026-02-05T09:21:21.425-07:00
|
||||
modified: 2026-02-05T12:18:02.154-07:00
|
||||
tags:
|
||||
- fonts
|
||||
- rendering
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup.md
|
||||
permalink: /os/hyprland
|
||||
title: Hyprland Setup
|
||||
created: 2026-01-29T15:09:13.502-07:00
|
||||
modified: 2026-02-05T09:31:46.733-07:00
|
||||
modified: 2026-02-05T12:18:02.155-07:00
|
||||
tags:
|
||||
- hyprland
|
||||
- wayland
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Keychain.md
|
||||
permalink: /os/keychain
|
||||
title: Keychain
|
||||
created: 2026-01-29T21:15:48.335-07:00
|
||||
modified: 2026-02-05T09:21:56.854-07:00
|
||||
modified: 2026-02-05T12:18:02.157-07:00
|
||||
tags:
|
||||
- security
|
||||
- secrets
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako.md
|
||||
permalink: /os/mako
|
||||
title: Mako
|
||||
created: 2026-01-29T15:18:16.265-07:00
|
||||
modified: 2026-02-05T09:20:32.970-07:00
|
||||
modified: 2026-02-05T12:18:02.159-07:00
|
||||
tags:
|
||||
- notifications
|
||||
- wayland
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network.md
|
||||
permalink: /os/network
|
||||
title: Network
|
||||
created: 2026-01-29T14:15:15.157-07:00
|
||||
modified: 2026-02-05T09:41:11.148-07:00
|
||||
modified: 2026-02-05T12:18:10.583-07:00
|
||||
tags:
|
||||
- network
|
||||
- wifi
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
|
||||
permalink: /os/plymouth
|
||||
title: Plymouth
|
||||
created: 2026-02-05T09:31:46.739-07:00
|
||||
modified: 2026-02-05T09:43:32.507-07:00
|
||||
modified: 2026-02-05T12:18:10.585-07:00
|
||||
tags:
|
||||
- boot
|
||||
- splash
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Printing.md
|
||||
permalink: /os/printing
|
||||
title: Printing
|
||||
created: 2026-02-05T08:52:25.911-07:00
|
||||
modified: 2026-02-05T09:21:21.426-07:00
|
||||
modified: 2026-02-05T12:18:10.587-07:00
|
||||
tags:
|
||||
- printing
|
||||
- cups
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Shell.md
|
||||
permalink: /os/shell
|
||||
title: Shell
|
||||
created: 2026-01-29T16:18:01.019-07:00
|
||||
modified: 2026-02-05T09:44:18.943-07:00
|
||||
modified: 2026-02-05T12:18:10.588-07:00
|
||||
tags:
|
||||
- shell
|
||||
- terminal
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Yubikey.md
|
||||
permalink: /os/yubikey
|
||||
title: Yubikey
|
||||
created: 2026-01-29T21:27:17.327-07:00
|
||||
modified: 2026-02-05T09:21:56.856-07:00
|
||||
modified: 2026-02-05T12:18:10.589-07:00
|
||||
tags:
|
||||
- security
|
||||
- yubikey
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd.md
|
||||
permalink: /os/fprintd
|
||||
title: fprintd
|
||||
created: 2026-02-05T09:31:46.737-07:00
|
||||
modified: 2026-02-05T09:32:30.884-07:00
|
||||
modified: 2026-02-05T12:18:16.843-07:00
|
||||
tags:
|
||||
- security
|
||||
- fingerprint
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock.md
|
||||
permalink: /os/hyprlock
|
||||
title: hyprlock
|
||||
created: 2026-02-05T09:31:46.736-07:00
|
||||
modified: 2026-02-05T09:35:55.743-07:00
|
||||
modified: 2026-02-05T12:18:16.846-07:00
|
||||
tags:
|
||||
- hyprland
|
||||
- lockscreen
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprshutdown.md
|
||||
permalink: /os/hyprshutdown
|
||||
title: hyprshutdown
|
||||
created: 2026-02-05T09:31:46.735-07:00
|
||||
modified: 2026-02-05T09:31:46.735-07:00
|
||||
modified: 2026-02-05T12:18:16.847-07:00
|
||||
tags:
|
||||
- hyprland
|
||||
- shutdown
|
||||
|
||||
15
content/10-19 LIFE/13 TECH SETUP/13.14 AI/blogwatcher.md
Normal file
15
content/10-19 LIFE/13 TECH SETUP/13.14 AI/blogwatcher.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /ai/blogwatcher
|
||||
title: blogwatcher
|
||||
created: 2026-01-31T20:42:32.556-07:00
|
||||
modified: 2026-02-05T12:18:45.700-07:00
|
||||
tags:
|
||||
- ai
|
||||
- rss
|
||||
- monitoring
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
`go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest`
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.11 DAGGERHEART/Character Creation.md
|
||||
permalink: /ttrpg/daggerheart/character-creation
|
||||
title: Character Creation Cheat Sheet
|
||||
created: 2026-01-29T14:04:18.364-07:00
|
||||
modified: 2025-06-24T21:01:37.096-06:00
|
||||
modified: 2026-02-05T12:19:54.478-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
cssclasses: ""
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Hub.md
|
||||
title: 00 - Holding Back Sin
|
||||
permalink: /ttrpg/hbs
|
||||
title: Holding Back Sin
|
||||
created: 2026-01-29T14:04:18.607-07:00
|
||||
modified: 2025-06-26T16:08:06.270-06:00
|
||||
modified: 2026-02-05T12:19:54.481-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Sin Manifest.md
|
||||
title: "01 - Campaign Frame: Sin Manifest"
|
||||
permalink: /ttrpg/hbs/sin-manifest
|
||||
title: "Campaign Frame: Sin Manifest"
|
||||
created: 2026-01-29T14:04:18.718-07:00
|
||||
modified: 2025-06-25T21:38:30.349-06:00
|
||||
modified: 2026-02-05T12:19:54.485-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Church.md
|
||||
permalink: /ttrpg/hbs/the-church
|
||||
title: The Church
|
||||
created: 2026-01-29T14:04:18.879-07:00
|
||||
modified: 2025-06-24T22:12:24.093-06:00
|
||||
modified: 2026-02-05T12:19:54.486-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The First Sinner.md
|
||||
permalink: /ttrpg/hbs/the-first-sinner
|
||||
title: The First Sinner
|
||||
created: 2026-01-29T14:04:18.545-07:00
|
||||
modified: 2025-06-24T22:11:57.085-06:00
|
||||
modified: 2026-02-05T12:20:02.544-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Old Gods.md
|
||||
permalink: /ttrpg/hbs/the-old-gods
|
||||
title: The Old Gods
|
||||
created: 2026-01-29T14:04:18.493-07:00
|
||||
modified: 2025-06-24T21:53:46.955-06:00
|
||||
modified: 2026-02-05T12:20:02.552-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Pit.md
|
||||
permalink: /ttrpg/hbs/the-pit
|
||||
title: The Pit
|
||||
created: 2026-01-29T14:04:18.361-07:00
|
||||
modified: 2025-06-25T20:35:49.868-06:00
|
||||
modified: 2026-02-05T12:20:02.554-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Ydrasog.md
|
||||
permalink: /ttrpg/hbs/ydrasog
|
||||
title: Ydrasog
|
||||
created: 2026-01-29T14:04:18.798-07:00
|
||||
modified: 2025-06-25T20:29:47.366-06:00
|
||||
modified: 2026-02-05T12:20:02.555-07:00
|
||||
tags:
|
||||
- daggerheart
|
||||
- holding_back_sin
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /sh/garden
|
||||
title: Digital Garden
|
||||
created: 2026-02-05T09:58:59.613-07:00
|
||||
modified: 2026-02-05T12:21:13.912-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- digital_gardening
|
||||
- guide
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
# Digital Garden Setup
|
||||
|
||||
My digital garden stack for publishing Obsidian notes to the web.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Obsidian Vault → Quartz Syncer → Quartz (build) → Caddy (serve)
|
||||
↓
|
||||
Self-hosted LiveSync (multi-device editing)
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
1. [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]] — Note-taking and editing
|
||||
2. [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]] — Static site generator (Markdown → HTML)
|
||||
3. [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Caddy]] — Web server with automatic HTTPS
|
||||
4. [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Selfhosted Live Sync]] — Real-time sync across devices
|
||||
|
||||
## Setup Order
|
||||
|
||||
1. **[[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]]** — Install and configure plugins
|
||||
2. **[[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Selfhosted Live Sync]]** — Set up CouchDB for multi-device sync
|
||||
3. **[[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]]** — Clone repo, configure, connect to vault
|
||||
4. **[[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Caddy]]** — Configure reverse proxy and deploy
|
||||
|
||||
## Publishing Workflow
|
||||
|
||||
1. Write/edit notes in Obsidian (any device)
|
||||
2. LiveSync keeps all devices in sync via CouchDB
|
||||
3. Mark notes for publishing with `publish: true` frontmatter
|
||||
4. Use Quartz Syncer plugin to push to Quartz repo
|
||||
5. Build triggers (manual or CI) regenerate the site
|
||||
6. Caddy serves the static files
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Component | Purpose | Tech |
|
||||
|-----------|---------|------|
|
||||
| Editor | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]] | Electron app |
|
||||
| Sync | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Selfhosted Live Sync]] | CouchDB |
|
||||
| Generator | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]] | Node.js/TypeScript |
|
||||
| Server | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Caddy]] | Go binary |
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /sh/garden/caddy
|
||||
title: Caddy
|
||||
created: 2026-02-05T09:58:59.617-07:00
|
||||
modified: 2026-02-05T12:21:13.914-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- web_server
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
Caddy is a powerful web server with automatic HTTPS. I use it to serve my [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]] digital garden.
|
||||
|
||||
## Installation
|
||||
|
||||
**Arch Linux:**
|
||||
```bash
|
||||
sudo pacman -S caddy
|
||||
```
|
||||
|
||||
**Docker:**
|
||||
```bash
|
||||
docker pull caddy:latest
|
||||
```
|
||||
|
||||
**Binary:**
|
||||
Download from https://caddyserver.com/download
|
||||
|
||||
## Basic Configuration
|
||||
|
||||
Caddyfile location: `/etc/caddy/Caddyfile`
|
||||
|
||||
### Serve Static Files
|
||||
|
||||
```caddyfile
|
||||
garden.example.com {
|
||||
root * /var/www/garden/public
|
||||
file_server
|
||||
|
||||
# Handle SPA routing (if using Quartz SPA mode)
|
||||
try_files {path} {path}/ /index.html
|
||||
|
||||
# Compression
|
||||
encode gzip zstd
|
||||
}
|
||||
```
|
||||
|
||||
### With Reverse Proxy
|
||||
|
||||
If running Quartz dev server:
|
||||
```caddyfile
|
||||
garden.example.com {
|
||||
reverse_proxy localhost:8080
|
||||
}
|
||||
```
|
||||
|
||||
## Automatic HTTPS
|
||||
|
||||
Caddy automatically provisions TLS certificates via Let's Encrypt. Just use a domain name and Caddy handles the rest.
|
||||
|
||||
Requirements:
|
||||
- Domain DNS points to your server
|
||||
- Ports 80 and 443 accessible
|
||||
- Caddy can bind to those ports
|
||||
|
||||
## Running Caddy
|
||||
|
||||
### systemd
|
||||
|
||||
```bash
|
||||
sudo systemctl enable --now caddy
|
||||
```
|
||||
|
||||
### Manual
|
||||
|
||||
```bash
|
||||
caddy run --config /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
### Reload config
|
||||
|
||||
```bash
|
||||
sudo systemctl reload caddy
|
||||
# or
|
||||
caddy reload --config /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
## Digital Garden Setup
|
||||
|
||||
My Caddyfile for serving Quartz:
|
||||
|
||||
```caddyfile
|
||||
garden.example.com {
|
||||
root * /var/www/garden/public
|
||||
file_server
|
||||
|
||||
# Quartz SPA routing
|
||||
try_files {path} {path}.html {path}/ /index.html
|
||||
|
||||
# Compression for faster loads
|
||||
encode gzip zstd
|
||||
|
||||
# Cache static assets
|
||||
@static {
|
||||
path *.css *.js *.woff2 *.png *.jpg *.svg
|
||||
}
|
||||
header @static Cache-Control "public, max-age=31536000"
|
||||
|
||||
# Security headers
|
||||
header {
|
||||
X-Content-Type-Options nosniff
|
||||
X-Frame-Options DENY
|
||||
Referrer-Policy strict-origin-when-cross-origin
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Deployment Workflow
|
||||
|
||||
1. Build Quartz: `npx quartz build`
|
||||
2. Copy to server: `rsync -avz public/ server:/var/www/garden/public/`
|
||||
3. Caddy automatically serves the new files
|
||||
|
||||
Or use a CI/CD pipeline to automate.
|
||||
|
||||
## Multiple Sites
|
||||
|
||||
```caddyfile
|
||||
garden.example.com {
|
||||
root * /var/www/garden/public
|
||||
file_server
|
||||
}
|
||||
|
||||
blog.example.com {
|
||||
root * /var/www/blog
|
||||
file_server
|
||||
}
|
||||
|
||||
api.example.com {
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- Docs: https://caddyserver.com/docs/
|
||||
- Caddyfile: https://caddyserver.com/docs/caddyfile
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian.md
|
||||
permalink: /sh/garden/obsidian
|
||||
title: Obsidian Setup for Digital Gardening
|
||||
created: 2026-01-29T14:04:18.365-07:00
|
||||
modified: 2026-01-19T17:48:04.050-07:00
|
||||
modified: 2026-02-05T12:21:13.916-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- digital_gardening
|
||||
@@ -14,7 +14,6 @@ cssclasses: ""
|
||||
My current setup for digital gardening with [Obsidian](https://obsidian.md) is very lightweight by design, plugin bloat is real and detracts from the simplicity that allows me to just get things done.
|
||||
## Plugins
|
||||
- Harper - Great for spelling and grammar checks
|
||||
- Quartz Syncer - Used to synchronize my vault contents to my [[Quartz]] repo
|
||||
- BRAT - Used to install Quartz Syncer
|
||||
- Quartz Syncer - Used to synchronize my vault contents to my [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]] repo
|
||||
- Dataview - I just cannot live without this
|
||||
- Self-hosted LiveSync - For editing on multiple devices
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /sh/garden/quartz
|
||||
title: Quartz
|
||||
created: 2026-02-05T09:58:59.615-07:00
|
||||
modified: 2026-02-05T12:21:13.918-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- digital_gardening
|
||||
- static_site
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
Quartz is a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites. Perfect for publishing [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]] vaults as digital gardens.
|
||||
|
||||
## Features
|
||||
|
||||
- **Obsidian compatibility** — Wikilinks, callouts, backlinks
|
||||
- **Full-text search** — Client-side search
|
||||
- **Graph view** — Interactive note connections
|
||||
- **Popover previews** — Hover to preview linked notes
|
||||
- **Fast** — SPA routing, tiny bundles
|
||||
- **Customizable** — JSX components, plugin system
|
||||
|
||||
## Installation
|
||||
|
||||
Requires Node.js v22+.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/jackyzha0/quartz.git
|
||||
cd quartz
|
||||
npm i
|
||||
npx quartz create
|
||||
```
|
||||
|
||||
Follow the prompts to initialize with your content.
|
||||
|
||||
## Configuration
|
||||
|
||||
Main config: `quartz.config.ts`
|
||||
|
||||
```typescript
|
||||
const config: QuartzConfig = {
|
||||
configuration: {
|
||||
pageTitle: "My Digital Garden",
|
||||
enableSPA: true,
|
||||
enablePopovers: true,
|
||||
analytics: null, // or plausible, umami, etc.
|
||||
locale: "en-US",
|
||||
baseUrl: "garden.example.com",
|
||||
ignorePatterns: ["private", ".obsidian"],
|
||||
defaultDateType: "modified",
|
||||
theme: {
|
||||
cdnCaching: true,
|
||||
typography: {
|
||||
header: "Schibsted Grotesk",
|
||||
body: "Source Sans Pro",
|
||||
code: "IBM Plex Mono",
|
||||
},
|
||||
colors: {
|
||||
lightMode: { /* ... */ },
|
||||
darkMode: { /* ... */ },
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: { /* ... */ },
|
||||
}
|
||||
```
|
||||
|
||||
## Content
|
||||
|
||||
All content lives in `/content` folder. Home page is `content/index.md`.
|
||||
|
||||
### Frontmatter
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: My Note
|
||||
description: A description for previews
|
||||
tags:
|
||||
- example
|
||||
draft: false # true = don't publish
|
||||
publish: true # used by Quartz Syncer
|
||||
date: 2026-02-05
|
||||
---
|
||||
```
|
||||
|
||||
### Supported Syntax
|
||||
|
||||
- Standard Markdown + GFM (tables, footnotes, task lists)
|
||||
- Obsidian wikilinks: `[[Note Name]]`
|
||||
- Obsidian callouts: `> [!info]`
|
||||
- LaTeX math: `$inline$` and `$$block$$`
|
||||
- Syntax highlighting
|
||||
|
||||
## Building
|
||||
|
||||
```bash
|
||||
# Development (hot reload)
|
||||
npx quartz build --serve
|
||||
|
||||
# Production build
|
||||
npx quartz build
|
||||
|
||||
# Output goes to /public
|
||||
```
|
||||
|
||||
## Syncing Content
|
||||
|
||||
### Manual
|
||||
|
||||
```bash
|
||||
npx quartz sync
|
||||
```
|
||||
|
||||
### Quartz Syncer Plugin (Recommended)
|
||||
|
||||
Install the **Quartz Syncer** plugin in [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]]:
|
||||
|
||||
1. Install from Community Plugins
|
||||
2. Configure Git provider (GitHub, GitLab, etc.)
|
||||
3. Set Quartz repo path
|
||||
4. Use plugin to selectively publish notes
|
||||
|
||||
Features:
|
||||
- Compiles Dataview queries to static content
|
||||
- Diff viewer before publishing
|
||||
- Selective publish/update/remove
|
||||
- Smart caching
|
||||
|
||||
## Hosting Options
|
||||
|
||||
### Self-hosted with [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Caddy]]
|
||||
|
||||
Build locally or via CI, serve `/public` with Caddy.
|
||||
|
||||
### GitHub Pages
|
||||
|
||||
Add `.github/workflows/deploy.yml`:
|
||||
```yaml
|
||||
name: Deploy Quartz
|
||||
on:
|
||||
push:
|
||||
branches: [v4]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
- run: npm ci
|
||||
- run: npx quartz build
|
||||
- uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: public
|
||||
deploy:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: github-pages
|
||||
steps:
|
||||
- uses: actions/deploy-pages@v4
|
||||
```
|
||||
|
||||
### Cloudflare Pages
|
||||
|
||||
- Build command: `npx quartz build`
|
||||
- Output directory: `public`
|
||||
- Production branch: `v4`
|
||||
|
||||
## Resources
|
||||
|
||||
- Docs: https://quartz.jzhao.xyz/
|
||||
- GitHub: https://github.com/jackyzha0/quartz
|
||||
- Quartz Syncer: https://github.com/saberzero1/quartz-syncer
|
||||
@@ -0,0 +1,158 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /sh/garden/livesync
|
||||
title: Self-hosted LiveSync
|
||||
created: 2026-02-05T09:58:59.620-07:00
|
||||
modified: 2026-02-05T12:21:13.920-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- obsidian
|
||||
- sync
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
Self-hosted LiveSync is a community plugin for [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]] that enables real-time synchronization across devices using CouchDB or object storage.
|
||||
|
||||
## Features
|
||||
|
||||
- **Real-time sync** — Changes sync immediately
|
||||
- **Conflict resolution** — Automatic merging of simple conflicts
|
||||
- **End-to-end encryption** — Data encrypted before leaving device
|
||||
- **Self-hosted** — Your data on your server
|
||||
- **Multi-platform** — Works on all Obsidian platforms (desktop, mobile)
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Device A (Obsidian) ←→ CouchDB Server ←→ Device B (Obsidian)
|
||||
```
|
||||
|
||||
All devices sync to a central CouchDB instance. Changes propagate in real-time.
|
||||
|
||||
## Server Setup (CouchDB)
|
||||
|
||||
### Docker (Recommended)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: "3"
|
||||
services:
|
||||
couchdb:
|
||||
image: couchdb:latest
|
||||
restart: always
|
||||
ports:
|
||||
- "5984:5984"
|
||||
environment:
|
||||
- COUCHDB_USER=admin
|
||||
- COUCHDB_PASSWORD=your-secure-password
|
||||
volumes:
|
||||
- ./couchdb-data:/opt/couchdb/data
|
||||
```
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Configure CouchDB
|
||||
|
||||
Access Fauxton UI at `http://server:5984/_utils`
|
||||
|
||||
1. Create a database for your vault (e.g., `obsidian-vault`)
|
||||
2. Configure CORS if accessing from different domains
|
||||
|
||||
### CORS Setup
|
||||
|
||||
In Fauxton → Configuration → CORS:
|
||||
- Enable CORS
|
||||
- Set origins to `app://obsidian.md` and your domain
|
||||
|
||||
Or via curl:
|
||||
```bash
|
||||
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/httpd/enable_cors -d '"true"'
|
||||
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/origins -d '"app://obsidian.md"'
|
||||
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/credentials -d '"true"'
|
||||
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/methods -d '"GET, PUT, POST, HEAD, DELETE"'
|
||||
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/headers -d '"accept, authorization, content-type, origin, referer"'
|
||||
```
|
||||
|
||||
## Plugin Setup
|
||||
|
||||
1. Install **Self-hosted LiveSync** from Obsidian Community Plugins
|
||||
2. Open plugin settings
|
||||
3. Configure connection:
|
||||
- URI: `https://couchdb.example.com`
|
||||
- Username: your CouchDB user
|
||||
- Password: your CouchDB password
|
||||
- Database: `obsidian-vault`
|
||||
4. Set up encryption passphrase (all devices must use same passphrase)
|
||||
5. Test connection
|
||||
6. Enable sync
|
||||
|
||||
## Sync Modes
|
||||
|
||||
| Mode | Description |
|
||||
|------|-------------|
|
||||
| LiveSync | Real-time sync (uses more bandwidth) |
|
||||
| Periodic | Sync at intervals |
|
||||
| On file save | Sync when files change |
|
||||
|
||||
## Customization Sync
|
||||
|
||||
Sync settings, themes, plugins across devices:
|
||||
|
||||
Settings → Customization Sync → Enable
|
||||
|
||||
Select what to sync:
|
||||
- Settings files
|
||||
- Snippets
|
||||
- Themes
|
||||
- Plugins (careful with this)
|
||||
|
||||
## Encryption
|
||||
|
||||
Always enable end-to-end encryption:
|
||||
|
||||
1. Settings → Encryption → Enable
|
||||
2. Set passphrase (same on all devices)
|
||||
3. All data is encrypted before upload
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Sync not working
|
||||
|
||||
```bash
|
||||
# Check CouchDB is running
|
||||
curl http://localhost:5984
|
||||
|
||||
# Check database exists
|
||||
curl http://admin:password@localhost:5984/obsidian-vault
|
||||
```
|
||||
|
||||
### Conflicts
|
||||
|
||||
Plugin shows conflict indicator. Open note to resolve:
|
||||
- View both versions
|
||||
- Choose or merge manually
|
||||
- Conflicts auto-resolve if possible
|
||||
|
||||
### Rebuild database
|
||||
|
||||
If sync gets corrupted:
|
||||
1. Disable sync on all devices
|
||||
2. Delete database in CouchDB
|
||||
3. Re-create database
|
||||
4. Rebuild from primary device
|
||||
5. Re-enable on other devices
|
||||
|
||||
## Alternatives to CouchDB
|
||||
|
||||
LiveSync also supports:
|
||||
- MinIO (S3-compatible)
|
||||
- Cloudflare R2
|
||||
- AWS S3
|
||||
- WebRTC (peer-to-peer, experimental)
|
||||
|
||||
## Resources
|
||||
|
||||
- GitHub: https://github.com/vrtmrz/obsidian-livesync
|
||||
- Docs: https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/
|
||||
@@ -1,13 +1,31 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Setup.md
|
||||
permalink: /sh/garden/setup
|
||||
title: Digital Garden Setup
|
||||
created: 2026-01-29T14:04:18.669-07:00
|
||||
modified: 2025-07-02T15:44:31.210-06:00
|
||||
modified: 2026-02-05T12:21:19.644-07:00
|
||||
tags:
|
||||
- self_hosting
|
||||
- digital_gardening
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
This Digital Garden is written using [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]], converted to a static site using [[Quartz]], and hosted using [[Caddy]]. To edit on multiple devices I use [[Selfhosted Live Sync]]
|
||||
This Digital Garden is built with a self-hosted stack:
|
||||
|
||||
| Layer | Tool | Purpose |
|
||||
|-------|------|---------|
|
||||
| Editor | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian]] | Write and organize notes |
|
||||
| Sync | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Selfhosted Live Sync]] | Real-time multi-device sync |
|
||||
| Generator | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Quartz]] | Convert Markdown to static site |
|
||||
| Server | [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Caddy]] | Serve with automatic HTTPS |
|
||||
|
||||
## Why Self-Hosted?
|
||||
|
||||
- **Privacy** — Notes stay on my infrastructure
|
||||
- **Control** — No vendor lock-in
|
||||
- **Learning** — Understanding the full stack
|
||||
- **Cost** — Cheap VPS vs subscription services
|
||||
|
||||
## See Also
|
||||
|
||||
- [[20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/00 - Start Here]] — Full setup guide with ordering
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.12 SERVICES/GoToSocial.md
|
||||
permalink: /sh/services/gotosocial
|
||||
title: GoToSocial
|
||||
created: 2026-01-29T14:04:18.591-07:00
|
||||
modified: 2026-01-21T22:26:52.945-07:00
|
||||
modified: 2026-02-05T12:21:24.501-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.12 SERVICES/Syncthing.md
|
||||
permalink: /sh/services/syncthing
|
||||
title: Syncthing
|
||||
created: 2026-01-29T14:04:18.802-07:00
|
||||
modified: 2026-01-20T13:36:36.219-07:00
|
||||
modified: 2026-02-05T12:21:24.504-07:00
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/00 - Index.md
|
||||
title: 00 - Start Here
|
||||
permalink: /security/evilginx
|
||||
title: Evilginx
|
||||
created: 2026-01-29T14:04:18.808-07:00
|
||||
modified: 2025-06-26T16:07:26.548-06:00
|
||||
modified: 2026-02-05T12:21:58.021-07:00
|
||||
tags:
|
||||
- guide
|
||||
- evilginx
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/Installation of Community Edition.md
|
||||
permalink: /security/evilginx/install
|
||||
title: Installing Evilginx Community Edition
|
||||
created: 2026-01-29T14:04:18.369-07:00
|
||||
modified: 2025-06-26T12:40:30.910-06:00
|
||||
modified: 2026-02-05T12:21:58.024-07:00
|
||||
tags:
|
||||
- phishing
|
||||
- evilginx
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/basic configuration.md
|
||||
permalink: /security/evilginx/basic-config
|
||||
title: Server bootstrapping
|
||||
created: 2026-01-29T14:04:18.492-07:00
|
||||
modified: 2025-06-26T12:37:33.633-06:00
|
||||
modified: 2026-02-05T12:21:58.025-07:00
|
||||
tags:
|
||||
- evilginx
|
||||
- guide
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/configuration.md
|
||||
permalink: /security/evilginx/config
|
||||
title: Evilginx Configuration
|
||||
created: 2026-01-29T14:04:18.516-07:00
|
||||
modified: 2025-06-26T15:12:06.592-06:00
|
||||
modified: 2026-02-05T12:21:58.027-07:00
|
||||
tags:
|
||||
- evilginx
|
||||
- guide
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/phish setup.md
|
||||
permalink: /security/evilginx/phish-setup
|
||||
title: Basic Phish Setup
|
||||
created: 2026-01-29T14:04:18.366-07:00
|
||||
modified: 2025-06-27T14:25:27.036-06:00
|
||||
modified: 2026-02-05T12:21:58.028-07:00
|
||||
tags:
|
||||
- evilginx
|
||||
- guide
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/24 MTG/24.11 LIMITED/Final Fantasy Draft Notes.md
|
||||
permalink: /mtg/limited/ff-draft
|
||||
title: Final Fantasy Draft Notes
|
||||
created: 2026-01-29T14:04:18.666-07:00
|
||||
modified: 2025-07-03T11:29:24.580-06:00
|
||||
modified: 2026-02-05T12:22:25.497-07:00
|
||||
tags:
|
||||
- mtg
|
||||
cssclasses: ""
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/24 MTG/24.12 COMMANDER/Nasty Nasty Necrons.md
|
||||
permalink: /mtg/commander/necrons
|
||||
title: "Deck: Nasty Nasty Necrons"
|
||||
created: 2026-01-29T14:04:18.368-07:00
|
||||
modified: 2025-07-03T14:27:32.564-06:00
|
||||
modified: 2026-02-05T12:22:25.500-07:00
|
||||
tags:
|
||||
- mtg
|
||||
- commander
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /mtg/commander/nids
|
||||
title: 'Deck: Nid that goes "PING"'
|
||||
created: 2026-01-29T14:04:18.574-07:00
|
||||
modified: 2026-02-05T12:22:25.502-07:00
|
||||
tags:
|
||||
- mtg
|
||||
- commander
|
||||
- deck
|
||||
cssclasses: ""
|
||||
---
|
||||
|
||||
## Change Tracking
|
||||
|
||||
| Version | Date | Notes |
|
||||
| ------- | -------- | ----------- |
|
||||
| 0.1 | 7/3/2025 | Design mode |
|
||||
## Notes
|
||||
Inspired by [MTGGoldfish](https://www.mtggoldfish.com/price/Warhammer+40K+Commander+Decks/Ghyrson+Starn+Kelermorph#paper)
|
||||
|
||||
## Deck
|
||||
### Creatures
|
||||
|
||||
| Card Name | Mana Cost | Notes |
|
||||
| --------------------------------------------------------------------------------------- | --------- | --------- |
|
||||
| [Ghyrson Starn, Kelermorph](https://scryfall.com/card/40k/124/ghyrson-starn-kelermorph) | {1}{U}{R} | Commander |
|
||||
| | | |
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
publish: true
|
||||
permalink: /20-29 HOBBYS/24 MTG/24.13 PAUPER/Planning.md
|
||||
title: Under Construction
|
||||
permalink: /mtg/pauper/planning
|
||||
title: Pauper Planning
|
||||
created: 2026-01-29T14:04:18.357-07:00
|
||||
modified: 2026-01-19T15:39:08.577-07:00
|
||||
modified: 2026-02-05T12:22:25.503-07:00
|
||||
tags:
|
||||
- mtg
|
||||
cssclasses: ""
|
||||
|
||||
Reference in New Issue
Block a user