The Ultimate Opinionated Gentoo Bootstrapper for Hyprland & COSMIC Desktop
Omgently adalah sebuah provisioning tool tingkat lanjut berbasis Ansible dan skrip TUI (Text User Interface) interaktif. Alat ini dirancang untuk mengotomatisasi instalasi Gentoo Linux dari nol hingga menjadi desktop Wayland (Hyprland atau COSMIC Desktop) bergaya "High-Performance Elegance" tanpa mengorbankan filosofi kebebasan absolut Gentoo.
Proyek ini mengatasi hampir semua keluhan klasik instalasi Gentoo: kompilasi lama, dependency hell di X11, konfigurasi NVIDIA Wayland yang rumit, dan setup audio yang membingungkan.
Omgently/
βββ bootstrapper.sh # [FASE 0] Skrip TUI pembuka (Network, Time, Input User)
βββ ansible.cfg # Konfigurasi Ansible (pipelining, retries)
βββ site.yml # Playbook utama (Entrypoint)
βββ roles/
β βββ 01-base-prep/ # [FASE 1] Partisi & Format
β βββ 02-core-system/ # [FASE 2] make.conf, Git Sync, Overlay GURU
β βββ 03-kernel-boot/ # [FASE 3] fstab, Firmware, Kernel, Bootloader
β βββ 04-system-config/ # [FASE 4] Timezone, NetworkManager, User/Doas
β βββ 05-wayland-gpu/ # [FASE 5] D-Bus, Nvidia DRM, Greetd/TTY
β βββ 06-common-desktop/ # [FASE 6a] Pipewire, Polkit, Fonts, File Manager, Laptop Stack
β βββ 06-hyprland-de/ # [FASE 6b] Waybar, Wofi, Mako, Hyprlock (if Hyprland)
β βββ 06-cosmic-de/ # [FASE 6c] COSMIC overlay, greeter (if COSMIC)
β βββ 07-dotfiles-tools/ # [FASE 7] Nvim, Terminal, Browser, GNU Stow
βββ dotfiles/ # Repositori terpisah untuk konfigurasi Omgently
βββ hyprland/hyprland.conf
βββ waybar/config & style.css
βββ wofi/config & style.css
βββ nvim/init.lua
- π Agnostik & Interaktif: Jalankan dari LiveCD Linux apa pun (sangat disarankan menggunakan Arch Linux ISO untuk dukungan
iwctlterbaru). Skrip TUI otomatis memverifikasi jaringan dan menyinkronkan waktu via NTP sebelum Ansible mengambil alih. - π§ Optimasi Kompilasi Maksimal: Otomatis meracik
make.confdenganCFLAGS="-march=native"dan injeksiEMERGE_DEFAULT_OPTSyang disetel seimbang antara kecepatan kompilasi dan stabilitas penggunaan memori. - π½ Storage & Partisi Adaptif: Mendeteksi disk NVMe, SATA, atau eMMC secara akurat. Bebas memilih BTRFS (dilengkapi sistem subvolume cerdas
@portagedan@snapshots), atau sistem klasik tinggi performa (EXT4/XFS). - π‘οΈ Bulletproof Wayland & NVIDIA: Skrip ini 100% mematuhi panduan modern Gentoo untuk Nvidia. Otomatis menyuntikkan parameter kernel DRM (
nvidia-drm.modeset=1), memuat modul dimodules-load.d, dan menyetel environment variables krusial agar resolusi tinggi (1440p hingga 4K 120Hz) berjalan tanpa tearing atau black screen. - π₯οΈ Dynamic Display Resolution: Konfigurasi Hyprland kini modular dengan
monitors.conf. Default tetap auto-detect (highrr, auto, 1), dan user bisa menambah mapping multi-monitor desktop/laptop tanpa mengubah file inti. - π Multi-DE Support: Pilih antara Hyprland (tiling compositor canggih & sangat ringan) atau COSMIC Desktop (modern, Rust-based dari System76) langsung dari TUI wizard.
- β‘ Modern Booting Options: Tinggalkan GRUB jika Anda mau. Pilih antara Limine (elegan & cerdas untuk multi-boot), systemd-boot (super cepat), GRUB klasik, atau konfigurasi ekstrem EFISTUB (tanpa bootloader).
- π°οΈ Multi-OS Ready: Mengunci Hardware Clock (
hwclock) ke UTC jika Anda memilih skenario dual-boot (sangat berguna untuk mesin yang bersanding dengan macOS atau Windows). - π¨ The Omarchy Ecosystem: Menghadirkan ekosistem produktivitas penuh tanpa bloatware: Pipewire, Waybar, Wofi, Mako, Hyprlock, Hypridle, SwayOSD, Swappy, Ghostty/Alacritty, Neovim modern, serta integrasi dotfiles via GNU Stow.
- π» Desktop + Laptop Aware: Bootstrapper memiliki opsi
device_type(desktop/laptop) untuk mengaktifkan stack laptop (TLP, BlueZ, Blueman, wireless-regdb, lid-switch policy) secara otomatis. - π§© OpenRC + systemd Friendly: Flow provisioning menyesuaikan init system termasuk
eloginduntuk OpenRC agar fiturloginctl/lock/suspend tetap berfungsi.
- Koneksi Internet aktif (Kabel atau Wi-Fi).
- LiveCD Linux berbasis ncurses.
- Setidaknya 30GB ruang penyimpanan kosong.
Proyek ini dibangun secara modular agar sangat mudah dibaca dan dimodifikasi:
01-base-prep: Disk wiping, Partisi dinamis (sgdisk), Formatting dinamis, BTRFS Subvolumes.02-core-system: Chroot prep, Git Sync Portage, GURU overlay bootstrap, Dynamicmake.conf.03-kernel-boot: GeneratefstabUUID, Firmware/Microcode, Automasi Kernel (Bin/Source viainstallkernel), Bootloader setup.04-system-config: Timezone, HWClock (OpenRC/systemd-aware), Locale, NetworkManager, User creation, Doas/Sudo, dan lid-close behavior laptop (HandleLidSwitch=suspend) untuk systemd maupun elogind.05-wayland-gpu: D-Bus, Elogind+Seatd (OpenRC), XWayland, Nvidia configs, Greetd/TTY dengan perbaikan sesiXDG_RUNTIME_DIR.06-common-desktop: Pipewire, Polkit, Nerd Fonts, nm-applet, File Manager (Thunar/Dolphin/Yazi), Kompresi, serta stack laptop (TLP, BlueZ, Blueman, wireless-regdb).06-hyprland-de: XDG portal Hyprland, Waybar/Wofi/Mako/Hyprpaper, Hyprlock/Hypridle, SwayOSD, Swappy, Cliphist, wf-recorder.06-cosmic-de: COSMIC overlay (fsvm88), cosmic-meta, cosmic-greeter, konfigurasi Greetd untuk COSMIC.07-dotfiles-tools: Neovim, eza/ripgrep/fd/fzf/bat, browser/terminal pilihan, integrasi GNU Stow, validasimonitors.conf, binding terminal dinamis, dan normalisasi post-stow.
- Boot ke LiveCD pilihan Anda.
- Unduh dan jalankan TUI Bootstrapper:
bash <(curl -fsSL https://raw.githubusercontent.com/firesand/Omgently/main/bootstrapper.sh) - Ikuti wizard TUI (termasuk pilihan
locale, ukuranswap,dotfiles_repo_url,gentoo_mirror, profilekeywords, dan mode lisensi) sampai file variabel sementara terbentuk. - Bootstrapper akan mengeksekusi:
ansible-playbook -i 'localhost,' -c local site.yml -e "@<temp-vars-file>"
Contoh nilai gentoo_mirror:
https://distfiles.gentoo.org(default global)https://kambing.ui.ac.id/gentoo(mirror lokal Indonesia)
Wizard TUI sekarang memprioritaskan pemilihan berbasis opsi (tanpa banyak ketik manual):
radiolist(single-choice):hwclock,partition_layout,cpu_vendor,filesystem,init_system,gpu_vendor,device_type,accept_keywords,accept_license,kernel_type,bootloader,login_style.menu/scrollable menu:timezone(2-stepRegion -> Citydari/usr/share/zoneinfo+ opsi manual),system_locale(preset +Lainnya),gentoo_mirror(preset populer +Lainnya),default_terminal,default_browser.- Tetap input manual:
hostname,makeopts,march_target,root_size_gb(saatseparate_home),swap_size_gb,username,password,dotfiles_repo_url.
Catatan: gambar berikut adalah simulasi visual untuk dokumentasi GitHub, bukan capture runtime langsung dari sesi installer.
Anda juga bisa menjalankan playbook manual dengan file vars sendiri:
# example.vars.yml
system_hostname: "omgently-host"
timezone: "Asia/Jakarta"
system_locale: "en_US.UTF-8"
hwclock: "UTC"
makeopts: "-j8 -l8"
cpu_threads: "8"
march_target: "native"
cpu_vendor: "intel"
target_disk: "/dev/nvme0n1"
partition_layout: "flat"
root_size_gb: "0"
swap_size_gb: "8"
filesystem: "btrfs"
init_system: "systemd"
gpu_vendor: "intel"
device_type: "desktop"
desktop_environment: "hyprland"
kernel_type: "bin"
bootloader: "systemd-boot"
accept_keywords: "amd64"
accept_license: "*"
login_style: "dm"
username: "koki"
user_password_hash: "$6$examplehash..."
root_password_hash: "$6$examplehash..."
setup_doas_instead_of_sudo: true
default_terminal: "ghostty"
default_browser: "brave"
install_omarchy_dotfiles: true
dotfiles_repo_url: "https://github.com/firesand/Omgently.git"
gentoo_mirror: "https://distfiles.gentoo.org"Lalu jalankan:
ansible-playbook -i 'localhost,' -c local site.yml -e "@example.vars.yml"Gunakan template berikut lalu sesuaikan nilai sensitif (target_disk, username, user_password_hash, root_password_hash):
examples/vars/desktop-openrc-btrfs-nvidia-limine.vars.ymlexamples/vars/laptop-systemd-btrfs-amd-limine.vars.yml
Contoh eksekusi:
ansible-playbook -i 'localhost,' -c local site.yml -e "@examples/vars/desktop-openrc-btrfs-nvidia-limine.vars.yml"ansible-playbook -i 'localhost,' -c local site.yml -e "@examples/vars/laptop-systemd-btrfs-amd-limine.vars.yml"Contoh generate hash password:
openssl passwd -6Jika Anda sudah meng-clone repo ini di LiveCD:
cd Omgently
chmod +x bootstrapper.sh
./bootstrapper.sh- Dirancang untuk firmware UEFI (bukan BIOS legacy).
- Arsitektur target saat ini: amd64/x86_64.
- GPU yang didukung di flow saat ini: Intel / AMD / NVIDIA.
- Desktop Environment yang didukung: Hyprland dan COSMIC Desktop (via fsvm88 overlay).
- Asumsi koneksi internet aktif selama bootstrap dan sync Portage.
- Runtime boot test aktual masih wajib dilakukan setelah provisioning (greetd login flow, portal behavior, nm-applet tray di sesi nyata).
- Integrasi dotfiles custom tetap mengasumsikan struktur repo kompatibel dengan paket
stow; playbook sudah fail-fast bila folder wajib tidak ditemukan.
| Area | Status |
|---|---|
| Static lint/idempotency style antar role | β Sudah dirapikan (become, FQCN, --noreplace, rerun-safe stow) |
| Boot/login runtime (DM/TTY) | β³ Perlu uji manual di mesin nyata |
| Portal/screencast/file picker runtime | β³ Perlu uji manual di sesi Hyprland |
Tray app runtime (nm-applet) |
β³ Perlu uji manual di sesi Hyprland |
Gunakan checklist ini setelah instalasi selesai dan mesin target reboot.
- Login lewat
greetdke sesi Hyprland berhasil tanpa fallback ke TTY. - Konfirmasi service enable:
systemctl is-enabled NetworkManagersystemctl is-enabled greetd
- Verifikasi proses user session:
pgrep -a pipewirepgrep -a wireplumberpgrep -a nm-appletpgrep -a lxqt-policykit-agentpgrep -a hyprpaperpgrep -a hypridlepgrep -a swayosd-server
- Verifikasi portal tersedia:
which xdg-desktop-portal- Uji file picker dari aplikasi GUI (contoh browser/GTK app).
- Verifikasi NVIDIA session env di Hyprland:
grep -E 'LIBVA_DRIVER_NAME|GBM_BACKEND|__GLX_VENDOR_LIBRARY_NAME|AQ_NO_HARDWARE_CURSORS' ~/.config/hypr/hyprland.conf
- Validasi kursor terlihat normal dan tidak hilang saat berpindah window/workspace.
- Uji fitur screenshot/record:
omgently-screenshot regionomgently-screenrecord(jalankan 2x untuk start/stop)
- Jika
login_style=dm, login Hyprland via greetd berhasil. - Cek runlevel OpenRC:
rc-update show default | grep -E 'dbus|elogind|seatd|NetworkManager|greetd'
- Verifikasi proses user session:
pgrep -a pipewirepgrep -a wireplumberpgrep -a nm-appletpgrep -a lxqt-policykit-agentpgrep -a hyprpaperpgrep -a hypridlepgrep -a swayosd-server
- Verifikasi tidak ada env NVIDIA yang bocor:
grep -E 'LIBVA_DRIVER_NAME|GBM_BACKEND|__GLX_VENDOR_LIBRARY_NAME|AQ_NO_HARDWARE_CURSORS' ~/.config/hypr/hyprland.conf- Hasil untuk non-NVIDIA harus kosong.
- Uji portal/file picker/screenshot (grim+slurp) dari sesi Hyprland.
- Uji audio end-to-end:
pavucontrolterbuka normal.- Browser/app menghasilkan output audio ke Pipewire.
- Untuk
device_type=laptop, verifikasi stack laptop:which tlp bluetoothctl blueman-managertest -f /usr/lib/firmware/regulatory.db
- Login lewat
cosmic-greeterke sesi COSMIC berhasil. - Konfirmasi service enable:
systemctl is-enabled greetd cosmic-greeter.service(systemd)rc-update show default | grep display-manager(openrc)
- Verifikasi proses user session:
pgrep -a cosmic-comppgrep -a cosmic-panelpgrep -a cosmic-sessionpgrep -a pipewirepgrep -a wireplumber
- Verifikasi portal dan file picker berfungsi dari aplikasi COSMIC.
- Uji audio end-to-end:
pavucontrolterbuka normal.- Browser/app menghasilkan output audio ke Pipewire.
- Untuk
device_type=laptop, verifikasi stack laptop:which tlp bluetoothctl blueman-managertest -f /usr/lib/firmware/regulatory.db
Untuk power user, beberapa parameter Role 02 bisa dioverride lewat file vars manual:
portage_sync_uri(default:https://github.com/gentoo-mirror/gentoo.git)emerge_jobsdanemerge_load_average(overrideEMERGE_DEFAULT_OPTS)accept_license(contoh strict mode:@FREE)accept_keywords(contoh testing:~amd64)
Contoh:
portage_sync_uri: "rsync://rsync.gentoo.org/gentoo-portage"
emerge_jobs: 2
emerge_load_average: 8
accept_license: "@FREE"
accept_keywords: "amd64"- Proses ini destruktif: disk target akan di-wipe total.
- Pastikan variabel
target_diskbenar sebelum lanjut. - Re-run playbook kini lebih aman (idempotent) untuk service enable, dotfiles clone, dan beberapa langkah bootstrap.
- Proyek ini masih opinionated untuk workflow Hyprland + Wayland.
Proyek ini menggunakan lisensi GNU General Public License v3.0 (GPL-3.0). Detail lengkap tersedia pada file LICENSE di root repository.


