diff --git a/source/_daily_emails/2024-11-26.md b/source/_daily_emails/2024-11-26.md new file mode 100644 index 00000000..20f500ee --- /dev/null +++ b/source/_daily_emails/2024-11-26.md @@ -0,0 +1,65 @@ +--- +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