mirror of
https://github.com/jbowdre/capsule.git
synced 2024-11-12 17:52:18 +00:00
initial commit
This commit is contained in:
commit
93d3e32ef1
10 changed files with 171 additions and 0 deletions
3
.envrc
Normal file
3
.envrc
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env direnv
|
||||
use flake .
|
||||
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
/.certificates/
|
||||
/.direnv/
|
||||
/public/
|
27
flake.lock
Normal file
27
flake.lock
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1709237383,
|
||||
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
33
flake.nix
Normal file
33
flake.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
description = "gemsite build environment";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
||||
gempost = pkgs.rustPlatform.buildRustPackage rec {
|
||||
pname = "gempost";
|
||||
version = "v0.3.0";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "justlark";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-T6CP1blKXik4AzkgNJakrJyZDYoCIU5yaxjDvK3p01U=";
|
||||
};
|
||||
cargoHash = "sha256-jG/G/gmaCGpqXeRQX4IqV/Gv6i/yYUpoTC0f7fMs4pQ=";
|
||||
};
|
||||
in
|
||||
{
|
||||
devShells.x86_64-linux.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
agate
|
||||
gempost
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
3
gemlog/hello-world.gmi
Normal file
3
gemlog/hello-world.gmi
Normal file
|
@ -0,0 +1,3 @@
|
|||
Hello, world!
|
||||
|
||||
This is an example gemlog post.
|
15
gemlog/hello-world.yaml
Normal file
15
gemlog/hello-world.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
#
|
||||
# This is an example of a YAML sidecar metadata file.
|
||||
#
|
||||
|
||||
# A universally unique URI that will never change. We recommend using a UUID.
|
||||
id: "urn:uuid:f82846da-b32a-4e77-9ce1-4be99da99292"
|
||||
|
||||
# The title of your post.
|
||||
title: "Hello World"
|
||||
|
||||
# When your post was originally published.
|
||||
published: "2024-03-03T15:44:28-06:00"
|
||||
|
||||
# When your post was last updated.
|
||||
updated: "2024-03-03T15:44:28-06:00"
|
54
gempost.yaml
Normal file
54
gempost.yaml
Normal file
|
@ -0,0 +1,54 @@
|
|||
# The directory to generate the capsule at (required).
|
||||
public_dir: "./public/"
|
||||
|
||||
# The directory for static assets that are copied to the generated capsule
|
||||
# verbatim (required).
|
||||
static_dir: "./static/"
|
||||
|
||||
# The directory for gemtext gemlog posts and their sidecar metadata files
|
||||
# (required).
|
||||
posts_dir: "./gemlog/"
|
||||
|
||||
# The path of the Tera template used to generate the gemlog index page
|
||||
# (required).
|
||||
index_template_file: "./templates/index.tera"
|
||||
|
||||
# The path of the Tera template used to generate each gemlog post page
|
||||
# (required).
|
||||
post_template_file: "./templates/post.tera"
|
||||
|
||||
# A Tera template which specifies the URL path for posts (required).
|
||||
#
|
||||
# This template has access to the following variables:
|
||||
# - `year`: The four-digit year of publication, if a publication date was provided
|
||||
# - `month`: The two-digit month of publication, if a publication date was provided
|
||||
# - `day`: The two-digit day of publication, if a publication date was provided
|
||||
# - `slug`: The name of the gemtext source file, sans file extension
|
||||
#
|
||||
# Docs for the Tera templating language:
|
||||
# https://keats.github.io/tera/docs/#templates
|
||||
post_path: "/gemlog/{{ year }}-{{ month }}-{{ day }}-{{ slug }}.gmi"
|
||||
|
||||
# The URL path of the index page for your gemlog (required).
|
||||
index_path: "/gemlog/index.gmi"
|
||||
|
||||
# The URL path to serve your capsule's Atom feed at (required).
|
||||
feed_path: "/gemlog/atom.xml"
|
||||
|
||||
# The title of your gemlog (required).
|
||||
title: "John's Capsule"
|
||||
|
||||
# The gemini:// URL of your capsule's homepage (required).
|
||||
url: "gemini://gem.jbowdre.lol"
|
||||
|
||||
# A subtitle for your gemlog (optional).
|
||||
subtitle: "My personal gemlog about cool stuff"
|
||||
|
||||
# The copyright and licensing information for your gemlog (optional).
|
||||
rights: "CC BY-SA"
|
||||
|
||||
# The primary author of your gemlog (optional).
|
||||
author:
|
||||
name: "John Bowdre" # Required
|
||||
email: "jbowdre@omg.lol" # Optional
|
||||
uri: "gemini://gem.jbowdre.lol" # Optional
|
5
static/index.gmi
Normal file
5
static/index.gmi
Normal file
|
@ -0,0 +1,5 @@
|
|||
# John's Capsule
|
||||
|
||||
This is an example homepage for your capsule.
|
||||
|
||||
=> /gemlog Gemlog
|
20
templates/index.tera
Normal file
20
templates/index.tera
Normal file
|
@ -0,0 +1,20 @@
|
|||
{#
|
||||
This is an example of a Tera template for your gemlog's index page.
|
||||
|
||||
This example formats your index page in the standard gemsub format that
|
||||
Gemini clients can subscribe to. Note that gempost already generates an Atom
|
||||
feed that clients should be able to subscribe to.
|
||||
|
||||
Here is the documentation for the gemsub format:
|
||||
https://geminiprotocol.net/docs/companion/subscription.gmi
|
||||
#}# {{ feed.title }}
|
||||
|
||||
{% if feed.subtitle -%}
|
||||
## {{ feed.subtitle }}
|
||||
|
||||
{% endif -%}
|
||||
|
||||
{% for entry in feed.entries -%}
|
||||
=> {{ entry.url }} {{ entry.updated | date(format="%Y-%m-%d") }} - {{ entry.title }}
|
||||
{% endfor %}
|
||||
=> {{ feed.feed_url }} Atom feed
|
8
templates/post.tera
Normal file
8
templates/post.tera
Normal file
|
@ -0,0 +1,8 @@
|
|||
{#
|
||||
This is an example of a Tera template for each individual post.
|
||||
|
||||
This is a minimal example that just adds a header with the title from the
|
||||
sidecar YAML metadata file.
|
||||
#}# {{ entry.title }}
|
||||
|
||||
{{ entry.body }}
|
Loading…
Reference in a new issue