Jump to the navigation menu

The Nix language

Yesterday, I wrote about Nix the package manager.

To use it, you need to write code in the Nix language in .nix files.

To see an example, you can see my dotfiles on GitHub as well as lots of other people's that they've published.

It's a functional language so some of the concepts were new to me, but I picked it up fairly quickly and learned some of the paradigms and conventions.

This is the code that installs Nginx on my server:

services.nginx = {
  enable = true;
  serverNamesHashBucketSize = 256;
};

These are some of the packages I have installed on my laptop:

environment.systemPackages = with pkgs: {
  devenv
  dog
  git
  go
  jq
  php
  phpPackages.composer
  pv
  tldr
}

And this is how to configure processes in a devenv configuration, which is built with Nix:

processes = {
  tailwind.exec = ''
    cd ${drupal.theme.path}
    watchexec --exts css,twig tailwindcss --config assets/tailwind.config.ts \
      --output dist/tailwind.css
  '';
};

Once you have written the configuration, you can run it and install what you've specified, and it will do it the same way every time.

For a crash course in the Nix language, take a look at https://zero-to-nix.com/concepts/nix-language or one of the many open-sourced configurations on GitHub.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an Acquia-certified Drupal Triple Expert with 17 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.