Nixos Flakes Tutorial (system dan home-manager)

tentang cara setup system dan home manager menggunakan flakes di nixos.


JagoTekno.com - Flakes merupakan salah satu fitur terbaik yang dimiliki oleh nixos.

Dengan flakes kita bisa build system dari direktory manapun. Bukan lagi dari /etc/nixos/, tapi konfigurasi bisa disimpan pada folder ~/.dotfiles.

Ini terasa lebih gampang karena konfigurasi bisa disimpan di github, lalu ketika akan digunakan lagi tinggal di-clone saja lalu build.

Jika anda tertarik untuk build system menggunakan flakes, ikuti tutorial berikut, jangan diskip setiap step nya!

Folder structure

~/.dotfiles
.
├── configuration.nix
├── flake.lock
├── flake.nix
├── hardware-configuration.nix
└── home
    └── home.nix

Cara menggunakan flake untuk build system

  1. Buat sebuah direkotory dengan nama ~/.dotfiles lalu cd ke folder ini.
  2. Copy file /etc/nixos/configuration.nix dan /etc/nixos/hardware-configuration.nix ke .dotfiles yang baru saja dibuat
cd .dotfiles
cp /etc/nixos/configuration.nix .
cp /etc/nixos/hardware-configuration.nix .
  1. Buat sebuah file dengan nama flake.nix kemudian definsikan konfigurasi system disini.
{
  description = "My system flake";

  inputs = {
    # saya akan menggunakan nixos unstable
    nixpkgs.url = "nixpkgs/nixos-unstable";
  };

  outputs = { self,nixpkgs, ...}: 
  let 
    lib = nixpkgs.lib;
  in
    {
    nixosConfigurations = {
    # nixhost adalah nama hostname pada system saya, ganti ini sesuai system anda.
      nixhost = lib.nixosSystem {
        system = "x86_64-linux";
        modules = [ ./configuration.nix ];
      };
    };
  };
}
  1. Sekarang build system dengan menambahkan --flakes dan . (dot) pada akhir baris.
sudo nixos-rebuild switch --flake .
  1. Tunggu proses build, dan selesai, anda sekarang sudah punya konfigurasi system yang dibuild menggunakan flakes.

Cara menggunakan home-manager dengan flake

  1. Pastikan sudah install home-manager pada system, jika belum ikuti tutorial ini. Home manager stand alone installation
  2. Buat sebuah folder dengan nama home pada folder ~/dotfiles/ yang sudah dibuat.
  3. Setelah home manager terinstall, sekarang copy file ~/.config/home-manager/home.nix ke folder ~/.dotfiles/home/.
  4. Lalu edit file flake.nix sehingga menjadi seperti ini:
{
  description = "My Flake";

  inputs = {
    # I use nixos unstable channel
    nixpkgs.url = "nixpkgs/nixos-unstable";
    # I want to use branch master, which is default in home-manager, which will profide the latest app or the unstable version app
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self,nixpkgs, home-manager, ...}: 
  let 
    lib = nixpkgs.lib;
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.${system};
  in {
    nixosConfigurations = {
    # nixhost is my hostname, define it as yours.
      nixhost = lib.nixosSystem {
        inherit system; 
        modules = [ ./configuration.nix ];
      };
    };
    homeConfigurations = {
    # nix is my user name, make sure to change this
      nix = home-manager.lib.homeManagerConfiguration {
        inherit pkgs; 
        modules = [ ./home/home.nix ];
      };
    };

  };
}

Ingat untuk mengganti hostname dan username anda.

  1. Setelah itu build system dan jalankan perintah home-manager switch --flake .

Jika mendapatkan error saat build home-manager, jalankan ini:

sudo chown nix flake.lock

sudo chgrp users flake.lock

Bagaimana cara update?

Sekarang system sudah mantap dengan flakes.

Setiap kali ingin melakukan update, masuk ke folder ~/.dotfiles ini lalu jalankan perintah update berikut:

  1. nix flake update
  2. sudo nixos-rebuild switch --flake .

Tips

Push konfigurasi flake anda ke github biar lebih gampang dimanage.

Jangan pernah edit file hardware-configuration.nix jika tidak tahu apa yang akan dilakukan.

Jika mendapatkan pesan error seperti ini : warning: Git tree ‘/home/ is dirty, Jangan khawatir, tinggal lakukan git commit saja.

Demikian tutorial singkat cara menggunakan flakes untuk system dan home-manager nixos.

Semoga bermanfaat.

Cara Load Plain Javascript Svelte Astro
Ditulis oleh Rafi pada Tuesday, 14 November 2023
mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga


comments powered by Disqus