all repos — aaoth.xyz @ 8d962aabf74c42c3afdc38f2f85fa7b06fd04ef0

aaoth.xyz website

reimplement website using shell scripts

major change, i know. now i'm using ssg and rssg by roman zolotarev.
okay, well, not exactly. ssg is modified to generate pages for gemini
too. it's hard to maintain two different things simultaneously.

bye-bye jekyll!
la-ninpre leobrekalini@gmail.com
Tue, 19 Apr 2022 00:24:23 +0300
commit

8d962aabf74c42c3afdc38f2f85fa7b06fd04ef0

parent

9f4b181b36418669462c0300c2e090d0f4547dc8

279 files changed, 1473 insertions(+), 3016 deletions(-)

jump to
M .gitignore.gitignore

@@ -1,6 +1,2 @@

-_site/ -.jekyll-cache/ -.jekyll-metadata -.sass-cache/ -Gemfile.lock -visual/*/thumbs/ +dst/ +dst_gemini/
D 404.md

@@ -1,9 +0,0 @@

---- -layout: default -title: 404 -permalink: /404.html ---- - -# 404 - -not found.
D Gemfile

@@ -1,9 +0,0 @@

-source "https://rubygems.org" - -gem "jekyll" -gem "webrick" - -group :jekyll_plugins do - gem "jekyll-feed" -end -
M README.mdREADME.md

@@ -1,25 +1,40 @@

# aaoth.xyz -repo of [aaoth.xyz](https://aaoth.xyz) website. +repo of aaoth.xyz [website][0] and [gemini capsule][1]. i have a lot of different creative projects so that i can't handle it in my head. so i wish i'll be able to create some lightweight and simple website to show as much of them as possible. +[0]:https://aaoth.xyz +[1]:gemini://aaoth.xyz + ## implementation -i've decided to use [jekyll](https://jekyllrb.com) for this purpose, because -~~it's fun~~ it's pretty customizable and easy. +website is built from markdown files by slightly modified [ssg][2] script. +[rssg][3] script generates rss feed from the blog page. +both scripts are included in the repository for ease of use. + +[2]:https://rgz.ee/ssg.html +[3]:https://rgz.ee/rssg.html + +## history + +firstly i've decided to use [jekyll][4] for this website. +but then i found out that it's fairly complex and adds a lot of unnecessary +layers of abstraction to my work. -for my ease of use i added -[this git hook](https://jekyllrb.com/docs/deployment/automated/) -to my server-side git repository. +also i used [this git hook][5] on my server-side git repository for +automatic deployment. + +[4]:https://jekyllrb.com +[5]:https://jekyllrb.com/docs/deployment/automated/ ## license all site contents are licensed under -[creative commons attribution share-alike][1] license (see `LICENSE.CC-BY-SA`). +[creative commons attribution share-alike][6] license (see `LICENSE.CC-BY-SA`). all supplemental code is licensed under an isc license (see `LICENSE.ISC`). -[1]:https://creativecommons.org/licenses/by-sa/4.0/ +[6]:https://creativecommons.org/licenses/by-sa/4.0/
D _config.yml

@@ -1,70 +0,0 @@

-title: aaoth - -plugins: - - jekyll-feed - -# exclude non-site files -exclude: - - LICENSE - - README.md - - art/thumbs.sh - - aaoth_new_post.sh - - post-receive.example - - templates - -# sadly wildcards don't work -keep_files: - - visual/photos/thumbs - - visual/renders/thumbs - - visual/drawings/thumbs - - visual/logos/thumbs - -collections: - music_releases: - output: true - - music_projects: - output: true - permalink: /music/:title/ - sort_by: start_date - - music_titles: - -excerpt_separator: <!--more--> - -defaults: - - scope: - path: "" - values: - layout: "default" - - - scope: - path: "_posts" - values: - layout: "post" - - - scope: - type: "music_projects" - values: - layout: "music-project" - - - scope: - path: "" - type: "music_releases" - values: - layout: "music-release" - - - scope: - path: "assets/img" - values: - image: true - - - scope: - path: "visual" - values: - art: true - - - scope: - path: "visual/*/thumbs" - values: - thumbnail: true
D _data/links.yml

@@ -1,36 +0,0 @@

-- name: github - link: https://github.com/la-ninpre - type: github -- name: gitlab - link: https://gitlab.com/la-ninpre - type: gitlab -- name: youtube - link: https://www.youtube.com/channel/UCLW6sGRLddTR-fB-Ae5uv6Q/ - type: youtube -- name: cgit - link: https://git.aaoth.xyz - type: git -- name: fossil - link: https://fsl.aaoth.xyz - type: fsl -- name: aaoth - link: https://aaoth.bandcamp.com - type: bandcamp -- name: spiral materivm - link: https://spiralmaterivm.bandcamp.com - type: bandcamp -- name: hälsorisk - link: https://haelsorisk.bandcamp.com - type: bandcamp -- name: starnix network - link: https://mstdn.starnix.network/@la_ninpre - type: mastodon - rel: me -- name: toki.social - link: https://toki.social/@jan_lewa - type: mastodon - rel: me -- name: local pleroma - link: https://pleroma.aaoth.xyz/users/la_ninpre - type: pleroma-self - rel: me
D _data/navigation.yml

@@ -1,10 +0,0 @@

-- name: home - link: / -- name: blog - link: /blog/ -- name: music - link: /music/ -- name: visual - link: /visual/ -- name: about - link: /about/
D _includes/art-menu.html

@@ -1,19 +0,0 @@

-<ul class="art-menu"> -{%- for page in site.pages -%} - {%- include pic-path.liquid -%} - {%- assign pagedir = page.dir | remove_first: "/" | split: "/" -%} - {%- if pagedir.first == "visual" and pagedir.size > 1 -%} - <li class="art-menu-item"> - <a class="art-menu-item-mask" href="{{ page.url }}"> - <span class="art-menu-item-text"> - {{ page.title }} - </span> - </a> - <div class="art-menu-item-img"> - <img src="{{ artthumbs | sample }}" - alt="{{ page.title }} preview"> - </div> - </li> - {% endif %} -{%- endfor -%} -</ul>
M _includes/footer.htmlen/_footer.html

@@ -1,36 +1,34 @@

<footer> <hr> - <p> - all site contents are licensed under + <small> <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"> cc-by-sa-4.0 </a> - </p> - <p> - gpg: + | + pgp: <a href="/pgp.asc"> - 405C2C163EF6A2C9 + 405c2c163ef6a2c9 </a> - </p> - <p> - <a rel="alt" href="http://[301:cec9:b4fc:5a23::1]"> + | + <a rel="alternate" href="http://[301:cec9:b4fc:5a23::1]"> yggdrasil </a> | - <a rel="alt" href="http://aaothltwqdq5cxyllcmjegoffb4qpyggodxsn7z2uwegfdscfww5trid.onion"> + <a rel="alternate" href="http://aaothltwqdq5cxyllcmjegoffb4qpyggodxsn7z2uwegfdscfww5trid.onion"> onion </a> | - <a rel="alt" href="http://aaoth5tidbhizgerysxlfrqmg5t7jzb76zt6lattwjj3up524qwa.b32.i2p"> + <a rel="alternate" href="http://aaoth5tidbhizgerysxlfrqmg5t7jzb76zt6lattwjj3up524qwa.b32.i2p"> i2p </a> (<a href="http://aaoth.i2p/?i2paddresshelper=lWQct4-sbrkEzDXoJ9mIuK1o5ON0fPVBD1k9ezES9lKtVeqPOh8Kn4ryjvQaPuhvIpflKG3XIPmTGmeQ8gwLvqU0wTPy29bO5LLeSaVxnguR80OqznzKpnRz~h8Ujs5qOLcXkqVnnImidqUosUEZ3rw62KThqNvlhPLTBeioH7Klxlo3j20fy7SlAnRk8zQKuJxs601BwPG1dATX76sqA0XWqb0p72yH-gFNDL~Tu70G-iuHix4AbEArDfqWi8j5uL1uM9TUjV-jQybfqIMS0fRbqpTyCxN-qkWBCgVm3XzLzSx0bbTkLWZ83GWbgEW9mQ20p6A-lulf8aWrK~PeD030l0CvTSSRRcIkChsjvuWtog40rUSf-JrqYMZNgTeoRfn0dQofd59gb0dmkMO6jSOdKICCbFaVfrbHHU7eeu8qyg0wwLDs5jit77nrGfSVHRtI7bjlvJ6gxSAbhIGwBdyLPvp~bM-e~9X5bw355srWSqaStGKqKGPc9MhPd9h0BQAEAAcAAA=="> addresshelper </a>) - </p> - <p> + | <a href="https://git.aaoth.xyz/aaoth.xyz.git/about"> site source </a> - </p> + </small> </footer> +</body> +</html>
D _includes/music-project-release-by-year.html

@@ -1,17 +0,0 @@

-{%- assign releases = include.releases %} -{%- assign print_author = include.print_author %} -<div class="music-project-release-list"> - <h2>{{ include.title }}</h2> - - {% for year_group in releases %} - <div class="music-project-release-by_year" - id="releases_{{ year_group.name }}"> - <h3 class="music-project-release-year">{{ year_group.name }}</h3> - {%- for release in year_group.items -%} - {% include music-project-release-info.html - release=release - print_author=print_author %} - {%- endfor -%} - </div> - {%- endfor -%} -</div>
D _includes/music-project-release-info.html

@@ -1,68 +0,0 @@

-{%- assign release = include.release %} -{%- assign print_author = include.print_author %} - -<div class="music-project-release-info" - id="{{ release.title | slugify }}"> - - <h4>{% if print_author %} - {% assign author_page = site.music_projects | - find: "title", release.author %} - <a href="{{ author_page.permalink }}">{{ release.author }}</a> - &mdash; - {% endif %} - {% if release.r_tag %} - <a href="{{ release.permalink }}"> - {{ release.title }} - </a> - {% else %} - {{ release.title }} - {% endif %} - {% if release.r_tag %} - <span class="music-project-release-type"> - ({{ release.type }})</span> - {% endif %} - {%- if release.bandcamp -%} - <a href="{{ release.bandcamp }}" - title="listen on bandcamp"> - <img src="/assets/img/bandcamp-icon.png" - alt="listen on bandcamp" - width="24" height="24"> - </a> - {%- endif -%} - </h4> - - <p>released {{ release.date | date_to_string }} - / <em>{{ release.style }}</em> - </p> - - {%- if release.r_tag -%} - <h5>tracklist</h5> - <div class="music-project-tracklist"> - {%- assign release_tracks = site.music_titles | - where: "r_tag", release.r_tag | sort: "num" -%} - <ol> - {%- for track in release_tracks -%} - <li value="{{ track.num }}"> - {%- if release.author == track.author -%} - {{ track.title }} - {%- else -%} - {%- assign - t_a_has_url = site.music_projects - | find: "title", track.author -%} - {%- if t_a_has_url -%} - <a href="{{ t_a_has_url.url }}"> - {{ track.author }}</a> - {%- else -%} - {{ track.author }} - {% endif %} - &mdash; {{ track.title }} - {% endif %} - </li> - {% endfor %} - </ol> - </div> - {%- endif -%} - - {{ release.content | markdownify }} - -</div>
D _includes/music-projects-list.html

@@ -1,20 +0,0 @@

-<ul class="music-project-list"> -{% for project in include.projects %} - <li class="music-project-list-item"> - <a class="music-project-list-item-mask" - href="{{ project.url }}"> - <span class="music-project-list-item-text"> - {{ project.title }} - </span> - <strong>{{ project.description }}</strong> - {%- if project.roles -%} - <em>({{ project.roles | split: " " | join: ", "}})</em> - {%- endif -%} - </a> - <div class="music-project-list-item-img"> - <img src="/visual/logos/thumbs/{{ project.logo }}_thumb.png" - alt=""> - </div> - </li> -{% endfor %} -</ul>
D _includes/navigation.html

@@ -1,15 +0,0 @@

-<nav> - <img src="/assets/img/aaoth-logo.png" alt="aaoth website logo" - width="376" height="102"> - <ul> - {%- for item in site.data.navigation -%} - <li> - <a href="{{ item.link }}" - {% if page.url == item.link %}class="current"{% endif %}> - {{ item.name }} - </a> - </li> - {%- endfor -%} - </ul> - <hr> -</nav>
D _includes/pic-path.liquid

@@ -1,26 +0,0 @@

-{% comment %} - the purpose of this file is to provide arrays to use for art browsing -{% endcomment %} - -{%- capture arts -%} -{%- for file in site.static_files -%} - {%- if file.art and file.path contains page.title and file.thumbnail != true -%} - {{ file.path }} - {% endif %} -{%- endfor -%} -{%- endcapture -%} -{% assign artpics = arts | split: " " %} - -{%- capture arts_thumbs -%} -{%- for art in artpics -%} - {%- assign art_ext = art | split: "." | last -%} - {%- assign art_basepath = art | split: "." | first -%} - {%- assign art_name = art_basepath | split: "/" | last -%} - {%- assign art_thumbpath = art_basepath \ - | remove: art_name | append: "thumbs/" \ - | append: art_name | append: "_thumb." | append: art_ext \ - | append: " " -%} - {{ art_thumbpath }} -{%- endfor -%} -{%- endcapture -%} -{% assign artthumbs = arts_thumbs | split: " " %}
D _includes/post-preview.html

@@ -1,14 +0,0 @@

-<div class="post"> - <h2 id="{{ post.title | slugify }}"> - <a href="{{ post.url }}">{{ post.title }}</a> - </h2> - {{ post.excerpt }} - <p> - <a href="{{ post.url }}">read more...</a> - </p> - <small> - {{ post.date | date_to_string }} / - {% for tag in post.tags %}<a href="/tags/{{tag}}">{{tag}} </a> - {% endfor %} - </small> -</div>
D _includes/title-with-backlink.html

@@ -1,4 +0,0 @@

-<div class="title_with_backlink"> - <h1>{{ include.title }}</h1> - <a class="backlink" href="{{ include.backlink }}">go back</a> -</div>
D _layouts/about-page.html

@@ -1,31 +0,0 @@

---- -layout: default ---- - -<div class="about"> - <div class="about-sidebar"> - <img id="avatar" alt="aaoth-photo" - width="128" height="128" src="/assets/img/aaoth-photo.jpeg"> - <div class="about-links"> - <p>other links:</p> - <ul> - {%- assign sorted_links = site.data.links | sort: "type" -%} - {% for link in sorted_links %} - <li> - <a href="{{ link.link }}" - {% if link.rel %}rel="{{ link.rel }}"{% endif %}> - <img class= "link-icon" width="32" height="32" - alt="" src="/assets/img/{{ link.type }}-icon.png"> - <div class="link-text">{{ link.name }}</div> - </a> - </li> - {% endfor %} - </ul> - </div> - </div> - - <div class="about-info"> - {{ content }} - </div> -</div> -
D _layouts/art-category.html

@@ -1,26 +0,0 @@

---- -layout: default ---- - -{% include title-with-backlink.html title=page.title backlink="/visual/" %} - -{{ content }} - -{%- include pic-path.liquid -%} -{% comment %} - upper include provides `artpics` array - and `artthumbs` array, which are used later -{% endcomment %} - -<div class="art"> -{%- assign pics_n = artpics.size -%} -{%- assign range = (0..pics_n) -%} -{%- for i in range -%} - {%- assign imgname = artpics[i] | split: "/" | last | split: "." | first -%} - <div class="art-img"> - <a href="{{ artpics[i] }}" target="_blank"> - <img src="{{ artthumbs[i] }}" alt="{{ imgname }}"> - </a> - </div> -{% endfor %} -</div>
D _layouts/default.html

@@ -1,25 +0,0 @@

-<!doctype html> -<html lang="en"> - <head> - <meta charset="utf-8"> - <meta name="description" - content="personal website featuring music and art"> - <meta name="keywords" - content="music, art, self-hosting, foss, openbsd"> - <meta name="author" - content="la-ninpre"> - <meta name="viewport" - content="width=device-width, initial-scale=1"> - <title>{{ page.title }} - {{ site.title }}</title> - {% feed_meta %} - <link rel="stylesheet" href="/assets/css/style.css"> - <link rel="icon" href="/assets/img/favicon.ico" type="image/x-icon"> - </head> - <body> - {% include navigation.html %} - <div class="content"> - {{ content }} - </div> - {% include footer.html %} - </body> -</html>
D _layouts/home-page.html

@@ -1,11 +0,0 @@

---- -layout: default ---- - -{{ content }} - -<div class="latest-post"> - <h2>latest post</h2> - {% assign post = site.posts[0] %} - {% include post-preview.html %} -</div>
D _layouts/music-project.html

@@ -1,66 +0,0 @@

---- -layout: default ---- - -<!-- TODO: add physical release links--> -<!-- TODO: add sound for albums that aren't available on bandcamp --> -<!-- TODO: maybe add search by tag for music projects --> -<!-- TODO: add album art --> - -<div class="music-project"> - - <div class="music-project-titlebar"> - {% include title-with-backlink.html title=page.title backlink="/music/" %} - </div> - - <div class="music-project-sidebar"> - <a href="/visual/logos/{{ page.url | split: "/" | last }}-logo.png"> - <img id="logo" - src="/visual/logos/thumbs/{{ page.url | split: "/" | last }}-logo_thumb.png" - alt="{{ page.title }} logo"> - </a> - <p>{{ page.start_date | date_to_string }}&ndash; - {%- if page.end_date -%} - {{ page.end_date | date_to_string }} - {%- else -%} - &hellip; - {%- endif -%} - {%- if page.status -%} - &ensp;({{ page.status }}) - {%- endif -%} - </p> - <p>tags: {{ page.tags | join: ", " }}</p> - </div> - - <div class="music-project-info"> - - {{ page.content | markdownify }} - - </div> - - {%- if page.title == "hälsorisk" %} - {%- assign releases = site.music_releases | - where_exp: "item", "item.r_tag contains 'HSR'" | - group_by_exp: "item", "item.date | date: '%Y'" -%} - {%- else %} - {%- assign releases = site.music_releases | - where: "author", page.title | - group_by_exp: "item", "item.date | date: '%Y'" -%} - {%- endif -%} - {%- assign releases.size = releases | size %} - {% unless releases.size == 0 %} - {%- if page.title == "hälsorisk" %} - {% include music-project-release-by-year.html title="releases" releases=releases print_author=true %} - {% else %} - {% include music-project-release-by-year.html title="releases" releases=releases %} - {% endif %} - {% endunless %} - - {%- assign misc_tracks = site.music_titles | - where_exp: "item", "item.author == page.title and item.r_tag == nil" | - group_by_exp: "item", "item.date | date: '%Y'" -%} - {%- assign misc_tracks.size = misc_tracks | size %} - {% unless misc_tracks.size == 0 %} - {% include music-project-release-by-year.html title="misc tracks" releases=misc_tracks %} - {% endunless %} -</div>
D _layouts/music-release.html

@@ -1,7 +0,0 @@

---- -layout: default ---- - -<!-- TODO: add album art and maybe change the whole structure --> - -{%- include music-project-release-info.html release=page %}
D _layouts/post.html

@@ -1,22 +0,0 @@

---- -layout: default ---- - -<div class="post-page"> - <div class="post-header"> - {% include title-with-backlink.html title=page.title backlink="/blog/" %} - <div class="post-header-info"> - <p class="post-date">{{ page.date | date: "%F" }}</p> - {% if page.tags.size > 0 %} - <p>tags:</p> - <ul> - {% for tag in page.tags %} - <li><a href="/tags/{{ tag }}">{{ tag }}</a></li> - {% endfor %} - {% endif %} - </ul> - </div> - <hr> - </div> - {{ content }} -</div>
D _layouts/tagsort.html

@@ -1,23 +0,0 @@

---- -layout: default ---- - -<h1>{{ page.tag }}</h1> - -{% capture nposts %} -{{ site.tags[page.tag] | size }} -{%- endcapture -%} -{%- capture nposts_mod10 -%} -{{ nposts | modulo: 10 }} -{%- endcapture -%} -<small> - {{ nposts }} {% if nposts_mod10 == "1" %} post - {%- else -%} posts - {% endif %} -</small> - -<div class="posts"> -{% for post in site.tags[page.tag] %} - {% include post-preview.html %} -{% endfor %} -</div>
D _music_projects/aaock-morth.md

@@ -1,12 +0,0 @@

---- -title: aaock-morth -start_date: 2015.11.06 -status: stalled -description: ambient related to voices and obscure sounds -roles: samples mixing mastering -tags: ambient dark&nbsp;ambient -permalink: /haelsorisk/aaock-morth/ -logo: aaock-morth-logo ---- - -abstract ambient project about lack of point in human speech.
D _music_projects/aaoth.md

@@ -1,10 +0,0 @@

---- -title: aaoth -other: true -start_date: 2018.12.30 -description: self-titled project for experiments -tags: experimental no&nbsp;music electronic -logo: aaoth-logo ---- - -personal experiments and sound studies.
D _music_projects/akpngims.md

@@ -1,12 +0,0 @@

---- -title: akpngims -start_date: 2015.07.13 -status: stalled -description: black ambient and noise -roles: synths samples mixing mastering -tags: black&nbsp;ambient noise -permalink: /haelsorisk/akpngims/ -logo: akpngims-logo ---- - -rough sounding obscure project.
D _music_projects/haelsorisk.md

@@ -1,23 +0,0 @@

---- -title: hälsorisk -start_date: 2015.02.02 -status: active -description: dark non-musical ensemble -roles: everything -tags: experimental non-music -permalink: /haelsorisk/ -logo: haelsorisk-logo ---- - -## overview - -other than being an independent web-label, hälsorisk can be treated as -music project on it's own. additionaly it is a -<span class="with_hidden"><span class="hidden">non</span>community</span> -of truely free -<span class="with_hidden"><span class="hidden">anti</span>art</span>. - -## history - -hälsorisk was created in 2015 by aaoth. it's purpose was to absorb and -unite all musical and cultural work done by me.
D _music_projects/lequalone.md

@@ -1,13 +0,0 @@

---- -title: L=1 -start_date: 2015.05.28 -end_date: 2015.11.02 -status: closed -description: dark synthwave and dark ambient -roles: synths samples mixing mastering -tags: dark&nbsp;synthwave dark&nbsp;ambient -permalink: /haelsorisk/lequalone/ -logo: lequalone-logo ---- - -debut project inspired by *diagnose: lebensgefahr*.
D _music_projects/secauloruxsehi.md

@@ -1,10 +0,0 @@

---- -title: secauloruxse'i -other: true -start_date: 2017.11.05 -description: lojban-themed chiptune -tags: chiptune -logo: secauloruxsehi-logo ---- - -synth and chiptune project with name in lojban.
D _music_projects/spiral-materivm.md

@@ -1,12 +0,0 @@

---- -title: spiral materivm -other: true -start_date: 2018.02.25 -description: primitive post-rock -roles: all&nbsp;instruments vocals -status: active -tags: post-rock primitive&nbsp;rock -logo: spiral-materivm-logo ---- - -project about world perception from personal perspective.
D _music_projects/xvra.md

@@ -1,13 +0,0 @@

---- -title: xvra -start_date: 22.02.2015 -start_date: 2015.02.22 -status: active -description: black metal -tags: black&nbsp;metal dsbm -roles: all&nbsp;instruments vocals -permalink: /haelsorisk/xvra/ -logo: xvra-logo ---- - -black metal project.
D _music_releases/2015-05-28-lequalone-the-darkness.md

@@ -1,11 +0,0 @@

---- -author: L=1 -title: the darkness -type: album -date: 28-05-2015 -style: dark&nbsp;ambient -r_tag: HSR-01 -permalink: /haelsorisk/lequalone/the-darkness/ ---- - -first dark ambient album.
D _music_releases/2015-06-13-akpngims-enneorth.md

@@ -1,12 +0,0 @@

---- -author: akpngims -title: enneorth -type: album -date: 13-06-2015 -style: black&nbsp;ambient -bandcamp: https://haelsorisk.bandcamp.com/album/enneorth -r_tag: HSR-03 -permalink: /haelsorisk/akpngims/enneorth/ ---- - -all is error. the great mistake. irregular.
D _music_releases/2015-09-12-lequalone-wastelands.md

@@ -1,12 +0,0 @@

---- -author: L=1 -title: wastelands -type: ep -date: 12-09-2015 -style: dark&nbsp;ambient -bandcamp: https://haelsorisk.bandcamp.com/album/wastelands -r_tag: HSR-02 -permalink: /haelsorisk/lequalone/wastelands/ ---- - -apocalyptic synthwave inspired by fallout game series.
D _music_releases/2015-10-05-lequalone-chasm-of-psychosis.md

@@ -1,11 +0,0 @@

---- -author: L=1 -title: chasm of psychosis -type: lp -date: 05-10-2015 -style: dark&nbsp;synthwave -r_tag: HSR-05 -permalink: /haelsorisk/lequalone/chasm-of-psychosis/ ---- - -chaotic synthwave lp.
D _music_releases/2015-10-26-lequalone-soul-ocean.md

@@ -1,12 +0,0 @@

---- -author: L=1 -title: soul ocean -type: album -date: 26-10-2015 -style: dark&nbsp;synthwave -bandcamp: https://haelsorisk.bandcamp.com/album/soul-ocean -r_tag: HSR-06 -permalink: /haelsorisk/lequalone/soul-ocean/ ---- - -dark atmospheric synthwave.
D _music_releases/2015-11-02-lequalone-youll-never-hear-me-again.md

@@ -1,11 +0,0 @@

---- -author: L=1 -title: you'll never hear me again -type: ep -date: 02-11-2015 -style: dark&nbsp;ambient -r_tag: HSR-07 -permalink: /haelsorisk/lequalone/youll-never-hear-me-again/ ---- - -ending ep with sample experiments.
D _music_releases/2015-17-27-xvra-svartfeber.md

@@ -1,11 +0,0 @@

---- -author: xvra -title: svartfeber -type: demo -date: 27-07-2015 -style: black&nbsp;metal raw&nbsp;black -r_tag: HSR-04 -permalink: /haelsorisk/xvra/svartfeber/ ---- - -debut demo with vocals recorded in nearby forest.
D _music_releases/2016-08-22-xvra-save-me-from-the-life.md

@@ -1,12 +0,0 @@

---- -author: xvra -title: save me from the life -type: demo -date: 22-08-2016 -style: black&nbsp;metal raw&nbsp;black -bandcamp: https://haelsorisk.bandcamp.com/album/save-me-from-the-life -r_tag: HSR-09 -permalink: /haelsorisk/xvra/save-me-from-the-life/ ---- - -second demo.
D _music_releases/2016-16-18-aaock-morth-aateh-tgh-saaghth.md

@@ -1,12 +0,0 @@

---- -author: aaock-morth -title: aate'h tgh'saaghth -type: album -date: 18-06-2016 -style: ambient abstract -bandcamp: https://haelsorisk.bandcamp.com/album/aateh-tghsaaghth -r_tag: HSR-08 -permalink: /haelsorisk/aaock-morth/aateh-tgh-saaghth/ ---- - -it will be better if you don't know that.
D _music_releases/2017-01-06-xvra-doedstad.md

@@ -1,12 +0,0 @@

---- -author: xvra -title: doedstad -type: demo -date: 06-01-2017 -style: black&nbsp;metal raw&nbsp;black -bandcamp: https://haelsorisk.bandcamp.com/album/doedstad -r_tag: HSR-10 -permalink: /haelsorisk/xvra/doedstad/ ---- - -behold the silence.
D _music_releases/2017-08-05-haelsorisk-laengtan-efter-ett-slut.md

@@ -1,14 +0,0 @@

---- -author: hälsorisk -title: längtan efter ett slut -type: compilation -date: 05-08-2017 -style: acoustic dissonant -bandcamp: https://haelsorisk.bandcamp.com/album/l-ngtan-efter-ett-slut -r_tag: HSR-11 -permalink: /haelsorisk/laengtan-efter-ett-slut/ ---- - -soundtrack to the [short-movie with the same name][1]. - -[1]:https://youtu.be/v4CqcxcWaDU
D _music_releases/2018-06-30-xvra-absens.md

@@ -1,13 +0,0 @@

---- -author: xvra -title: absens -type: album -date: 30-06-2018 -style: black&nbsp;metal raw&nbsp;black -bandcamp: https://haelsorisk.bandcamp.com/album/absens -r_tag: HSR-12 -permalink: /haelsorisk/xvra/absens/ ---- - -dedicated to the ultimate void that was the beginning -and will be the end of out futile existence.
D _music_releases/2018-11-04-secauloruxsehi-fungi-noise.md

@@ -1,12 +0,0 @@

---- -author: secauloruxse'i -title: fungi-noise -type: album -date: 04-11-2018 -style: chiptune lo-fi synth -bandcamp: https://aaoth.bandcamp.com/album/fungi-noise -r_tag: SCLRS-01 -permalink: /music/secauloruxsehi/fungi-noise/ ---- - -fungi-related chiptune made with sunvox.
D _music_releases/2018-11-08-secauloruxsehi-rot.md

@@ -1,12 +0,0 @@

---- -author: secauloruxse'i -title: rot -type: album -date: 08-11-2018 -style: synthwave -bandcamp: https://aaoth.bandcamp.com/album/rot -r_tag: SCLRS-02 -permalink: /music/secauloruxsehi/rot/ ---- - -electronic variations on riffs created by my friend.
D _music_releases/2018-11-09-secauloruxsehi-aetheria.md

@@ -1,12 +0,0 @@

---- -author: secauloruxse'i -title: aetheria -type: album -date: 09-11-2018 -style: minimal&nbsp;synth -bandcamp: https://aaoth.bandcamp.com/album/aetheria -r_tag: SCLRS-03 -permalink: /music/secauloruxsehi/aetheria/ ---- - -trilogy about mysterious land of pure art.
D _music_releases/2019-01-07-spiral-materivm-through-woods-and-despair.md

@@ -1,16 +0,0 @@

---- -author: spiral materivm -title: through woods and despair -type: album -date: 07-01-2019 -style: post-rock -bandcamp: https://spiral-materivm.bandcamp.com/album/through-woods-and-despair -r_tag: HSR-13 -permalink: /music/spiral-materivm/through-woods-and-despair/ ---- - -a story about mind (or mad) journeys. -an alternative continuation of past works. - -written in may-july 2018. -recorded in august-december 2018.
D _music_titles/aaock-morth-aateh-tgh-saaghth-01-aaock-xeeh-morth.md

@@ -1,6 +0,0 @@

---- -title: aaock xeeh morth -author: aaock-morth -r_tag: HSR-08 -num: 01 ----
D _music_titles/aaock-morth-aateh-tgh-saaghth-02-yhe-odrghock-dhtrhogho-tgh-bhuugrh.md

@@ -1,6 +0,0 @@

---- -title: yhe odrghock'dhtrhogho tgh'bhuugrh -author: aaock-morth -r_tag: HSR-08 -num: 02 ----
D _music_titles/aaock-morth-aateh-tgh-saaghth-03-huhuth-ehnglvhi-uukh-kuuth-buhrgh.md

@@ -1,6 +0,0 @@

---- -title: h'uguth'ehnglvhi uukh'kuuth buhrgh -author: aaock-morth -r_tag: HSR-08 -num: 03 ----
D _music_titles/aaoth-forwards.md

@@ -1,12 +0,0 @@

---- -author: aaoth -title: forwards (universe wide grief) -date: 30-12-2018 -style: electronic improvisation -bandcamp: https://aaoth.bandcamp.com/track/forwards-universe-wide-grief ---- - -little desolate improv during the new year's eve's evening, recorded through sunvox. - -> this is the song of our lost souls when they'll fly away -> from the earth destroyed by humans.
D _music_titles/aaoth-lookthrough.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: lookthrough -date: 28-02-2019 -style: eai abstract -bandcamp: https://aaoth.bandcamp.com/track/lookthrough ---- - -unthemed guitar improvisation.
D _music_titles/aaoth-madnight.md

@@ -1,11 +0,0 @@

---- -author: aaoth -title: madnight -date: 22-04-2019 -style: electronic lo-fi -bandcamp: https://aaoth.bandcamp.com/track/madnight ---- - -atmospheric electronic track made using [sunvox][1] on android. - -[1]:https://warmplace.ru/soft/sunvox
D _music_titles/aaoth-massive-void.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: massive void -date: 13-04-2020 -style: generative electronic -bandcamp: https://aaoth.bandcamp.com/track/massive-void ---- - -generative abstract track made with vcvrack.
D _music_titles/aaoth-mind-collapse.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: mind collapse -date: 31-03-2019 -style: eai -bandcamp: https://aaoth.bandcamp.com/track/mind-collapse ---- - -recorded directly on recycled tape. only three samples in sunvox were used.
D _music_titles/aaoth-sgti.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: sgti -date: 23-04-2019 -style: eai -bandcamp: https://aaoth.bandcamp.com/track/sgti ---- - -**s**unvox/**g**uv'nor/**t**ape/**i**mprov
D _music_titles/aaoth-that-cant-be.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: that can't be -date: 12-01-2019 -style: eai apocalyptic -bandcamp: https://aaoth.bandcamp.com/track/that-cant-be ---- - -apocalyptic guitar improvisation.
D _music_titles/aaoth-the-past.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: the past -date: 20-05-2019 -style: eai lo-fi -bandcamp: https://aaoth.bandcamp.com/track/the-past ---- - -atmospheric lo-fi improvisation.
D _music_titles/aaoth-vortex-machines.md

@@ -1,9 +0,0 @@

---- -author: aaoth -title: vortex machines -date: 10-05-2019 -style: electronic improvisation -bandcamp: https://aaoth.bandcamp.com/track/vortex-machines ---- - -apocalyptic electronic improvisation using sunvox.
D _music_titles/akpngims-enneorth-01-ye-many-faces-ov-kaos.md

@@ -1,8 +0,0 @@

---- -title: ye many faces ov kaos -author: akpngims -r_tag: HSR-03 -num: 01 ---- - -test
D _music_titles/akpngims-enneorth-02-noise-within-abomination-ov-inhumanity.md

@@ -1,7 +0,0 @@

---- -title: noise within abomination ov inhumanity -author: akpngims -r_tag: HSR-03 -num: 02 ---- -
D _music_titles/akpngims-enneorth-03-skream-ov-faceless.md

@@ -1,7 +0,0 @@

---- -title: skream ov faceless -author: akpngims -r_tag: HSR-03 -num: 03 ---- -
D _music_titles/haelsorisk-laengtan-efter-ett-slut-01-aaock-morth-shnnhkvh.md

@@ -1,6 +0,0 @@

---- -title: shnhkvh -author: aaock-morth -r_tag: HSR-11 -num: 01 ----
D _music_titles/haelsorisk-laengtan-efter-ett-slut-02-xvra-mvtvs.md

@@ -1,6 +0,0 @@

---- -title: mvtvs -author: xvra -r_tag: HSR-11 -num: 02 ----
D _music_titles/haelsorisk-laengtan-efter-ett-slut-03-vakk-ii.md

@@ -1,6 +0,0 @@

---- -title: II -author: vakk -r_tag: HSR-11 -num: 03 ----
D _music_titles/haelsorisk-laengtan-efter-ett-slut-04-xvra-void-within.md

@@ -1,6 +0,0 @@

---- -title: void within (acoustic) -author: xvra -r_tag: HSR-11 -num: 04 ----
D _music_titles/haelsorisk-laengtan-efter-ett-slut-05-xvra-when-became-a-dirt.md

@@ -1,6 +0,0 @@

---- -title: when became a dirt -author: xvra -r_tag: HSR-11 -num: 05 ----
D _music_titles/haelsorisk-laengtan-efter-ett-slut-06-akpngims-woods-of-molten-plastic-people.md

@@ -1,6 +0,0 @@

---- -title: woods of molten plastic people -author: aaock-morth -r_tag: HSR-11 -num: 06 ----
D _music_titles/lequalone-chasm-of-psychosis-01-reign-of-lie.md

@@ -1,6 +0,0 @@

---- -title: reign of lie -author: L=1 -r_tag: HSR-05 -num: 01 ----
D _music_titles/lequalone-chasm-of-psychosis-02-beyond-mind-exist-no-future.md

@@ -1,6 +0,0 @@

---- -title: beyond mind exist no future -author: L=1 -r_tag: HSR-05 -num: 02 ----
D _music_titles/lequalone-chasm-of-psychosis-03-nobody-hears-you.md

@@ -1,6 +0,0 @@

---- -title: nobody hears you -author: L=1 -r_tag: HSR-05 -num: 03 ----
D _music_titles/lequalone-chasm-of-psychosis-04-alone-in-the-desert-of-nothingness.md

@@ -1,6 +0,0 @@

---- -title: alone in the desert of nothingness -author: L=1 -r_tag: HSR-05 -num: 04 ----
D _music_titles/lequalone-chasm-of-psychosis-05-empty-space-within-your-soul.md

@@ -1,6 +0,0 @@

---- -title: empty space within your soul -author: L=1 -r_tag: HSR-05 -num: 05 ----
D _music_titles/lequalone-chasm-of-psychosis-06-unending-void.md

@@ -1,6 +0,0 @@

---- -title: unending void -author: L=1 -r_tag: HSR-05 -num: 06 ----
D _music_titles/lequalone-chasm-of-psychosis-07-silence-of-noise.md

@@ -1,6 +0,0 @@

---- -title: silence of noise -author: L=1 -r_tag: HSR-05 -num: 07 ----
D _music_titles/lequalone-chasm-of-psychosis-08-hear-abomination.md

@@ -1,6 +0,0 @@

---- -title: hear abomination -author: L=1 -r_tag: HSR-05 -num: 08 ----
D _music_titles/lequalone-chasm-of-psychosis-09-illusion-of-hope.md

@@ -1,6 +0,0 @@

---- -title: illusion of hope -author: L=1 -r_tag: HSR-05 -num: 09 ----
D _music_titles/lequalone-chasm-of-psychosis-10-rainclouds-of-hate.md

@@ -1,6 +0,0 @@

---- -title: rainclouds of hate -author: L=1 -r_tag: HSR-05 -num: 10 ----
D _music_titles/lequalone-chasm-of-psychosis-11-await-the-dawn-of-pain.md

@@ -1,6 +0,0 @@

---- -title: await the dawn of pain -author: L=1 -r_tag: HSR-05 -num: 11 ----
D _music_titles/lequalone-chasm-of-psychosis-12-in-a-pursuit-of-vain.md

@@ -1,6 +0,0 @@

---- -title: in a pursuit of vain -author: L=1 -r_tag: HSR-05 -num: 12 ----
D _music_titles/lequalone-chasm-of-psychosis-13-youre-inside-my-own-hideous-nightmare.md

@@ -1,6 +0,0 @@

---- -title: you're inside my own hideous nightmare -author: L=1 -r_tag: HSR-05 -num: 13 ----
D _music_titles/lequalone-chasm-of-psychosis-14-the-end-of-this-madness.md

@@ -1,6 +0,0 @@

---- -title: the end of this madness -author: L=1 -r_tag: HSR-05 -num: 14 ----
D _music_titles/lequalone-soul-ocean-01-entrance-to-the-singularity.md

@@ -1,6 +0,0 @@

---- -title: entrance to the singularity -author: L=1 -r_tag: HSR-06 -num: 01 ----
D _music_titles/lequalone-soul-ocean-02-in-the-vast-of-the-soul-ocean.md

@@ -1,6 +0,0 @@

---- -title: in the vast of the soul ocean -author: L=1 -r_tag: HSR-06 -num: 02 ----
D _music_titles/lequalone-soul-ocean-03-eternal-dream.md

@@ -1,6 +0,0 @@

---- -title: eternal dream -author: L=1 -r_tag: HSR-06 -num: 03 ----
D _music_titles/lequalone-soul-ocean-04-in-the-bottom-of-the-soul-ocean.md

@@ -1,6 +0,0 @@

---- -title: in the bottom of the soul ocean -author: L=1 -r_tag: HSR-06 -num: 04 ----
D _music_titles/lequalone-soul-ocean-05-deep-in-the-cavern.md

@@ -1,6 +0,0 @@

---- -title: deep in the cavern -author: L=1 -r_tag: HSR-06 -num: 05 ----
D _music_titles/lequalone-soul-ocean-06-in-useless-searches-of-lifes-sense.md

@@ -1,6 +0,0 @@

---- -title: in useless searches of life's sense -author: L=1 -r_tag: HSR-06 -num: 06 ----
D _music_titles/lequalone-soul-ocean-07-grind-alert.md

@@ -1,6 +0,0 @@

---- -title: grind alert -author: L=1 -r_tag: HSR-06 -num: 07 ----
D _music_titles/lequalone-soul-ocean-08-the-last-breath.md

@@ -1,6 +0,0 @@

---- -title: the last breath -author: L=1 -r_tag: HSR-06 -num: 08 ----
D _music_titles/lequalone-the-darkness-01-world-of-despair.md

@@ -1,7 +0,0 @@

---- -title: world of despair -author: L=1 -r_tag: HSR-01 -num: 01 ---- -
D _music_titles/lequalone-the-darkness-02-apocalyptic-panic.md

@@ -1,7 +0,0 @@

---- -title: apocalyptic panic -author: L=1 -r_tag: HSR-01 -num: 02 ---- -
D _music_titles/lequalone-the-darkness-03-voices-from-the-deep.md

@@ -1,7 +0,0 @@

---- -title: voices from the deep -author: L=1 -r_tag: HSR-01 -num: 03 ---- -
D _music_titles/lequalone-the-darkness-04-calm-decay.md

@@ -1,8 +0,0 @@

---- -title: calm decay -author: L=1 -r_tag: HSR-01 -num: 04 ---- - -
D _music_titles/lequalone-the-darkness-05-distant-omen-of-war.md

@@ -1,8 +0,0 @@

---- -title: distant omen of war -author: L=1 -r_tag: HSR-01 -num: 05 ---- - -
D _music_titles/lequalone-the-darkness-06-night-in-abandoned-church.md

@@ -1,8 +0,0 @@

---- -title: night in abandoned church -author: L=1 -r_tag: HSR-01 -num: 06 ---- - -
D _music_titles/lequalone-the-darkness-07-lonely-world-in-which-youll-die.md

@@ -1,7 +0,0 @@

---- -title: lonely world in which you'll die -author: L=1 -r_tag: HSR-01 -num: 07 ---- -
D _music_titles/lequalone-the-darkness-08-the-darkness.md

@@ -1,7 +0,0 @@

---- -title: the darkness -author: L=1 -r_tag: HSR-01 -num: 08 ---- -
D _music_titles/lequalone-wastelands-01-crawling-danger.md

@@ -1,6 +0,0 @@

---- -title: crawling danger -author: L=1 -r_tag: HSR-02 -num: 01 ----
D _music_titles/lequalone-wastelands-02-wastelands.md

@@ -1,6 +0,0 @@

---- -title: wastelands -author: L=1 -r_tag: HSR-02 -num: 02 ----
D _music_titles/lequalone-youll-never-hear-me-again-01-terrifying-mind-disassembly-disaster.md

@@ -1,6 +0,0 @@

---- -title: terrifying mind disassembly disaster -author: L=1 -r_tag: HSR-07 -num: 01 ----
D _music_titles/lequalone-youll-never-hear-me-again-02-no-hope-lies-exist.md

@@ -1,6 +0,0 @@

---- -title: no hope, lies exist -author: L=1 -r_tag: HSR-07 -num: 02 ----
D _music_titles/lequalone-youll-never-hear-me-again-03-beyond-mind-exist-no-future.md

@@ -1,6 +0,0 @@

---- -title: beyond mind exist no future (re-issue) -author: L=1 -r_tag: HSR-07 -num: 03 ----
D _music_titles/secauloruxsehi-aetheria-01-forwards.md

@@ -1,6 +0,0 @@

---- -title: forwards -author: secauloruxse'i -r_tag: SCLRS-03 -num: 01 ----
D _music_titles/secauloruxsehi-aetheria-02-aetheria.md

@@ -1,6 +0,0 @@

---- -title: aetheria -author: secauloruxse'i -r_tag: SCLRS-03 -num: 02 ----
D _music_titles/secauloruxsehi-aetheria-03-the-gone.md

@@ -1,6 +0,0 @@

---- -title: the gone -author: secauloruxse'i -r_tag: SCLRS-03 -num: 03 ----
M _music_titles/secauloruxsehi-complex-neon-chamber.mden/music/secauloruxsehi/complex-neon-chamber.md

@@ -1,12 +1,14 @@

---- -author: secauloruxse'i -title: complex neon chamber -date: 08-02-2019 -style: idm no&nbsp;techno -bandcamp: https://aaoth.bandcamp.com/track/complex-neon-chamber ---- +# secauloruxse'i - complex neon chamber -lyrics: +``` + +released: 08-02-2019 +style: idm, no techno +``` + +[listen on bandcamp](https://aaoth.bandcamp.com/track/complex-neon-chamber) + +## lyrics [verse 1]
D _music_titles/secauloruxsehi-fungi-noise-01-illoh.md

@@ -1,6 +0,0 @@

---- -title: illoh -author: secauloruxse'i -r_tag: SCLRS-01 -num: 01 ----
D _music_titles/secauloruxsehi-fungi-noise-02-le-ke-cehu-morsi-cu-lenku.md

@@ -1,6 +0,0 @@

---- -title: le ka ce'u morsi cu lenku -author: secauloruxse'i -r_tag: SCLRS-01 -num: 02 ----
D _music_titles/secauloruxsehi-fungi-noise-03-lehi-condi.md

@@ -1,6 +0,0 @@

---- -title: le'i condi (v. reine cover) -author: secauloruxse'i -r_tag: SCLRS-01 -num: 03 ----
D _music_titles/secauloruxsehi-fungi-noise-04-la-remxei.md

@@ -1,6 +0,0 @@

---- -title: la remxei -author: secauloruxse'i -r_tag: SCLRS-01 -num: 04 ----
D _music_titles/secauloruxsehi-fungi-noise-05-mi-na-djuno.md

@@ -1,6 +0,0 @@

---- -title: mi na djuno -author: secauloruxse'i -r_tag: SCLRS-01 -num: 05 ----
D _music_titles/secauloruxsehi-fungi-noise-06-lo-catlu.md

@@ -1,6 +0,0 @@

---- -title: lo catlu -author: secauloruxse'i -r_tag: SCLRS-01 -num: 06 ----
D _music_titles/secauloruxsehi-rot-01-plaguenthra.md

@@ -1,6 +0,0 @@

---- -title: plaguenthra -author: secauloruxse'i -r_tag: SCLRS-02 -num: 01 ----
D _music_titles/secauloruxsehi-rot-02-cccxxxiii.md

@@ -1,6 +0,0 @@

---- -title: cccxxxiii -author: secauloruxse'i -r_tag: SCLRS-02 -num: 02 ----
D _music_titles/spiral-materivm-through-woods-and-despair-01-despair.md

@@ -1,8 +0,0 @@

---- -title: despair -author: spiral materivm -r_tag: HSR-13 -num: 01 ---- - -instrumental track.
D _music_titles/spiral-materivm-through-woods-and-despair-02-if-i-was-there.md

@@ -1,6 +0,0 @@

---- -title: if i was there... -author: spiral materivm -r_tag: HSR-13 -num: 02 ----
D _music_titles/spiral-materivm-through-woods-and-despair-03-night-sky.md

@@ -1,6 +0,0 @@

---- -title: night sky -author: spiral materivm -r_tag: HSR-13 -num: 03 ----
D _music_titles/spiral-materivm-through-woods-and-despair-04-towards-the-worlds-end.md

@@ -1,6 +0,0 @@

---- -title: towards the world's end -author: spiral materivm -r_tag: HSR-13 -num: 04 ----
D _music_titles/spiral-materivm-through-woods-and-despair-05-inside-the-clock.md

@@ -1,6 +0,0 @@

---- -title: inside the clock -author: spiral materivm -r_tag: HSR-13 -num: 05 ----
D _music_titles/spiral-materivm-through-woods-and-despair-06-woods.md

@@ -1,8 +0,0 @@

---- -title: woods -author: spiral materivm -r_tag: HSR-13 -num: 06 ---- - -instrumental track
D _music_titles/xvra-absens-01-livloes.md

@@ -1,6 +0,0 @@

---- -title: livlös -author: xvra -r_tag: HSR-12 -num: 01 ----
D _music_titles/xvra-absens-02-foerlust.md

@@ -1,6 +0,0 @@

---- -title: förlust -author: xvra -r_tag: HSR-12 -num: 02 ----
D _music_titles/xvra-absens-03-fatal-fall.md

@@ -1,6 +0,0 @@

---- -title: fatal fall -author: xvra -r_tag: HSR-12 -num: 03 ----
D _music_titles/xvra-absens-04-dreamdwellar.md

@@ -1,6 +0,0 @@

---- -title: dreamdwellar -author: xvra -r_tag: HSR-12 -num: 04 ----
D _music_titles/xvra-absens-05-dissociative.md

@@ -1,6 +0,0 @@

---- -title: dissociative -author: xvra -r_tag: HSR-12 -num: 05 ----
D _music_titles/xvra-absens-06-mvtvs.md

@@ -1,6 +0,0 @@

---- -title: mvtvs -author: xvra -r_tag: HSR-12 -num: 06 ----
D _music_titles/xvra-absens-07-for-a-while.md

@@ -1,6 +0,0 @@

---- -title: for a while... -author: xvra -r_tag: HSR-12 -num: 07 ----
D _music_titles/xvra-absens-08-vehikle.md

@@ -1,6 +0,0 @@

---- -title: vehikle -author: xvra -r_tag: HSR-12 -num: 08 ----
D _music_titles/xvra-absens-09-doedstad.md

@@ -1,6 +0,0 @@

---- -title: dödstad -author: xvra -r_tag: HSR-12 -num: 09 ----
D _music_titles/xvra-absens-10-longing-for-an-end.md

@@ -1,6 +0,0 @@

---- -title: longing for an end -author: xvra -r_tag: HSR-12 -num: 10 ----
D _music_titles/xvra-absens-11-named-by-grief.md

@@ -1,6 +0,0 @@

---- -title: named by grief -author: xvra -r_tag: HSR-12 -num: 11 ----
D _music_titles/xvra-absens-12-pleasures-unattained.md

@@ -1,8 +0,0 @@

---- -title: pleasures unattained -author: xvra -r_tag: HSR-12 -num: 12 ---- - -guest vocals done by Neratoh.
D _music_titles/xvra-absens-13-no-point.md

@@ -1,6 +0,0 @@

---- -title: no point -author: xvra -r_tag: HSR-12 -num: 13 ----
D _music_titles/xvra-doedstad-01-the-dead-city.md

@@ -1,6 +0,0 @@

---- -title: the dead city -author: xvra -r_tag: HSR-10 -num: 01 ----
D _music_titles/xvra-doedstad-02-ruttendstad.md

@@ -1,6 +0,0 @@

---- -title: ruttenstad -author: xvra -r_tag: HSR-10 -num: 02 ----
D _music_titles/xvra-save-me-from-the-life-01-opening-the-unlife.md

@@ -1,6 +0,0 @@

---- -title: opening the unlife -author: xvra -r_tag: HSR-09 -num: 01 ----
D _music_titles/xvra-save-me-from-the-life-02-ashes-ov-ruined-freedom.md

@@ -1,6 +0,0 @@

---- -title: ashes of ruined freedom -author: xvra -r_tag: HSR-09 -num: 02 ----
D _music_titles/xvra-save-me-from-the-life-03-void-within.md

@@ -1,6 +0,0 @@

---- -title: void within -author: xvra -r_tag: HSR-09 -num: 03 ----
D _music_titles/xvra-svartfeber-01-pleasures-unattained.md

@@ -1,6 +0,0 @@

---- -title: pleasures unattained -author: xvra -r_tag: HSR-04 -num: 01 ----
D _music_titles/xvra-svartfeber-02-ye-black-fever.md

@@ -1,6 +0,0 @@

---- -title: ye black fever -author: xvra -r_tag: HSR-04 -num: 02 ----
D _posts/2020-12-06-fossil-to-git.md

@@ -1,68 +0,0 @@

---- -title: fossil export to git -author: la-ninpre -tags: fossil git tutorial ---- - -i was trying to export my website repo to fossil using suggested method from -[fossil website][1]: - -``` -git fast-export --all | fossil import --git repo.fossil -``` - -[1]:https://www.fossil-scm.org/home/doc/trunk/www/inout.wiki - -but i didn't like that fossil recognizes my email as username and so commit -messages user was `user@example.com` instead of `user`. - -<!--more--> - -i then read a bit about options of `git fast-export` and found `--anonymize` -flag. but it's results weren't satisfying either. - -when i looked on a raw output of `git fast-export`, i noticed that commit author -is specified there as - -``` -author user <user@example.com> -``` - -and then it's flashed in my head: why not pipe git export through sed and just -replace the contents of `<>` with username instead of email. - -so the final command looks like this: - -``` -git fast-export --all | \ - sed -E 's/^((author)|(committer))[[:blank:]]+([[:graph:]]+)[[:blank:]]+(<[[:alnum:]]+@[[:alnum:]]+\.[[:alnum:]]+>)/\1 \4 <\4>/' | \ - fossil import --git repo.fossil -``` - -and it converts - -``` -author user <user@example.com> -``` - -to - -``` -author user <user> -``` - -which is odd, but fine for fossil import. - ---- - -update: i tested this on a bigger repo with older history and found that this -regexp was not perfect, i updated it to handle situations like -`user@example.co.uk` and also names that consist of more than one word. - -``` -git fast-export --all | \ - sed -E 's/^((author)|(committer))[[:blank:]]+([[:graph:]]+([[:blank:]]+[[:graph:]]+)*)[[:blank:]]+(<[[:graph:]]+@[[:graph:]]+(\.[[:graph:]]+)+>)/\1 \4<\4>/' | \ - fossil import --git repo.fossil -``` - -it's veery evil looking horrible thing, but it works.
D _posts/2020-12-09-fossil-autoupdate-cronjob.md

@@ -1,67 +0,0 @@

---- -title: auto-update fossil using cron(8) -tags: openbsd tutorial fossil -date: 2020-12-09T01:37+03:00 ---- - -i'm running an instance of fossil on my openbsd server (it's the same that is -powering this website) and for some reason i want it to be up-to-date. more -presicely, bleeding edge. - -<!--more--> - -for that i added this part to my `daily.local` script (for those of you who -don't know, it's script that running every day by cron(8)): - -``` -cd /root/fossil && \ - /usr/local/bin/fossil up | \ - awk '/changes:/ { - if ($2 == "None."){ - print "No changes, exiting..."; - exit 1 - }else{ - out=""; - for(i=2; i<=NF; i++){ - out=out" "$i - }; - } - print out; - exit 0 - }' && \ - /usr/local/bin/fossil revert src/repolist.c >/dev/null && \ - patch src/repolist.c /var/www/htdocs/fsl.aaoth.xyz/repolist.c.patch \ - >/dev/null && \ - ./configure --static >/dev/null && \ - make >/dev/null && \ - cp fossil /var/www/bin && \ - make distclean >/dev/null && \ - /usr/local/bin/fossil stat -``` - -it is very straightforward and simple. firstly, it's changing directory into -place, where i have fossil checkout (made with `fossil clone` and -`fossil open`). then it runs `fossil up` and piping it to a small awk script -that is checking, is there any changes pulled down. - -after that there's one interesting part. `fossil revert src/repolist.c` is there -because i modified it a little bit to make my [repolist][1] page look better. -after my edits, i exported a patch by executing: - -``` -fossil diff > repolist.c.patch -``` - -maybe it would be better if i committed those changes, but i don't want to hold -a full fossil repo among my other fossils, because its history is fairly long. -and also i'm not very good at c programming, so i'll keep it as is for now. -if you're interested this patch is free to use and you can [check it out][2]. - -after that, there's just a normal configure and make procedure and also final -cleanup. - -i also have a mail server running there, so i get an email of what changes were -applied and that everything went fine. - -[1]:https://fsl.aaoth.xyz -[2]:https://fsl.aaoth.xyz/repolist.c.patch
D _posts/2021-01-06-run-cgit-on-obsd.md

@@ -1,272 +0,0 @@

---- -title: run cgit on openbsd -date: 2021-01-06T13:30+03:00 -author: la-ninpre -tags: openbsd git tutorial ---- - -i started using git for my personal pet projects. a little time then i decided -that it would be a nice idea to make them as open as i can. i use github, but -to support that idea of self-hosting, i wanted some free and easy web frontend -to git. cgit is one of the most popular ones, but it was kinda tough to run on -openbsd. - -<!--more--> - -i know gitweb exists, but i just like cgit more. - -cgit is quite easy to install still, but needs some work done, it's not like -two commands. - -[official cgit page][1] has some installation instructions. it mentions that -it's distributed in binary form for some linux distros, but of course openbsd's -not there, so we'll need to build it from source. - -first of all, i wanted to use openbsd's native web server`httpd` and native -fastcgi server -- `slowcgi`. -the issue is that openbsd's httpd web server lives in chroot-jail and that fact -is complicating the configuration. -but before we need to build cgit from source. - -## building cgit - -to do that, clone cgit source code from [official cgit page][1] -(or if you like [my cgit page][2], you can clone it instead): - -``` -$ git clone https://git.zx2c4.com/cgit -``` - -then move to this directory: - -``` -$ cd cgit -``` - -there are some source files and a Makefile. by default, it'll install cgit in -`/var/www/htdocs/cgit`. if you want a different path, make corresponding change -in a Makefile by editing `CGIT_SCRIPT_PATH` variable. - -but before compiling cgit itself, we need to init and build git submodule -(i suppose, this is the source code of git itself that is needed to make some -git operations on repositories): - -``` -$ git submodule init -$ git submodule update -``` - -and then we can compile cgit. note that gnu version of make utility is used, -install `gmake` from openbsd repositories (`doas pkg add gmake`): - -``` -$ gmake && doas gmake install -``` - -notice that this command should be executed by user who has write permissions -to `/var/www` and `/usr/local/lib` (usually root). - -when it's done, the rest is to create directories needed for cgit to work -and also to configure `httpd` and `slowcgi`. - -## creating directories and dev/null - -cgit uses following files to work: -- `/etc/cgitrc` -- needed for configuration - (see [man page][3] for available options) -- `/var/cache/cgit` -- cache that is used by cgit to reduce cpu usage -- `/var/www/htdocs/cgit/` - - `cgit.css` -- stylesheet - - `cgit.png` -- logo - - `favicon.ico` -- favicon - - `robots.txt` -- instructions for indexers -- `/usr/local/lib/cgit/*` -- different filters and stuff - (i didn't need it at all, because it's hard to make it work in a chroot) -- `/dev/null` -- i don't know exactly why it's needed, but it won't work without - it - -because cgit will run in chroot-jail, all those files and directories except -`/var/www/htdocs/cgit` should be located in `/var/www` -(e.g. `/var/www/etc/cgitrc` and so on). - -``` -$ doas mkdir -p /var/www/{cache/cgit,dev,etc,usr/lib,usr/libexec} -$ doas chown -R www:www /var/www/{cache/cgit,htdocs/cgit} -``` - -`/dev/null` is not a regular file, it's a device, so it must be created using: - -``` -$ doas install -d -g daemon /template/dev -$ cd /template/dev -$ doas mknod -m 666 null c 2 2 -$ doas mount_mfs -s 1M -P /template/dev /dev/sd0b /var/www/dev -``` - -this instruction is taken from [fossil docs][4]. - -## copying libraries - -since cgit is not linked statically, it also needs some dynamic libraries. -they all need to be accessible from chroot, so we need to copy them to -`/var/www/usr/lib`. to check, what should be copied, run: - -``` -$ ldd /var/www/htdocs/cgit/cgit.cgi - -/var/www/htdocs/cgit/cgit.cgi: - Start End Type Open Ref GrpRef Name - 00000b068a590000 00000b068a7b6000 exe 2 0 0 /var/www/htdocs/cgit/cgit.cgi - 00000b0927dcb000 00000b0927de7000 rlib 0 1 0 /usr/lib/libz.so.5.0 - 00000b0937409000 00000b093750b000 rlib 0 2 0 /usr/local/lib/libiconv.so.7.0 - 00000b0978c28000 00000b0978c37000 rlib 0 1 0 /usr/local/lib/libintl.so.7.0 - 00000b091fdc0000 00000b091fdcc000 rlib 0 2 0 /usr/lib/libpthread.so.26.1 - 00000b0920331000 00000b09203be000 rlib 0 1 0 /usr/local/lib/libluajit-5.1.so.1.0 - 00000b091cc5f000 00000b091cd54000 rlib 0 1 0 /usr/lib/libc.so.96.0 - 00000b089fffb000 00000b08a002b000 rlib 0 1 0 /usr/lib/libm.so.10.1 - 00000b08b2542000 00000b08b2585000 rlib 0 1 0 /usr/lib/libc++abi.so.3.0 - 00000b08cebc7000 00000b08cebc7000 ld.so 0 1 0 /usr/libexec/ld.so -``` - -and it'll return a list of all dependencies. copy them to `/var/www/lib`: - -``` -$ doas cp /usr/lib/{libz.so.5.0,libpthread.so.26.1,libc.so.96.0,libm.so.10.1,libc++abi.so.3.0} /var/www/lib -$ doas cp /usl/local/lib/{libiconv.so.7.0,libintl.so.7.0,libluajit-5.1.so.1.0} /var/www/lib -$ doas cp /usr/libexec/ld.so /var/www/usr/libexec -``` - -you should be able now to test cgit using this command: - -``` -$ doas chroot -u www /var/www /htdocs/cgit/cgit.cgi -``` - -it should return no errors but a webpage. - -## configuring cgit - -as already mentioned, cgit is configured using `/var/www/etc/cgitrc`. i suggest -reading [manpage][3] for detailed overview of all available options, but here's -an example cgitrc to start with: - -``` -#cache -cache-size=1000 -cache-dynamic-ttl=60 -cache-static-ttl=44640 -cache-root-ttl=6 -cache-repo=5 - -#index page -enable-index-links=1 -enable-index-owner=0 -max-repodesc-length=60 -root-title=aaoth's git repos -root-desc=some personal projects - -#repo global -enable-git-config=1 -enable-commit-graph=1 -enable-follow-links=1 -enable-blame=1 -enable-http-clone=1 -enable-log-filecount=1 -enable-log-linecount=1 -enable-html-serving=1 -branch-sort=age -snapshots=tar.gz zip -side-by-side-diffs=0 -max-stats=week - -#root -readme=:README.md -readme=:readme.md -readme=:README -readme=:readme - -#mimetypes -mimetype.html=text/html -mimetype.gif=image/gif -mimetype.jpg=image/jpeg -mimetype.jpeg=image/jpeg -mimetype.png=image/png -mimetype.svg=image/svg+xml -mimetype.pdf=application/pdf - -scan-path=/git -``` - -some of the settings are omitted, but you can tweak it further as you wish. - -note that i use autoscan feature of cgit. i have all my repos located in -`var/www/git` as described by `scan-path` option. -all of them are chowned by www user and have `cgitrc` text file inside. - -each repo-specific `cgitrc` looks like this: - -``` -name=test_repo -desc=test repository to test cgit -owner=username -max-stats=month -``` - -## configuring httpd and slowcgi - -and now the last part is to actually serve cgit using httpd and slowcgi - -first of all, enable and start slowcgi: - -``` -$ doas rcctl enable slowcgi -$ doas rcctl start slowcgi -``` - -then edit your `/etc/httpd.conf`, you need to create a simple server statement - -``` -server "example.com" { - - listen on egress port 80 - root "/htdocs/cgit" - - location "/cgit.css" { - root "/htdocs/cgit" - } - - location "/cgit.png" { - root "/htdocs/cgit" - } - - location "/robots.txt" { - root "/htdocs/cgit" - } - - location "/favicon.ico" { - root "/htdocs/cgit" - } - - location "/*" { - fastcgi { - socket "/run/slowcgi.sock" - param SCRIPT_FILENAME "/htdocs/cgit/cgit.cgi" - } - } -} -``` - -i know it can seem *very* odd, but it's the only way it works for me. as always, -all improvement suggestions are welcome. - -and finally, (re-)start httpd: - -``` -$ doas rcctl enable httpd -$ doas rcctl start httpd -``` - -[1]:https://git.zx2c4.com/cgit -[2]:https://git.aaoth.xyz/cgit/cgit.git -[3]:https://git.zx2c4.com/cgit/tree/cgitrc.5.txt -[4]:https://www.fossil-scm.org/home/doc/trunk/www/server/openbsd/fastcgi.md#chroot
D _posts/2021-05-23-join-the-test-of-my-matrix-server.md

@@ -1,58 +0,0 @@

---- -title: join the test of my matrix server -date: 2021-05-23T19:57:34+03:00 -author: la-ninpre -tags: openbsd testing matrix ---- - -i launched my instance of [matrix][0] server recently. it runs on my openbsd vps -and the server software i'm using is [synapse][1]. homeserver address is -(unsurprizingly) `matrix.aaoth.xyz`. - -i also launched an instance of [element][2] matrix web-client on -[element.aaoth.xyz][3], so you can try it. - -[0]:https://matrix.org -[1]:https://matrix.org/docs/projects/server/synapse -[2]:https://element.io -[3]:https://element.aaoth.xyz - -<!--more--> - -matrix is relatively new standard for instant messaging. the main reason i am -interested in it is that it's open-source. it means that anyone could launch -their instance of synapse and be happy with it. -it also means that the whole system is decentralized, providing protection -against global surveillance. - -## about my server - -after you create an account, you will be connected to the broadcast room. -it is unencrypted and read-only. -there are some links to other rooms. - -note that everything going on with my server should be considered temporary -and i could be able to stop, disable or wipe everything completely, -so don't rely on this as production-ready tool. - -also note that pretty much everything is in russian, because i launched matrix -primarily for my friends. - -## about openbsd - -here is a tutorial by the great man **robert d herb** who addressed a lot of -quirks installing synapse on openbsd, which helped me a lot: -[running a matrix homeserver with synapse and element][4] - -because i haven't figured out completely how openbsd's relayd is working, -i broke my [fossils][5]. i hope i'll fix them later, but now they look messy. -there are some issues, i think, with internal structure of fossil's ui. -it needs to be served directly by httpd. but for synapse to work it is mandatory -to run relayd as reverse proxy. - -if you know how to shift some portion of traffic to relayd and some to httpd, -please, [drop me a line][6]. - -[4]:https://robertdherb.com/things/matrix.html -[5]:https://fsl.aaoth.xyz -[6]:mailto:aaoth@aaoth.xyz
D _posts/2021-06-02-i-launched-a-gemini-capsule-recently.md

@@ -1,98 +0,0 @@

---- -title: i launched a gemini capsule recently -date: 2021-06-02T22:36:43+03:00 -author: la-ninpre -tags: gemini openbsd ---- - -i launched my own gemini capsule, yay! - -it is available on the same domain, just type `gemini://aaoth.xyz` in your -favourite gemini client. - -<!--more--> - -for those of you that don't know, gemini is a relatively new internet protocol. -it is already gained popularity among some enthusiasts out there. - -it is intended to be simple and lightweight, it's just plaintext. and the whole -specification is so simple that usable server and/or client for it could be -written within about 100 lines of code. - -learn more on: - -[gemini website](https://gemini.circumlunar.space) - -## about quirks and vger - -firstly i looked through the list of gemini servers on gemini website. -and one particular server there attracted me. it was `vger`. -it is saying that it is secure and openbsd-centric. - -so i tried installing it. it is even packaged for openbsd, which was pretty -convenient, even though i don't mind building stuff from source. -especially if it is not a big bloated thing. - -and surprisingly the configuration was **so** simple, that i even hadn't -realized it for a first couple of minutes. -but then i wanted to launch some fancy cgi things, such as, for example, -gemlikes. it is providing simple like and comment system for a blog. - -and there vger failed me. maybe it is me failed myself, but i tried all -possible configuration options. i think, for now vger is not capable of -running cgi scripts for some parts of the capsule. - -in other words, i'm talking about this. -consider some capsule with tld `gemini://example.com`. -it serves some static pages on `gemini://example.com/blog/*` and -`gemini://example.com/about.gmi`. -gemlikes need three binaries and a `gemlikes.toml` config file. -they suggest placing them in `/cgi-bin/gemlikes/`. -i placed them there, but i couldn't make it so it is how it needs to be. -my vger is serving only cgi or only static pages. - -## another try - -so i looked though a list again, and found `gmid` there. it seemed like -a good option too, because it's written in c and openbsd-aware too. - -and this was nice expirience, because gmid's config file is very -similar to other openbsd's tool configs, such as relayd or httpd. -the only peculiarity with gmid is that it's not yet packaged for -openbsd, so i had to compile it manually. and also i created the daemon -script for it in rc.d(8). - -here it is, if you need it: - -/etc/rc.d/gmid -```sh -#!/bin/ksh - -daemon="/usr/local/bin/gmid" -daemon_flags="-c /etc/gmid.conf" - -. /etc/rc.d/rc.subr - -rc_pre() { - ${rcexec} "${daemon} -n ${daemon_flags}" -} - -rc_cmd $1 -``` - -and of course, my config is in `/etc/gmid.conf`. manpage of gmid contains -very good descriptions of all the options available. - -## thoughts about geminispace - -my first impressions of gemini were a little odd. it's a little bit hard -to read just text, when you are used to graphically overwhelming -flashing websites with pictures and interactive stuff. -but after a little bit of time comes the appretiation of the beauty -of the pure text. - -i can see gemini as a perfect place to host some informative resources, -personal blogs and also for creative writing. -and especially the latter, because it is so easy to spin up your own -instance, i can see at as a great option for writers out there to -host their content.
D _posts/2021-08-18-matrix.aaoth.xyz-is-down.md

@@ -1,32 +0,0 @@

---- -title: matrix.aaoth.xyz is down -date: 2021-08-18T17:41:32+03:00 -author: la-ninpre -tags: matrix openbsd testing ---- - -i decided to shut down the matrix server that i launched recently -(see [previous post][1]). -here's my thoughts about this brief matrix experience. - -<!--more--> - -my main intention behind matrix server was to use it with my friends, but -almost nobody responded, so it's over. -synapse server is a bit resource heavy, so without it performance will be -better. - -overall, matrix seemed like a good alternative to proprietary messengers to me. -it's ability to maintain group end-to-end encrypted rooms is very good and -also it was not so hard to set up. - -the biggest con for me was that matrix is spamming all the chats with a huge -pile of system messages and notices. for example, all status changes of a -chat room are displayed as separate messages and i find this very annoying. -also, you can delete messages, but message deletion event is left forever in -the chat history. - -maybe in future i will launch my server again -(i haven't purged all my configs). - -[1]:https://aaoth.xyz/2021/05/23/join-the-test-of-my-matrix-server.html
M _posts/2021-11-03-dualboot-linux-and-openbsd-with-grub.mden/blog/2021-11-03-dualboot-linux-and-openbsd-with-grub.md

@@ -1,9 +1,11 @@

---- -title: dualboot linux and openbsd with grub -date: 2021-11-03T15:23:00+03:00 +# dualboot linux and openbsd with grub + +```data + +date: 2021-11-03 author: la-ninpre -tags: openbsd linux grub tutorial ---- +tags: openbsd, linux, grub, tutorial +``` i've been trying to dualboot openbsd with linux using grub on both bios and uefi machines and here's a solution that i've come up with.

@@ -38,7 +40,8 @@ uuids.

5. write the following at the bottom of `/etc/grub.d/40_custom`: - ``` + ```grub.cfg + menuentry 'OpenBSD' { search -su --no-floppy *UUID* chainloader +1

@@ -58,11 +61,13 @@

for boot in uefi mode there are few differences. after installing openbsd don't reboot, but choose **shell**. now cd into `/mnt` directory and download `BOOTX64.EFI` from your desired openbsd mirror. for example: - ``` - # cd /mnt - # ftp https://cdn.openbsd.org/pub/OpenBSD/7.0/amd64/BOOTX64.EFI - # reboot - ``` + +```sh + +# cd /mnt +# ftp https://cdn.openbsd.org/pub/OpenBSD/7.0/amd64/BOOTX64.EFI +# reboot +``` after that the only other difference is that `chainloader` directive should be `chainloader /BOOTX64.EFI`.
D _sass/fonts.css

@@ -1,149 +0,0 @@

-/** =================== MONTSERRAT =================== **/ - -/** Montserrat Regular **/ -@font-face { - font-family: "Montserrat"; - font-weight: 400; - font-style: normal; - src: url("/assets/fonts/Montserrat-Regular.woff2") format("woff2"), - url("/assets/fonts/Montserrat-Regular.woff") format("woff"); - font-display: swap; -} - -/** Montserrat Medium **/ -@font-face { - font-family: "Montserrat"; - font-weight: 500; - font-style: normal; - src: url("/assets/fonts/Montserrat-Medium.woff2") format("woff2"), - url("/assets/fonts/Montserrat-Medium.woff") format("woff"); - font-display: swap; -} - -/** Montserrat Regular-Italic **/ -@font-face { - font-family: "Montserrat"; - font-weight: 400; - font-style: italic; - src: url("/assets/fonts/Montserrat-Italic.woff2") format("woff2"), - url("/assets/fonts/Montserrat-Italic.woff") format("woff"); - font-display: swap; -} - -/** Montserrat Bold **/ -@font-face { - font-family: "Montserrat"; - font-weight: 700; - font-style: normal; - src: url("/assets/fonts/Montserrat-Bold.woff2") format("woff2"), - url("/assets/fonts/Montserrat-Bold.woff") format("woff"); - font-display: swap; -} - -/** Montserrat Bold-Italic **/ -@font-face { - font-family: "Montserrat"; - font-weight: 700; - font-style: italic; - src: url("/assets/fonts/Montserrat-BoldItalic.woff2") format("woff2"), - url("/assets/fonts/Montserrat-BoldItalic.woff") format("woff"); - font-display: swap; -} - - -/** ==================== LATO ======================== **/ - -/* Webfont: Lato-Regular */ -@font-face { - font-family: 'Lato'; - src: url('/assets/fonts/Lato-Regular.eot'); /* IE9 Compat Modes */ - src: url('/assets/fonts/Lato-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('/assets/fonts/Lato-Regular.woff2') format('woff2'), /* Modern Browsers */ - url('/assets/fonts/Lato-Regular.woff') format('woff'), /* Modern Browsers */ - url('/assets/fonts/Lato-Regular.ttf') format('truetype'); - font-style: normal; - font-weight: 400; - font-display: swap; -} - -/* Webfont: Lato-Italic */@font-face { - font-family: 'Lato'; - src: url('/assets/fonts/Lato-Italic.eot'); /* IE9 Compat Modes */ - src: url('/assets/fonts/Lato-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('/assets/fonts/Lato-Italic.woff2') format('woff2'), /* Modern Browsers */ - url('/assets/fonts/Lato-Italic.woff') format('woff'), /* Modern Browsers */ - url('/assets/fonts/Lato-Italic.ttf') format('truetype'); - font-style: italic; - font-weight: 400; - font-display: swap; -} - -/* Webfont: Lato-Bold */@font-face { - font-family: 'Lato'; - src: url('/assets/fonts/Lato-Bold.eot'); /* IE9 Compat Modes */ - src: url('/assets/fonts/Lato-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('/assets/fonts/Lato-Bold.woff2') format('woff2'), /* Modern Browsers */ - url('/assets/fonts/Lato-Bold.woff') format('woff'), /* Modern Browsers */ - url('/assets/fonts/Lato-Bold.ttf') format('truetype'); - font-style: normal; - font-weight: 700; - font-display: swap; -} - -/* Webfont: Lato-BoldItalic */@font-face { - font-family: 'Lato'; - src: url('/assets/fonts/Lato-BoldItalic.eot'); /* IE9 Compat Modes */ - src: url('/assets/fonts/Lato-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('/assets/fonts/Lato-BoldItalic.woff2') format('woff2'), /* Modern Browsers */ - url('/assets/fonts/Lato-BoldItalic.woff') format('woff'), /* Modern Browsers */ - url('/assets/fonts/Lato-BoldItalic.ttf') format('truetype'); - font-style: italic; - font-weight: 700; - font-display: swap; -} -/** =================== FIRA CODE ===================== **/ - -@font-face { - font-family: 'Fira Code'; - src: url('/assets/fonts/FiraCode-Light.woff2') format('woff2'), - url("/assets/fonts/FiraCode-Light.woff") format("woff"); - font-weight: 300; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Fira Code'; - src: url('/assets/fonts/FiraCode-Regular.woff2') format('woff2'), - url("/assets/fonts/FiraCode-Regular.woff") format("woff"); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Fira Code'; - src: url('/assets/fonts/FiraCode-Medium.woff2') format('woff2'), - url("/assets/fonts/FiraCode-Medium.woff") format("woff"); - font-weight: 500; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Fira Code'; - src: url('/assets/fonts/FiraCode-SemiBold.woff2') format('woff2'), - url("/assets/fonts/FiraCode-SemiBold.woff") format("woff"); - font-weight: 600; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Fira Code'; - src: url('/assets/fonts/FiraCode-Bold.woff2') format('woff2'), - url("/assets/fonts/FiraCode-Bold.woff") format("woff"); - font-weight: 700; - font-style: normal; - font-display: swap; -}
D _sass/main.scss

@@ -1,538 +0,0 @@

-$color-main-bg: #f0f0f0; -$color-dark-bg: #070707; -$color-main-blue: #397eaf; -$color-dark-blue: #2e4054; -$color-main-grey: #e1e1e1; -$color-main-grey-dark: #c4c4c4; -$color-dark-grey: #1f1f1f; -$color-darker-grey: #101010; -$color-link-idle: #2e4054; -$color-link-idle-dark: #999999; -$color-link-hover: #999999; -$color-link-hover-dark: #707070; -$color-nav-current: #19212a; -$color-nav-current-dark: #999999; -$nav-alpha: 0.95; -$body-width: 835px; -$border-main: 5px solid; -$border-nav: $border-main $color-main-grey; -$border-dark: $border-main $color-dark-grey; -$font-title: sans-serif; -$font-body: sans-serif; -$font-code: monospace; - -html { - background: $color-main-bg; -} - -body { - max-width: $body-width; - min-width: 378px; - margin: 0 auto; - padding: 0.5em; - color: $color-dark-bg; - font: 100% $font-body; -} - -a { - color: $color-link-idle; - text-decoration: none; - transition: 0.2s ease-in-out; - &:hover { - color: $color-link-hover; - } -} - -nav { - position: sticky; - top: 0; - z-index: 10; - display: flex; - flex-direction: row-reverse; - font: 400 1.5em $font-title; - letter-spacing: -0.05em; - background: rgba($color-main-bg, $nav-alpha); - - a.current { - color: $color-nav-current; - pointer-events: none; - font-weight: 500; - } - - hr { - display: none; - } - - ul { - flex: 1; - display: inline-flex; - padding: 2.15em 0.5em 0 0; - height: fit-content; - - flex-direction: row; - justify-content: space-between; - border-bottom: $border-nav; - } -} - -h1, h2, h3, h4, h5, h6 { - margin: 0; - color: $color-main-blue; - font-family: $font-title; - font-weight: 500; - - a { - color: $color-main-blue; - - &:hover { - color: $color-dark-blue; - } - } -} - -hr { - border-width: 0 0 5px 0; - border-bottom: $border-nav; -} - -ul { - margin: 0; - padding: 0; - li { - list-style-type:none; - } -} - -blockquote { - margin: 0.5em; - padding-left: 1em; - border-width: 0 0 0 5px; - border-color: $color-main-grey; - border-style: solid; - border-radius: 0.5em; -} - -code { - font-family: $font-code; - font-size: 0.9em; - background: $color-main-grey; - padding: 2px; - border-radius: 5px; -} - -div.highlight { - overflow-x: auto; - background: $color-main-grey; - padding-left: 0.5em; - border-radius: 5px; - code { - padding: 0; - } -} - -audio { - width: 100%; - border-radius: 25px; -} - -footer { - padding-top: 0.5em; - text-align: center; - font: 75% $font-body; - p { - margin: 0; - } -} - -.title_with_backlink { - display: flex; - justify-content: space-between; - align-items: baseline; - - .backlink::before { - content: "← " - } -} - -.with_hidden { - .hidden { - display: none; - } - - &:hover { - .hidden { - display: inline; - } - } -} - -.faint { - color: $color-main-grey; -} - -.about { - display: flex; - flex-direction: row; - #avatar { - border-radius: 100%; - height: 128px; - } - &-sidebar { - flex: 23%; - } - &-links { - margin-top: 1em; - .link-icon { - width: 32px; - } - .link-text { - display: inline; - position: relative; - bottom: 0.75em; - } - } - &-info { - width: 100%; - p:first-child { - margin-top: 0; - } - } -} - -.post { - padding: 1em; - margin: 1em 0; - border-radius: 25px 25px 25px 0px; - border: 2px solid $color-main-grey; - word-wrap: break-word; - - a { - color: $color-main-blue; - - &:hover { - color: $color-dark-blue; - } - } - - small p { - display: inline; - } - - p { - img { - display: block; - max-width: 100%; - margin: 0 auto; - border-radius: 1em; - } - } - - &-date::after { - content: " /"; - } - - &-page { - margin-bottom: 10px; - ul { - padding-left: 10px; - } - } - - &-header { - margin-bottom: 2em; - &-info { - * { - margin: 0 0.1em; - } - margin-left: 0.5em; - float: right; - display: flex; - flex-direction: row; - ul { - padding: 0; - li { - display: inline; - a { - background: $color-main-grey; - border-radius: 5px; - padding: 2px; - } - } - } - } - } -} - -@mixin image-list-item ($width, $height, $object-fit: cover) { - &-item-mask { - position: absolute; - z-index: 1; - width: $width; - height: $height; - } - &-item-img { - position: relative; - width: $width; - height: $height; - - img { - position: absolute; - width: 100%; - height: 100%; - image-orientation: initial; - object-fit: $object-fit; - } - } -} - -@mixin link-color-transition ($color-bg, $color-fg) { - color: rgba($color-fg, 0); - background: rgba($color-bg, 0); - - &:hover { - color: rgba($color-fg, 1); - background: rgba($color-bg, 0.7); - } -} - -.art-menu { - display: flex; - flex-flow: row wrap; - justify-content: space-around; - align-content: center; - - @include image-list-item(24em, 18em); - - &-item { - margin-bottom: 1em; - &-mask { - display: inline-flex; - justify-content: center; - align-items: center; - transition: color 0.2s ease-in-out, - background 0.2s ease-in-out; - - @include link-color-transition($color-main-bg, $color-dark-bg); - } - &-text { - font-size: 200%; - margin-bottom: 0.2em; - } - } -} - -.art { - display: flex; - flex-flow: row wrap; - - .art-img { - margin: 0.5em 0; - img { - width: 100%; - height: auto; - image-orientation: from-image; - } - } -} - -.music-project { - display: flex; - flex-flow: row wrap; - - &-list { - display: flex; - flex-flow: row wrap; - justify-content: space-evenly; - - @include image-list-item(14em, 14em, contain); - - &-item { - margin-bottom: 1em; - - &-mask { - display: inline-flex; - flex-direction: column; - justify-content: center; - text-align: center; - transition: background 0.2s ease-in-out, - color 0.2s ease-in-out; - @include link-color-transition($color-main-bg, $color-dark-bg); - } - &-text { - font: 200% $font-title; - margin-top: 0.3em; - margin-bottom: 0.1em; - } - } - } - - &-titlebar { - flex: 100%; - } - - &-sidebar { - flex: 1; - padding-right: 0.5em; - #logo { - width: 100%; - } - } - - &-info { - flex: 3; - width: 100%; - } - - &-release { - &-list { - flex: 100%; - } - - &-info { - - } - - &-type { - color: $color-main-grey-dark; - } - - &-by_year { - padding-right: 0.5em; - border: $border-nav; - border-color: transparent; - border-right-color: $color-main-grey; - border-width: 0 5px 0 0; - border-radius: 0.5em; - } - &-year { - position: sticky; - top: 6em; - padding: 0.2em 0.3em; - border-radius: 1em; - float: right; - background: rgba($color-main-bg, 0.8); - } - } -} - -@media only screen and (max-width: 760px) { - footer p { - padding: 0; - } - nav { - flex-direction: column; - img { - align-self: center; - } - ul { - padding: 0 0.25em; - } - } - .content { - padding-top: 0.5em; - } - .about { - flex-direction: column-reverse; - &-sidebar { - display: flex; - flex-direction: column; - img { - width: 128px; - margin: 0 auto; - } - } - &-links { - margin-top: 0; - p:first-child { - margin: 0; - padding-top: 0; - } - ul { - padding-top: 1em; - display: flex; - flex-wrap: wrap; - li { - margin: auto; - padding: 0 0.5em; - } - } - } - } - .music-project { - flex-flow: column; - &-titlebar { - flex: 1; - } - &-sidebar { - padding: 0; - } - &-release { - &-year { - top: 8em; - } - } - } -} - -@media (prefers-color-scheme: dark) { - html { - background: $color-dark-bg; - } - body { - color: $color-main-bg; - } - a { - color: $color-link-idle-dark; - &:hover { - color: $color-link-hover-dark; - } - } - nav { - background: rgba($color-dark-bg, $nav-alpha); - a.current { - color: $color-nav-current-dark; - } - ul { - border-bottom: $border-dark; - } - } - hr { - border-bottom: $border-dark; - } - code { - background: $color-darker-grey; - } - .art-menu-item-mask { - @include link-color-transition($color-dark-bg, $color-main-bg); - } - div.highlight { - background: $color-darker-grey; - } - .post { - border: 2px solid $color-dark-grey; - } - .post-page .post-header ul li a { - background: $color-dark-grey; - } - .music-project { - &-release { - &-type { - color: $color-dark-grey; - } - &-year { - background: rgba($color-dark-bg, 0.8); - } - } - &-list-item-mask { - @include link-color-transition($color-dark-bg, $color-main-bg); - } - &-release { - &-by_year { - border-right-color: $color-dark-grey; - } - } - } - blockquote { - border-color: $color-dark-grey; - } -}
D _sass/temp.scss

@@ -1,21 +0,0 @@

-* { - margin: 0; - padding: 0; -} -html { - font-family: sans-serif; - background: black; -} -body { - color: white; - margin-left: auto; - margin-right: auto; - width: auto; - max-width: 800px; -} -h1 { - border-bottom: 1px solid white; -} -p { - margin: 30px 0; -}
M about.mden/about.md

@@ -1,9 +1,3 @@

---- -title: about -layout: about-page -permalink: /about/ ---- - # hi, i'm la-ninpre i'm creating some music and other stuff related to art, such as fonts, random

@@ -19,7 +13,20 @@ anything i want and make things look how i want them to look. for comparison,

none of the popular social platforms can give me this ability. i'm also very interested in sciences (especially biology, chemistry and -linguistics). i speak russian, speak english a little bit and also -[toki pona](https://tokipona.org) :D +linguistics). i speak russian, speak english a little bit and also toki pona :D pona tawa sina! + +## links + +[my github](https://github.com/la-ninpre) + +[my gitlab](https://gitlab.com/la-ninpre) + +[my youtube channel](https://www.youtube.com/channel/UCLW6sGRLddTR-fB-Ae5uv6Q/) + +[aaoth's bandcamp](https://aaoth.bandcamp.com) + +[spiral materivm bandcamp](https://spiral-materivm.bandcamp.com) + +[hälsorisk bandcamp](https://haelsorisk.bandcamp.com)
D assets/css/style.scss

@@ -1,4 +0,0 @@

---- ---- -@import "fonts"; -@import "main";
A bin/gen.sh

@@ -0,0 +1,29 @@

+#!/bin/sh -ex + +srcdir="./en/visual" +categories="drawings photos logos renders" +index="index.md" + +list_images() { + # $1 -- directory + find "$1" -type f \ + | grep -E "(\.jpe?g)|(\.png)|(\.gif)" +} + +append_image() { + # $1 -- directory + c_index="$1/$index" + while read -r i; do + i=$(basename "$i") + if ! (grep "$i" "$c_index"); then + printf "\n" >> "$c_index" + echo "![${i%%.*}]($i)" >> "$c_index" + fi + done +} + +cd "$srcdir" || exit 1 +for c in $categories; +do + list_images "$c" | append_image "$c" +done
A bin/rssg

@@ -0,0 +1,190 @@

+#!/bin/sh +# +# https://www.romanzolotarev.com/bin/rssg +# Copyright 2018 Roman Zolotarev <hi@romanzolotarev.com> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +set -e +set -x + + +main () { + test -n "$1" || usage + test -n "$2" || usage + test -f "$1" || no_file "$1" + + + index_file=$(readlink -f "$1") + test -z "${index_file##*html}" && html=$(cat "$index_file") + test -z "${index_file##*md}" && html=$(md_to_html "$index_file") + test -n "$html" || usage + + base="${index_file%/*}" + base_url="$(echo "$html" | get_url | sed 's#\(.*\)/[^/]*#\1#')" + + url=$( echo "$html" | get_url) + + title="$2" + + description=$( echo "$html" | get_description | + remove_tags | + remove_nbsp ) + + items=$( echo "$html" | get_items) + + rss=$( echo "$items" | + render_items "$base" "$base_url" | + render_feed "$url" "$title" "$description") + + >&2 echo "[rssg] ${index_file##$(pwd)/} $(echo "$rss" | grep -c '<item>') items" + echo "$rss" +} + + +usage() { + echo "usage: ${0##*/} index.{html,md} title > rss.xml" >&2 + exit 1 +} + + +no_file() { + echo "${0##*/}: $1: No such file" >&2 + exit 2 +} + + +md_to_html() { + test -x "$(which lowdown)" || exit 3 + lowdown \ + --html-no-escapehtml \ + --html-no-skiphtml \ + --parse-no-metadata \ + --parse-no-autolink "$1" +} + + +get_title() { + awk 'tolower($0)~/^<h1/{gsub(/<[^>]*>/,"",$0);print;exit}' +} + + +get_url() { + grep -i '<a .*rss.xml"' | head -1 | + sed 's#.*href="\(.*\)".*#\1#' +} + + +get_items() { + grep -i 'href=".*" title="' | + sed 's#.*href="\(.*\)" title="\(.*\)">\(.*\)</a>.*#\1 \2 \3#' +} + + +get_description() { + start='sub("^.*<"s"*"t"("s"[^>]*)?>","")' + stop='sub("</"s"*"t""s"*>.*","")&&x=1' + awk -v 's=[[:space:]]' -v 't=[Pp]' "$start,$stop;x{exit}" +} + +remove_tags() { + sed 's#<[^>]*>##g;s#</[^>]*>##g' +} + + +remove_nbsp() { + sed 's#\&nbsp;# #g' +} + + +rel_to_abs_urls() { + site_url="$1" + base_url="$2" + + abs='s#(src|href)="/([^"]*)"#\1="'"$site_url"/'\2"#g' + rel='s#(src|href)="([^:/"]*)"#\1="'"$base_url"/'\2"#g' + sed -E "$abs;$rel" +} + + +date_rfc_822() { + date '+%a, %d %b %Y %H:%M:%S %z' \ + "$(echo "$1"| tr -cd '[:digit:]')0000" +} + + +render_items() { + while read -r i + do render_item "$1" "$2" "$i" + done +} + + +render_item() { + base="$1" + base_url="$2" + item="$3" + + site_url="$(echo "$base_url"| sed 's#\(.*//.*\)/.*#\1#')" + + date=$(echo "$item"|awk '{print$2}') + url=$(echo "$item"|awk '{print$1}') + + f="$base/$url" + test -f "$f" && html=$(cat "$f") + test -f "${f%\.html}.md" && html=$(md_to_html "${f%\.html}.md") + + description=$( + echo "$html" | + rel_to_abs_urls "$site_url" "$base_url" | + remove_nbsp + ) + title=$(echo "$description" | get_title) + guid="$base_url/$(echo "$url" | sed 's#^/##')" + + echo ' +<item> +<guid>'"$guid"'</guid> +<link>'"$guid"'</link> +<pubDate>'"$(date_rfc_822 "$date")"'</pubDate> +<title>'"$title"'</title> +<description><![CDATA[ + +'"$description"' + +]]></description> +</item>' +} + + +render_feed() { + url="$1" + title=$(echo "$2" | remove_nbsp) + description="$3" + + base_url="$(echo "$url" | cut -d '/' -f1-3)" + + echo '<?xml version="1.0" encoding="UTF-8"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> +<channel> +<atom:link href="'"$url"'" rel="self" type="application/rss+xml" /> +<title>'"$title"'</title> +<description>'"$description"'</description> +<link>'"$base_url"'/</link> +<lastBuildDate>'"$(date_rfc_822 date)"'</lastBuildDate> +'"$(cat)"' +</channel></rss>' +} + + +main "$@"
A bin/ssg

@@ -0,0 +1,273 @@

+#!/bin/sh -e +# +# https://rgz.ee/bin/ssg6 +# Copyright 2018-2019 Roman Zolotarev <hi@romanzolotarev.com> +# Copyright 2022 la-ninpre <aaoth@aaoth.xyz> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +main() { + test -n "$1" || usage + test -n "$2" || usage + test -n "$3" || usage + test -n "$4" || usage + test -n "$5" || usage + test -d "$1" || no_dir "$1" + test -d "$2" || no_dir "$2" + test -d "$3" || no_dir "$3" + + src=$(readlink_f "$1") + dst=$(readlink_f "$2") + gemdst=$(readlink_f "$3") + + IGNORE=$( + if ! test -f "$src/.ssgignore"; then + printf ' ! -path "*/.*"' + return + fi + while read -r x; do + test -n "$x" || continue + printf ' ! -path "*/%s*"' "$x" + done <"$src/.ssgignore" + ) + + # files + + title="$4" + + h_file="$src/_header.html" + f_file="$src/_footer.html" + gf_file="$src/_gemfooter.gmi" + test -f "$f_file" && FOOTER=$(cat "$f_file") && export FOOTER + test -f "$h_file" && HEADER=$(cat "$h_file") && export HEADER + test -f "$gf_file" && GEMFOOTER=$(cat "$gf_file") && export GEMFOOTER + + list_dirs "$src" | + (cd "$src" && cpio -pdu "$dst") + list_dirs "$src" | + (cd "$src" && cpio -pdu "$gemdst") + + fs=$( + if test -f "$dst/.files"; then + list_affected_files "$src" "$dst/.files" + if test -f "$gemdst/.files"; then + list_affected_files "$src" "$gemdst/.files" + fi + else + list_files "$1" + fi + ) + + if test -n "$fs"; then + echo "$fs" | tee "$dst/.files" + echo "$fs" | tee "$gemdst/.files" + + if echo "$fs" | grep -q '\.md$'; then + if test -x "$(which lowdown 2>/dev/null)"; then + echo "$fs" | grep '\.md$' | + render_md_files_lowdown "$src" "$dst" "$title" + echo "$fs" | grep '\.md$' | + render_md_files_lowdown_gemini "$src" "$gemdst" + + else + echo "couldn't find lowdown nor Markdown.pl" + exit 3 + fi + fi + + echo "$fs" | grep '\.html$' | + render_html_files "$src" "$dst" "$title" + + echo "$fs" | grep -Ev '\.md$|\.html$' | + (cd "$src" && cpio -pu "$dst") + echo "$fs" | grep -Ev '\.md$|\.gmi$' | + (cd "$src" && cpio -pu "$gemdst") + fi + + printf '[ssg] ' >&2 + print_status 'file, ' 'files, ' "$fs" >&2 + + # sitemap + + base_url="$5" + date=$(date +%Y-%m-%d) + urls=$(list_pages "$src") + + test -n "$urls" && + render_sitemap "$urls" "$base_url" "$date" >"$dst/sitemap.xml" + + print_status 'url' 'urls' "$urls" >&2 + echo >&2 +} + +readlink_f() { + file="$1" + cd "$(dirname "$file")" + file=$(basename "$file") + while test -L "$file"; do + file=$(readlink "$file") + cd "$(dirname "$file")" + file=$(basename "$file") + done + dir=$(pwd -P) + echo "$dir/$file" +} + +print_status() { + test -z "$3" && printf 'no %s' "$2" && return + + echo "$3" | awk -v singular="$1" -v plural="$2" ' + END { + if (NR==1) printf NR " " singular + if (NR>1) printf NR " " plural + }' +} + +usage() { + echo "usage: ${0##*/} src dst gemdst title base_url" >&2 + exit 1 +} + +no_dir() { + echo "${0##*/}: $1: No such directory" >&2 + exit 2 +} + +list_dirs() { + cd "$1" && eval "find . -type d ! -name '.' ! -path '*/_*' $IGNORE" +} + +list_files() { + cd "$1" && eval "find . -type f ! -name '.' ! -path '*/_*' $IGNORE" +} + +list_dependant_files() { + e="\\( -name '*.html' -o -name '*.md' -o -name '*.css' -o -name '*.js' \\)" + cd "$1" && eval "find . -type f ! -name '.' ! -path '*/_*' $IGNORE $e" +} + +list_newer_files() { + cd "$1" && eval "find . -type f ! -name '.' $IGNORE -newer $2" +} + +has_partials() { + grep -qE '^./_.*\.html$|^./_.*\.js$|^./_.*\.css$' +} + +list_affected_files() { + fs=$(list_newer_files "$1" "$2") + + if echo "$fs" | has_partials; then + list_dependant_files "$1" + else + echo "$fs" + fi +} + +render_html_files() { + while read -r f; do + render_html_file "$3" <"$1/$f" >"$2/$f" + done +} + +render_md_files_lowdown() { + while read -r f; do + lowdown \ + --html-no-escapehtml \ + --html-no-skiphtml \ + --parse-no-metadata \ + --parse-no-autolink <"$1/$f" | + render_html_file "$3" \ + >"$2/${f%\.md}.html" + done +} + +render_md_files_lowdown_gemini() { + while read -r f; do + lowdown \ + -Tgemini <"$1/$f" | + render_gmi_file \ + >"$2/${f%\.md}.gmi" + done +} + +render_html_file() { + # h/t Devin Teske + awk -v title="$1" ' + { body = body "\n" $0 } + END { + body = substr(body, 2) + if (body ~ /<\/?[Hh][Tt][Mm][Ll]/) { + print body + exit + } + if (match(body, /<[[:space:]]*[Hh]1(>|[[:space:]][^>]*>)/)) { + t = substr(body, RSTART + RLENGTH) + sub("<[[:space:]]*/[[:space:]]*[Hh]1.*", "", t) + gsub(/^[[:space:]]*|[[:space:]]$/, "", t) + if (t) title = t " &mdash; " title + } + n = split(ENVIRON["HEADER"], header, /\n/) + for (i = 1; i <= n; i++) { + if (match(tolower(header[i]), "<title></title>")) { + head = substr(header[i], 1, RSTART - 1) + tail = substr(header[i], RSTART + RLENGTH) + print head "<title>" title "</title>" tail + } else print header[i] + } + print body + print ENVIRON["FOOTER"] + }' +} + +render_gmi_file() { + awk ' + { body = body "\n" $0 } + END { + body = substr(body, 2) + n = split(body, body_n, /\n/) + for (i = 1; i <= n; i++) { + if (!match(body_n[i], /^=>[[:space:]]*[Hh][Tt]{2}[Pp][Ss]?:\/\/.*/)) { + sub(/\.html[[:space:]]*/, ".gmi ", body_n[i]) + } + print body_n[i] + } + #print body + print ENVIRON["GEMFOOTER"] + }' +} + +list_pages() { + e="\\( -name '*.html' -o -name '*.md' \\)" + cd "$1" && eval "find . -type f ! -path '*/.*' ! -path '*/_*' $IGNORE $e" | + sed 's#^./##;s#.md$#.html#;s#/index.html$#/#' +} + +render_sitemap() { + urls="$1" + base_url="$2" + date="$3" + + echo '<?xml version="1.0" encoding="UTF-8"?>' + echo '<urlset' + echo 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' + echo 'xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9' + echo 'http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"' + echo 'xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' + echo "$urls" | + sed -E 's#^(.*)$#<url><loc>'"$base_url"'/\1</loc><lastmod>'"$date"'</lastmod><priority>1.0</priority></url>#' + echo '</urlset>' +} + +main "$@"
D blog.md

@@ -1,13 +0,0 @@

---- -title: blog -permalink: /blog/ ---- - -filter by tag: {% for tag in site.tags %}[{{ tag[0] }}](/tags/{{ tag[0] }}) -{% endfor %} - -<div class="posts"> -{% for post in site.posts %} - {% include post-preview.html %} -{% endfor %} -</div>
A build.sh

@@ -0,0 +1,53 @@

+#!/bin/sh -e + +# interplanetary static site build system +# builds for both web and gemini + +# powered by ssg, rssg and lowdown +# ssg and rssg are taken from rgz.ee and ssg is slightly modified + +ssg="$PWD/bin/ssg" +rssg="$PWD/bin/rssg" + +address="https://aaoth.xyz" +title="aaoth.xyz" +feed_title="$title - feed" + +if [ -z "$AAOTH_ROOT" ]; then root="dst"; else root="$AAOTH_ROOT"; fi +if [ -z "$AAOTH_GEMROOT" ]; then gemroot="dst_gemini"; else root="$AAOTH_GEMROOT"; fi +en_src="en" +en_dst="$root" +en_gemdst="$gemroot" + +feed_file="$root/rss.xml" +feed_gemfile="$gemroot/rss.xml" + +build_site() { + $ssg "$1" "$2" "$3" "$title" "$address" + sh "$PWD/bin/gen.sh" +} + +build_rss() { + $rssg "$1/blog/index.md" "$feed_title" > "$feed_file" + cp "$feed_file" "$feed_gemfile" +} + +main() { + [ "$1" = "-f" ] && { + rm -vrf "${en_dst:?}"/* + [ -f "$en_dst/.files" ] && rm -v "$en_dst/.files" + + rm -vrf "${en_gemdst:?}"/* + [ -f "$en_gemdst/.files" ] && rm -v "$en_gemdst/.files" + } + + [ -d "$root" ] || mkdir -p "$root" + [ -d "$gemroot" ] || mkdir -p "$gemroot" + [ -d "$en_dst" ] || mkdir -p "$en_dst" + [ -d "$en_gemdst" ] || mkdir -p "$en_gemdst" + + build_site "$en_src" "$en_dst" "$en_gemdst" + build_rss "$en_src" +} + +main "$@"
A en/.ssgignore

@@ -0,0 +1,1 @@

+visual/gen.sh
A en/_header.html

@@ -0,0 +1,35 @@

+<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="description" + content="personal website featuring music and art"> + <meta name="keywords" + content="music, art, self-hosting, foss, openbsd"> + <meta name="author" + content="la-ninpre"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <title></title> + <style> + body{margin:40px auto;max-width:650px;line-height:1.6;font-size:1.1em;color:#433;background:#eee;padding:0 10px} + h1,h2,h3{line-height:1.2} + header ul,footer ul{padding:0}header ul li,footer ul li{display:inline-block} + a{color:#33a} + img{max-width:100%;vertical-align:middle} + @media (prefers-color-scheme: dark){body{color:#ccc;background:#111}a{color:#99e}} + </style> + <link rel="icon" href="/img/icon.png" type="image/png"> +</head> +<body> +<header> +<p>aaoth.xyz</p> +<nav> +<ul> +<li><a href="/">home</a></li> +<li><a href="/blog">blog</a></li> +<li><a href="/music">music</a></li> +<li><a href="/visual">visual</a></li> +<li><a href="/about.html">about</a></li> +</ul> +</nav> +</header>
A en/blog/index.md

@@ -0,0 +1,11 @@

+# blog + +various notes about things. + +subscribe via rss: + +[rss](/rss.xml) + +## posts + +[dualboot linux and openbsd with grub](2021-11-03-dualboot-linux-and-openbsd-with-grub.html "2021-11-03")
A en/index.md

@@ -0,0 +1,15 @@

+# welcome + +personal static website serving as a showcase for all my past and current works. + +## main pages + +[(abandoned) blog, will be improved soon](/blog) + +[information about my music projects](/music) + +[pictures, photos, drawings, renders... all the visual stuff](/visual) + +[about me](/about.html) + +[learn about things that i host other than this website](/selfhosting.html)
A en/music/aaock-morth/aateh-tgh-saaghth.md

@@ -0,0 +1,17 @@

+# aaock-morth - aate'h tgh'saaghth + +``` + +released: 18-06-2016 +label: hälsorisk +``` + +it will be better if you don’t know that. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/aateh-tghsaaghth) + +## tracklist + +1. aaock xeeh morth +2. yhe odrghock'dhtrhogho tgh'bhuugrh +3. h'uguth'ehnglvhi uukh'kuuth buhrgh
A en/music/aaock-morth/index.md

@@ -0,0 +1,14 @@

+# aaock-morth + +``` + +start_date: 2015.11.06 +status: stalled +tags: ambient, dark ambient +``` + +abstract ambient project about lack of point in human speech. + +## releases + +[aate'h tgh'saaghth](aateh-tgh-saaghth.html "18-06-2016")
A en/music/aaoth/forwards.md

@@ -0,0 +1,14 @@

+# aaoth - forwards (universe wide grief) + +``` + +released: 30-12-2018 +style: electronic improvisation +``` + +little desolate improv during the new year's eve's evening, recorded through sunvox. + +> this is the song of our lost souls when they'll fly away +> from the earth destroyed by humans. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/forwards-universe-wide-grief)
A en/music/aaoth/index.md

@@ -0,0 +1,29 @@

+# aaoth + +``` + +start_date: 2018.12.30 +tags: experimental, no music, electronic +``` + +personal experiments and sound studies. + +## releases + +[forwards (universe wide grief)](forwards.html "30-12-2018") + +[that can't be](that-cant-be.html "12-01-2019") + +[lookthrough](lookthrough.html "28-02-2019") + +[mind collapse](mind-collapse.html "31-03-2019") + +[madnight](madnight.html "22-04-2019") + +[sgti](sgti.html "23-04-2019") + +[vortex machines](vortex-machines.html "10-05-2019") + +[the past](the-past.html "20-05-2019") + +[massive void](massive-void.html "13-04-2020")
A en/music/aaoth/lookthrough.md

@@ -0,0 +1,11 @@

+# aaoth - lookthrough + +``` + +released: 28-02-2019 +style: eai abstract +``` + +unthemed guitar improvisation. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/lookthrough)
A en/music/aaoth/madnight.md

@@ -0,0 +1,11 @@

+# aaoth - madnight + +``` + +released: 22-04-2019 +style: electronic lo-fi +``` + +atmospheric electronic track made using sunvox on android. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/madnight)
A en/music/aaoth/massive-void.md

@@ -0,0 +1,11 @@

+# aaoth - massive void + +``` + +released: 13-04-2020 +style: generative electronic +``` + +generative abstract track made with vcvrack. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/massive-void)
A en/music/aaoth/mind-collapse.md

@@ -0,0 +1,11 @@

+# aaoth - mind collapse + +``` + +released: 31-03-2019 +style: eai +``` + +recorded directly on recycled tape. only three samples in sunvox were used. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/mind-collapse)
A en/music/aaoth/sgti.md

@@ -0,0 +1,11 @@

+# aaoth - sgti + +``` + +released: 23-04-2019 +style: eai +``` + +**s**unvox/**g**uv'nor/**t**ape/**i**mprov + +[listen on bandcamp](https://aaoth.bandcamp.com/track/sgti)
A en/music/aaoth/that-cant-be.md

@@ -0,0 +1,11 @@

+# aaoth - that can't be + +``` + +released: 12-01-2019 +style: eai apocalyptic +``` + +apocalyptic guitar improvisation. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/that-cant-be)
A en/music/aaoth/the-past.md

@@ -0,0 +1,11 @@

+# aaoth - the past + +``` + +released: 20-05-2019 +style: eai lo-fi +``` + +atmospheric lo-fi improvisation. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/the-past)
A en/music/aaoth/vortex-machines.md

@@ -0,0 +1,11 @@

+# aaoth - vortex machines + +``` + +released: 10-05-2019 +style: electronic improvisation +``` + +apocalyptic electronic improvisation using sunvox. + +[listen on bandcamp](https://aaoth.bandcamp.com/track/vortex-machines)
A en/music/akpngims/enneorth.md

@@ -0,0 +1,17 @@

+# akpngims - enneorth + +``` + +released: 13-06-2015 +label: hälsorisk +``` + +all is error. the great mistake. irregular. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/enneorth) + +## tracklist + +1. ye many faces ov kaos +2. noise within abomination of inhumanity +3. skream ov faceless
A en/music/akpngims/index.md

@@ -0,0 +1,14 @@

+# akpngims + +``` + +start_date: 2015.07.13 +status: stalled +tags: black ambient, noise +``` + +rough sounding obscure project. + +## releases + +[enneorth](enneorth.html "13-06-2015")
A en/music/haelsorisk/index.md

@@ -0,0 +1,18 @@

+# hälsorisk + +``` + +start_date: 2015.02.02 +status: active +tags: experimental non-music +``` + +other than being an independent web-label, hälsorisk can be treated as +music project on it's own. additionaly it is a community of truely free art. + +hälsorisk was created in 2015 by aaoth. it's purpose was to absorb and +unite all musical and cultural work done by them. + +## releases + +[längtan efter ett slut](laengtan-efter-ett-slut.html "05-08-2017")
A en/music/haelsorisk/laengtan-efter-ett-slut.md

@@ -0,0 +1,22 @@

+# hälsorisk - längtan efter ett slut + +``` + +released: 05-08-2017 +style: acoustic dissonant +``` + +soundtrack to the short-movie with the same name. + +[watch on youtube](https://youtu.be/v4CqcxcWaDU) + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/l-ngtan-efter-ett-slut) + +## tracklist + +1. aaock-morth -- shnhkvh +2. xvra -- mvtvs +3. vakk -- II +4. xvra -- void within (acoustic) +5. xvra -- when became a dirt +6. akpngims -- woods of molten plastic people
A en/music/index.md

@@ -0,0 +1,27 @@

+# music + +here are various music projects in which i took part. + +## hälsorisk + +**hälsorisk** (swedish for '*health hazard*') is small web-label focused on dark +underground music. +here's a list of projects in which i took part: + +[akpngims](akpngims) + +[aaock-morth](aaock-morth) + +[xvra](xvra) + +[L=1](lequalone) + +[hälsorisk](haelsorisk) + +## other projects + +[aaoth](aaoth) + +[secauloruxse'i](secauloruxsehi) + +[spiral materivm](spiral-materivm)
A en/music/lequalone/chasm-of-psychosis.md

@@ -0,0 +1,26 @@

+# L=1 - chasm of psychosis + +``` + +released: 05-10-2015 +style: dark synthwave +``` + +chaotic synthwave lp. + +## tracklist + +1. reign of lie +2. beyond mind exist no future +3. nobody hears you +4. alone in the desert of nothingness +5. empty space within your soul +6. unending void +7. silence of noise +8. hear abomination +9. illusion of hope +10. rainclouds of hate +11. await the dawn of pain +12. in a pursuit of vain +13. you're inside my own hideous nightmare +14. the end of this madness
A en/music/lequalone/index.md

@@ -0,0 +1,23 @@

+# L=1 + +``` + +start_date: 2015.05.28 +end_date: 2015.11.02 +status: closed +tags: dark synthwave, dark ambient +``` + +debut project inspired by *diagnose: lebensgefahr*. + +## releases + +[the darkness](the-darkness.html "28-05-2015") + +[wastelands](wastelands.html "12-09-2015") + +[chasm-of-psychosis](chasm-of-psychosis.html "05-10-2015") + +[soul ocean](soul-ocean.html "26-10-2015") + +[you'll never hear me again](youll-never-hear-me-again.html "02-11-2015")
A en/music/lequalone/soul-ocean.md

@@ -0,0 +1,22 @@

+# L=1 - soul ocean + +``` + +released: 26-10-2015 +style: dark&nbsp;synthwave +``` + +dark atmospheric synthwave. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/soul-ocean) + +## tracklist + +1. entrance to the singularity +2. in the vast of the soul ocean +3. eternal dream +4. in the bottom of the soul ocean +5. deep in the cavern +6. in useless searches of life's sense +7. grind alert +8. the last breath
A en/music/lequalone/the-darkness.md

@@ -0,0 +1,20 @@

+# L=1 - the darkness + +``` + +released: 28-05-2015 +style: dark ambient +``` + +first dark ambient album. + +## tracklist + +1. world of despair +2. apocalyptic panic +3. voices from the deep +4. calm decay +5. distant omen of war +6. night in abandoned church +7. lonely world in which you'll die +8. the darkness
A en/music/lequalone/wastelands.md

@@ -0,0 +1,16 @@

+# L=1 - wastelands + +``` + +released: 12-09-2015 +style: dark&nbsp;ambient +``` + +apocalyptic synthwave inspired by fallout game series. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/wastelands) + +## tracklist + +1. crawling danger +2. wastelands
A en/music/lequalone/youll-never-hear-me-again.md

@@ -0,0 +1,15 @@

+# L=1 - you'll never hear me again + +``` + +released: 02-11-2015 +style: dark ambient +``` + +ending ep with sample experiments. + +## tracklist + +1. terrifying mind disassembly disaster +2. no hope, lies exist +3. beyond mind exist no future (re-issue)
A en/music/secauloruxsehi/aetheria.md

@@ -0,0 +1,17 @@

+# secauloruxse'i - aetheria + +``` + +released: 09-11-2018 +style: minimal synth +``` + +trilogy about mysterious land of pure art. + +[listen on bandcamp](https://aaoth.bandcamp.com/album/aetheria) + +## tracklist + +1. forwards +2. aetheria +3. the gone
A en/music/secauloruxsehi/fungi-noise.md

@@ -0,0 +1,20 @@

+# secauloruxse'i - fungi-noise + +``` + +released: 04-11-2018 +style: chiptune lo-fi synth +``` + +fungi-related chiptune made with sunvox. + +[listen on bandcamp](https://aaoth.bandcamp.com/album/fungi-noise) + +## tracklist + +1. illoh +2. le ka ce'u morsi cu lenku +3. le'i condi (v. reine cover) +4. la remxei +5. mi na djuno +6. lo catlu
A en/music/secauloruxsehi/index.md

@@ -0,0 +1,19 @@

+# secauloruxse'i + +``` + +start_date: 2017.11.05 +tags: chiptune +``` + +synth and chiptune project with name in lojban. + +## releases + +[fungi-noise](fungi-noise.html "04-11-2018") + +[rot](rot.html "08-11-2018") + +[aetheria](aetheria.html "09-11-2018") + +[complex neon chamber](complex-neon-chamber.html "08-02-2019")
A en/music/secauloruxsehi/rot.md

@@ -0,0 +1,16 @@

+# secauloruxse'i - rot + +``` + +released: 08-11-2018 +style: synthwave +``` + +electronic variations on riffs created by my friend. + +[listen on bandcamp](https://aaoth.bandcamp.com/album/rot) + +## tracklist + +1. plaguenthra +2. cccxxxiii
A en/music/spiral-materivm/index.md

@@ -0,0 +1,14 @@

+# spiral materivm + +``` + +start_date: 2018.02.25 +status: active +tags: post-rock, primitive rock +``` + +project about world perception from personal perspective. + +## releases + +[through woods and despair](through-woods-and-despair.html "07-01-2019")
A en/music/spiral-materivm/through-woods-and-despair.md

@@ -0,0 +1,24 @@

+# spiral materivm - through woods and despair + +``` + +released: 07-01-2019 +style: post-rock +``` + +a story about mind (or mad) journeys. +an alternative continuation of past works. + +written in may-july 2018. +recorded in august-december 2018. + +[listen on bandcamp](https://spiral-materivm.bandcamp.com/album/through-woods-and-despair) + +## tracklist + +1. despair +2. if i was there... +3. night sky +4. towards the world's end +5. inside the clock +6. woods
A en/music/xvra/absens.md

@@ -0,0 +1,28 @@

+# xvra - absens + +``` + +released: 30-06-2018 +style: black metal, raw black +``` + +dedicated to the ultimate void that was the beginning +and will be the end of out futile existence. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/absens) + +## tracklist + +1. livlös +2. förlust +3. fatal fall +4. dreamdwellar +5. dissociative +6. mvtvs +7. for a while... +8. vehikle +9. dödstad +10. longing for an end +11. named by grief +12. pleasures unattained +13. no point
A en/music/xvra/doedstad.md

@@ -0,0 +1,16 @@

+# xvra - doedstad + +``` + +released: 06-01-2017 +style: black metal, raw black +``` + +behold the silence. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/doedstad) + +## tracklist + +1. the dead city +2. ruttenstad
A en/music/xvra/index.md

@@ -0,0 +1,20 @@

+# xvra + +``` + +start_date: 22.02.2015 +status: active +tags: black metal, dsbm +``` + +black metal project. + +## releases + +[svartfeber](svartfeber.html "27-07-2015") + +[save me from the life](save-me-from-the-life.html "22-08-2016") + +[doedstad](doedstad.html "06-01-2017") + +[absens](absens.html "30-06-2018")
A en/music/xvra/save-me-from-the-life.md

@@ -0,0 +1,17 @@

+# xvra - save me from the life + +``` + +released: 22-08-2016 +style: black metal, raw black +``` + +second demo. + +[listen on bandcamp](https://haelsorisk.bandcamp.com/album/save-me-from-the-life) + +## tracklist + +1. opening the unlife +2. ashes of ruined freedom +3. void within
A en/music/xvra/svartfeber.md

@@ -0,0 +1,14 @@

+# xvra - svartfeber + +``` + +released: 27-07-2015 +style: black metal, raw black +``` + +debut demo with vocals recorded in nearby forest. + +## tracklist + +1. pleasures unattained +2. ye black fever
A en/selfhosting.md

@@ -0,0 +1,82 @@

+# selfhosting + +all things `*.aaoth.xyz` that you can use of access. + +## code + +### cgit + +[cgit](https://git.aaoth.xyz) + +cgit web frontend to personal collection of git repositories. +pet projects, toy projects, all that fun stuff. + +### fossil + +[fossil](https://fsl.aaoth.xyz) + +personal collection of fossil repositories. similar to all things git. + +[learn more about fossil](https://fossil-scm.org) + +## social + +### pleroma + +[pleroma](https://pleroma.aaoth.xyz) + +intance of pleroma, federated micro-blogging service. registrations are closed +currently, but you can contact me and get an invite if you really want. + +[learn more about pleroma](https://pleroma.social) + +### honk + +[honk](https://bloat.aaoth.xyz) + +instance of honk, the most minimal and enlightened federated microblogging +service. + +honk is amazing! it is written in go by ted unangst. + +[source code of original honk](https://humungus.tedunangst.com/r/honk) + +### owncast + +[owncast](https://owncast.aaoth.xyz) + +**NOTE**: this link may be unaccessible all the time, so don't be surprized. + +instance of my own streaming server. currently i occasionally stream games +and i speak primarily in russian, but this may be expanded in the future. + +[learn more about owncast](https://owncast.online) + +### matrix + +**NOTE**: there is no matrix frontend available, but you can use `aaoth.xyz` +as a matrix homeserver when logging in. + +instance of dendrite matrix server. registrations are closed currently, but +if you really want, you can contact me and get an invite. + +[learn more about matrix](https://matrix.org) + +[dendrite matrix server source code](https://github.com/matrix-org/dendrite) + +## other + +### inks + +[inks](https://inks.aaoth.xyz) + +instance of inks, a link aggregator. + +[source code of inks](https://humungus.tedunangst.com/r/inks) + +### mail + +[mail](https://mail.aaoth.xyz) + +personal mail server. currently only for use by me and there's no plan to add +support for registration.
A en/visual/drawings/index.md

@@ -0,0 +1,22 @@

+# drawings + +hand-drawn graphics. + +just for your information: i don't care about any of today's artists' stuff +(such as commissions, requests, trades, etc.). +i am drawing purely for myself. +maybe someone could consider this childish, but this is just up to you. + +![thedarkness](thedarkness.jpg) + +![stars_and_bridges](stars_and_bridges.jpg) + +![to_never_born](to_never_born.jpg) + +![zombie](zombie.jpeg) + +![the_faceless](the_faceless.jpeg) + +![unknown-man](unknown-man.jpg) + +![sunkenwood-draw](sunkenwood-draw.jpeg)
A en/visual/index.md

@@ -0,0 +1,13 @@

+# visual + +here are some photos and pictures. + +feel free to use them if and as you wish (don't forget to attribute). + +[drawings](drawings) + +[logos](logos) + +[photos](photos) + +[renders](renders)
A en/visual/logos/index.md

@@ -0,0 +1,23 @@

+# logos + +primarily i draw musical bands logotypes. + +here are some fictional ones and also real logos of my musical projects. + +![aaoth-logo](aaoth-logo.png) + +![lava-logo](lava-logo.png) + +![akpngims-logo](akpngims-logo.png) + +![haelsorisk-logo](haelsorisk-logo.png) + +![secauloruxsehi-logo](secauloruxsehi-logo.png) + +![lequalone-logo](lequalone-logo.png) + +![xvra-logo](xvra-logo.png) + +![aaock-morth-logo](aaock-morth-logo.png) + +![spiral-materivm-logo](spiral-materivm-logo.png)
A en/visual/photos/index.md

@@ -0,0 +1,29 @@

+# photos + +photos taken in different times and various circumstances. + +i'm not a professional photographer, but i have something to show. + +![botany](botany.jpeg) + +![sea_and_sun](sea_and_sun.jpg) + +![fern-background](fern-background.jpeg) + +![moss_landscape](moss_landscape.jpg) + +![labambient](labambient.jpeg) + +![mansion](mansion.jpg) + +![sunken_wood](sunken_wood.jpg) + +![electra_boat](electra_boat.jpg) + +![pyramid](pyramid.jpg) + +![fern_and_ladybug](fern_and_ladybug.jpeg) + +![snail](snail.jpg) + +![forest_ray](forest_ray.jpg)
A en/visual/renders/index.md

@@ -0,0 +1,26 @@

+# renders + +computer graphics is small part of my life too. +i'm working primarily in blender. + +![toki_pona](toki_pona.jpg) + +![puffy-openbsd](puffy-openbsd.jpg) + +![grb-pic](grb-pic.jpg) + +![puffy-chaotic](puffy-chaotic.jpg) + +![rayfield](rayfield.jpg) + +![partyofthedead](partyofthedead.jpg) + +![raysea](raysea.jpg) + +![proc_cake_cgmatter](proc_cake_cgmatter.gif) + +![bipolar-pills](bipolar-pills.jpg) + +![cat-model](cat-model.jpg) + +![heads](heads.jpg)
D index.md

@@ -1,18 +0,0 @@

---- -title: home -layout: home-page ---- - -# welcome - -personal static website serving as a showcase for all my past and current works. - -## main pages - -* [blog](/blog) -- (abandoned) blog, will be expelled soon. - -* [music](/music) -- information about my music projects. - -* [visual](/visual) -- pictures, photos, drawings, renders... all visual art stuff. - -* [about](/about) -- about me.
D music.md

@@ -1,26 +0,0 @@

---- -title: music -permalink: /music/ ---- - -# [hälsorisk][1] - -**hälsorisk** (swedish for '*health hazard*') is small web-label focused on dark -underground music. -here's a list of projects in which i took part: - -{% assign haelsorisk_projects = site.music_projects | where: "other", nil %} - -<div class="haelsorisk-projects-list"> -{% include music-projects-list.html projects=haelsorisk_projects %} -</div> - -[1]:/haelsorisk - -# other projects - -{% assign other_projects = site.music_projects | where: "other", true %} - -<div class="other-projects-list"> -{% include music-projects-list.html projects=other_projects %} -</div>
M post-receive.examplepost-receive.example

@@ -2,30 +2,20 @@ #!/bin/sh

# example git post-receive hook that i use to autobuild my website on push -# setup paths -export GEM_HOME=$HOME/gems -export PATH=$GEM_HOME/bin:$PATH - # set variables, change example.com to your website repo name GIT_REPO=$HOME/example.com.git TMP_GIT_CLONE=$HOME/tmp/example.com -GEMFILE=$TMP_GIT_CLONE/Gemfile -PUBLIC_WWW=/var/www/htdocs/example.com +AAOTH_ROOT=/var/www/htdocs/example.com +AAOTH_GEMROOT=/var/gemini/example.com + +export AAOTH_ROOT AAOTH_GEMROOT # change branch name to your main deploy branch git clone -b main "$GIT_REPO" "$TMP_GIT_CLONE" # build the site -BUNDLE_GEMFILE=$GEMFILE bundle install -BUNDLE_GEMFILE=$GEMFILE bundle exec jekyll build -s "$TMP_GIT_CLONE" -d "$PUBLIC_WWW" +cd "$TMP_GIT_CLONE" && sh build.sh -# genterate thumbnails -{ - cp "$TMP_GIT_CLONE/visual/thumbs.sh" "$PUBLIC_WWW/visual/thumbs.sh" - cd "$PUBLIC_WWW/visual" - sh thumbs.sh - rm thumbs.sh -} - +# clean up rm -Rf "$TMP_GIT_CLONE" exit
D tags/fossil.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: fossil -title: "tags: fossil" -permalink: /tags/fossil/ ----
D tags/gemini.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: gemini -title: "tags: gemini" -permalink: /tags/gemini/ ----
D tags/git.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: git -title: "tags: git" -permalink: /tags/git/ ----
D tags/grub.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: grub -title: "tags: grub" -permalink: /tags/grub/ ----
D tags/linux.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: linux -title: "tags: linux" -permalink: /tags/linux/ ----
D tags/matrix.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: matrix -title: "tags: matrix" -permalink: /tags/matrix/ ----
D tags/openbsd.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: openbsd -title: "tags: openbsd" -permalink: /tags/openbsd/ ----
D tags/testing.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: testing -title: "tags: testing" -permalink: /tags/testing/ ----
D tags/tutorial.md

@@ -1,6 +0,0 @@

---- -layout: tagsort -tag: tutorial -title: "tags: tutorial" -permalink: /tags/tutorial/ ----
D templates/music-project.md

@@ -1,13 +0,0 @@

---- -title: {{ title }} -start_date: {{ startdate }} -end_date: {{ enddate }} -status: {{ status }} -description: {{ description }} -tags: {{ tags }} -roles: {{ roles }} -permalink: {{ permalink }} -logo: {{ logo }} -other: {{ other }} ---- -
D templates/music-release.md

@@ -1,8 +0,0 @@

---- -author: {{ author }} -title: {{ title }} -type: {{ type }} -date: {{ date }} -style: {{ tags }} ---- -
D templates/music-title.md

@@ -1,8 +0,0 @@

---- -title: {{ title }} -author: {{ author }} -r_tag: {{ r_tag }} -num: {{ num }} ---- - -
D templates/post.md

@@ -1,11 +0,0 @@

---- -title: {{ title }} -date: {{ date }} -author: {{ author }} -tags: {{ tags }} ---- - - - -<!--more--> -
D visual.md

@@ -1,10 +0,0 @@

---- -title: visual -permalink: /visual/ ---- - -here are some photos and pictures. - -feel free to use them if and as you wish (don't forget to attribute). - -{% include art-menu.html %}
D visual/drawings.md

@@ -1,12 +0,0 @@

---- -title: drawings -permalink: /visual/drawings/ -layout: art-category ---- - -hand-drawn graphics. - -just for your information: i don't care about any of today's artists' stuff -(such as commissions, requests, trades, etc.). -i am drawing purely for myself. -maybe someone could consider this childish, but this is just up to you.
D visual/logos.md

@@ -1,9 +0,0 @@

---- -title: logos -permalink: /visual/logos/ -layout: art-category ---- - -primarily i draw musical bands logotypes. - -here are some fictional ones and also real logos of my musical projects.
D visual/photos.md

@@ -1,9 +0,0 @@

---- -title: photos -permalink: /visual/photos/ -layout: art-category ---- - -photos taken in different times and various circumstances. - -i'm not a professional photographer, but i have something to show.
D visual/renders.md

@@ -1,8 +0,0 @@

---- -title: renders -permalink: /visual/renders/ -layout: art-category ---- - -computer graphics is small part of my life too. -i'm working primarily in [blender](https://blender.org).