Date: 2025-12-15
Changes: Script consolidation, Nix migration, Home-Manager enhancements
Geckoforge v0.4.0 consolidates user setup scripts and migrates more functionality to declarative Nix configuration. This improves maintainability, reproducibility, and reduces manual steps.
Key Changes:
- ✅ 5 scripts removed (-23%)
- ✅ Firewall configuration consolidated
- ✅ Flatpak installation moved to Home-Manager
- ✅ Theme + Night Color fully declarative
- ✅ Improved orchestration in firstrun-user.sh
Before (2 scripts):
./scripts/harden.sh # Basic firewall + fail2ban
./scripts/setup-secure-firewall.sh # Advanced firewall zonesAfter (1 script):
./scripts/setup-firewall.sh # Comprehensive firewall + securityFeatures:
- Combines basic hardening + advanced zones
- Configures firewalld with custom geckoforge-trusted zone
- Optional fail2ban installation (interactive)
- Automatic security updates configuration
- Single entry point for all firewall config
Migration: Replace calls to old scripts with ./scripts/setup-firewall.sh
Before:
./scripts/install-flatpaks.sh # Bash script installs FlatpaksAfter:
# home/home.nix (automatic on Home-Manager activation)
home.activation.installFlatpaks = config.lib.dag.entryAfter ["writeBoundary"] ''
flatpak install -y --user --noninteractive flathub \
com.getpostman.Postman \
io.dbeaver.DBeaverCommunity \
com.google.AndroidStudio \
com.obsproject.Studio \
org.signal.Signal || true
'';Benefits:
- Declarative (version controlled in Git)
- Reproducible across machines
- Runs automatically on
home-manager switch - No manual script execution needed
Migration:
- Remove calls to
install-flatpaks.shfrom scripts - Flatpaks auto-install when activating Home-Manager
- Add/remove Flatpaks by editing
home/home.nix
Before:
./scripts/setup-jux-theme.sh # Interactive theme activationAfter:
# home/modules/kde-theme.nix
programs.kde.theme = {
enable = true;
colorScheme = "JuxTheme";
plasmaTheme = "JuxPlasma";
windowDecoration = "__aurorae__svg__JuxDeco";
kvantumTheme = "NoMansSkyJux";
};Benefits:
- Declarative theme configuration
- Reproducible across machines
- No manual kwriteconfig5 commands
- Automatic activation on Home-Manager switch
Migration:
- Enable in
home/home.nixor your config - Theme applies automatically
- No manual script needed
Before:
./scripts/configure-night-color.sh # Interactive wizardAfter:
# home/modules/kde-theme.nix (integrated with theme config)
programs.kde.theme = {
enable = true;
nightColor = {
enable = true;
mode = "Automatic"; # or "Location", "Times", "Constant"
dayTemperature = 6500; # K
nightTemperature = 3500; # K
transitionTime = 1800; # seconds (30 minutes)
};
};Benefits:
- Declarative configuration
- No interactive prompts
- Version controlled settings
- Reproducible across machines
Migration:
- Configure in
home/modules/kde-theme.nix - Applies automatically with theme
- Test with
./scripts/test-night-color.sh
# home/modules/kde-theme.nix now supports:
programs.kde.theme = {
enable = true;
# Theme components
colorScheme = "JuxTheme";
plasmaTheme = "JuxPlasma";
windowDecoration = "__aurorae__svg__JuxDeco";
kvantumTheme = "NoMansSkyJux";
# Night Color (NEW!)
nightColor = {
enable = true;
mode = "Automatic"; # Sunrise/sunset detection
dayTemperature = 6500;
nightTemperature = 3500;
transitionTime = 1800; # 30 min transition
};
};# home/home.nix
home.activation.installFlatpaks = config.lib.dag.entryAfter ["writeBoundary"] ''
if command -v flatpak >/dev/null 2>&1; then
echo "Installing Flatpaks..."
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo || true
# Add your Flatpaks here
flatpak install -y --user --noninteractive flathub com.getpostman.Postman || true
# ... more apps
fi
'';No action required! The new structure is used automatically.
- Build ISO:
./tools/kiwi-build.sh profile - Install geckoforge
- Run:
./scripts/firstrun-user.sh - Activate Home-Manager (includes theme, Night Color, Flatpaks)
If you already ran old scripts:
-
Update your scripts directory:
cd ~/git/geckoforge git pull origin main
-
Verify new consolidated script:
./scripts/setup-firewall.sh --help
-
Enable theme + Night Color in Home-Manager:
# Edit ~/git/home/home.nix or your config nano ~/git/home/home.nix # Add or ensure enabled: programs.kde.theme = { enable = true; nightColor.enable = true; }; # Apply home-manager switch --flake ~/git/home
-
Flatpaks already installed?
- They continue working
- Future updates managed via Home-Manager
- Can remove old
install-flatpaks.shcalls from custom scripts
Scripts removed (functionality preserved elsewhere):
scripts/harden.sh → Merged into setup-firewall.sh
scripts/setup-secure-firewall.sh → Merged into setup-firewall.sh
scripts/install-flatpaks.sh → Moved to home/home.nix activation
scripts/setup-jux-theme.sh → Declarative in home/modules/kde-theme.nix
scripts/configure-night-color.sh → Declarative in home/modules/kde-theme.nixNo functionality lost - everything is just organized better!
setup-docker.sh- Docker installationdocker-nvidia-install.sh- NVIDIA Container Toolkitdocker-nvidia-verify.sh- GPU container testingsetup-firewall.sh- NEW - Consolidated firewall + securitysetup-auto-updates.sh- Automatic security patchessetup-secure-dns.sh- DNS-over-TLS (Quad9)
setup-chrome.sh- Google Chrome (alternative to Chromium)setup-rclone.sh- Cloud backup configurationsetup-synergy.sh- Multi-machine KVMsetup-winapps.sh- Windows application integrationsetup-protonmail-bridge.sh- ProtonMail Bridge + Thunderbirdsetup-macos-keyboard.sh- macOS-style shortcutssetup-shell.sh- Zsh shell setup
test-macos-keyboard.sh- Keyboard config verificationtest-night-color.sh- Night Color verificationcheck-backups.sh- Backup health checksmake-executable.sh- Development utility
firstrun-user.sh- UPDATED - Main setup wizard
- ✅ Fewer scripts to maintain
- ✅ Clear separation of concerns
- ✅ Single source of truth for each feature
- ✅ Easier to understand codebase
- ✅ Fewer manual steps
- ✅ Automatic Flatpak installation
- ✅ Declarative theme configuration
- ✅ Reproducible setup across machines
- ✅ Theme settings version-controlled
- ✅ Flatpak list in Git
- ✅ Night Color config tracked
- ✅ Easy rollback with
home-manager generations
- ✅ Less bash script duplication
- ✅ Nix handles dependencies
- ✅ Type-safe configuration (Nix)
- ✅ Easier testing and validation
# Force KDE to reload configuration
qdbus org.kde.KWin /KWin reconfigure
kquitapp5 plasmashell && kstart5 plasmashell
# Or log out and back in# Verify configuration
./scripts/test-night-color.sh
# Check kwinrc
cat ~/.config/kwinrc | grep -A 10 "\[NightColor\]"
# Reconfigure KWin
qdbus org.kde.KWin.ColorCorrect /ColorCorrect reconfigure# Check Home-Manager activation logs
home-manager switch --flake ~/git/home
# Manually trigger Flatpak installation
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y --user flathub com.getpostman.Postman# Check current zones
sudo firewall-cmd --list-all-zones
# Temporarily allow service
sudo firewall-cmd --zone=geckoforge-trusted --add-service=<service>
# Make permanent
sudo firewall-cmd --runtime-to-permanentA: No, they've been removed. Use the new consolidated versions or declarative Nix config.
A: No. If you already ran old scripts, everything continues working. The new structure just provides a better path forward.
A: Recommended but not required. The changes are in Layer 3 (user scripts) and Layer 4 (Home-Manager), so you can update those without rebuilding.
A: Yes! Edit home/modules/kde-theme.nix and run home-manager switch.
A: Edit home/home.nix, add to the installFlatpaks activation script, run home-manager switch.
A: System-level scripts (Docker, firewall, etc.) remain as bash. User configuration (theme, Flatpaks) moved to Nix for better reproducibility.
- ✅ Update your local copy:
git pull - ✅ Review changes:
git log --oneline - ✅ Test new consolidated script:
./scripts/setup-firewall.sh - ✅ Enable theme + Night Color in Home-Manager
- ✅ Run
home-manager switchto apply - ✅ Build new ISO (optional):
./tools/kiwi-build.sh profile
- v0.4.0 (2025-12-15) - Script consolidation, Nix migration
- v0.3.0 - Docker-only, TeX scheme-medium, multi-language dev
- v0.2.0 - KDE + GPU containers + docs
- v0.1.0 - Initial GNOME + NVIDIA profile
Questions? Open an issue or check docs/troubleshooting/