VoidPad: Journaling machine

1. Overview

What do you do with a 13-year-old laptop that’s on its last legs? Turn it into a dedicated writing machine, of course! This project documents the journey of reviving ancient hardware and transforming it into a distraction-free journaling powerhouse. Check out the final result in Figure 1 and Figure 2.

XFCE Desktop Setup
Figure 1: The final setup - retro vibes, zero distractions
XFCE Desktop alternative Setup
Figure 2: Alternative desktop view

2. Goals

3. The Challenge

The laptop in question was showing signs of failure:

4. The Solution

4.1 Hardware Revival

A bit of TLC goes a long way! Upgraded RAM (6GB → 8GB), swapped the HDD for an SSD, replaced thermal paste, cleaned out all the dust, and made it stationary (plugged in all the time to avoid battery issues). The hardware can now handle tasks from basic writing to development and package compilation like a champ.

System resources during Rust compilation
Figure 3: Rust compilation? No problem for this old beast

4.2 Choosing the Operating System

After comparing Arch (too unstable for offline use), Debian (too old packages), and Debian forks (same issues), Void Linux won the race. It’s lightweight, stable enough, and doesn’t need constant updates - perfect for an offline writing machine.

Why Void?

Void Linux Fastfetch System Information
Figure 4: Void Linux up and running

4.3 Package Management: XBPS + Nix

XBPS handles system packages beautifully, but I also added Nix for experimental packages and development tools. They coexist peacefully - xbps for the foundation, Nix for the extras. No conflicts, all the packages.

5. Desktop Environment: XFCE

XFCE is lightweight, familiar, and perfect for old hardware. I went full retro with the Chicago95 theme - Windows 95 vibes for maximum nostalgia.

XFCE Desktop with Chicago Theme
Figure 5: Retro desktop perfection

6. Writing Environment

6.1 Choosing the Writing Application

Tested five options: Obsidian, LazyVim, Emacs, neovim-obsidian, and Ekphos. Each had strengths, but Obsidian won because:

6.1.1 Security with gocryptfs

Since this is a journaling machine handling personal thoughts and sensitive information, encryption is non-negotiable. gocryptfs provides transparent file-level encryption that works seamlessly with Obsidian.

What is gocryptfs?

Why gocryptfs over alternatives?

When to use it:

How I use it with Obsidian:

  1. Setup (one-time):

    # Install gocryptfs
    sudo xbps-install -S gocryptfs
    
    # Create encrypted directory
    mkdir ~/encrypted-vault
    gocryptfs -init ~/encrypted-vault
  2. Daily workflow:

    # Mount the encrypted vault
    mkdir ~/journal
    gocryptfs ~/encrypted-vault ~/journal
    
    # Open Obsidian pointing to ~/journal
    # Write, edit, organize - everything is automatically encrypted
    
    # Unmount when done (files become inaccessible)
    fusermount -u ~/journal

The beauty is in the transparency - I write naturally in Obsidian while everything gets encrypted behind the scenes. Perfect for a privacy-focused journaling setup.

Why not Full Disk Encryption (FDE)?

While FDE might seem like the obvious choice for a privacy-focused machine, I opted for file-level encryption instead for several practical reasons:

File-level encryption with gocryptfs gives me exactly what I need: transparent protection for my writing while keeping the system lightweight and maintainable.

Obsidian with retro theme
Figure 6: Obsidian configured for bilingual writing
LazyVim configuration
Figure 7: LazyVim - lightweight but powerful
Emacs with org mode
Figure 8: Emacs - the customization rabbit hole

6.2 Local AI Integration

Added a local 3B parameter language model for offline writing assistance using Ollama. Here’s how to set it up with Obsidian:

  1. Install Ollama:

    # Download and install Ollama
    curl -fsSL https://ollama.ai/install.sh | sh
    
    # Pull a lightweight model (3B parameters)
    ollama pull phi3:mini
  2. Install Obsidian AI plugin: Open Obsidian Settings → Community Plugins, search for “Text Generator” or “Copilot” plugin, then install and enable the plugin.

  3. Configure the plugin: Set API endpoint to http://localhost:11434, select model phi3:mini, and configure hotkeys for quick AI assistance.

  4. Usage: Select text and press your hotkey for AI suggestions, use prompts like “improve this paragraph” or “translate to Spanish” - everything runs locally with no internet required after setup.

The model runs efficiently on CPU, uses about 2GB RAM, and provides instant writing assistance without any privacy concerns. Perfect for brainstorming, editing, and translation tasks while keeping everything offline.

Local AI running on Voidpad
Figure 9: AI assistance without the privacy trade-offs

A peek into the Voidpad’s daily life:

Retro gaming
Figure 10: Taking breaks with classic games
FreeCAD running on old hardware
Figure 11: FreeCAD runs smoothly - 13 years old and still kicking!
Retro screensavers
Figure 12: Can’t resist those retro screensavers
System monitoring
Figure 13: Keeping an eye on system health
XBPS package manager
Figure 14: xbps - fast, smooth, and a joy to use. Sorry pacman!
Retro browser
Figure 15: When the Voidpad goes online, style matters