Migrate to blag
- Convert old html blogposts to markdown - Organize things into blag's folder structure - Adjust html and css templates
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
build
|
||||
12
Pipfile
Normal file
12
Pipfile
Normal file
@@ -0,0 +1,12 @@
|
||||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
blag = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[requires]
|
||||
python_version = "3.11"
|
||||
135
Pipfile.lock
generated
Normal file
135
Pipfile.lock
generated
Normal file
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "a9d754195ca27e1fbd200cf37e1caa75ebfac38c29f158a6f2d8b2bcc489b605"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.11"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"blag": {
|
||||
"hashes": [
|
||||
"sha256:505913e89aa4d5c5c6c66dc89487b3f547fbba90c5935a9e287595ac4e7c5e38",
|
||||
"sha256:8ba179d61b72fd427dc3092d9cf822a2e548648e58aa85730ac0160f76783edd"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==2.2.1"
|
||||
},
|
||||
"feedgenerator": {
|
||||
"hashes": [
|
||||
"sha256:93b7ce1c5a86195cafd6a8e9baf6a2a863ebd6d9905e840ce5778f73efd9a8d5",
|
||||
"sha256:f075f23f28fd227f097c36b212161c6cf012e1c6caaf7ff53d5d6bb02cd42b9d"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.1.0"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
"sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa",
|
||||
"sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.3"
|
||||
},
|
||||
"markdown": {
|
||||
"hashes": [
|
||||
"sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd",
|
||||
"sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.5.2"
|
||||
},
|
||||
"markupsafe": {
|
||||
"hashes": [
|
||||
"sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e",
|
||||
"sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e",
|
||||
"sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431",
|
||||
"sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686",
|
||||
"sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c",
|
||||
"sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559",
|
||||
"sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc",
|
||||
"sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb",
|
||||
"sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939",
|
||||
"sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c",
|
||||
"sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0",
|
||||
"sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4",
|
||||
"sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9",
|
||||
"sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575",
|
||||
"sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba",
|
||||
"sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d",
|
||||
"sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd",
|
||||
"sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3",
|
||||
"sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00",
|
||||
"sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155",
|
||||
"sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac",
|
||||
"sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52",
|
||||
"sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f",
|
||||
"sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8",
|
||||
"sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b",
|
||||
"sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007",
|
||||
"sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24",
|
||||
"sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea",
|
||||
"sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198",
|
||||
"sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0",
|
||||
"sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee",
|
||||
"sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be",
|
||||
"sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2",
|
||||
"sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1",
|
||||
"sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707",
|
||||
"sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6",
|
||||
"sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c",
|
||||
"sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58",
|
||||
"sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823",
|
||||
"sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779",
|
||||
"sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636",
|
||||
"sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c",
|
||||
"sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad",
|
||||
"sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee",
|
||||
"sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc",
|
||||
"sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2",
|
||||
"sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48",
|
||||
"sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7",
|
||||
"sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e",
|
||||
"sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b",
|
||||
"sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa",
|
||||
"sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5",
|
||||
"sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e",
|
||||
"sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb",
|
||||
"sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9",
|
||||
"sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57",
|
||||
"sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc",
|
||||
"sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc",
|
||||
"sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2",
|
||||
"sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.1.3"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c",
|
||||
"sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.17.2"
|
||||
},
|
||||
"pytz": {
|
||||
"hashes": [
|
||||
"sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b",
|
||||
"sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"
|
||||
],
|
||||
"version": "==2023.3.post1"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
||||
6
config.ini
Normal file
6
config.ini
Normal file
@@ -0,0 +1,6 @@
|
||||
[main]
|
||||
base_url = https://blog.raer.me/
|
||||
title = Freyja's Blog
|
||||
description = a place for someone's thoughts
|
||||
author = Freyja Victoria Odinthrir
|
||||
|
||||
@@ -1,3 +1,33 @@
|
||||
title: (DRAFT) Automating some things...
|
||||
description: Automating some stuff
|
||||
tags: automation, gitops, freebsd
|
||||
date: 2023-06-28 12:00
|
||||
|
||||
# Automating some things...
|
||||
|
||||
So, you've got yourself a webserver. Congratulations! You've taken the first step toward taking ownership of any public webservices you'd like to use. Now... What do you *do* with it?
|
||||
|
||||
Well, if you're me, you overenginner it (sort of). I'm at least, *trying* not to overengineer things as much. But there are definitely avenues for improvement on my current deployment. This site runs on a raspberry pi. Specifically, a raspberry pi 4b+ with 8 gigs of ram running FreeBSD 13.2. I've done the basics to harden the system (restricted SSH to keys only, on a port and ip that's on a management vlan - inaccessible from the 'net... and some other things I won't mention here ;P). The nginx webserver runs inside a FreeBSD [jail](https://docs.freebsd.org/en/books/handbook/jails/) on this bare-metal system. It is also networked to a public-facing vlan, separate from the management vlan (and my private stuff). This is accomplished with some networking trickery which I'll go into in depth in the future. For now, essentially: we create a vlan device, a bridge, and several 'epair' devices (one for each jail) then config the jail + host to give the jail its own 'network' thru this epair.
|
||||
|
||||
Okay, so we've described the system. How do I get files on/off the server? How do I manage it? That, [my dear data,](https://memory-alpha.fandom.com/wiki/Elementary,_Dear_Data_(episode)) is achieved via ssh. An unprivileged account on the pi has some public keys in the `~/.ssh/authorized_keys` file. That lets me in, and with `sshftp` I can easily drop files onto the server, then with a quick `cp -a /path/to/files /path/to/jail/webroot` I can update the server. Dope. That's awfully manual though... How can we automate this process?
|
||||
|
||||
## Gitops! (sort of?)
|
||||
|
||||
Well, we can do a couple things here...
|
||||
|
||||
- We can just keep doing it this way forever (lame)
|
||||
- We can do some sort of 'gitops' to speed things up.
|
||||
|
||||
Naturally, we choose 2. (There are of course more options, but I won't list them here. Because I haven't thought of them. Not cus they don't exist.) The idea goes like this: since we only need to push static files to update the webserver, I'll just keep the static files in a git repo. Then I can devise a method whereupon updates pushed to the repo are propagated to the webserver automatically via scripts, instead of doing all that manual nonsense each time.
|
||||
|
||||
---
|
||||
|
||||
__EDIT: 2024-01-17 11:34:__
|
||||
|
||||
This was converted from original html:
|
||||
|
||||
```html
|
||||
|
||||
<s>
|
||||
<h1>Automating some things...</h1>
|
||||
|
||||
@@ -39,3 +69,5 @@
|
||||
pushed to the repo are propagated to the webserver automatically via scripts, instead of doing all that manual
|
||||
nonsense each time.</p>
|
||||
</s>
|
||||
|
||||
```
|
||||
@@ -1,3 +1,19 @@
|
||||
title: Hello, world!
|
||||
description: Hello, world!
|
||||
tags: hello world
|
||||
date: 2023-06-28 11:03
|
||||
|
||||
# Hello? Is anyone listening? Is this thing on?
|
||||
|
||||
Hello, world. I'm Freyja (Rae? idk dude, names are as difficult as gender for me.) This is my website. Well... *one* of my websites. I have a few domains. This one is low-effort. Going forward, I'm just gonna use this thing as a sort of blog.Since... I can? I mean, its not like HTML is complicated... It was designed mainly as a way to do books, but better - and with HYPERTEXT. Modern web design has more or less bastardized existing technologies to do fancy things with web browsers. But at the end of the day, raw HTML still works just fine - it just isn't as purdy.
|
||||
|
||||
---
|
||||
__EDIT 2024-01-17 11:22:__ This was originally written in html for an html-only version of this blog. I got tired of that rather quickly. Its difficult to maintain HTML by hand. I wanted something a *little* more automatic, so the blog has been updated to that end.
|
||||
|
||||
Here's the original HTML of this blog entry:
|
||||
|
||||
```html
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -28,3 +44,5 @@
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
```
|
||||
@@ -1,3 +1,9 @@
|
||||
title: FreeBSD Jail Networking
|
||||
description: Networking FreeBSD Jails
|
||||
tags: UNIX, freebsd, networking
|
||||
date: 2023-06-30 08:46
|
||||
|
||||
|
||||
# FreeBSD Jails: Networking
|
||||
|
||||
_containerization as a workshop, instead of a toolbox_
|
||||
@@ -1,3 +1,20 @@
|
||||
title: Doing more stuff...
|
||||
description: doing more stuff with the blog
|
||||
tags: ruminations
|
||||
date: 2023-07-03 16:20
|
||||
|
||||
# Doing more
|
||||
|
||||
Now that I have gitea (and a mysql server) in 'prod', its time to do more automagical things. The first line of business will be to look into CI/CD tools with gitea. Its rather silly that I have a whole-ass gitea server running, but don't utilize any of the ci/cd features that it offers. At a minimum, I could set up something to update this webserver automatically based off of a git repo push, instead of the current method: sftp directly into the freebsd host, navigate to the jail's html folder, and editing things directly. I'm literally editing this thing LIVE in vscode right now, lol. The moment I hit save, is the moment it gets published. I could maybe stand to do things a *little* different...? Possibly? Or maybe I won't. Maybe I'll just say "Fuck it, that's too much work, this site is full on low-effort". IDK. It depends on how much I think going 'low effort' will end up causing me to have an annoying, repetative workflow when editing this site.
|
||||
|
||||
---
|
||||
|
||||
__EDIT: 2024-01-17 11:27__
|
||||
|
||||
This was imported from the old version of this blog. Here is the original html version:
|
||||
|
||||
```html
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
@@ -26,3 +43,5 @@
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
```
|
||||
@@ -1,5 +1,29 @@
|
||||
title: Ha!
|
||||
description: a discovery of sorts
|
||||
tags: ruminations
|
||||
date: 2023-07-03 15:36
|
||||
|
||||
# Ha!
|
||||
|
||||
I've tracked down an issue that plagued my gitea config and made me go nuts for a week. Turns out that for some reason, full end-to-end https on gitea breaks ssh pushing? I've abandoned this prospect for now, instead opting to just use TLS termination at <https://gitea.raer.me/> and forwarding to http on the private network. That's fine for my purposes. Its not ideal. But its fine.
|
||||
|
||||
What truly matters here, is that I've got my gitea deployment off of the virtual machine it was running on. And, the database connection is now encrypted (and enforced) with tls. So there's that. See, before, I was running a virtual machine on my truenas scale server that had a bunch of rootless docker instances running things. this was far. Too. Complex. It didn't even solve anything practically, either. It forced me to do networking where I didn't need to.
|
||||
|
||||
Instead, gitea and its mysql server run directly on the k3s implementation on my truenas scale server. This is ideal, as it allows me easier control over the files. It allows me to do zfs snapshots of the db and the gitea server. It removes the need for the scheduled daily downtime while a script archived and stored the whole thing on another server. At least, that's the idea. It also removes the overhead of the whole server, and streamlines things somewhat.
|
||||
|
||||
Anyway, this has been an entry in the ol blog. Over and out
|
||||
|
||||
- Freyja
|
||||
|
||||
ps: did I mention I didn't have to nuke the whole thing and start from scratch like I thought I might? That's a big bonus!
|
||||
|
||||
---
|
||||
|
||||
__EDIT 2024-01-17 11:29__
|
||||
|
||||
This was copied from its original HTML version. See below:
|
||||
|
||||
```html
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
@@ -48,3 +72,5 @@
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
```
|
||||
10
content/2024/01/17/post-01.md
Normal file
10
content/2024/01/17/post-01.md
Normal file
@@ -0,0 +1,10 @@
|
||||
Title: A blog post
|
||||
Description: A description
|
||||
Date: 2024-01-17 10:28
|
||||
Tags: personal
|
||||
Edited: 2024-01-17 10:39
|
||||
|
||||
# A personal blog
|
||||
|
||||
This is a personal project built... because i can. I have this odd fascination with the concept of `gitops` - that is, keeping entire codebases + their documentation within a single self-contained git repository. I also have an interest in self-hosting my own services/infrastructure because it gives me a better fundamental understanding of the hardware/software behind things like `GitHub Actions`. Thus, instead of being run/deployed with any number of cloud services, i've done my best to self-host my own stuff.
|
||||
|
||||
10
content/about.md
Normal file
10
content/about.md
Normal file
@@ -0,0 +1,10 @@
|
||||
title: about page
|
||||
description: about page
|
||||
|
||||
# About?
|
||||
|
||||
This is am about page. How long's't been since you've seen one of these bad boys?
|
||||
|
||||
---
|
||||
|
||||
This blog is built with [blag](https://github.com/venthur/blag).
|
||||
6
content/contact.md
Normal file
6
content/contact.md
Normal file
@@ -0,0 +1,6 @@
|
||||
title: Contact
|
||||
description: contact me page
|
||||
|
||||
# Contact
|
||||
|
||||
Please do not contact me.
|
||||
6
content/love.md
Normal file
6
content/love.md
Normal file
@@ -0,0 +1,6 @@
|
||||
title: My lover
|
||||
description: Hello love
|
||||
|
||||
# Hello Jaime
|
||||
|
||||
I love you very much, babydoll. <3
|
||||
83
static/css/code-dark.css
Normal file
83
static/css/code-dark.css
Normal file
@@ -0,0 +1,83 @@
|
||||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.hll { background-color: #1b1125 }
|
||||
.c { color: #75715e } /* Comment */
|
||||
.err { color: #960050; background-color: #1e0010 } /* Error */
|
||||
.esc { color: #f8f8f2 } /* Escape */
|
||||
.g { color: #f8f8f2 } /* Generic */
|
||||
.k { color: #66d9ef } /* Keyword */
|
||||
.l { color: #ae81ff } /* Literal */
|
||||
.n { color: #f8f8f2 } /* Name */
|
||||
.o { color: #f92672 } /* Operator */
|
||||
.x { color: #f8f8f2 } /* Other */
|
||||
.p { color: #f8f8f2 } /* Punctuation */
|
||||
.ch { color: #75715e } /* Comment.Hashbang */
|
||||
.cm { color: #75715e } /* Comment.Multiline */
|
||||
.cp { color: #75715e } /* Comment.Preproc */
|
||||
.cpf { color: #75715e } /* Comment.PreprocFile */
|
||||
.c1 { color: #75715e } /* Comment.Single */
|
||||
.cs { color: #75715e } /* Comment.Special */
|
||||
.gd { color: #f92672 } /* Generic.Deleted */
|
||||
.ge { color: #f8f8f2; font-style: italic } /* Generic.Emph */
|
||||
.gr { color: #f8f8f2 } /* Generic.Error */
|
||||
.gh { color: #f8f8f2 } /* Generic.Heading */
|
||||
.gi { color: #a6e22e } /* Generic.Inserted */
|
||||
.go { color: #66d9ef } /* Generic.Output */
|
||||
.gp { color: #f92672; font-weight: bold } /* Generic.Prompt */
|
||||
.gs { color: #f8f8f2; font-weight: bold } /* Generic.Strong */
|
||||
.gu { color: #75715e } /* Generic.Subheading */
|
||||
.gt { color: #f8f8f2 } /* Generic.Traceback */
|
||||
.kc { color: #66d9ef } /* Keyword.Constant */
|
||||
.kd { color: #66d9ef } /* Keyword.Declaration */
|
||||
.kn { color: #f92672 } /* Keyword.Namespace */
|
||||
.kp { color: #66d9ef } /* Keyword.Pseudo */
|
||||
.kr { color: #66d9ef } /* Keyword.Reserved */
|
||||
.kt { color: #66d9ef } /* Keyword.Type */
|
||||
.ld { color: #e6db74 } /* Literal.Date */
|
||||
.m { color: #ae81ff } /* Literal.Number */
|
||||
.s { color: #e6db74 } /* Literal.String */
|
||||
.na { color: #a6e22e } /* Name.Attribute */
|
||||
.nb { color: #f8f8f2 } /* Name.Builtin */
|
||||
.nc { color: #a6e22e } /* Name.Class */
|
||||
.no { color: #66d9ef } /* Name.Constant */
|
||||
.nd { color: #a6e22e } /* Name.Decorator */
|
||||
.ni { color: #f8f8f2 } /* Name.Entity */
|
||||
.ne { color: #a6e22e } /* Name.Exception */
|
||||
.nf { color: #a6e22e } /* Name.Function */
|
||||
.nl { color: #f8f8f2 } /* Name.Label */
|
||||
.nn { color: #f8f8f2 } /* Name.Namespace */
|
||||
.nx { color: #a6e22e } /* Name.Other */
|
||||
.py { color: #f8f8f2 } /* Name.Property */
|
||||
.nt { color: #f92672 } /* Name.Tag */
|
||||
.nv { color: #f8f8f2 } /* Name.Variable */
|
||||
.ow { color: #f92672 } /* Operator.Word */
|
||||
.pm { color: #f8f8f2 } /* Punctuation.Marker */
|
||||
.w { color: #f8f8f2 } /* Text.Whitespace */
|
||||
.mb { color: #ae81ff } /* Literal.Number.Bin */
|
||||
.mf { color: #ae81ff } /* Literal.Number.Float */
|
||||
.mh { color: #ae81ff } /* Literal.Number.Hex */
|
||||
.mi { color: #ae81ff } /* Literal.Number.Integer */
|
||||
.mo { color: #ae81ff } /* Literal.Number.Oct */
|
||||
.sa { color: #e6db74 } /* Literal.String.Affix */
|
||||
.sb { color: #e6db74 } /* Literal.String.Backtick */
|
||||
.sc { color: #e6db74 } /* Literal.String.Char */
|
||||
.dl { color: #e6db74 } /* Literal.String.Delimiter */
|
||||
.sd { color: #e6db74 } /* Literal.String.Doc */
|
||||
.s2 { color: #e6db74 } /* Literal.String.Double */
|
||||
.se { color: #ae81ff } /* Literal.String.Escape */
|
||||
.sh { color: #e6db74 } /* Literal.String.Heredoc */
|
||||
.si { color: #e6db74 } /* Literal.String.Interpol */
|
||||
.sx { color: #e6db74 } /* Literal.String.Other */
|
||||
.sr { color: #e6db74 } /* Literal.String.Regex */
|
||||
.s1 { color: #e6db74 } /* Literal.String.Single */
|
||||
.ss { color: #e6db74 } /* Literal.String.Symbol */
|
||||
.bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
|
||||
.fm { color: #a6e22e } /* Name.Function.Magic */
|
||||
.vc { color: #f8f8f2 } /* Name.Variable.Class */
|
||||
.vg { color: #f8f8f2 } /* Name.Variable.Global */
|
||||
.vi { color: #f8f8f2 } /* Name.Variable.Instance */
|
||||
.vm { color: #f8f8f2 } /* Name.Variable.Magic */
|
||||
.il { color: #ae81ff } /* Literal.Number.Integer.Long */
|
||||
157
static/css/style.css
Normal file
157
static/css/style.css
Normal file
@@ -0,0 +1,157 @@
|
||||
@import "code-dark.css" (prefers-color-scheme: dark);
|
||||
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--background: #0c0313;
|
||||
--background-dim: #270656;
|
||||
|
||||
--foreground: #f0f2f3;
|
||||
--foreground-dim: #d5d5d5;
|
||||
--foreground-heavy: #f2f4f5;
|
||||
|
||||
--primary-color: #a60abb;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
font-size: 18px;
|
||||
font-family: serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 50rem;
|
||||
background: var(--background);
|
||||
color: var(--foreground);
|
||||
line-height: 1.5;
|
||||
padding: 0rem 0.5rem;
|
||||
}
|
||||
|
||||
aside {
|
||||
font-size: smaller;
|
||||
font-style: italic;
|
||||
color: var(--foreground-dim);
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
strong {
|
||||
color: var(--foreground-heavy);
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
nav li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
nav li + li:before {
|
||||
content: " · ";
|
||||
margin: 0 0.5ex;
|
||||
}
|
||||
|
||||
article header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
article header time {
|
||||
white-space: nowrap;
|
||||
color: var(--foreground-dim);
|
||||
font-style: italic;
|
||||
flex: 0 0 12ex;
|
||||
}
|
||||
|
||||
article header h2,
|
||||
article header p {
|
||||
font-size: 1rem;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
code,
|
||||
pre {
|
||||
background: var(--background-dim);
|
||||
border-radius: 0.3rem;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 1rem;
|
||||
border-left: 2px solid var(--primary-color);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 0.1rem 0.2rem;
|
||||
}
|
||||
|
||||
/* reset the padding for code inside pre */
|
||||
pre code {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
background: var(--background-dim);
|
||||
border-radius: 0 0.3rem 0.3rem 0;
|
||||
font-style: italic;
|
||||
border-left: 2px solid var(--primary-color);
|
||||
margin: 0;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
/* reset the margin for p inside blockquotes */
|
||||
blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body > header {
|
||||
padding: 2rem 0;
|
||||
}
|
||||
|
||||
body footer {
|
||||
margin: 3rem 0;
|
||||
color: var(--foreground-dim);
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
header nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
margin: 0 auto;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
header h2 {
|
||||
display: inline;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
23
templates/archive.html
Normal file
23
templates/archive.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Archive{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% for entry in archive %}
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<time datetime="{{ entry.date }}">{{ entry.date.date() }}</time>
|
||||
<div>
|
||||
<h2><a href="{{ entry.dst }}">{{ entry.title }}</a></h2>
|
||||
{% if entry.description %}
|
||||
<p>— {{ entry.description }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
</article>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
27
templates/article.html
Normal file
27
templates/article.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% if title %}
|
||||
<h2>{{ title }}</h2>
|
||||
{% endif %}
|
||||
|
||||
<aside>
|
||||
<p>published on {{ date.date() }}
|
||||
|
||||
{% if tags %}
|
||||
· tagged with
|
||||
{% for tag in tags|sort(case_sensitive=true) %}
|
||||
{%- if not loop.first and not loop.last %}, {% endif -%}
|
||||
{%- if loop.last and not loop.first %} and {% endif %}
|
||||
<a href="/tags/{{ tag }}.html">#{{ tag }}</a>
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
</p>
|
||||
</aside>
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% endblock %}
|
||||
50
templates/base.html
Normal file
50
templates/base.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="color-scheme" content="dark">
|
||||
<meta name="author" content="{{ site.author }}">
|
||||
{%- if description %}
|
||||
<meta name="description" content="{{ description }}">
|
||||
{%- else %}
|
||||
<meta name="description" content="{{ site.description }}">
|
||||
{%- endif %}
|
||||
<link rel="alternate" href="/atom.xml" type="application/atom+xml">
|
||||
<link rel="stylesheet" href="/css/style.css" type="text/css">
|
||||
<title>{% block title %}{% endblock %} | {{ site.description }}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="/">{{ site.title }}</a></h1>
|
||||
<nav>
|
||||
<h2>{{ site.description }}</h2>
|
||||
<ul>
|
||||
<li><h2><a href="/">Home</a></h2></li>
|
||||
<li><h2><a href="/love.html">A love note</a></h2></li>
|
||||
<li><h2><a href="/tags/">Tags</a></h2></li>
|
||||
<li><h2><a href="/archive.html">Archive</a></h2></li>
|
||||
<li><h2><a href="/contact.html">Contact</a></h2></li>
|
||||
<li><h2><a href="/about.html">About</a></h2></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
Subscribe to the <a href="/atom.xml">atom feed</a>.
|
||||
<br>
|
||||
<!-- Contact me via
|
||||
<a rel="me" href="https://mastodon.social/[FIXME]">[FIXME] Mastodon</a> or
|
||||
<a href="https://github.com/[FIXME]">[FIXME] Github</a>.
|
||||
</p> -->
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
25
templates/index.html
Normal file
25
templates/index.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ site.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% for entry in archive[:15] %}
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<time datetime="{{ entry.date }}">{{ entry.date.date() }}</time>
|
||||
<div>
|
||||
<h2><a href="{{ entry.dst }}">{{ entry.title }}</a></h2>
|
||||
{% if entry.description %}
|
||||
<p>— {{ entry.description }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
</article>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
<p><a href="/archive.html">all articles...</a></p>
|
||||
|
||||
{% endblock %}
|
||||
9
templates/page.html
Normal file
9
templates/page.html
Normal file
@@ -0,0 +1,9 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% endblock %}
|
||||
25
templates/tag.html
Normal file
25
templates/tag.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}#{{ tag }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>Articles tagged "{{ tag }}"</h2>
|
||||
|
||||
{% for entry in archive %}
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<time datetime="{{ entry.date }}">{{ entry.date.date() }}</time>
|
||||
<div>
|
||||
<h2><a href="../{{ entry.dst }}">{{ entry.title }}</a></h2>
|
||||
{% if entry.description %}
|
||||
<p>— {{ entry.description }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
</article>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
14
templates/tags.html
Normal file
14
templates/tags.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Tags{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Tags</h2>
|
||||
<ul>
|
||||
{% for tag, size in tags %}
|
||||
<li>
|
||||
<a href="{{ tag }}.html">{{ tag }} ({{ size }} articles)</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>About</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a href="/index.html">Index</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</nav>
|
||||
<hr>
|
||||
<main>
|
||||
<h1>About?</h1>
|
||||
<p>How long's't been since you've seen an about page? Sheesh, who even *writes* these things?</p>
|
||||
<h2>What is this?</h2>
|
||||
<p>This is a website. An old-fashioned static one. I edit the html directly. Its a tech blog of sorts? its more just a whatever-the-fuck-i-feel-like blog, honestly. Its my website. I host it. I do what I want with it 'cuz I can. Deal with it, baby :3</p>
|
||||
<h3>More...</h3>
|
||||
<p>Check out the webdominatrix's <a href="https://github.com/freyjagp">github</a> page if you'd like to see more...</p>
|
||||
<p>You can also go to her <a href="https://gitea.raer.me/">gitea</a> if you so choose, but its not very public.</p>
|
||||
</main>
|
||||
<hr>
|
||||
<footer>
|
||||
<p>published 29th june, 2023 @ 11:30pm PDT</p>
|
||||
<p>Updated 07/03/2023 16:26</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TEMPLATE</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav>
|
||||
<a href="/index.html">Index</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</nav>
|
||||
<hr>
|
||||
<!-- CONTENT GOES HERE -->
|
||||
<p>Please do not contact me.</p>
|
||||
|
||||
<!-- END CONTENT -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,27 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TEMPLATE</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav>
|
||||
<a href="/index.html">Index</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</nav>
|
||||
<hr>
|
||||
<!-- CONTENT GOES HERE -->
|
||||
|
||||
|
||||
<!-- END CONTENT -->
|
||||
<hr>
|
||||
<footer>
|
||||
<p>Published: PLACEHOLDER</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Index</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a href="/index.html">Index</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</nav>
|
||||
<hr>
|
||||
<h1>Hi Jaimie C:</h1>
|
||||
<p>I love you very much <3</p>
|
||||
<hr>
|
||||
<h1>Latest blog entry</h1>
|
||||
<p><a href="/blog/2023/07/03/doing-more-stuff.html">Doing more stuff</a></p>
|
||||
<hr>
|
||||
<h1>stuff to do</h1>
|
||||
<p>Below is a list of stuff I find interesting/worthy of being posted here.</p>
|
||||
<ul>
|
||||
<li><a href="https://www.youtube.com/watch?v=QLnO9EV591Y">Saving Time is for Suckers</a> | Podcast I'm listening to as I write this (can't think of shit at the moment, lol)</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h1>Blog entries...</h1>
|
||||
<p>Click this <a href="blog">link</a> for blog entries.</p>
|
||||
|
||||
<hr>
|
||||
<footer>
|
||||
<p>updated: 19th November, 2023 @ 7:00pm PST</p>
|
||||
<p><s>updated: 3rd July, 2023 @ 4:00pm PDT</s></p>
|
||||
<p>published: 28th June, 2023</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user