Skip to content

Automated installer#2

Open
princejoogie wants to merge 39 commits intomainfrom
automated-installer
Open

Automated installer#2
princejoogie wants to merge 39 commits intomainfrom
automated-installer

Conversation

@princejoogie
Copy link
Owner

No description provided.

Replace stow-based setup with omarchy-style automated installer.

- Two-layer config system: config/ (user-editable, copied to ~/.config/)
  and default/ (sourced at runtime, updated via git pull)
- Replace hyprpaper with swaybg, fnm with mise, remove eww
- Full install pipeline: preflight, packaging, config, services, post-install
- Package lists in install/ (kojarchy-base/optional/cargo.packages)
- lib/ helpers: presentation (gum TUI), logging, error handling
- Fix all hardcoded stow paths in waybar, wofi, and custom scripts
- Move .luarc.json and .stylua.toml into config/nvim/
- Remove arch-post.sh, config.rayconfig, old sddm helpers
- Add boot.sh entry point, install.sh orchestrator, logo.txt
Clones/updates omarchy, diffs against baseline commit ffafe172,
and runs opencode to analyze what needs syncing to kojarchy.
- run_logged: only source packages.sh in subshell, not full helpers
  (avoids re-registering traps and breaking fd redirects)
- guard.sh: use /dev/tty for gum confirm, add fallback ping to 8.8.8.8
- begin.sh: cache sudo before starting install log
- optional.sh: split into prompt (main shell) + install (run_logged)
  so gum can access tty for user interaction
- Move NVIDIA packages to kojarchy-nvidia.packages (prompted via lspci detection)
- Move virtualization packages to optional
- Remove packages already provided by archinstall (base, linux, firmware, etc.)
- Remove duplicate yay-bin from base (already installed by aur-helper.sh)
- Add nvidia.sh prompt with lspci detection
Phase 1: opencode analyzes diff and writes analysis to file
Phase 2: user reviews analysis, can edit before proceeding
Phase 3: opencode applies only SYNC items from the analysis
Phase 4: prompt to update baseline commit hash
Instead of multi-phase file-based workflow, uses one opencode run that
walks through each change item-by-item, asking the user to confirm or
skip before applying.
- mac/deps.sh: install shared tooling via Homebrew (nvim, tmux, starship, etc.)
- mac/setup.sh: copy shared configs (nvim, opencode, kitty, shell, tmux, yazi)
- mac/update.sh: interactive updater to re-deploy configs after git pull
Add system hardening, quality-of-life improvements, and utility scripts
adapted from omarchy to kojarchy branding and tooling preferences:

- Fast systemd shutdown (5s timeout)
- Graceful reboot/shutdown (close Hyprland windows first)
- SSH MTU probing fix for flaky connections
- Sudo 10-attempt limit and PAM faillock (deny=10, unlock 2min)
- Default mimetypes (dolphin, qview, zathura, mpv, nvim)
- USB autosuspend disable
- Audio output switcher (pactl cycle + notify-send)
- Screen recording (gpu-screen-recorder with wf-recorder fallback)
- GPG keyserver config (5 fallback servers)
- Fontconfig fonts.conf (Liberation Sans/Serif, JetBrainsMono NF)
- Debug info dump script (system info, dmesg, journal, packages)
Swap 6 -git AUR packages for their prebuilt counterparts to avoid
long compile times during install:
- hyprshot-git → hyprshot (extra)
- kvantum-git → kvantum (extra)
- adwaita-qt5-git → adwaita-qt5 (AUR release)
- adwaita-qt6-git → adwaita-qt6 (AUR release)
- hyperfine-git → hyperfine (extra)
- mupdf-git → mupdf (extra)
…are detection

Major feature batch adding comprehensive system management adapted from
omarchy with kojarchy branding and ALT-based keybindings:

Update system (replaces update.sh):
- kojarchy-update orchestrator with git pull, package updates, migrations
- kojarchy-migrate for timestamped incremental system changes
- kojarchy-update-restart for kernel update detection + reboot prompt

Package management:
- pkg-add/drop/missing/present helpers for scripting
- pkg-install/remove interactive TUI pickers (fzf-based)
- pkg-aur-add/aur-accessible for AUR support

Hardware detection (install/config/hardware/):
- Network (iwd, disable networkd-wait-online)
- Bluetooth auto-enable
- Intel GPU video acceleration
- Wireless regulatory domain from timezone
- F-key fix for Apple-like keyboards
- Synaptics touchpad InterTouch
- Power profile auto-switch on AC/battery

System hardening & config:
- Default GNOME keyring (prevents unlock popup)
- UFW firewall (deny in, allow LocalSend + Docker DNS)
- DNS resolver (systemd-resolved symlink)
- Input group for game controllers
- Keyboard layout detection from vconsole.conf
- mkinitcpio disable during install (speed optimization)
- Hidden .desktop files (29 entries for cleaner app launcher)

Hyprland enhancements:
- App window rules (browser, terminal, PiP, Steam, Bitwarden, system dialogs)
- hypridle.conf (5min lock, 10min DPMS off)
- hyprlock.conf (styled lock screen)
- hyprsunset.conf (night light placeholder)
- Updated keybindings: screenshot via satty, notification dismiss,
  power menu (ALT+ESC), lock (ALT+CTRL+L), keybind viewer (ALT+/)

Browser Wayland flags:
- chromium-flags.conf, brave-flags.conf, helium-flags.conf
- MOZ_ENABLE_WAYLAND=1 for Firefox/Zen

Utility scripts:
- Restart helpers (waybar, pipewire, bluetooth, hypridle, wifi, btop)
- Refresh scripts (reset individual configs to defaults with backup)
- Font management (set/list/current system monospace font)
- Lock screen, screenshot, keybindings viewer
- Version tracking, state management, hook system

Updated README with new workflows, commands, and project structure.
- git.sh: source directly instead of run_logged (gum input was invisible)
- systemd.sh: remove duplicate firewall and bluetooth enable
- errors.sh: add GitHub issues support link on install failure
- packages.sh: remove dead install_packages/install_aur_packages code
- logging.sh: remove unnecessary packages.sh source from run_logged
- cargo.sh: source packages.sh directly for install_cargo_packages
- cmd-reboot/cmd-shutdown: add state clear + nohup pattern from omarchy
- pkg-remove: use yay instead of pacman to include AUR packages
- update-perform: add idle prevention during updates
- update: add GitHub issues link to error trap
- finished.sh: improve reboot prompt and add log line
…meout

sudo cache expires after 5 minutes but package installation can take 30+
minutes. Inside run_logged subshells stdin is /dev/null so sudo can't
re-prompt. This caused services like SDDM to silently fail to enable.

Now grants NOPASSWD for the install duration and cleans up in finished.sh.
- bob-nvim -> bob (official repo)
- tree-sitter-cli -> tree-sitter-cli (official repo)
- cargo-update -> cargo-update (official repo)
- tmux-sessionizer -> tmux-sessionizer-bin (AUR prebuilt)

Rust/cargo toolchain still installed for dev workflow.
- Replace apple-fonts/geist/JetBrains with FiraCode Nerd Font Mono everywhere
- Replace zathura/mupdf/ocrmypdf with evince, pavucontrol with wiremix
- Add omarchy system infra: printing stack, gnome-keyring, gvfs, avahi, swayosd, uwsm
- Add dev tools: ripgrep, lazygit, lazydocker, clang, llvm, rust, opencode
- Add desktop utils: playerctl, brightnessctl, bluetui, mpv, satty, gnome-disk-utility
- Move helium-browser-bin from optional to base
- Fix chsh: use sudo to avoid silent failure in run_logged subshell
- Fix hyprlock colors from Tokyo Night to Catppuccin Mocha (black bg)
- Add btop Catppuccin Mocha theme file
- Set up Kvantum with catppuccin-mocha-blue for Qt apps
- Set GTK theme to catppuccin-mocha-blue via gsettings
- Add Wayland env vars (GDK_BACKEND, QT_QPA_PLATFORM, SDL, Electron, Ozone)
- Set QT_STYLE_OVERRIDE=kvantum, XDG session vars
- Replace Dolphin with Nautilus, drop unnecessary Qt theming packages
- Fix refresh-hyprland to cover all 4 config files + hyprctl reload
- Add mocha.css to refresh-waybar
…ybind

- Add PATH entries to default/hypr/envs.conf so kojarchy-* scripts work from keybindings/menus
- Fix Kvantum theme name capitalization (Catppuccin-Mocha-Blue)
- Remove ALT+CTRL+SPACE binding (replaced by ALT+SHIFT+SPACE unified menu)
- Rewrite kojarchy-menu to use walker --dmenu instead of kitty+gum
- Add walker-bin package, walker config, and Catppuccin Mocha theme
- Remove kitty window rules for old menu (walker is its own overlay)
- Add wayfreeze to screenshot script so screen freezes before capture
- Simplify keybinding: no longer needs kitty wrapper
…ggle and audio switch

- Power menu: replace kitty+gum with walker --dmenu, remove window rules
- Keybindings viewer: replace wofi with walker --dmenu
- Toggle nightlight: use hyprctl temperature toggle instead of kill/restart
- Audio switch: add swayosd volume/mute icon feedback with notify-send fallback
- Add swayosd-server to hyprland autostart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments