Building Reproducible Development Environment

One of the development team’s biggest challenges is having a consistent and reproducible environment between team members. The bigger the team or more teams working on the same project codebase, the issue is amplified. Different languages try to manage dependencies using a specifically inbuilt language-specific package manager.

For example, Python is using by de-facto pip as a Python package installer that is using Python Package Index repository. All dependencies can be declared in the requirements.txt file and installed with pip install -r requirements.txt Pypi is limited in managing consistent Python packages and versioning. New Python package managers try to solve the limitation of the pip like Data Science oriented Anaconda or Poetry that bring multiple improvements over pip with dependency management and packaging. Poetry is arguably Python’s most advanced dependency management option today by using a configuration file in toml format and generating project scaffolding, locking dependency in the *.lock file.

Google Cloud “GCP” Native NixOS Images Build

I am using NixOs as a Development environment that is running on Google Cloud VM.
NixOs official Web site does not provide an official GCP image. On the NixOs Wiki page, you can find an article how you can build your GCP NixOs Image that didn’t work well in the past but now seems all build image issue was resolved and now works well. NixOS Wiki page article also provides two GCP storage that you can find outdated GCP VM images that seem not actively maintained anymore.

  • nixos-images > gs://nixos-images
  • nixos-cloud-images > gs://nixos-images

In the below "HowTo," we will cover how you can build your images in GCP by using Google Cloud VM and store the images in your Google storage bucket.

NixOS Home Manager for Multi-User on NIX Flake Installation and Configuration

In the first article, we covered in detail NixOs native flake deployment.

Once you have your system up and running in a purely declarative way, the next step is to manage your personal configuration files located in $HOME /home folder. NixOs does not have any native implementation to manage user’s  $HOME  configuration folders and files. Few projects stepped in to help and manage users specific environments, and the most successful one is in Home Manager.

Customize Shell on Mac OSX

Get the shell layout you deserve

If you're an active Mac user that spends a good amount of time using shell, you may have noticed that the OSX Shell by default is bear bone and not very productive to use on a daily bases.

The question is, how we can make OSX shell more productive?