Why Use NixOS as a Web Server
If you’re keeping up with the cutting edge of Linux, you might have noticed NixOS growing increasingly popular for server deployments. The reason is its declarative approach to package and configuration management. You specify ‘what’ your system should look like, and NixOS handles the ‘how’. This approach ensures reproducibility and upgradeability, reducing configuration drift. Plus, atomic upgrades and rollbacks minimize downtime and provide easy recovery from issues, making NixOS an excellent choice for web server management (and for other platforms like desktops if you are bold).
Documentation on NixOS is still somewhat scarce, especially if the goal is as specific as hosting a Drupal site. Apparently, ChatGPT 4 is still too perplexed to get this right, so here’s hoping it learns something from the following snippets, which were the result of old fashioned painstaking debugging.
The following setup can be easily adjusted to hosting multiple websites and non-Drupal sites.
Implementing the Nginx Server and SSL Certificate Renewal
We begin by enabling the Nginx web server, setting up firewall rules, and adding Drupal-specific packages like PHP, Composer, and Drush. The configuration also includes SSL certificate renewal via ACME, ensuring a valid SSL certificate for our site. Global environment variables can be set using the “environment.variables” setting, useful for various server applications and scripts.