| 
				
					
						 | 
			||
|---|---|---|
| .. | ||
| .vscode | ||
| css | ||
| images | ||
| templates | ||
| .envrc | ||
| .gitconfig | ||
| .gitignore | ||
| README.md | ||
| about.rst | ||
| config.dhall | ||
| contact.markdown | ||
| flake.lock | ||
| flake.nix | ||
| generatePosts.sh | ||
| hakyll-site.sh | ||
| index.html | ||
| site.hs | ||
| website.cabal | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	Cute Seal Fanpage
An experiment using Nix, Hakyll, Haskell, and shell scripts to automate a simple website deployment pipeline.
Why Seals?
It's an in-joke.
What's all this code?
seal-blog/
- 
devops/
- 
build.sh
- Uses a nix-shell expression to build the Hakyll executable
 
 - 
configuration.nix
- The configuration file for the NixOS production server. This takes care of installing all the necessary software, setup Nginx, and get ACME certs for verification.
 
 - 
newSealPost.sh
- Script to be called daily by a cron job on the server. Generates the post for the day, builds and commits.
 
 
 - 
 - 
website/
- A basic Hakyll site, slightly modified to serve seals. Most of the site is generated from the 
site.hsfile. Check the Hakyll documentation for more info. 
 - A basic Hakyll site, slightly modified to serve seals. Most of the site is generated from the 
 
Work to be done
- The blog post generation and the hosting of the website are currently intertwined when they should be separated
- Seal post generator just makes posts
 - Hakyll blog imports or calls the post generator
 - The deployed server/nix config file has a cron job for adding a new blog and committing every day
 
 - Need to move the blog and post generation inside nixos-apps on my beefier server
- The configuration file here is for it's own Linode, the current small one running, but I have a better setup for that now
 - Pull out the useful parts for my deployed server, remove anything not necessary for a small config file
 - Also switch to using caddy if not already
 
 - Experiment with 
*A records- For the seal blog
 - Instead of having 
wwwandgitand...subdomains spelled out in Namecheap - Just have a 
*record and have caddy do the filtering