109 lines
3.2 KiB
Plaintext
109 lines
3.2 KiB
Plaintext
|
#show link: underline
|
|||
|
#set text(
|
|||
|
font: "ETBembo",
|
|||
|
size: 10pt)
|
|||
|
#set page(
|
|||
|
paper: "a4",
|
|||
|
margin: (x: 1cm, y: 1cm),
|
|||
|
)
|
|||
|
#set par(
|
|||
|
justify: true,
|
|||
|
leading: 0.52em,
|
|||
|
)
|
|||
|
|
|||
|
= Introduction
|
|||
|
#link("https://getzola.org")[Zola] is a static site generator
|
|||
|
\(similarly to the infamous #link("https://gohugo.io")[Hugo];, which you
|
|||
|
may have already heard of) and is written in Rust. It also happens to be
|
|||
|
the framework that this site is built on!
|
|||
|
|
|||
|
This blog post is a guide on setting up the site engine on NixOS
|
|||
|
specifically.
|
|||
|
|
|||
|
= Installation
|
|||
|
== Installing the package
|
|||
|
`zola` is packaged in the nix package repository, so you just
|
|||
|
declaratively add the package to your configuration as usual: For the
|
|||
|
purposes of this guide, zola can be installed either as a system or user
|
|||
|
package.
|
|||
|
|
|||
|
As a system package:
|
|||
|
|
|||
|
```nix
|
|||
|
{ pkgs, ... }: {
|
|||
|
# ...
|
|||
|
environment.systemPackages = with pkgs; [
|
|||
|
zola # Append the package name to the list
|
|||
|
];
|
|||
|
# ...
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
As a user package (with home-manager):
|
|||
|
|
|||
|
```nix
|
|||
|
{ pkgs, ... }: {
|
|||
|
# ...
|
|||
|
home.packages = with pkgs; [
|
|||
|
zola # Append the package name to the list
|
|||
|
];
|
|||
|
# ...
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Now that `zola` itself is installed, we can move on setting up the pages
|
|||
|
it serves - continue reading…
|
|||
|
|
|||
|
== Setting up a theme
|
|||
|
Zola actually has a section of its website showcasing several
|
|||
|
community-made themes which you can choose from to be the theme for your
|
|||
|
static site #link("https://getzola.org/themes/")[here];.
|
|||
|
|
|||
|
Simply choose a theme that you like \(demos are usually available for
|
|||
|
each theme listed) and follow its appropriate documentation to set it up - this site uses a version of the #link("https://www.getzola.org/themes/serene/")[serene theme] with my custom colours.
|
|||
|
|
|||
|
You can also make your own theme if
|
|||
|
that better suits you \(I recommend giving the
|
|||
|
#link("https://getzola.org/documentation")[documentation] a read if so).
|
|||
|
|
|||
|
== Setting up NGINX
|
|||
|
After selecting a theme \(or making your own) you should now have a
|
|||
|
directory somewhere on your server containing your static site. For the
|
|||
|
following snippet, we’ll assume this is at `/var/lib/blog`.
|
|||
|
|
|||
|
#link("https://nginx.com")[NGINX] is a popular webserver which we’re
|
|||
|
going to use for the purposes of hosting and serving our site. To do so,
|
|||
|
append the following somewhere in your configuration:
|
|||
|
|
|||
|
```nix
|
|||
|
# ...
|
|||
|
{
|
|||
|
# ...
|
|||
|
services.nginx = {
|
|||
|
enable = true;
|
|||
|
virtualHosts = {
|
|||
|
"blog" = {
|
|||
|
forceSSL = true;
|
|||
|
serverName = "blog.devraza.duckdns.org";
|
|||
|
root = "/var/lib/blog/public";
|
|||
|
};
|
|||
|
};
|
|||
|
};
|
|||
|
# ...
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Obviously, you'll want to change any of the values to better accomodate your needs.
|
|||
|
|
|||
|
= Finishing up
|
|||
|
You should now have your own static site built with Zola! You can use
|
|||
|
this for a bunch of things, like:
|
|||
|
- Your personal blog (as I’ve done)
|
|||
|
- A way to showcase your projects #link("https://blog.devraza.duckdns.org/projects")[(as I’ve also done)]
|
|||
|
- Hosting documentation (check out #link("https://www.getzola.org/themes/adidoks/")[this Zola theme])
|
|||
|
|
|||
|
=== Help, my changes aren't sticking!
|
|||
|
When you make new markdown files \(or any other changes to the structure of your
|
|||
|
site), remember to run `zola build` in your site directory
|
|||
|
\(`/var/lib/blog`) for the changes to #emph[build] into the actual site.
|