Initial commit
32
.github/workflows/upload.yml
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
# Controls when the action will run.
|
||||||
|
on:
|
||||||
|
# Triggers the workflow on push to master (including merged PRs)
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
update:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
- name: Updating website.
|
||||||
|
uses: appleboy/ssh-action@master
|
||||||
|
with:
|
||||||
|
host: lukesmith.xyz
|
||||||
|
username: lugo
|
||||||
|
key: ${{ secrets.lugo_ssh }}
|
||||||
|
passphrase: ${{ secrets.lugo_pass }}
|
||||||
|
port: 22
|
||||||
|
script: |
|
||||||
|
cd /var/www/lugo
|
||||||
|
git stash
|
||||||
|
git pull --force origin master
|
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Voidcruiser Hugo theme
|
||||||
|
|
||||||
|
Hacked together based on the CSS I used before hugo andm a whole bunch of examples on the internet
|
6
archetypes/default.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
11
config.toml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
title = "Website Name"
|
||||||
|
baseURL = 'https://example.org'
|
||||||
|
yggURL = 'http://[201:1bf3:e688:a7ba:48f0:761a:c187:3550]'
|
||||||
|
onion = 'https://example.org'
|
||||||
|
i2p = 'https://example.org'
|
||||||
|
languageCode = 'en-us'
|
||||||
|
|
||||||
|
[params]
|
||||||
|
# "relatedtext" is the text that appears above the tag list at the bottom of pages.
|
||||||
|
#relatedtext = "Related:"
|
||||||
|
favicon = "/favicon.ico"
|
13
layouts/_default/list.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{{ partial "header.html" . -}}
|
||||||
|
<h1 class="page-head">{{ .Title }}</h1>
|
||||||
|
<main>
|
||||||
|
<article>
|
||||||
|
{{ .Content -}}
|
||||||
|
<ul>
|
||||||
|
{{- range.Pages }}
|
||||||
|
<li><time datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format "2006 Jan 02" }}</time> – <a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||||
|
{{ end -}}
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
{{- partial "footer.html" . }}
|
26
layouts/_default/rss.xml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>{{ .Site.Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||||
|
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||||
|
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||||
|
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||||
|
{{ with .OutputFormats.Get "RSS" }}
|
||||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range .Pages }}
|
||||||
|
<item>
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||||
|
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||||
|
<guid>{{ .Permalink }}</guid>
|
||||||
|
<description>{{- .Content | html -}}</description>
|
||||||
|
</item>
|
||||||
|
{{ end }}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
6
layouts/_default/single.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{{ partial "header.html" . -}}
|
||||||
|
<h1 class="page-head">{{ .Title }}</h1>
|
||||||
|
<main>
|
||||||
|
{{ .Content -}}
|
||||||
|
</main>
|
||||||
|
{{ partial "footer.html" . }}
|
11
layouts/partials/footer.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!--{{ partial "nextprev.html" . -}}
|
||||||
|
{{ partial "taglist.html" . -}}-->
|
||||||
|
<footer>
|
||||||
|
<div class="mirror">[<a href="http://fxawfamgojpoxxgzmmjiro4wx4eycempujmryk6miz4a64ljl6sz7dqd.onion">onion</a>|<a href="http://lmwr2pugnmv4pkkxlneeepi4oysfly33zfuj7x25s6hfydysnpfq.b32.i2p">i2p</a>|<a href="http://[201:e2aa:7c70:666b:9a28:6406:be7f:bf0d]">yggdrasil</a>]
|
||||||
|
<a rel="lisence" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="CC BY-SA 4.0" src="/stickers/cc4.png"></a>
|
||||||
|
<a rel="rss" href="/index.xml"><img src="/rss.svg" style="max-height:1em"></a>
|
||||||
|
<!--<a href="/index.xml"><img src="/rss.svg" style="max-height:1em" alt="RSS Feed" title="Subscribe via RSS for updates."></a>-->
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
20
layouts/partials/header.html
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ .Site.Language }}">
|
||||||
|
<head>
|
||||||
|
<title>{{ if not .IsHome }}{{ .Title | title }} | {{ end }}{{ .Site.Title }}</title>
|
||||||
|
<!--<title>{{ .Title }} | {{ .Site.Title }}</title>-->
|
||||||
|
<link rel="canonical" href="{{ .Site.BaseURL }}">
|
||||||
|
<link rel='alternate' type='application/rss+xml' title="{{ .Site.Title }} RSS" href='/index.xml'>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/style.css'>
|
||||||
|
{{ with .Site.Params.favicon }}<link rel="icon" href="{{ . }}">
|
||||||
|
{{ end -}}
|
||||||
|
<meta name="description" content="{{ with .Params.description }}{{ . }}{{ else }}{{ .Summary }}{{ end }}">
|
||||||
|
{{ if isset .Params "tags" }}<meta name="keywords" content="{{ with .Params.tags }}{{ delimit . ", " }}{{ end }}">
|
||||||
|
{{ end -}}
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="robots" content="index, follow">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 class="logo" id="{{ .Site.Title }}">{{ .Site.Title | title }}</h1>
|
||||||
|
{{ partial "nav.html" . }}
|
13
layouts/partials/nav.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<nav>
|
||||||
|
<details open="">
|
||||||
|
<summary>Nav</summary>
|
||||||
|
<a href="/">Home</a>
|
||||||
|
{{- $sec := .Page.Section }}{{ $file := .File.TranslationBaseName -}}
|
||||||
|
{{ range.Site.Menus.main.ByWeight }}{{ $base := path.Base .URL }}
|
||||||
|
<li><a {{ if or ( eq $sec $base ) ( eq $file $base ) ( and (eq $sec "") ( eq $file "_index") (eq $base "/") ) }}class="menuactive" {{ end }}href="{{ .URL }}"><span class=pre>{{ .Pre }}</span><span class=menuname>{{ .Name }}</span></a></li>
|
||||||
|
{{- end }}
|
||||||
|
{{ range .Site.RegularPages }}
|
||||||
|
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</details>
|
||||||
|
</nav>
|
10
layouts/partials/nextprev.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{{ if or .Next .Prev -}}
|
||||||
|
<div id="nextprev">
|
||||||
|
{{- with .Prev }}
|
||||||
|
<a href="{{ .RelPermalink}}"><div id="prevart">Previous:<br>{{.Title}}</div></a>
|
||||||
|
{{ end -}}
|
||||||
|
{{- with .Next -}}
|
||||||
|
<a href="{{ .RelPermalink}}"><div id="nextart">Next:<br>{{.Title}}</div></a>
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
{{ end -}}
|
8
layouts/partials/stickers.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<div class="stickers">
|
||||||
|
<a target="_blank" href="https://blackgnu.net/on-blockchain.html" ><img alt="Web 3 is a scam" src="/stickers/notoweb3.gif" /></a>
|
||||||
|
<a target="_blank" href="https://gemini.circumlunar.space/" ><img alt="Fuck Chromium" src="/stickers/same-shit-different-asshole_banner.gif" /></a>
|
||||||
|
<a target="_blank" href="https://www.vim.org" ><img alt="I ♡ vim" src="/stickers/edited-with-vim_banner.gif" /></a>
|
||||||
|
<a target="_blank" href="https://yewtu.be/watch?v=TdkdR92a7dU"><img alt="Nazi punks, fuck off!" src="/stickers/nonazis.png"></a>
|
||||||
|
<a target="_blank" href="https://wiby.me"><img alt="Wiby is great" src="/stickers/wiby.gif"></a>
|
||||||
|
<a target="_blank" href="https://anybrowser.org/campaign/"><img alt="Viewable in any browser" src="/stickers/4nobody.gif"></a>
|
||||||
|
</div>
|
13
layouts/partials/taglist.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{{- if isset .Params "tags" -}}
|
||||||
|
{{- $tagsLen := len .Params.tags -}}
|
||||||
|
{{- if gt $tagsLen 0 -}}
|
||||||
|
<div style="clear:both" class=taglist>
|
||||||
|
{{- with .Site.Params.relatedtext }}{{ . }}<br>{{ end -}}
|
||||||
|
{{- range $k, $v := .Params.tags -}}
|
||||||
|
{{- $url := printf "tags/%s" (. | urlize | lower) -}}
|
||||||
|
<a id="tag_{{ . | lower }}" href="{{ $url | absURL }}">{{ . | title }}</a>
|
||||||
|
{{- if lt $k (sub $tagsLen 1) }} · {{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
13
layouts/shortcodes/audio.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<!--
|
||||||
|
class: class of the figure
|
||||||
|
link: url the image directs to
|
||||||
|
alt: alternative text
|
||||||
|
caption: caption
|
||||||
|
mouse: what the image says when moused over ("title" in HTML)
|
||||||
|
-->
|
||||||
|
<audio controls="true">
|
||||||
|
<source src="{{.Get "src" }}" type="audio/{{.Get "audio" }}">
|
||||||
|
Sorry mate, your browser doesn't support playing audio files.
|
||||||
|
</source>
|
||||||
|
</audio>
|
||||||
|
|
1
layouts/shortcodes/begin-art.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<article>
|
1
layouts/shortcodes/end-art.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
</article>
|
10
layouts/shortcodes/hidvid.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<details>
|
||||||
|
<summary>Click to reveal video.</summary>
|
||||||
|
<iframe src="{{ index .Params 0 }}"
|
||||||
|
loading="lazy"
|
||||||
|
sandbox="allow-same-origin allow-scripts allow-popups"
|
||||||
|
allowfullscreen frameborder="0"
|
||||||
|
class="embvid"
|
||||||
|
title="Embedded Video">
|
||||||
|
</iframe>
|
||||||
|
</details>
|
20
layouts/shortcodes/img.html
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<!--
|
||||||
|
class: class of the figure
|
||||||
|
link: url the image directs to
|
||||||
|
alt: alternative text
|
||||||
|
caption: caption
|
||||||
|
mouse: what the image says when moused over ("title" in HTML)
|
||||||
|
-->
|
||||||
|
<figure {{ with .Get "class" }}class="{{.}}"{{ end -}}>
|
||||||
|
{{- with .Get "link"}}<a href="{{.}}">{{ end -}}
|
||||||
|
<img src="{{ .Get "src" }}"
|
||||||
|
{{- with .Get "mouse" }} title="{{.}}"{{ end -}}
|
||||||
|
{{- with .Get "alt" }} alt="{{.}}"{{ end -}}
|
||||||
|
>
|
||||||
|
{{- if .Get "link"}}</a>{{ end -}}
|
||||||
|
{{- with .Get "caption" -}}
|
||||||
|
<figcaption>
|
||||||
|
{{- . -}}
|
||||||
|
</figcaption>
|
||||||
|
{{- end -}}
|
||||||
|
</figure>
|
3
layouts/shortcodes/tagcloud.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{{ if isset .Site.Taxonomies "tags" }}{{ if not (eq (len .Site.Taxonomies.tags) 0) }} <ul id="tagcloud">
|
||||||
|
{{ range $name, $items := .Site.Taxonomies.tags }}{{ $url := printf "%s/%s" "tags" ($name | urlize | lower)}}<li><a href="{{ $url | absURL }}" id="tag_{{ $name }}">{{ $name | title }}</a></li>
|
||||||
|
{{ end }}</ul>{{ end }}{{ end }}
|
1
layouts/shortcodes/toc.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{ .TableOfContents }}
|
6
layouts/shortcodes/vid.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<iframe src="{{ index .Params 0 }}"
|
||||||
|
loading="lazy"
|
||||||
|
sandbox="allow-same-origin allow-scripts allow-popups"
|
||||||
|
allowfullscreen frameborder="0"
|
||||||
|
title="Embedded Video">
|
||||||
|
</iframe>
|
1
static/rss.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 455.731 455.731" style="enable-background:new 0 0 455.731 455.731;" xml:space="preserve"><g><rect x="0" y="0" style="fill:#F78422;" width="455.731" height="455.731"/><g><path style="fill:#FFFFFF;" d="M296.208,159.16C234.445,97.397,152.266,63.382,64.81,63.382v64.348 c70.268,0,136.288,27.321,185.898,76.931c49.609,49.61,76.931,115.63,76.931,185.898h64.348 C391.986,303.103,357.971,220.923,296.208,159.16z"/><path style="fill:#FFFFFF;" d="M64.143,172.273v64.348c84.881,0,153.938,69.056,153.938,153.939h64.348 C282.429,270.196,184.507,172.273,64.143,172.273z"/><circle style="fill:#FFFFFF;" cx="109.833" cy="346.26" r="46.088"/></g></g></svg>
|
After Width: | Height: | Size: 920 B |
BIN
static/stickers/4nobody.gif
Normal file
After Width: | Height: | Size: 2.9 KiB |
7
static/stickers/80x15.png
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<html>
|
||||||
|
<head><title>301 Moved Permanently</title></head>
|
||||||
|
<body bgcolor="white">
|
||||||
|
<center><h1>301 Moved Permanently</h1></center>
|
||||||
|
<hr><center>nginx</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
static/stickers/cc4.png
Normal file
After Width: | Height: | Size: 446 B |
BIN
static/stickers/edited-with-vim_banner.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
static/stickers/nonazis.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
static/stickers/notoweb3.gif
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
static/stickers/same-shit-different-asshole_banner.gif
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
static/stickers/wiby.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
62
static/style.css
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
:root{
|
||||||
|
scrollbar-color: #333747 #1d1f21;
|
||||||
|
}
|
||||||
|
::selection{
|
||||||
|
background-color: #333747;
|
||||||
|
color:#c397d8;
|
||||||
|
}
|
||||||
|
html{
|
||||||
|
color: #eaeaea;
|
||||||
|
background-color: #1d1f21;
|
||||||
|
}
|
||||||
|
body{ padding: 0; margin: 0; }
|
||||||
|
a{ color: #f0c674; }
|
||||||
|
a:hover{ color: #1d1f21; background-color: #f0c674; }
|
||||||
|
a:hover::selection{ color: #f0c674; }
|
||||||
|
audio{ width: 100%; display: block; margin-top: 1em; }
|
||||||
|
main{ margin-left: 12em; margin-right: 1em; padding: 1em; border:1pt solid; margin-bottom: 1em;}
|
||||||
|
main h1{border-bottom: 1pt solid;}
|
||||||
|
article{padding:1em; border:#282a2e 1pt solid;}
|
||||||
|
nav{height: 100%;padding: 0.5em; float:left; background: #282a2e; border-right:solid 1pt; border-bottom: solid 1pt; width: 10em;}
|
||||||
|
nav li{list-style: none; list-style-position:outside;}
|
||||||
|
nav a{ display: block;}
|
||||||
|
summary{cursor:pointer;}
|
||||||
|
summary:hover{ color: #1d1f21; background-color: #f0c674; }
|
||||||
|
footer{text-align:center; border-top:1pt solid; margin-top: 1em;}
|
||||||
|
footer a{text-decoration:none;}
|
||||||
|
footer .mirror{text-align:center; color: #f0c674;}
|
||||||
|
code{ background: #282a2e; border-radius: 1em; padding: 2pt;}
|
||||||
|
pre{ background: #282a2e; padding: 1em; border-radius: 1em;}
|
||||||
|
.logo{
|
||||||
|
padding: 5pt 0;
|
||||||
|
margin:0;
|
||||||
|
width:100%;
|
||||||
|
border-bottom: 2pt solid;
|
||||||
|
background-color: #282a2e;
|
||||||
|
background: linear-gradient(to right,#b294bb,#282a2e);
|
||||||
|
}
|
||||||
|
.about ul{list-style:none;}
|
||||||
|
.about img{height:10em; float:left;}
|
||||||
|
header{text-transform: capitalize; text-align:center;border-bottom:2pt solid; font-weight:bold;}
|
||||||
|
.page-head{text-transform: capitalize; text-align:center;border-bottom:2pt solid; font-weight:bold;}
|
||||||
|
@media (max-width: 800px){
|
||||||
|
main{max-width:100%; margin: 1em;}
|
||||||
|
nav{padding:0; width: 100%; border-right:solid 0pt;}
|
||||||
|
nav a{ padding-left: 1em;}
|
||||||
|
}
|
||||||
|
.stickers{ text-align:center; }
|
||||||
|
.gay{
|
||||||
|
background:linear-gradient(-45deg, #cc6666, #f0c674, #b5bd68, #8abeb7, #81a2b3, #b294bb);
|
||||||
|
background-clip: text;
|
||||||
|
background-size:300%;
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
animation:gay 8s ease-in-out infinite;
|
||||||
|
-moz-animation: gay 8s ease-in-out infinite;
|
||||||
|
-webkit-animation: gay 8s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
@keyframes gay {
|
||||||
|
0%{background-position: 0px 50%;}
|
||||||
|
50%{background-position: 100% 50%;}
|
||||||
|
10%{background-position: 0px 50%;}
|
||||||
|
}
|