package management

Nix, NixOS and NixPkgs allows us to to create project-specific development environments with project-specific dependencies (this usually means things like a C project, or a Python project... etc). The way this is done is different for every language community within the Nix ecosystem. The most well developed patterns would be the C/C++, Haskell and Python community, other language communities tend to be smaller and has less documentation. This article serves as an introduction to using Nix for developing projects in different languages that we have worked with. This means we will only focus on shell.nix. Remember that Nix…

Today, the most common way for developers to address a dependency is through the use of semantic versioning. This is where you create project A that depends on B at 1.2.3, where 1 is the major version, 2 is the minor version and 3 is the patch version. Accordingly, the rules of following semantic versioning means: Major versions change when you make incompatible API changes. Minor versions change when you add functionality in a backwards-compatible manner. Patch versions change when you make backwards-compatible bug fixes. Theoretically you should be able to update patch and minor versions of dependencies…