Tiga Pengaturan untuk Mempertahankan Lingkungan Pengembangan Lama Sebelum Instalasi Omarchy
TuBrief 편집팀
2026년 9월 12일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
Omarchy, distribusi opini berbasis Arch Linux yang dirilis di bawah pimpinan Basecamp, menggabungkan compositor tiling Hyprland dan toolkit desktop Quickshell untuk menampilkan layar kerja yang canggih sejak instalasi awal. Ini adalah sistem yang menarik bagi para insinyur yang merasa lelah dengan manajemen dotfile manual, tetapi jika Anda langsung menimpanya ke direktori home yang sedang digunakan, bahkan pengelola sesi akan berhenti berfungsi.
Jika Anda ingin memasang Omarchy tanpa merusak Neovim, container Docker, dan lingkungan shell kustom yang sudah Anda gunakan, Anda harus mengisolasi tiga titik konflik spesifik terlebih dahulu.
Sebagian besar kegagalan booting yang terjadi selama proses migrasi distribusi bermula dari konflik antara file runtime lama yang berada di luar standar XDG dan konfigurasi bawaan sistem. Omarchy menggunakan struktur di mana konfigurasi sistem ditempatkan di /usr/share/omarchy dan konfigurasi penyesuaian pengguna dipaksa ke dalam ~/.config. Jika hyprland.conf atau stylesheet Waybar lama Anda tetap ada, parameter akan bertabrakan dengan modul natif Quickshell (~/.config/omarchy/shell.json), menyebabkan layar membeku pada tahap handshake Wayland. Terminal default juga dapat mengalami kegagalan karena PATH non-standar atau LD_LIBRARY_PATH yang tersisa dalam skrip shell gagal menangkap driver grafis.
Untuk melestarikan bentuk tanpa menyentuh lingkungan yang ada, Anda harus menggunakan pola repository bare Git yang memetakan pohon kerja ke direktori home. Metode seperti GNU Stow yang memasang symbolic link satu per satu akan menghentikan proses jika file yang ada sudah ada, sehingga menyulitkan untuk mengembalikannya.
`bash
git init --bare "HOME/.dotfiles.git/ --work-tree=HOME/pre_omarchy_backup_$(date +%Y%m%d).tar.gz" HEAD
`
Setelah membuat arsip cadangan, pindahkan direktori desktop yang menyebabkan konflik ke folder isolasi di luar direktori home.
`bash
mkdir -p "HOME/.config/dir" ] && mv "HOME/.config/HOME/.config_quarantine/"
done
`
Dengan menyingkirkan pengaturan desktop, Quickshell bawaan Omarchy akan berjalan secara normal, dan pengaturan editor kode atau shell terminal Anda dapat dipertahankan seperti semula.
Omarchy mengintegrasikan alat coding AI seperti Claude Code dan OpenCode secara mendalam ke dalam alur kerja internal desktop. Masalahnya adalah alat-alat ini mewarisi hak istimewa dari terminal host secara mentah-mentah. Karena banyak runtime yang hanya membatasi eksekusi subprocess tanpa memantau system call input/output file, jika terjadi prompt injection atau eksekusi skrip tak terduga, folder ~/.ssh, ~/.aws, ~/.gnupg, serta soket Docker akan terekspos tanpa perlindungan.
Anda perlu membangun lingkungan eksekusi hak istimewa minimum menggunakan Bubblewrap yang menangani namespace pengguna tanpa hak istimewa (Unprivileged User Namespaces) dari kernel Linux. Dengan menimpa folder kunci autentikasi sensitif dengan mount memori kosong, Anda dapat memblokir operasi pembacaan itu sendiri.
`bash
#!/usr/bin/env bash
set -euo pipefail
WORKSPACE="{1:-(pwd)}"
DUMMY_DIR={DUMMY_DIR}"' EXIT
exec bwrap
--ro-bind /usr /usr
--ro-bind /lib /lib
--ro-bind /lib64 /lib64
--ro-bind /bin /bin
--ro-bind /etc/resolv.conf /etc/resolv.conf
--ro-bind /etc/ssl /etc/ssl
--ro-bind /etc/ca-certificates /etc/ca-certificates
--proc /proc
--dev /dev
--tmpfs /tmp
--tmpfs "$HOME"
--bind "WORKSPACE"
--ro-bind "HOME/.ssh"
--ro-bind "HOME/.aws"
--ro-bind "HOME/.gnupg"
--unshare-all
--share-net
--unshare-pid
--new-session
--die-with-parent
--setenv PATH "/usr/local/bin:/usr/bin:/bin"
--setenv HOME "$HOME"
--chdir "$WORKSPACE"
-- /usr/bin/opencode "$@"
`
Anda juga harus menghindari metode menempatkan kunci API dalam teks biasa pada variabel lingkungan global. Anda harus membuat file ai.env di dalam direktori ~/.config/secure-vault yang diberi izin chmod 700, mengunci izinnya dengan chmod 600, lalu membacanya melalui subshell hanya pada saat eksekusi skrip untuk mencegah kebocoran token melalui pencarian /proc/$PID/environ.
Bagian yang paling sering mengalami error saat memindahkan konfigurasi Neovim lama ke Omarchy adalah plugin Mason. Binary pra-kompilasi yang diunduh Mason dari GitHub tidak sinkron dengan simbol glibc terbaru di lingkungan rolling release, sehingga memicu error eksekusi.
Masalah ini akan hilang jika Anda mematikan pengunduhan binary otomatis Mason dan mengalihkan jalur LSP ke paket native dari repository resmi Arch. Dengan dihilangkannya tahap pengunduhan jaringan dan lapisan pembungkus (wrapper), waktu pemuatan awal editor juga turun hingga di bawah 30ms.
`lua
-- ~/.config/nvim/lua/plugins/lsp-native.lua
return {
{
"williamboman/mason.nvim",
opts = { auto_install = false },
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
gopls = { cmd = { "/usr/bin/gopls" } },
pyright = { cmd = { "/usr/bin/pyright-langserver", "--stdio" } },
rust_analyzer = { cmd = { "/usr/bin/rust-analyzer" } },
lua_ls = { cmd = { "/usr/bin/lua-language-server" } },
},
},
},
}
`
Setelah melakukan pengaturan, instal binary secara langsung dari terminal.
`bash
sudo pacman -S --needed gopls pyright rust-analyzer lua-language-server ripgrep fd
`
Kendala terakhir adalah Docker. Omarchy menggunakan Docker Rootless secara default. Karena aturan pemetaan sub-UID kernel, terjadi offset antara kepemilikan file host dan hak istimewa pengguna di dalam container.
Jika nomor awal yang ditetapkan ke /etc/subuid pada host adalah 100000, pengguna biasa di dalam container (UID 1000) dikenali sebagai UID 100999 () dari sudut pandang host. Inilah alasan mengapa izin tulis diblokir dan memunculkan error saat kode sumber di-bind mount (-v $(pwd):/workspace). Jika Anda menentukan aturan pewarisan POSIX Access Control List (ACL) pada direktori proyek, Anda dapat membuka izin tulis untuk proses container tanpa mengacaukan kepemilikan host.
`bash
#!/usr/bin/env bash
set -euo pipefail
TARGET_PATH="{1:-(pwd)}"
CURRENT_USER=$(whoami)
SUBUID_START=(grep "^{CURRENT_USER}:" /etc/subuid | cut -d: -f2 || true)
if [[ -z "{CURRENT_USER}"
SUBUID_START=100000
fi
HOST_MAPPED_UID=$(( SUBUID_START + 1000 - 1 ))
setfacl -R -m "u:TARGET_PATH"
setfacl -R -d -m "u:TARGET_PATH"
sudo loginctl enable-linger "${CURRENT_USER}"
systemctl --user enable --now docker.service
`
Setelah menyelesaikan pengaturan, periksa instance jendela aktif melalui hyprctl instances di terminal, dan verifikasi pengoperasian LSP dengan nvim --headless "+checkhealth" +qa. Ketika perintah docker run --rm alpine ping -c 1 1.1.1.1 berhasil melewati jaringan sub-namespace, persiapan untuk melanjutkan pekerjaan pengembangan sehari-hari Anda telah selesai.