New laptop - Thinkpad P14s

underEnglish, Nix, Nixos, Gentoo

~4.5 years ago I bought Dell XPS 15. It was a powerhorse without a match for that size/price. I must admit that I wasn’t happy about it: Webcam is positioned below the screen, recording my typing fingers instead of my face. Battery getting swollen (and being forced to fly that way wasn’t fun), after replacing it happened again. The CPU fan is loud and throttles a lot. There’s only one company in Slovenia that does warranty repairs and takes the law-specified 40 working days to finish their job (replacing a battery, for example). Too heavy (over 2kg) I’ve decided to go back to Thinkpads, as they are unmatched by the overall experience and quality to run Linux.

Announcing Cachix - Binary Cache as a Service

underEnglish, Nix, Nixos, Elm, Haskell, Gentoo

In the last 6 years working with Nix and mostly in last two years full-time, I’ve noticed a few patterns. These are mostly direct or indirect result of not having a “good enough” infrastructure to support how much Nix has grown (1600+ contributors, 1500 pull requests per month). Without further ado, I am announcing https://cachix.org - Binary Cache as a Service that is ready to be used after two months of work. What problem(s) does cachix solve? The main motivation is to save you time and compute resources waiting for your packages to build. By using a shared cache of already built packages, you’ll only have to build your project once.

Friends sometimes let friends curl to shell

underEnglish, Plone, Gentoo, Nix, Nixos

Every now and then (actually quite often), people complain on twitter they’re afraid of our simple bash installer for Nix package manager: $ bash <(curl https://nixos.org/nix/install) Example (from today): There are popular blog posts discouraging use of it. Ask yourself a question, how would package manager install itself? Via another package manager? If we assume nixos.org is not compromised (which is really hard to detect), using TLS to secure connection and with our simple trick to prevent partial download execution (you haven’t read the script yet, right?), what can really go wrong?

Why Puppet/Chef/Ansible aren't good enough (and we can do better)

underEnglish, Plone, Gentoo, Nix, Nixos

This particular blog post was sitting on my mind for a long time. I don’t want to start a flame war, but at the same time I also don’t wish for Linux community to build and grow upon ad-hoc solutions that we’ve accumulated over the last 30 years to the packaging and deployment problems. History of Linux automation Remember (old-timer?) Linux user typing commands into terminal that goes and mutates the state of the Linux machine. They’ll go and stop a process, change configuration file and start the process again. They’re the one connecting to the machine and making sure the state of the Linux machine is mutated correctly. Let’s call this method Imperative Configuration.

Getting started with Nix package manager

underEnglish, Plone, Gentoo, Nix, Nixos

Nix is a package manager implemented as a minimalistic functional language. Nix package, for example Nginx is a result of a function mkDerivation and Nix tries very hard for result to have two properties: No side-effects. Given the same input to the function, you should get the same binary package stored in Nix Store. Package in Nix Store is immutable. Nix supports Linux, OS X and FreeBSD platforms (probably others like Cygwin, but not as officially supported). Although Nix Manual is quite verbose about how to use Nix, I’ll explain in short how to bootstrap and get started.