Skip to content

Latest commit

 

History

History
146 lines (99 loc) · 6.38 KB

BACALAH.md

File metadata and controls

146 lines (99 loc) · 6.38 KB

Rin's Home 🏚

"BACALAH" juga tersedia dalam Bahasa Inggris.

Motivation

(DRY) - Don't repeat yourself sebuah prinsip dalam pengembangan perangkat lunak (software development). Prinsip tersebut harusnya kita gunakan untuk mengurangi pekerjaan yang berulang-ulang dan menghabiskan waktu. Secara pribadi saya hanya mencoba menerapkan prinsip tersebut dalam bekerja secara professional atau personal. Contoh paling dasar yakni membuat dotfiles ini, yah gunannya agar saya tak perlu menyediakan kebutuhan perangkat atau alat yang digunakan dalam sehari - hari. Maka, dari motivasi ini kamu dapat melihat tujuan utamanya (Goal).

Pekerjaan seorang pengembang perangkat lunak, perekayasa perangkat lunak, atau buruh perangkat lunak membutuhkan alat yang digunakan diatas sebuah sistem yang berjalan (istilahnya sistem operasi atau OS). Saya familiar dalam menggunakan sistem operasi seperti OSX yang berbasis Darwin/unix besutan si buah apple dan ArchLinux yang berbasis Linux. Yah tujuan saya untuk menjadi seorang manusia pengguna yang agnostik (tidak beragama terikat pada sebuah sistem tetapi tetap setia kepada pencipta pengguna, kecuali sistem operasi buatan Mikocok). Alat - alat tersebut dikumpulkan dalam satu tempat untuk menyimpan segala hal mengenai alat - alat, konfigurasi, pengaturan, kredensial, dan lain - lain yang menunjang kebutuhan bekerja atau sekedar mengoperasikan komputer. Wadah saya dimana ? di github ini, maka kita memerlukan git atau alat lain, yang jelas kita tetap sinkron diantara setiap mesin yang kita gunakan sehingga kita tidak melakukan hal yang berulang-ulang.

agar tetap murni dan sama antara setiap mesin maka saya memutuskan untuk menggunakan Nix.

Nix

Nix merupakan "purely functional package manager", pengalaman yang dirasakan oleh Nix benar - benar berbeda dari pada package manager yang lain. Untuk beberapa orang mungkin terlihat rumit untuk digunakan, namun hal tersebut sangat worth it jika kamu benar - benar paham apa yang kamu butuhkan.

Jika kamu pernah menggunakan "virtual env" alat yang populer di ekosistem "python" maka kamu dapat merasakan hal yang sama namun lintas sistem operasi, platform, dan ekosistem bahasa pemrograman.

Karena nix menggunakan konsep functional seperti declarative maka sebaiknya dimanfaatkan dengan baik. seperti mendeklarasikan kebutuhan lalu mendeklarasikan dengan bahasa nix.


Heavily inspired from (malob/nixpkgs).

This is my personal configuration with nix using flakes, home-manager, & nix-darwin for Darwin or MacOS System.

Structure

.
├── darwin.nix (Nix Darwin configuration)
├── default.nix (Support legacy nix)
├── flake.lock
├── flake.nix (Flake configuration)
├── flake.nix.simple (Example: currently NOT USED)
├── home (home-manager)
│   ├── activation.nix (Some script and configuration when activation the home manager)
│   ├── packages.nix (list packages per user)
│   └── shells.nix (shell configuration, default Fish shell with startship)
├── nixpkgs.nix (Support legacy nix)
├── pkgs (modules for overlay in flake.nix, mostly generated by related tools like node2nix)
│   └── node-packages
│       ├── README.md
│       ├── default.nix
│       ├── node-env.nix
│       ├── node-packages.json
│       └── node-packages.nix
└── result -> /nix/store/xxxxxxx (the result when completed run nix build)

4 directories, 15 files

Usage

Prerequisite

Nix

System Single User Multiple User Command
Linux Single UserMulti User
Darwin (MacOS) Multi User
More...
Linux Single User
sh <(curl -L https://nixos.org/nix/install) --daemon
Linux Multi User
sh <(curl -L https://nixos.org/nix/install) --no-daemon
Darwin Multi User
sh <(curl -L https://nixos.org/nix/install)

Enable experimental-features

In general installation of nix, the nix configuration is located in ~/.config/nix/nix.conf. You MUST be set the experimental-features before use this configuration.

experimental-features = nix-command flakes

// (optional) for distribution cache (DON'T COPY THIS COMMENT LINE)
substituters = https://cache.nixos.org https://cache.nixos.org/ https://r17.cachix.org

Setup

// with SSH

git clone git@github.com:r17x/nixpkgs ~/.config/nixpkgs

// OR with HTTP
git clone https://github.com/r17x/nixpkgs ~/.config/nixpkgs
  • Change directory to ~/.config/nixpkgs
cd ~/.config/nixpkgs
  • Run Build
    command for build: nix build .#darwinConfigurations.[NAME].system
    Available for [NAME]:
    • RG
nix build .#darwinConfigurations.RG.system
  • Apply from Result
    command for apply the result: ./result/sw/bin/darwin-rebuild switch --flake .#[NAME]
    Available for [NAME]:
    • RG
      After Run Build you can apply from ./result with this command
./result/sw/bin/darwin-rebuild switch --flake .#RG
  • Done 🚀🎉

Command List

  • drb - darwin rebuild aliases - rebuild this nixpkgs.
  • drs - darwin rebuild and switch the build version (make current build to current version of environment).
  • lenv - list of build version <VERSION>, that's usefull for switch aka rollback environment.
  • senv <VERSION> - switch spesific version (number).

Acknowledgement