Evan Harmon - Memex

NixOS

NixOS is a free and open-source Linux distribution based on the purely functional Nix package manager. NixOS is composed using modules and packages defined in the nixpkgs project.
wikipedia:: NixOS
url:: NixOS

A NixOS system is configured by writing a specification of the functionality that the user wants on their machine in a global configuration file (typically located in /etc/nixos). The following is a minimal configuration of a machine running an SSH daemon:[15]

{
  boot.loader.grub.device = "/dev/sda";
  fileSystems."/".device = "/dev/sda1";
  services.sshd.enable = true;
}

Nix shell

  • Say Goodbye to Containers - Ephemeral Environments with Nix Shell
    • Solves some things that seem like no one is really trying to solve yet. Operates at an interesting area between OS, virtual machines, containers, packages, and virtual environments. So I guess that's part of the hole it's plugging - packages you can't install virtually and that need to operate at the OS level. With python, js, csharp, etc. you can use virtual environments, but some things can't and need to be at the os/global level and thus have those downsides. Containers really help but often can't operate at the global level either and have their own downsides and are way heavier than just installing the packages themselves. Whenever I need to install a language I always try to use some kind of version manager wrapper like nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions but they certainly aren't ephemeral and aren't perfect. I'll keep an eye on nix shell to see how good it gets on mac for this kind of thing. It's this kind of complexity that people just give up on and want to use a remote thing like GitHub Codespaces, etc. so hopefully this can help keep local development easier.

Sources

NixOS
Interactive graph
On this page
NixOS
Nix shell
Sources