A custom openSUSE Leap 15.6 distribution built with KIWI NG
Professional workstation image with KDE Plasma, NVIDIA GPU support, and declarative configuration
Features β’ Quick Start β’ Documentation β’ Architecture β’ Contributing
Geckoforge is a four-layer reproducible workstation image targeting developers, data scientists, and power users who need:
"Configure once, avoid BS forever" workstation for:
- AI/ML development: GPU containers for PyTorch, TensorFlow, CUDA
- Software engineering: Reproducible dev environments via Nix
- Content creation: OBS with NVENC, Kdenlive, GIMP
- Daily driver: Replacing Windows 10 with rock-solid Linux
Hardware: Powerful workstations/laptops with NVIDIA GPUs
Built on openSUSE Leap 15.6 (enterprise-grade stability) with KDE Plasma desktop and Btrfs + Snapper for system snapshots.
- Mystical Blue (Jux) Theme - Professional dark blue aesthetic
- JuxPlasma desktop theme with modern panels
- JuxDeco window decorations with rounded corners
- NoMansSkyJux Kvantum Qt theme for unified app styling
- System-wide color coordination
- Declarative theming - Managed via Home-Manager (
home/modules/kde-theme.nix) - Night Color included - Blue light reduction configured declaratively
- Night Color configured declaratively - 6500K day, 3500K night via Home-Manager
- Location-aware scheduling - Automatic sunrise/sunset via KDE services
- Customizable - Edit
home/modules/kde-theme.nixto adjust temperatures and timing - Health check utility -
./scripts/test-night-color.shvalidates configuration
- WinApps support - Run Windows applications seamlessly on Linux via Docker
- Automated Windows installation - ISO downloaded from Microsoft servers
- Full application compatibility - Microsoft Office, Adobe Creative Cloud, game engines
- Native-like experience - Windows apps appear in KDE menu, open files via right-click
- Declarative configuration - Manage WinApps via Home-Manager with reproducible settings
- Docker Engine with NVIDIA Container Toolkit
- Automatic GPU detection and configuration
- Verified installation - Tests GPU access in containers
- Production-ready - No manual driver management
- CDI support - Container Device Interface for resource allocation
- Synergy 3 support - Share keyboard/mouse across computers
- Input Leap alternative - FOSS option with better Wayland support
- Automated setup - Firewall, systemd service, configuration
- Client & server modes - Flexible workspace layouts
- Interactive wizard -
./scripts/setup-synergy.sh
- Nix Home-Manager - Reproducible user configuration
- Version-pinned packages - No dependency conflicts
- Shell configuration - Zsh + Oh My Zsh + Powerlevel10k
- Development toolchains - Multi-language support with asdf-vm
- Git-tracked configs - Portable across machines
- rclone integration - Supports Google Drive, S3, OneDrive, Backblaze B2
- Zero-knowledge encryption - Cloud provider cannot read backups
- Automated schedules - Daily critical files, weekly projects
- systemd timers - User-level automation
- Interactive setup -
./scripts/setup-rclone.sh
- Mozilla Thunderbird with anti-phishing configuration
- Clickable links disabled by default (copy/paste URLs manually)
- Remote content blocked - No tracking pixels or external images
- OAuth2 support for Gmail/Outlook, ProtonMail Bridge compatible
- Plain text preference - HTML rendering minimized for security
Languages:
- Python 3.12 (with ruff, black, pytest)
- Node.js (via asdf-vm)
- Go, Nim, Elixir, R, .NET 9
- LaTeX (TeX Live scheme-medium - 2GB stable distribution)
Tools:
- Docker + docker-compose with GPU support
- Git with sensible defaults and delta pager
- VS Code, Cursor, WebStorm (via script setup)
- MongoDB Compass, DBeaver, Postman (Flatpak)
- espanso integration - System-wide text expansion
- Cross-platform shortcuts - Same config works on Linux and Windows WSL
- Declarative configuration - Managed via Home-Manager
- Auto-start on login - systemd user service
- Useful defaults - Date/time, git commits, symbols, paths
- Customizable - Edit
~/.config/espanso/match/user.yml - Interactive search -
Alt+Spaceto browse available shortcuts
See: Text Expander Guide
- Kanata-powered remapping - Swap Command/Control semantics system-wide
- KDE alignment - Cmd+Q, Cmd+M, Cmd+Tab, and Cmd+L mirror macOS behavior
- Editor integrations - VS Code, Firefox, and Kate receive Command shortcuts
- Declarative option - Reapply configuration via
geckoforge.macosKeyboard - Verification tooling -
scripts/test-macos-keyboard.shvalidates setup
- Btrfs filesystem - Copy-on-write, compression, snapshots
- Snapper integration - Automatic pre/post-update snapshots
- GRUB snapshot boot - Rollback from boot menu
- Home-Manager generations - Rollback user environment
- LUKS2 encryption - Full-disk encryption with secure defaults
- Lefthook pre-commit - Fast syntax checks (<30s)
- Shell script validation (shellcheck + bash -n)
- Nix expression evaluation
- Anti-pattern detection (Podman usage, wrong TeX scheme)
- Lefthook pre-push - Thorough validation
- Layer boundary enforcement
- Package policy compliance
- Documentation synchronization
- openSUSE Leap 15.6 (or compatible) for building
- KIWI NG installed (
zypper install kiwi-ng) - NVIDIA GPU (optional - detects and configures automatically)
- 8+ GB RAM and 50+ GB disk for ISO build
# Clone repository
git clone https://github.com/jaelliot/geckoforge.git
cd geckoforge
# Build ISO
./tools/kiwi-build.sh profile
# ISO created in: out/geckoforge-leap156-kde.x86_64-*.isoBuild time: ~10-15 minutes (depending on network/CPU)
-
Create bootable USB:
sudo dd if=out/geckoforge-*.iso of=/dev/sdX bs=4M status=progress sync -
Boot from USB (disable Secure Boot temporarily)
-
Install - Follow installer prompts
- Enable disk encryption (recommended)
- Set strong user password
-
First boot - System automatically:
- Installs NVIDIA drivers (if GPU detected)
- Installs Nix package manager with flakes
- Prompts for reboot
-
User setup - Run wizard:
cd ~/git git clone https://github.com/jaelliot/geckoforge.git cd geckoforge ./scripts/firstrun-user.sh
-
Optional macOS-style shortcuts - Align modifiers with macOS:
./scripts/setup-macos-keyboard.sh- Security hardening (recommended) - Apply layered defenses:
# Security hardening
./scripts/setup-firewall.sh
./scripts/setup-secure-dns.sh
./scripts/setup-auto-updates.shTotal time: ~45 minutes (build + install + setup)
Next steps: See Getting Started Guide
- Getting Started - Installation and initial setup
- Docker + NVIDIA - GPU container workflows
- Themes - Theme activation and customization
- Night Color - Blue light filtering defaults, customization, and verification
- WinApps - Windows application integration (Office, Adobe, game engines)
- Keyboard Configuration - macOS-style shortcut setup
- Security Configuration - Layered hardening tasks
- Synergy Setup - Multi-machine KVM configuration
- Backup & Recovery - Cloud backups and system restore
- Testing Plan - Validation procedures
- Architecture Overview - Four-layer design
- Directory Structure - Repository layout
- Btrfs Layout - Filesystem and snapshots
- Daily Summaries - Development log
- Contributing - How to contribute
- Cursor Rules - AI assistant guidelines
Script Consolidation - Simplified setup with fewer scripts:
setup-firewall.sh- Merged firewall + security hardening (washarden.sh+setup-secure-firewall.sh)- Flatpak installation - Now in Home-Manager activation (was
install-flatpaks.sh) - Theme configuration - Declarative via
home/modules/kde-theme.nix(wassetup-jux-theme.sh) - Night Color - Declarative via
home/modules/kde-theme.nix(wasconfigure-night-color.sh)
Benefits:
- 5 fewer scripts to maintain (-23%)
- Reproducible theme + Night Color config
- Flatpaks version-controlled in Git
- Single source of truth for security hardening
Geckoforge uses a four-layer architecture for reproducibility and maintainability:
βββββββββββββββββββββββββββββββββββββββ
β Layer 4: Home-Manager (Nix) β ~/.config, user packages
β User environment, dev toolchains β Declarative, version-pinned
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β Layer 3: User Setup (scripts/) β Docker, NVIDIA Toolkit, Flatpaks
β Post-install automation β Interactive, opt-in features
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β Layer 2: First-Boot (systemd) β NVIDIA driver, Nix installer
β One-shot system configuration β Automated, root-level
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β Layer 1: ISO (KIWI profile) β Base OS, repositories, themes
β Immutable system image β Reproducible builds
βββββββββββββββββββββββββββββββββββββββ
geckoforge/
βββ profile/ # KIWI image definition (was profiles/leap-15.6/kde-nvidia/)
β βββ config.kiwi.xml
β βββ root/ # File overlays
β βββ scripts/ # First-boot automation
βββ home/ # Home-Manager (Nix) configuration
β βββ flake.nix
β βββ home.nix
β βββ modules/ # Modular configs (theme, shell, dev tools)
βββ scripts/ # User setup scripts (Layer 3)
βββ examples/ # Working code examples (was scripts/examples/)
βββ tools/ # Build and validation tools
βββ themes/ # KDE theme source files
βββ docs/ # Flattened documentation
βββ audits/ # Quality audits
βββ summaries/ # Development log (was daily-summaries/YYYY-MM/)
βββββββββββββββββββββββββββββββββββββββ
β Layer 3: Flatpak (Sandboxed GUI) β
β OBS, Signal, DBeaver, Postman, etc. β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β Layer 2: Nix (Reproducible Apps) β
β Dev tools, CLI utils, pinned with β
β flake.lock β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β Layer 1: zypper (Base OS) β
β Kernel, NVIDIA driver, systemd, β
β KDE Plasma β
βββββββββββββββββββββββββββββββββββββββ
Key Principles:
- Layer boundaries - No cross-layer violations
- Reproducibility - Deterministic builds, version-pinned
- Idempotency - Scripts can run multiple times safely
- Documentation parity - Code and docs stay in sync
Why this works:
- Leap 15.6: Enterprise stability (18-month releases)
- Nix: Reproducible environments, atomic upgrades
- Flatpak: Sandboxed apps, auto-updates
- Btrfs + Snapper: Instant OS rollbacks
- Secure Boot + LUKS2: Security by default
See: Architecture Documentation
# Install hooks
lefthook install
# Run pre-commit checks (fast)
lefthook run pre-commit
# Run pre-push checks (thorough)
lefthook run pre-push# Build and validate ISO
./tools/kiwi-build.sh profile
# Test in VM
./tools/test-iso.sh out/geckoforge-*.iso| Phase | Status |
|---|---|
| ISO builds | β |
| First-boot scripts | β |
| NVIDIA driver | β |
| Nix + Home-Manager | β |
| GPU containers | β |
| Mystical Blue theme | β |
| Synergy KVM setup | β |
| Quality gates | β |
| Cloud backups | β |
| Documentation | β |
| VM testing | π In progress |
| Laptop deployment | βΈοΈ Pending |
See: Testing Plan for comprehensive validation procedures
# Build ISO
./tools/kiwi-build.sh profile
# Test in VM
./tools/test-iso.sh
# Clean build artifacts
rm -rf out/ work/
# Run quality gates
lefthook run pre-commitgeckoforge/
βββ profile/ # KIWI profile (Layer 1)
βββ home/ # Home-Manager config (Layer 4)
βββ scripts/ # User setup scripts (Layer 3)
βββ docs/ # Documentation
βββ themes/ # Visual themes
βββ tools/ # Build and test tools
Contributions welcome! Please follow these guidelines:
- Read documentation - Especially Architecture
- Check
.cursor/rules/- Repository conventions and policies - Review existing issues - Avoid duplicate work
- Fork repository
- Create feature branch -
git checkout -b feat/amazing-feature - Make changes - Follow style canon in
.cursor/rules/00-style-canon.mdc - Test locally - Run quality gates:
lefthook run pre-commit - Update documentation - Keep docs in sync with code
- Commit - Use conventional commits:
feat(scope): description - Submit PR - Clear description, link related issues
- Theme variants - Additional color schemes
- Language support - More development toolchains
- Documentation - Improve guides, add examples
- Testing - Expand test coverage
- Bug fixes - See Issues
Current Focus (v0.2.0):
- Mystical Blue theme integration
- Synergy KVM support
- Quality gates (Lefthook)
- Encrypted cloud backups
- Docker + NVIDIA automation
- ISO build automation (CI/CD)
- Additional theme options
- Windows migration tooling
Future Enhancements:
- Multiple KDE profile variants (minimal, developer, data science)
- Alternative desktop environments (GNOME, XFCE)
- Cloud-init support for automated deployments
- Integration testing framework
- Pre-built ISO releases
See: Daily Summaries for development progress
- Creator: Jay Elliot (jaelliot)
- Philosophy: "Configure once, avoid BS forever"
- Author: Juxtopposed (GitHub)
- Source: Mystical-Blue-Theme
- Components:
- JuxDeco window decorations
- JuxPlasma desktop theme
- NoMansSkyJux Kvantum theme (based on No Man's Sky theme by Patrik Wyde)
- openSUSE Leap 15.6 - Base distribution
- KIWI NG - Image builder
- KDE Plasma - Desktop environment
- Nix / Home-Manager - Package management
- Docker - Container runtime
- Btrfs - Filesystem
- Snapper - Snapshot management
- Lefthook - Quality gates
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Third-party components:
- Mystical Blue theme: See theme-specific license files
- Other dependencies: Respective licenses apply
- Repository: https://github.com/jaelliot/geckoforge
- Documentation: docs/
- Issues: https://github.com/jaelliot/geckoforge/issues
- Discussions: https://github.com/jaelliot/geckoforge/discussions
Built with β€οΈ for the openSUSE community
Gecko: Adaptable, resilient, evolved
Ready to replace Windows? β Get Started