Bagaimana Cara Memasang NixOS dengan ISO Minimal

Beberapa hal yang perlu dipersiapkan oleh pengguna agar lancar melakukan pemasangan NixOS dengan iso minimal.
linux
development
Author
Published

March 25, 2024

Modified

March 25, 2024

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.

  1. Memahami perintah dasar linux. Seperti cd, ls, mv, ln dan sebagainya.
  2. Memahami salah satu teks editor cli. Seperti nano, vim, nvim, helix, micro atau lainnya.
  3. Memahami cara menyambungkan jaringan internet menggunakan wpa_supplicant atau iwd dengan iwctl (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.

Pemartisian

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.

Mode root

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 dengan vim, neovim, micro atau cli editor lainnya. zellij sebagai manajemen sesi terminal agar lebih produktif. udisks untuk mengaitkan partisi eksternal agar lebih mudah. Dan git sebagai version control.
6
Nama hostname komputer. Misalnya nixos.
7
Ganti ke false. Menonaktifkan paket wpa_supplicant.
8
Mengaktifkan paket iwd (internet wireless daemon) atau iwctl sebagai pengganti wpa_supplicant.
9
Nomer versi rilis NixOS.

Kemudian tekan Ctrl-o untuk menyimpan, lalu Enter. Dan Ctrl-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

Kuan, Jethro. 2018. “A Year with NixOS.” September 23, 2018. https://medium.com/@jethroksy/a-year-with-nixos-113b534f446b.
Rossman, Drake. 2023. “Why and How to Add Home Manager to NixOS.” June 24, 2023. https://drakerossman.com/blog/how-to-add-home-manager-to-nixos.

Reuse

Citation

BibTeX citation:
@online{qurrotul2024,
  author = {Qurrotul, 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}
}
For attribution, please cite this work as:
Qurrotul, Hervy. 2024. “Bagaimana Cara Memasang NixOS Dengan ISO Minimal.” March 25, 2024. https://hervyqa.dev/blog/bagaimana-cara-memasang-nixos-dengan-iso-minimal.