Sedikit background, penulis merupakan pengguna NixOS dari awal tahun 2023, masih terbilang baru sebagai pengguna Nix semenjak artikel ini ditulis pada tahun 2024. Namun sudah cukup lama sebagai pengguna distribusi linux yang sekitar tahun 2014.
Kelebihan NixOS jika dibandingkan dengan distribusi linux lain
NixOS dipilih sebagai sistem operasi yang digunakan sehari-hari karena ada beberapa kelebihan yang tidak ada di distribusi linux lain. Kelebihan NixOS bagi penulis yaitu antara lain.
- Menggunakan deklarasi konfigurasi model untuk menentukan konfigurasi pengguna sesuai kebutuhan.
- Tersedia paket yang besar, lebih dari 80.000 paket di repositorinya. Termasuk kategori paket python, R, nodejs, kernel, perl, ruby, vim plugin, vscode plugin dan lain-lain.
- Tersedia macam-macam kernel linux. Seperti kernel linux realtime, zen, xanmod, hardened dan libre kernel.
- Terdapat home-manager yang dikelola oleh komunitas nix untuk memanajemen segala berkas pengaturan di sisi pengguna (lebih dikenal sebagai dotfiles) agar menjadi lebih mudah. Termasuk pengaturan layanan yang berjalan di sisi pengguna, bukan dari sistem.
Alasan inilah yang membuat penulis tertarik untuk menggunakan NixOS sebagai distribusi linux untuk kebutuhan sehari-hari. Mencoba berbagai macam desktop environment atau window manager tersedia di repositori NixOS.
Selain itu NixOS juga memiliki fitur atomic upgrade yang mana berfungsi untuk mengembalikan ke kondisi sebelumnya jika terjadi galat yang tidak diharapkan (Kuan 2018). Pengguna hanya masuk ke generasi melalui booting awal di grub.
Persiapan yang harus dimiliki oleh pengguna
Sebelum melakukan pemasangan NixOS, pengguna harus memahami beberapa ilmu dasar untuk memudahkan navigasi dan mengubah pengaturan. Tujuannya untuk menunjang pemasangan NixOS dengan iso minimal. Hal-hal yang sebaiknya perlu dipersiapkan yaitu antara lain.
- Memahami perintah dasar linux. Seperti
cd
,ls
,mv
,ln
dan sebagainya. - Memahami salah satu teks editor cli. Seperti
nano
,vim
,nvim
,helix
,micro
atau lainnya. - Memahami cara menyambungkan jaringan internet menggunakan
wpa_supplicant
atau iwd denganiwctl
(lebih disarankan). Berguna jika mesin yang dipasang adalah laptop yang membutuhkan koneksi internet menggunakan wificard.
Jika persyaratan tersebut sudah dikuasai maka pemasangan NixOS menjadi lebih mudah. Tetapi tidak harus bisa semuanya, semua petunjuk perintah sudah tertulis di artikel ini sehingga tinggal disesuaikan saja. Langkah-langkah pemasangan NixOS berdasarkan dari panduan resmi pemasangan nixos.
Enough talking, let’s start installing NixOS.
Unduh berkas iso di halaman unduh
Kunjungi halaman unduh iso nixos dengan versi iso minimal. NixOS menyediakan dua edisi untuk ISO image, yaitu iso grafis dan iso minimal. Tentu versi iso minimal tidak menyediakan tampilan untuk lingkungan deskop. Tampilannya hanya sebatas teks bewarna hitam dan putih untuk perintah terminal.
Iso minimal terdiri dari 3 arsitektur, yaitu:
- 64-bit Intel/AMD
- 64-bit ARM
- 32-bit Intel/AMD
Di bawah ini cara mengunduh via terminal menggunakan wget
. Misalnya mengunduh versi 23.11 dengan arsitektur 64-bit Intel/AMD.
Terminal
wget -c https://channels.nixos.org/nixos-23.11/latest-nixos-minimal-x86_64-linux.iso
Membuat bootable usb NixOS
Penulis mengasumsikan memasang di mesin fisik seperti laptop atau komputer. Jadi, pengguna perlu membuat bootable NixOS melalui flashdrive minimal 4Gib. Pembuatan bootable usb dapat menggunakan dd
, isoimagewriter
atau ventoy
.
Sebagai contoh, membuat bootable usb dengan flashdrive 8GB di sdb
dengan nama berkas iso latest-nixos-minimal-x86_64-linux.iso
.
Terminal
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 512M 0 part
├─sda2 8:2 0 40G 0 part
└─sda3 8:3 0 78.7G 0 part
sdb 8:16 0 8G 0 disk # <-- flashdrive
Membuat bootable usb dengan perkakas dd
.
Terminal
sudo dd if=latest-nixos-minimal-x86_64-linux.iso of=/dev/sdb bs=4M conv=fsync
Mengaktifkan layanan koneksi jaringan
Setelah berhasil live usb menggunakan bootable, maka selanjutnya bagian pemasangan sistem operasi. Tetapi sebelum melakukan pemasangan, jika menggunakan laptop yang koneksi internetnya menggunakan wificard maka perlu mengkoneksikannya dahulu, sebab pemasangan NixOS menggunakan koneksi internet. Jika menggunakan kabel LAN tidak perlu melakukan hal ini.
Pertama, masuk ke dalam mode root agar dapat mengeksekusi perintah tanpa menambahkan sudo
.
Terminal
sudo -i
Mengaktifkan layanan wpa_supplicant
.
Terminal
systemctl start wpa_supplicant
Kemudian jalankan wpa_cli
secara interaktif untuk menyambungkan koneksi internet. nama_ssid_wifi
dan kata_sandi_wifi
disesuaikan dengan kondisinya.
Terminal
wpa_cli
> add_network
> set_network 0 ssid "nama_ssid_wifi"
> set_network 0 psk "kata_sandi_wifi"
> set_network 0 key_mgmt WPA-PSK
> enable_network 0
> exit
Setelah berhasil memasang NixOS penulis sarankan untuk menggunakan iwctl
dari pada menggunakan wpa_cli
(NetworkManager). Penulis akan menjelaskannya di bagian terakhir setelah pemasangan NixOS.
Melakukan pemartisian media penyimpanan
Skema partisi
Pemilihan partisi adalah bagian yang cukup rumit bagi sebagian pengguna distribusi linux, terlebih lagi untuk awam. Penulis akan mencoba untuk menyederhanakannya dengan variasi ukuran penyimpanan disk yang berbeda.
Ukuran | /boot |
/ |
/home |
linux-swap |
---|---|---|---|---|
120 GB | 512 MB | 80 GB | ∞ GB | 8GB |
256 GB | 512 MB | 100 GB | ∞ GB | 16GB |
512 GB | 512 MB | 150 GB | ∞ GB | 32GB |
1 TB | 512 MB | 200 GB | ∞ GB | 32GB |
Partisi linux-swap
digunakan jika RAM yang digunakan memiliki ukuran yang terbatas, misalnya di bawah 4 GB. Sehingga pembuatan linux-swap
sebagai pilihan saja dan tidak harus dibuat.
Tanda infinity ∞ diartikan sebagai sisa dari partisi yang ada, tergantung dari penggunaan jumlah partisi yang ditentukan.
Pembagian partisi
Dalam skema diatas, sebagai contoh penulis mencoba menggunakan salah satu penyimpanan dengan 120 GB agar lebih mudah dipahami. Penyimpanan disk tersebut diasumsikan boleh dihapus semua datanya, alias mencoba membuat ulang sistem partisi dari awal agar lebih rapi.
Jadi, skema yang digunakan seperti ini:
Partisi | Ukuran | Label | Format |
---|---|---|---|
/boot |
512 MB | nixos_boot |
fat32 |
/ |
80 GB | nixos_root |
ext4 |
/home |
31.5 GB | nixos_home |
ext4 |
linux-swap |
8 GB | nixos_swap |
linux-swap |
Nama label (nixos_boot
, nixos_root
, nixos_home
dan nixos_swap
) dibuat seperti tabel diatas agar lebih mudah dipahami.
Pastikan Anda sudah masuk ke mode root dengan sudo -i
sebelumnya.
Penulis menggunakan partisi skema GPT untuk mendukung UEFI di partisi /dev/sda
,
Terminal
parted /dev/sda -- mklabel gpt
Membuat partisi UEFI yang berukuran 1MB sampai 512MB.
Terminal
parted /dev/sda -- mkpart nixos_boot fat32 1MB 512MB
parted /dev/sda -- set 3 esp on
Jika berencana tanpa menggunakan linux-swap
, maka ganti set 3
menjadi set 2
.
Selanjutnya, membuat partisi /
untuk sistem yang berukuran 512MB sampai 80 GB.
Terminal
parted /dev/sda -- mkpart nixos_root ext4 512MB 80GB
Membuat partisi /home
untuk penyimpanan data pengguna yang berukuran 80 GB sampai batas yang tersisa 8GB di ujung belakang.
Terminal
parted /dev/sda -- mkpart nixos_home ext4 80GB -8GB
Jika tanpa menggunakan linux-swap
maka jangkauan partisi sampai 100% sampai ujung belakang.
Terminal
parted /dev/sda -- mkpart nixos_home ext4 80GB 100%
Membuat partisi linux-swap
sebagai pilihan alternatif RAM.
Terminal
parted /dev/sda -- mkpart nixos_swap linux-swap -8GB 100%
Pemformatan partisi
Setelah pembagian partisi dengan parted
selesai dilakukan, maka dilanjutkan untuk memformat ke tipe file system yang telah ditentukan.
Partisi | Label | Format |
---|---|---|
/boot |
nixos_boot |
fat32 |
/ |
nixos_root |
ext4 |
/home |
nixos_home |
ext4 |
linux-swap |
nixos_swap |
linux-swap |
Jalankan perintah dibawah ini (sesuai dengan skema di atas).
Terminal
mkfs.fat -F 32 -n nixos_boot /dev/sda1
mkfs.ext4 -L nixos_root /dev/sda2
mkfs.ext4 -L nixos_home /dev/sda3
mkswap -L nixos_swap /dev/sda4
Menautkan partisi target pamasangan
Target pemasangan sistem operasi di NixOS biasanya dilakukan di direktori /mnt
, sehingga partisi /
yang sudah diformat sebelumnya dikaitkan ke /mnt
terlebih dahulu.
Terminal
mount /dev/disk/by-label/nixos_root /mnt
Kaitkan partisi /boot
. Jika Anda menggunakan sistem bios UEFI maka di dalam partisi NixOS tetap menggunakan partisi /boot
bukan /boot/efi
, karena NixOS akan membuat direktori efi
secara otomatis. Jadi, baik bios Legacy maupun UEFI tetap menggunakan /boot
.
Terminal
mkdir -p /mnt/boot
mount /dev/disk/by-label/nixos_boot /mnt/boot
Kemudian kaitkan /home
.
Terminal
mkdir -p /mnt/home
mount /dev/disk/by-label/nixos_home /mnt/home
Aktifkan partisi linux-swap
jika memang telah dibuat partisinya.
Terminal
swapon /dev/sda4
Membuat dan mengatur konfigurasi sistem
NixOS menggunakan konfigurasi deklaratif model sehingga perlu membuat configuration.nix
untuk mengatur semua konfigurasi sistem operasi. Untuk membuat konfigurasi tersebut hanya perlu menjalankan nixos-generate-config
.
Terminal
nixos-generate-config --root /mnt
Hasilnya menciptakan berkas configuration.nix
dan hardware-configuration.nix
di direktori /mnt/etc/nixos/
. Kemudian ganti beberapa pengaturan untuk disesuaikan.
├── configuration.nix
└── hardware-configuration.nix
configuration.nix
berisi pengaturan sistem nixos.hardware-configuration.nix
berisi pengaturan partisi file system.
Saat ini teks editor yang terpasang di livecd hanya nano
.
Terminal
nano /mnt/etc/nixos/configuration.nix
Penulis sarankan untuk menggunakan konfigurasi seperti dibawah ini.
/mnt/etc/nixos/configuration.nix
{ config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
1 services.xserver.enable = false;
2 services.xserver.displayManager.sddm.enable = false;
3 services.xserver.desktopManager.plasma5.enable = false;
4 users.users."nama_akun" = {
isNormalUser = true;
extraGroups = [ "wheel" ];
5 packages = with pkgs; [
helix
git
udisks
zellij
];
};
networking = {
6 hostName = "nixos";
wireless = {
7 enable = false;
8 iwd = {
enable = true;
settings = {
Settings = {
AutoConnect = true;
};
};
};
};
};
environment.systemPackages = with pkgs; [
wget
];
9 system.stateVersion = "23.11";
}
- 1
-
Ganti ke
false
. Menonaktifkan X server, karena tidak perlu memasang lingkungan desktop. - 2
-
Ganti ke
false
. Menonaktifkan login manager SDDM. - 3
-
Ganti ke
false
. Menonaktifkan Plasma lingkungan desktop. - 4
-
Membuat nama pengguna. Misalnya
nama_akun
. - 5
-
Memasang beberapa paket dasar. Antara lain:
helix
sebagai teks editor. Bisa diganti denganvim
,neovim
,micro
atau cli editor lainnya.zellij
sebagai manajemen sesi terminal agar lebih produktif.udisks
untuk mengaitkan partisi eksternal agar lebih mudah. Dangit
sebagai version control. - 6
-
Nama hostname komputer. Misalnya
nixos
. - 7
-
Ganti ke
false
. Menonaktifkan paketwpa_supplicant
. - 8
-
Mengaktifkan paket
iwd
(internet wireless daemon) atauiwctl
sebagai penggantiwpa_supplicant
. - 9
- Nomer versi rilis NixOS.
Kemudian tekan Ctrl-oCtrl-o untuk menyimpan, lalu EnterEnter. Dan Ctrl-xCtrl-x untuk keluar dari nano editor.
Pemasangan sistem operasi
Setelah berhasil menautkan partisi ke direktori /mnt
maka proses selanjutnya adalah pemasangan sistem operasi. Pastikan koneksi internet yang digunakan lancar, kemudian jalankan perintah di bawah ini.
Terminal
nixos-install
Jika gagal akibat kesalahan konfigurasi configuration.nix
, Anda dapat mengulangi lagi nixos-install
setelah memperbaiki konfigurasinya.
Setelah beberapa tahapan pengguna akan diminta untuk memasukkan kata sandi dua kali untuk pengguna root
.
Terminal
setting root password...
New password: *****
Retype new password: *****
Setelah berjalan lancar maka waktunya untuk memuat ulang sistem (restart).
Terminal
reboot
Lalu cabut flashdrive yang sudah terpasang sebelumnya.
Mengatur sandi untuk pengguna baru
Nyalakan kembali komputer. Login dengan nama pengguna root
dan masukkan kata sandi yang sudah diatur.
Buat kata sandi untuk nama pengguna baru yang sudah dikonfigurasi di configuration.nix
, misalnya nama_akun
.
Terminal
passwd nama_akun
Menyambungkan koneksi internet dengan iwctl
Sebagai contoh menggunakan device wlan0
dan nama ssid Wifi Kantor
.
Terminal
iwctl device list
iwctl station wlan0 scan
iwctl station wlan0 get-networks
iwctl station wlan0 connect "Wifi Kantor"
Melakukan perubahan sistem
Setiap perubahan yang dibuat seperti memasang perangkat lunak baru, konfigurasi layanan, konfigurasi pengaturan dan sebagainya di configuration.nix
. Pengguna harus membangun ulang dengan nixos-rebuild
. Setiap kali melakukan perubahan sistem maka akan tampil di daftar pilihan grub saat memulai sistem.
Terminal
sudo nixos-rebuild switch
Jika hanya ingin tahu proses yang dilakukan, tetapi tidak sampai membangun ulang dan tidak tampil di daftar grub. Maka menggunakan opsi dry-build
.
Terminal
sudo nixos-rebuild dry-build
Kesimpulan dari penulis
Tujuan dari pemasangan dengan iso minimal adalah mengurangi paket yang tidak dibutuhkan sehingga penyimpanan disk lebih minimalis hanya perangkat lunak yang diperlukan saja yang dipasang. Pemasangan NixOS dengan minimalis iso hampir mirip instalasinya dengan Arch linux, karena sama-sama manual. Tetapi NixOS hanya sebatas menautkan partisi lalu pemasangan dilakukan dengan teknik chroot.
Pemasangan menggunakan iso minimal memanglah tidak seperti di edisi iso grafis yang terdapat lingkungan destop Plasma atau GNOME. Di iso minimal diperlukan tahapan yang lebih banyak, terlebih lagi harus diketik satu-persatu perintahnya. Hal ini akan menjadi tantangan sendiri bagi sebagian pengguna.
Setelah pemasangan berhasil dilakukan, memasang home-manager menjadi suatu pilihan yang disarankan. Home manager dapat memanajemen setiap berkas di ~/.config
atau di direktori lainnya. Home-manager bukan bagian dari NixOS sendiri tetapi sangat bermanfaat dengan pilihan konfigurasinya (Rossman 2023).
Apa yang penulis dapatkan ketika menggunakan Nix dan NixOS? pastinya merasa tertantang. Bagaimana tidak, dengan nix mempelajari banyak hal baru seperti:
- Belajar Nix, sebagai manager paket secara deklaratif.
- Belajar menggunakan Home manager, untuk manajemen konfigurasi di sisi pengguna.
- Belajar mendeklarasikan setiap berkas konfigurasi menjadi berkas
.nix
. Karena tidak semuanya bisa di konversi ke.nix
, misalnya format.kdl
. - Belajar Git lebih dalam. Karena setiap kode sumber dotfiles dikirim ke repositori git. Penulis menggunakan sourcehut sebagai repositori penyimpanan utama git.
Baik, itu saja panduan pemasangan NixOS dengan iso minimal. Jika Anda mempunyai pertanyaan, saran, dan kritikan silahkan kirim ke email atau telegram atau instagram. Semoga tulisan ini bermanfaat untuk pembaca semuanya.
References
Reuse
Citation
@online{qurrotul ainur2024,
author = {Qurrotul Ainur, Hervy},
title = {Bagaimana {Cara} {Memasang} {NixOS} Dengan {ISO} {Minimal}},
date = {2024-03-25},
url = {https://hervyqa.dev/blog/bagaimana-cara-memasang-nixos-dengan-iso-minimal},
langid = {en}
}