mrfdn.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 Buat sebuah direkotory dengan nama ~/.dotfiles lalu cd ke folder ini. 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 . 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 ]; }; }; }; } Sekarang build system dengan menambahkan --flakes dan . (dot) pada akhir baris. sudo nixos-rebuild switch --flake . Tunggu proses build, dan selesai, anda sekarang sudah punya konfigurasi system yang dibuild menggunakan flakes. Cara menggunakan home-manager dengan flake Pastikan sudah install home-manager pada system, jika belum ikuti tutorial ini. Home manager stand alone installation Buat sebuah folder dengan nama home pada folder ~/dotfiles/ yang sudah dibuat. Setelah home manager terinstall, sekarang copy file ~/.config/home-manager/home.nix ke folder ~/.dotfiles/home/. 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.
...