oliverdavies.uk/source/_daily_emails/2024-11-26.md
2024-11-29 18:28:27 +00:00

1.7 KiB

title date permalink tags cta snippet
The Nix language 2024-11-26 daily/2024/11/26/the-nix-language
software-development
linux
nix
~ Today, let's have a look at the Nix programming 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.