Tutorial Step by Step Cara Build from Source dan Install DWMBLOCKS di Nixos

mrfdn author

Rafi

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.

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