README: full desktop docs — Hyprland, keybinds, workspaces, zellij

This commit is contained in:
Scott Scoble 2026-05-12 20:27:27 -07:00
parent 9d3a4c6ee0
commit 0835b3eaa6

115
README.md
View file

@ -4,6 +4,8 @@ Nix flake that reproduces MacBook software capabilities on an x86\_64 NixOS lapt
## What it installs
### Core tools
| Tool | Purpose | Source |
|------|---------|--------|
| **pi** | Coding agent (TUI) | `sscoble/pi-mono` (Forgejo mirror of `badlogic/pi-mono`) |
@ -12,35 +14,105 @@ Nix flake that reproduces MacBook software capabilities on an x86\_64 NixOS lapt
| **nodejs** | JavaScript runtime | nixpkgs |
| **bun** | Fast JS runtime + bundler | nixpkgs |
| **zsh** | Shell (+ oh-my-zsh, autosuggestions, syntax highlighting) | nixpkgs |
| **neovim** | Editor (minimal Lua config) | nixpkgs |
| **python3 + uv** | Python tooling | nixpkgs |
| **go** | Go toolchain | nixpkgs |
| **docker** | Containers | nixpkgs |
| **tailscale** | Mesh VPN | nixpkgs |
| **ripgrep, fd, jq, bat, eza, delta** | Modern CLI tools | nixpkgs |
| **tmux** | Terminal multiplexer | nixpkgs |
| **nerd fonts** | JetBrains Mono, Fira Code | nixpkgs |
### Desktop (Hyprland)
| Tool | Purpose |
|------|--------|
| **Hyprland** | Tiling Wayland compositor (gaps, blur, animations) |
| **waybar** | Status bar with workspaces, clock, CPU, battery, network, audio |
| **foot** | Minimal fast Wayland terminal emulator |
| **zellij** | Terminal multiplexer (cmux equivalent — tabs, panes, floating) |
| **rofi-wayland** | App launcher (SUPER + D) |
| **dunst** | Notification daemon |
| **swww** | Animated wallpaper |
| **hyprlock** | Lock screen (SUPER + L, auto-lock 5min idle) |
| **hypridle** | Idle daemon (lock + display sleep) |
| **thunar** | File manager (SUPER + N) |
| **grim + slurp + swappy** | Screenshots (SUPER + S = area, SUPER + Shift + S = full) |
| **cliphist** | Clipboard history (SUPER + V → rofi picker) |
| **brightnessctl + pavucontrol** | Brightness and audio control |
### Workspaces
| # | Name | Icon | Purpose |
|---|------|------|--------|
| 1 | shell | 󰆍 | Terminal |
| 2 | code | 󰨞 | Development (editors, git) |
| 3 | web | 󰖟 | Browser |
| 4 | chat | 󰭻 | Communication (Discord, etc.) |
| 5 | vault | 󰠮 | Knowledge / vault |
| 6 | media | 󰎆 | Media player |
| 7-9 | 7-9 | — | Spare |
| 10 | sys | 󰒓 | System settings |
## Keybindings
| Key | Action |
|-----|--------|
| `SUPER + Return` | Open terminal (foot) |
| `SUPER + Shift + Return` | Open terminal + multiplexer (foot zellij) |
| `SUPER + D` / `SUPER + Space` | App launcher (rofi) |
| `SUPER + B` | Firefox |
| `SUPER + N` | File manager (thunar) |
| `SUPER + Q` | Close window |
| `SUPER + F` | Fullscreen |
| `SUPER + G` | Toggle floating window |
| `SUPER + L` | Lock screen |
| `SUPER + V` | Clipboard history |
| `SUPER + 1-0` | Switch to workspace 1-10 |
| `SUPER + Shift + 1-0` | Move window to workspace 1-10 |
| `SUPER + H/J/K/L` | Move focus (left/down/up/right) |
| `SUPER + Shift + H/J/K/L` | Move window |
| `SUPER + Ctrl + H/J/K/L` | Resize window |
| `SUPER + S` | Screenshot area (→ swappy annotate) |
| `SUPER + Shift + S` | Screenshot full screen |
| `SUPER + Shift + Q` | Exit Hyprland |
| `SUPER + Shift + R` | Reload Hyprland config |
### Zellij (terminal multiplexer)
| Key | Action |
|-----|--------|
| `Ctrl + G` | Enter command mode |
| `Ctrl + P` | Split pane down |
| `Ctrl + N` | Split pane right |
| `Ctrl + T` | New tab |
| `Ctrl + H/J/K/L` | Move focus |
| `Ctrl + X` | Close pane |
| `Ctrl + F` | Toggle floating pane |
| `Ctrl + Z` | Zoom pane fullscreen |
| `Ctrl + Q` | Close tab |
| `Ctrl + D` | Detach session |
## First-time setup (new laptop)
```bash
# 1. Install NixOS (minimal ISO)
# 2. Clone this repo
git clone https://os.scoble.me/forgejo/sscoble/laptop-config.git ~/laptop-config
# 1. Install NixOS (minimal ISO) — set up network during install
# 3. First build (this will fail — copy the npmDepsHash from error output)
nix build ~/laptop-config#pi-coding-agent
# 2. Rebuild directly from Forgejo (no local clone needed)
sudo nixos-rebuild switch --flake git+https://os.scoble.me/forgejo/sscoble/laptop-config.git#laptop
# 4. Edit flake.nix: set npmDepsHash to the value from step 3
# 3. First build of pi will fail — copy npmDepsHash from error, paste into flake.nix
# Then re-clone/push the fix, or override locally:
# nix build git+https://os.scoble.me/forgejo/sscoble/laptop-config.git#pi-coding-agent
# 5. Rebuild system
sudo nixos-rebuild switch --flake ~/laptop-config#laptop
# 4. Rebuild again with correct hash
sudo nixos-rebuild switch --flake git+https://os.scoble.me/forgejo/sscoble/laptop-config.git#laptop
# 6. Restore personal configs
# Copy from backup:
# ~/.pi/agent/SYSTEM.md
# ~/.pi/agent/models.json
# ~/.pi/agent/mcp.json
# ~/.pi/agent/settings.json
# ~/.ssh/id_ed25519
# 5. Restore personal configs from backup:
# ~/.pi/agent/SYSTEM.md
# ~/.pi/agent/models.json
# ~/.pi/agent/mcp.json
# ~/.pi/agent/settings.json
# ~/.ssh/id_ed25519
# ~/wallpapers/default.jpg
```
## Updating pi
@ -56,11 +128,14 @@ ssh n97-mini 'sudo -u forgejo forgejo admin repo sync --config /var/lib/forgejo/
```
laptop-config/
├── flake.nix # Main entry: overlay, nixosConfig, devShell
├── flake.nix # Overlay, nixosConfig "laptop", devShell
├── modules/
│ └── laptop.nix # NixOS system module (packages, shell, fonts, SSH)
│ ├── laptop.nix # System packages, zsh, fonts, SSH, nix settings
│ └── hyprland.nix # Hyprland WM, greetd, PipeWire, portals, bluetooth
├── home/
│ └── sscoble.nix # home-manager user config (git, tools, pi dirs)
│ └── sscoble.nix # home-manager: all desktop config, git, neovim, tools
├── .forgejo/workflows/
│ └── check-pi-version.yml # Daily: opens issue when pi-mono has new tag
└── README.md
```