83 lines
1.7 KiB
Markdown
83 lines
1.7 KiB
Markdown
---
|
|
title: Setting up a SSG on NixOs with nginx
|
|
description: Using hugo we can compile a project into a static site which can be later served with Nginx
|
|
date: 2024-04-24 00:00:00+0000
|
|
image: daniele-levis-pelusi-YKsqkazGaOw-unsplash.jpg
|
|
categories:
|
|
- Nix
|
|
- Guide
|
|
|
|
tags:
|
|
- Nix
|
|
- Nginx
|
|
- Short
|
|
- Hugo
|
|
draft: false
|
|
---
|
|
|
|
## Overview
|
|
|
|
After conducting research and finding insufficient guidance online on how to properly set up a Hugo site
|
|
with nginx, I decided to create my own guide. I will provide you with step-by-step instructions on how to
|
|
compile your Hugo project into a static site, which can then be served through nginx's `root` option.
|
|
|
|
## Defining the derivation to build the site
|
|
|
|
```nix
|
|
# /website/default.nix
|
|
{ pkgs }:
|
|
|
|
pkgs.stdenv.mkDerivation rec {
|
|
name = "website";
|
|
version = "0.1.0";
|
|
src = /home/user/website;
|
|
|
|
buildInputs = with pkgs; [ hugo ];
|
|
dontConfigure = true;
|
|
|
|
buildPhase = ''
|
|
cp -r $src/* .
|
|
${pkgs.hugo}/bin/hugo
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r public/* $out/
|
|
'';
|
|
}
|
|
```
|
|
|
|
## Setting up Nginx
|
|
|
|
```nix
|
|
# /services/nginx.nix
|
|
{...}: {
|
|
services.nginx = {
|
|
enable = true;
|
|
virtualHosts = {
|
|
"example.com" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
|
|
locations."/" = {
|
|
# Relative path to current file
|
|
root = pkgs.callPackage ../website/default.nix { };
|
|
};
|
|
# setting error page as hugo error page
|
|
extraConfig = ''
|
|
error_page 404 /404.html;
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
## Rebuild the system
|
|
|
|
After importing this module to your `flake.nix`/`configuration.nix` you can rebuild the system and see that the site is up!
|
|
|
|
```bash
|
|
sudo nixos-rebuild switch
|
|
```
|