--- title: The Nix language date: 2024-11-26 permalink: daily/2024/11/26/the-nix-language tags: - software-development - linux - nix cta: ~ snippet: | Today, let's have a look at the Nix programming language. --- Yesterday, I wrote about [Nix the package manager][0]. 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][1] 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: ```nix services.nginx = { enable = true; serverNamesHashBucketSize = 256; }; ``` These are some of the packages I have installed on my laptop: ```nix 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][2], which is built with Nix: ```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 or one of the many open-sourced configurations on GitHub. [0]: {{site.url}}/daily/2024/11/25/nix-the-package-manager [1]: https://github.com/opdavies/dotfiles/tree/main/nix [2]: {{site.url}}/daily/2024/11/11/could-nix-and-devenv-replace-docker-compose