Skip to content

KIWI NG + (optional) Open Build Service templates for reproducible, NVIDIA-ready openSUSE Leap desktop images. Btrfs+Snapper, secure defaults, declarative configs, and post-install playbooks.

License

Notifications You must be signed in to change notification settings

jaelliot/geckoforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🦎 Geckoforge

A custom openSUSE Leap 15.6 distribution built with KIWI NG

Professional workstation image with KDE Plasma, NVIDIA GPU support, and declarative configuration

License: Apache 2.0 openSUSE Leap 15.6 KDE Plasma Built with KIWI

Features β€’ Quick Start β€’ Documentation β€’ Architecture β€’ Contributing


🎯 Overview

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.


✨ Features

🎨 Visual Polish

  • 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 Comfort

  • 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.nix to adjust temperatures and timing
  • Health check utility - ./scripts/test-night-color.sh validates configuration

πŸͺŸ Windows Application Integration

  • 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

πŸš€ GPU-Ready Docker

  • 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

πŸ–₯️ Multi-Machine KVM

  • 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

🏠 Declarative Home Environment

  • 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

πŸ’Ύ Encrypted Cloud Backups

  • 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

πŸ“§ Hardened Email Client

  • 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

πŸ› οΈ Developer Toolchains

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)

⌨️ Text Expansion (espanso)

  • 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+Space to browse available shortcuts

See: Text Expander Guide

⌨️ macOS-style Keyboard Experience

  • 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.sh validates setup

πŸ”’ System Resilience

  • 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

⚑ Quality Gates

  • 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

πŸš€ Quick Start

Prerequisites

  • 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

Build the ISO

# 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-*.iso

Build time: ~10-15 minutes (depending on network/CPU)

Install to Hardware

  1. Create bootable USB:

    sudo dd if=out/geckoforge-*.iso of=/dev/sdX bs=4M status=progress
    sync
  2. Boot from USB (disable Secure Boot temporarily)

  3. Install - Follow installer prompts

    • Enable disk encryption (recommended)
    • Set strong user password
  4. First boot - System automatically:

    • Installs NVIDIA drivers (if GPU detected)
    • Installs Nix package manager with flakes
    • Prompts for reboot
  5. User setup - Run wizard:

    cd ~/git
    git clone https://github.com/jaelliot/geckoforge.git
    cd geckoforge
    ./scripts/firstrun-user.sh
  6. Optional macOS-style shortcuts - Align modifiers with macOS:

./scripts/setup-macos-keyboard.sh
  1. Security hardening (recommended) - Apply layered defenses:
# Security hardening
./scripts/setup-firewall.sh
./scripts/setup-secure-dns.sh
./scripts/setup-auto-updates.sh

Total time: ~45 minutes (build + install + setup)

Next steps: See Getting Started Guide


πŸ“– Documentation

User Guides

Architecture

Development

Migration & Consolidation (v0.4.0)

Script Consolidation - Simplified setup with fewer scripts:

  • setup-firewall.sh - Merged firewall + security hardening (was harden.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 (was setup-jux-theme.sh)
  • Night Color - Declarative via home/modules/kde-theme.nix (was configure-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

πŸ—οΈ Architecture

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
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Repository Structure (Flattened v0.4.0)

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/)

Three-Layer Package Management

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 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


πŸ§ͺ Testing

Quality Gates (Lefthook)

# Install hooks
lefthook install

# Run pre-commit checks (fast)
lefthook run pre-commit

# Run pre-push checks (thorough)
lefthook run pre-push

ISO Build Test

# Build and validate ISO
./tools/kiwi-build.sh profile

# Test in VM
./tools/test-iso.sh out/geckoforge-*.iso

Current Status

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


πŸ› οΈ Development

Build Commands

# 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-commit

Project Structure

geckoforge/
β”œβ”€β”€ 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

🀝 Contributing

Contributions welcome! Please follow these guidelines:

Before Contributing

  1. Read documentation - Especially Architecture
  2. Check .cursor/rules/ - Repository conventions and policies
  3. Review existing issues - Avoid duplicate work

Contribution Workflow

  1. Fork repository
  2. Create feature branch - git checkout -b feat/amazing-feature
  3. Make changes - Follow style canon in .cursor/rules/00-style-canon.mdc
  4. Test locally - Run quality gates: lefthook run pre-commit
  5. Update documentation - Keep docs in sync with code
  6. Commit - Use conventional commits: feat(scope): description
  7. Submit PR - Clear description, link related issues

Areas for Contribution

  • Theme variants - Additional color schemes
  • Language support - More development toolchains
  • Documentation - Improve guides, add examples
  • Testing - Expand test coverage
  • Bug fixes - See Issues

πŸ“‹ Roadmap

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


πŸ™ Credits

Geckoforge

  • Creator: Jay Elliot (jaelliot)
  • Philosophy: "Configure once, avoid BS forever"

Mystical Blue Theme

  • 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)

Built With


πŸ“„ License

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

πŸ”— Links


Built with ❀️ for the openSUSE community

Gecko: Adaptable, resilient, evolved

Ready to replace Windows? β†’ Get Started

About

KIWI NG + (optional) Open Build Service templates for reproducible, NVIDIA-ready openSUSE Leap desktop images. Btrfs+Snapper, secure defaults, declarative configs, and post-install playbooks.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published