Skip to content

firesand/Omgently

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎌 Omgently

The Ultimate Opinionated Gentoo Bootstrapper for Hyprland & COSMIC Desktop

Gentoo Hyprland COSMIC Ansible

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.


πŸ› οΈ Struktur Direktori/Repository

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

✨ Fitur Utama (The Omarchy Way)

  • πŸš€ Agnostik & Interaktif: Jalankan dari LiveCD Linux apa pun (sangat disarankan menggunakan Arch Linux ISO untuk dukungan iwctl terbaru). Skrip TUI otomatis memverifikasi jaringan dan menyinkronkan waktu via NTP sebelum Ansible mengambil alih.
  • 🧠 Optimasi Kompilasi Maksimal: Otomatis meracik make.conf dengan CFLAGS="-march=native" dan injeksi EMERGE_DEFAULT_OPTS yang 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 @portage dan @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 di modules-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 elogind untuk OpenRC agar fitur loginctl/lock/suspend tetap berfungsi.

πŸ› οΈ Persyaratan Sistem

  1. Koneksi Internet aktif (Kabel atau Wi-Fi).
  2. LiveCD Linux berbasis ncurses.
  3. Setidaknya 30GB ruang penyimpanan kosong.

πŸ“‚ Arsitektur Direktori Ansible

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, Dynamic make.conf.
  • 03-kernel-boot: Generate fstab UUID, Firmware/Microcode, Automasi Kernel (Bin/Source via installkernel), 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 sesi XDG_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, validasi monitors.conf, binding terminal dinamis, dan normalisasi post-stow.

πŸš€ Panduan Instalasi (Quick Start)

  1. Boot ke LiveCD pilihan Anda.
  2. Unduh dan jalankan TUI Bootstrapper:
    bash <(curl -fsSL https://raw.githubusercontent.com/firesand/Omgently/main/bootstrapper.sh)
  3. Ikuti wizard TUI (termasuk pilihan locale, ukuran swap, dotfiles_repo_url, gentoo_mirror, profile keywords, dan mode lisensi) sampai file variabel sementara terbentuk.
  4. 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)

TUI UX (Update)

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-step Region -> City dari /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 (saat separate_home), swap_size_gb, username, password, dotfiles_repo_url.

Screenshot TUI

Catatan: gambar berikut adalah simulasi visual untuk dokumentasi GitHub, bukan capture runtime langsung dari sesi installer.

TUI Radiolist Simulated

TUI Timezone Step 1 Simulated

TUI Timezone Step 2 Simulated


🧾 Menjalankan tanpa TUI

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"

Template Siap Pakai (di dalam repo)

Gunakan template berikut lalu sesuaikan nilai sensitif (target_disk, username, user_password_hash, root_password_hash):

  • examples/vars/desktop-openrc-btrfs-nvidia-limine.vars.yml
  • examples/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 -6

πŸ§ͺ Menjalankan dari clone lokal

Jika Anda sudah meng-clone repo ini di LiveCD:

cd Omgently
chmod +x bootstrapper.sh
./bootstrapper.sh

βš™οΈ Known Limitations / Tested Matrix

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

Tested Matrix (Current State)

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

Runtime Test Checklist

Gunakan checklist ini setelah instalasi selesai dan mesin target reboot.

Skenario A: systemd + nvidia + login_style=dm

  1. Login lewat greetd ke sesi Hyprland berhasil tanpa fallback ke TTY.
  2. Konfirmasi service enable:
    • systemctl is-enabled NetworkManager
    • systemctl is-enabled greetd
  3. Verifikasi proses user session:
    • pgrep -a pipewire
    • pgrep -a wireplumber
    • pgrep -a nm-applet
    • pgrep -a lxqt-policykit-agent
    • pgrep -a hyprpaper
    • pgrep -a hypridle
    • pgrep -a swayosd-server
  4. Verifikasi portal tersedia:
    • which xdg-desktop-portal
    • Uji file picker dari aplikasi GUI (contoh browser/GTK app).
  5. 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
  6. Validasi kursor terlihat normal dan tidak hilang saat berpindah window/workspace.
  7. Uji fitur screenshot/record:
    • omgently-screenshot region
    • omgently-screenrecord (jalankan 2x untuk start/stop)

Skenario B: openrc + amd/intel + login_style=dm (atau tty)

  1. Jika login_style=dm, login Hyprland via greetd berhasil.
  2. Cek runlevel OpenRC:
    • rc-update show default | grep -E 'dbus|elogind|seatd|NetworkManager|greetd'
  3. Verifikasi proses user session:
    • pgrep -a pipewire
    • pgrep -a wireplumber
    • pgrep -a nm-applet
    • pgrep -a lxqt-policykit-agent
    • pgrep -a hyprpaper
    • pgrep -a hypridle
    • pgrep -a swayosd-server
  4. 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.
  5. Uji portal/file picker/screenshot (grim+slurp) dari sesi Hyprland.
  6. Uji audio end-to-end:
    • pavucontrol terbuka normal.
    • Browser/app menghasilkan output audio ke Pipewire.
  7. Untuk device_type=laptop, verifikasi stack laptop:
    • which tlp bluetoothctl blueman-manager
    • test -f /usr/lib/firmware/regulatory.db

Skenario C: systemd/openrc + cosmic + login_style=dm

  1. Login lewat cosmic-greeter ke sesi COSMIC berhasil.
  2. Konfirmasi service enable:
    • systemctl is-enabled greetd cosmic-greeter.service (systemd)
    • rc-update show default | grep display-manager (openrc)
  3. Verifikasi proses user session:
    • pgrep -a cosmic-comp
    • pgrep -a cosmic-panel
    • pgrep -a cosmic-session
    • pgrep -a pipewire
    • pgrep -a wireplumber
  4. Verifikasi portal dan file picker berfungsi dari aplikasi COSMIC.
  5. Uji audio end-to-end:
    • pavucontrol terbuka normal.
    • Browser/app menghasilkan output audio ke Pipewire.
  6. Untuk device_type=laptop, verifikasi stack laptop:
    • which tlp bluetoothctl blueman-manager
    • test -f /usr/lib/firmware/regulatory.db

πŸ”§ Advanced Overrides

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_jobs dan emerge_load_average (override EMERGE_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"

⚠️ Catatan penting

  • Proses ini destruktif: disk target akan di-wipe total.
  • Pastikan variabel target_disk benar 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.

πŸ“œ Lisensi

Proyek ini menggunakan lisensi GNU General Public License v3.0 (GPL-3.0). Detail lengkap tersedia pada file LICENSE di root repository.

About

The Ultimate Opinionated Gentoo Bootstrapper for Hyprland & COSMIC desktop

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors