Tutorial Step by Step Cara Build from Source dan Install DWMBLOCKS di Nixos
Belajar build from source github dan local source paket dwmblocks lalu install di Nixos.
mrfdn.com - Oke, berbicara soal NixOS dan “build from source,” ini memang bisa jadi hal yang menantang, terutama kalau belum terbiasa dengan sistem operasinya yang unik.
Tapi di sisi lain, begitu kita paham dasarnya, membangun sesuatu dari source di NixOS ternyata bisa jauh lebih bersih dan terkontrol dibanding OS lainnya.
Bayangkan, pertama kali saya mencoba build aplikasi dari source di NixOS, rasanya saya hampir menyerah.
Ini bukan seperti Ubuntu atau Arch di mana kita cukup clone repository, install dependencies, dan langsung make atau make install.
NixOS mengelola seluruh ekosistemnya dengan cara yang berbeda: lingkungan Nix yang terisolasi.
Yang menarik, setiap paket di NixOS sudah dikonfigurasikan dalam bentuk “nix expression” yang mendefinisikan bagaimana paket tersebut di-build. Dan di sinilah letak keunikan NixOS!
Di sini saya ingin mencoba build from souce DWMBLOCKS. Source nya bisa ditemukan di Github.
Daftar Isi
Clone source
Pertama clone dulu source file dwmblocks dari github.
git clone https://github.com/torrinfail/dwmblocks.git
Struktur folder
dwmblocks
├── blocks.def.h
├── default.nix
├── dwmblocks.c
├── LICENSE
├── Makefile
├── README.md
└── result -> /nix/store/sfs7b0h49gn9bsz71zcgnpkn9831m7xn-dwmblocks-1.0
Masuk ke folder Dwmblocks lalu buat file default.nix
Isi file default.nix dengan ini:
Build from local source
{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
pname = "dwmblocks";
version = "1.0";
# Use the current directory as the source
src = ./.; # kalau pakai local source build, kita bisa set custom config default.h
# Dependencies required to build dwmblocks
buildInputs = [
pkgs.gcc
pkgs.gnumake
pkgs.pkg-config
pkgs.xorg.libX11
pkgs.xorg.libxcb
pkgs.xorg.xcbutil
];
# Use the existing Makefile for the build process
buildPhase = ''
make
'';
# Install phase: copy the built binary to the output directory
installPhase = ''
mkdir -p $out/bin
cp dwmblocks $out/bin/
'';
# Optional metadata about the package
meta = with pkgs.lib; {
description = "An asynchronous modular status bar for dwm";
license = licenses.mit;
platforms = platforms.linux;
};
}
Build from git source
Kekurangan config build from github source berikut ini adalah kita tidak bisa menambahkan config sendiri.
{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
pname = "dwmblocks";
version = "1.0";
# Fetch the source from GitHub
src = pkgs.fetchFromGitHub {
owner = "torrinfail"; # Replace 'user' with the GitHub username
repo = "dwmblocks"; # Replace 'dwmblocks' with the repository name
rev = "master"; # Replace with the desired branch or commit hash
sha256 = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; # Ini pasti salah, temukan kode SHA245 dari hasil prompt nanti setelah build.
};
# Dependencies required to build dwmblocks
buildInputs = [
pkgs.gcc
pkgs.gnumake
pkgs.pkg-config
pkgs.xorg.libX11
pkgs.xorg.libxcb
pkgs.xorg.xcbutil
];
# Use the existing Makefile for the build process
buildPhase = ''
make
'';
# Install phase: copy the built binary to the output directory
installPhase = ''
mkdir -p $out/bin
cp dwmblocks $out/bin/
'';
# Optional metadata about the package
meta = with pkgs.lib; {
description = "An asynchronous modular status bar for dwm";
license = licenses.mit;
platforms = platforms.linux;
};
}
Build Dwmblocks
Masuk ke folder dwmblocks yang memiliki file default.nix tadi.
Build dengan perintah sudo nix-build
Setelah dibuild, akan ada folder ./result/
dwmblocks bisa dieksekusi di ./result/bin/dwmblocks
Install secara global supaya bisa dieksekusi kapanpun dimanapun
Proses build hanya proses mengcompile, saatnya install aplikasi dwmblocks di system.
Masih di folder dwmblocks, selanjutnya install dengan cara:
nix profile install ./result
Sekarang kita bisa eksekusi perintah dwmblocks dimanapun, kapanpun.
Remove / hapus aplikasi yang sudah dibuat tadi
nix profile remove dwmblocks
Tips
Apabila kita melakukan sejumlah configurasi pada file default.def.h, maka setelah dibuild kita tidak bisa langsung install, tetapi kita harus hapus dulu dari nix profile lalu install lagi.
Demikian, tutorial build from source DWMBLOCKS di Nixos.
Semoga bermanfaat.