mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-02-07 12:19:31 +00:00
22 lines
1.6 KiB
Org Mode
22 lines
1.6 KiB
Org Mode
#+title: Nix package manager
|
|
#+author: "Gabriel Arazas"
|
|
#+email: "foo.dogsquared@gmail.com"
|
|
#+date: "2020-09-04 16:07:47 +08:00"
|
|
#+date_modified: "2020-09-09 05:25:03 +08:00"
|
|
#+language: en
|
|
#+options: toc:t
|
|
|
|
|
|
[[https://nixos.org/][Nix]] is a package manager that pioneered [[file:2020-09-19-08-31-48.org][Functional package management]] which addresses the criticisms of traditional Unix systems while making it as a specialized tool for [[file:2020-04-12-11-20-53.org][Reproducible research]].
|
|
Holistically, Nix is made up of at least four components: the store, the language, the derivations, and the sandbox.
|
|
|
|
- The store is a immutable centralized location where all of the outputs are placed.
|
|
- The derivations are essentially build instructions.
|
|
- The language (also called as Nix but we'll refer to it as Nixlang) is a domain-specific language for creating derivations.
|
|
- The build process can be locked in a sandbox, improving the reproducibility of a setup and lowering the attack surface for a malicious package.
|
|
|
|
Furthermore, it also offers one of the must-haves as a power user (in my opinion) which is declarative configuration.
|
|
You can write the whole system configuration in a plain-text file giving you all of the little knobs and switches of the system.
|
|
Even then, it also applies some abstraction if you don't want the full control which is an attractive option if you're looking for a quick setup.
|
|
Finally, they are suitable to be used under a version control system like Git and Subversion giving more room for experimentation [fn:: As if the rollback feature for NixOS wasn't enough.] and control.
|