From d6ef3d511c94e7d9d755126403583051da2bf3ab Mon Sep 17 00:00:00 2001 From: bluepython508 Date: Tue, 5 Mar 2024 09:39:03 +0000 Subject: [PATCH] Initial Setup Tooling: nix/direnv to ensure dependencies are present jinja-based templating to avoid duplication of common sections of pages (header and footer, primarily) auto-rebuilding server for rapid iteration --- .envrc | 2 ++ .gitignore | 2 ++ base.html | 10 ++++++++++ flake.lock | 39 +++++++++++++++++++++++++++++++++++++++ flake.nix | 25 +++++++++++++++++++++++++ justfile | 21 +++++++++++++++++++++ pages/index.html | 5 +++++ static/.gitkeep | 0 8 files changed, 104 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 base.html create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 justfile create mode 100644 pages/index.html create mode 100644 static/.gitkeep diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..e3fecb3 --- /dev/null +++ b/.envrc @@ -0,0 +1,2 @@ +use flake + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d6459fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/build/ +/.direnv/ diff --git a/base.html b/base.html new file mode 100644 index 0000000..3864be1 --- /dev/null +++ b/base.html @@ -0,0 +1,10 @@ + + + + {% block title %}{% endblock title %} + + + +{% block main %}{% endblock main %} + + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c639111 --- /dev/null +++ b/flake.lock @@ -0,0 +1,39 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1708118438, + "narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", + "path": "/nix/store/bg5fbkfa5x53clcjf4p5p92k1l3w8x38-source", + "rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "id": "systems", + "type": "indirect" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..6b2428d --- /dev/null +++ b/flake.nix @@ -0,0 +1,25 @@ +{ + outputs = { + nixpkgs, + systems, + self, + }: let + eachSystem = f: + nixpkgs.lib.genAttrs (import systems) (system: + f { + inherit system; + pkgs = nixpkgs.legacyPackages.${system}; + }); + in { + devShells = eachSystem ({pkgs, ...}: { + default = pkgs.mkShell { + packages = with pkgs; [ + just + simple-http-server + watchexec + (python3.withPackages (ps: with ps; [jinja2])) + ]; + }; + }); + }; +} diff --git a/justfile b/justfile new file mode 100644 index 0000000..b5d4dd8 --- /dev/null +++ b/justfile @@ -0,0 +1,21 @@ +dir: + mkdir -p build + +template: dir + #!/usr/bin/env python3 + from jinja2 import Environment, FileSystemLoader + from glob import glob + env = Environment(loader=FileSystemLoader('.')) + for file in glob("*", root_dir="pages/"): + with open(f"build/{file}", "w") as out: + out.write(env.get_template(f"pages/{file}").render()) + +build: template + cp -r static/ build/ + +serve: build + simple-http-server --index --nocache build/ + +watch: + watchexec --restart -- just serve + diff --git a/pages/index.html b/pages/index.html new file mode 100644 index 0000000..8d6f7c1 --- /dev/null +++ b/pages/index.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} +{% block title %}Home{% endblock %} +{% block main %} +

Some body content

+{% endblock %} diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000..e69de29