Initial commit
This commit is contained in:
commit
5d64b353bf
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
public
|
10
LICENSE-0BSD
Normal file
10
LICENSE-0BSD
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for
|
||||||
|
any purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
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.
|
121
LICENSE-CC0
Normal file
121
LICENSE-CC0
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||||
|
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||||
|
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||||
|
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||||
|
HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||||
|
authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without fear
|
||||||
|
of later claims of infringement build upon, modify, incorporate in other
|
||||||
|
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||||
|
and for any purposes, including without limitation commercial purposes.
|
||||||
|
These owners may contribute to the Commons to promote the ideal of a free
|
||||||
|
culture and the further production of creative, cultural and scientific
|
||||||
|
works, or to gain reputation or greater distribution for their Work in
|
||||||
|
part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||||
|
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||||
|
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||||
|
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or future
|
||||||
|
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional
|
||||||
|
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||||
|
member of the public at large and to the detriment of Affirmer's heirs and
|
||||||
|
successors, fully intending that such Waiver shall not be subject to
|
||||||
|
revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||||
|
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||||
|
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||||
|
maximum duration provided by applicable law or treaty (including future
|
||||||
|
time extensions), (iii) in any current or future medium and for any number
|
||||||
|
of copies, and (iv) for any purpose whatsoever, including without
|
||||||
|
limitation commercial, advertising or promotional purposes (the
|
||||||
|
"License"). The License shall be deemed effective as of the date CC0 was
|
||||||
|
applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||||
|
of the License, and in such case Affirmer hereby affirms that he or she
|
||||||
|
will not (i) exercise any of his or her remaining Copyright and Related
|
||||||
|
Rights in the Work or (ii) assert any associated claims and causes of
|
||||||
|
action with respect to the Work, in either case contrary to Affirmer's
|
||||||
|
express Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the
|
||||||
|
Work.
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
26
README.md
Normal file
26
README.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
# site
|
||||||
|
|
||||||
|
My personal website.
|
||||||
|
|
||||||
|
<https://einsof.org>
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Install [zola](https://www.getzola.org).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zola build
|
||||||
|
```
|
||||||
|
|
||||||
|
For development:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zola serve --drafts
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
All the content is licensed under [CC0](https://creativecommons.org/public-domain/cc0/) and all the code is under [0BSD](https://opensource.org/license/0bsd) unless noted otherwise.
|
||||||
|
|
||||||
|
This means you can use the contents of this repo as you see fit.
|
26
config.toml
Normal file
26
config.toml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
base_url = "https://einsof.org"
|
||||||
|
|
||||||
|
# title = "einsof.org"
|
||||||
|
# description = ""
|
||||||
|
|
||||||
|
default_language = "en"
|
||||||
|
author = "Andrii Hetman"
|
||||||
|
|
||||||
|
generate_feeds = true
|
||||||
|
feed_filenames = [ "atom.xml", "rss.xml" ]
|
||||||
|
|
||||||
|
compile_sass = false
|
||||||
|
build_search_index = false
|
||||||
|
|
||||||
|
generate_sitemap = true
|
||||||
|
generate_robots_txt = true
|
||||||
|
|
||||||
|
taxonomies = [
|
||||||
|
{ name = "tag", feed = true }
|
||||||
|
]
|
||||||
|
|
||||||
|
[markdown]
|
||||||
|
highlight_code = true
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
# Put all your custom variables here
|
3
content/_index.md
Normal file
3
content/_index.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
+++
|
||||||
|
title = "einsof.org"
|
||||||
|
+++
|
39
content/about.md
Normal file
39
content/about.md
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
+++
|
||||||
|
title = "About"
|
||||||
|
+++
|
||||||
|
|
||||||
|
Andrii Hetman.
|
||||||
|
|
||||||
|
Programmer. Idiot. Anime enjoyer.
|
||||||
|
|
||||||
|
I use `magackame` as my username whenever I can.
|
||||||
|
|
||||||
|
## Language
|
||||||
|
|
||||||
|
- 🇬🇧 English: B2?
|
||||||
|
- 🇺🇦 Ukrainian: Native
|
||||||
|
- 🇷🇺 Russian: Native
|
||||||
|
- 🇯🇵 Japanese: I wish 😭
|
||||||
|
|
||||||
|
## Contact Me
|
||||||
|
|
||||||
|
I prefer Signal, but you do you.
|
||||||
|
|
||||||
|
- mail: [1@einsof.org](mailto://1@einsof.org)
|
||||||
|
- telegram: [magackame](https://t.me/magackame)
|
||||||
|
- matrix: [@magackame:matrix.org](https://matrix.to/#/@magackame:matrix.org)
|
||||||
|
- signal: [magackame.99](https://signal.me/#eu/nlalf8hKSsMH_cd_3NzyNtvlewbtIGutXO4Haw-kkDuCiqKt71xMF4iSXai0OfNP)
|
||||||
|
- discord: magackame
|
||||||
|
|
||||||
|
## Profiles
|
||||||
|
|
||||||
|
- GitHub: [magackame](https://github.com/magackame)
|
||||||
|
- Reddit: [magackame](https://www.reddit.com/user/Magackame/)
|
||||||
|
|
||||||
|
## Meta
|
||||||
|
|
||||||
|
All the content on this website is licensed under [CC0](https://creativecommons.org/public-domain/cc0/) and all the code is under [0BSD](https://opensource.org/license/0bsd) unless noted otherwise. This means you can use the contents of this website as you see fit.
|
||||||
|
|
||||||
|
This website is powered by [Zola](https://www.getzola.org) on top of [NixOS](https://nixos.org).
|
||||||
|
|
||||||
|
You can find the source code [here](https://src.einsof.org/magackame/site.git).
|
6
content/blog/_index.md
Normal file
6
content/blog/_index.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
+++
|
||||||
|
title = "Blog"
|
||||||
|
sort_by = "date"
|
||||||
|
template = "blog.html"
|
||||||
|
page_template = "post.html"
|
||||||
|
+++
|
27
flake.lock
Normal file
27
flake.lock
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731386116,
|
||||||
|
"narHash": "sha256-lKA770aUmjPHdTaJWnP3yQ9OI1TigenUqVC3wweqZuI=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "689fed12a013f56d4c4d3f612489634267d86529",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
18
flake.nix
Normal file
18
flake.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
description = "einsof.org site";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... }@inputs:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages.x86_64-linux = rec {
|
||||||
|
site = pkgs.callPackage ./site.nix {};
|
||||||
|
default = site;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
27
site.nix
Normal file
27
site.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
pkgs
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
name = "site";
|
||||||
|
version = "0.1.0";
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
# src = pkgs.fetchgit {
|
||||||
|
# url = "git@einsof.org:/srv/git/repo/magackame/site.git";
|
||||||
|
# rev = "";
|
||||||
|
# sha256 = lib.fakeSha256;
|
||||||
|
# };
|
||||||
|
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
zola
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
zola build
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
cp -r public $out
|
||||||
|
'';
|
||||||
|
}
|
65
static/favicon.svg
Normal file
65
static/favicon.svg
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
sodipodi:docname="favicon.svg"
|
||||||
|
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="0.70710678"
|
||||||
|
inkscape:cx="386.78741"
|
||||||
|
inkscape:cy="400.92955"
|
||||||
|
inkscape:window-width="1916"
|
||||||
|
inkscape:window-height="1028"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs1">
|
||||||
|
<rect
|
||||||
|
x="212.29949"
|
||||||
|
y="232.37784"
|
||||||
|
width="526.93611"
|
||||||
|
height="513.35008"
|
||||||
|
id="rect1" />
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-20.352251,-40.298835)">
|
||||||
|
<circle
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
|
||||||
|
id="path2"
|
||||||
|
cx="120.35225"
|
||||||
|
cy="140.29883"
|
||||||
|
r="100" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
transform="matrix(0.30179878,0,0,0.30179878,-8.1030652,-4.4530572)"
|
||||||
|
id="text1"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:426.667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-dasharray:none"
|
||||||
|
inkscape:label="text1"><tspan
|
||||||
|
x="212.29883"
|
||||||
|
y="641.5506"
|
||||||
|
id="tspan1">永</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
BIN
static/font/BerkeleyMono/BerkeleyMono-Bold.woff2
Normal file
BIN
static/font/BerkeleyMono/BerkeleyMono-Bold.woff2
Normal file
Binary file not shown.
BIN
static/font/BerkeleyMono/BerkeleyMono-BoldItalic.woff2
Normal file
BIN
static/font/BerkeleyMono/BerkeleyMono-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
static/font/BerkeleyMono/BerkeleyMono-Italic.woff2
Normal file
BIN
static/font/BerkeleyMono/BerkeleyMono-Italic.woff2
Normal file
Binary file not shown.
BIN
static/font/BerkeleyMono/BerkeleyMono-Regular.woff2
Normal file
BIN
static/font/BerkeleyMono/BerkeleyMono-Regular.woff2
Normal file
Binary file not shown.
BIN
static/font/BerkeleyMono/LICENSE.pdf
Normal file
BIN
static/font/BerkeleyMono/LICENSE.pdf
Normal file
Binary file not shown.
BIN
static/image/cirno-fumo.png
Normal file
BIN
static/image/cirno-fumo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
106
static/style.css
Normal file
106
static/style.css
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: "Berkeley Mono";
|
||||||
|
|
||||||
|
src:
|
||||||
|
local("Berkeley Mono"),
|
||||||
|
url("/font/BerkeleyMono/BerkeleyMono-Regular.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Berkeley Mono";
|
||||||
|
|
||||||
|
src:
|
||||||
|
local("Berkeley Mono:style=Bold"),
|
||||||
|
url("/font/BerkeleyMono/BerkeleyMono-Bold.woff2") format("woff2");
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Berkeley Mono";
|
||||||
|
|
||||||
|
src:
|
||||||
|
local("Berkeley Mono:style=Italic"),
|
||||||
|
url("/font/BerkeleyMono/BerkeleyMono-Italic.woff2") format("woff2");
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Berkeley Mono";
|
||||||
|
|
||||||
|
src:
|
||||||
|
local("Berkeley Mono:style=Bold Italic"),
|
||||||
|
url("/font/BerkeleyMono/BerkeleyMono-BoldItalic.woff2") format("woff2");
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 0;
|
||||||
|
width: calc(100% - 2rem);
|
||||||
|
|
||||||
|
margin: auto;
|
||||||
|
max-width: 80ch;
|
||||||
|
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family: "Berkeley Mono", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-family: "Berkeley Mono", monospace;
|
||||||
|
padding: 1rem;
|
||||||
|
|
||||||
|
overflow: auto;
|
||||||
|
scrollbar-width: thin;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
background-color: #191724;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: inside square;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
body {
|
||||||
|
background-color: #1c1b22;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: #875fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: magenta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
color: gray;
|
||||||
|
}
|
48
templates/base.html
Normal file
48
templates/base.html
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/style.css" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
|
|
||||||
|
<title>
|
||||||
|
{% if page.title %}
|
||||||
|
{{ page.title }}
|
||||||
|
{% else %}
|
||||||
|
{{ section.title }}
|
||||||
|
{% endif %}
|
||||||
|
</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<nav style="display: flex; justify-content: space-between; margin-bottom: 3rem;">
|
||||||
|
<a href="/">einsof.org</a>
|
||||||
|
|
||||||
|
<div style="display: flex; gap: 1rem;">
|
||||||
|
<a href="/blog/">blog</a>
|
||||||
|
<a href="/about/">about</a>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<hr style="margin-top: 2rem; margin-bottom: 0.75rem;" />
|
||||||
|
|
||||||
|
<div style="display: flex; justify-content: space-between;">
|
||||||
|
<a href="/">einsof.org</a>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="date">©</span>
|
||||||
|
<a href="https://creativecommons.org/public-domain/cc0/">CC0</a>
|
||||||
|
<span class="date">·</span>
|
||||||
|
<a href="https://opensource.org/license/0bsd">0BSD</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
19
templates/blog.html
Normal file
19
templates/blog.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% if section.pages | length > 1 %}
|
||||||
|
<h1>{{ section.title }}</h1>
|
||||||
|
|
||||||
|
{% for page in section.pages %}
|
||||||
|
<a style="text-decoration: none; font-size: 1.2rem;" href="{{ page.permalink | safe }}">{{ page.title }}</a>
|
||||||
|
<br />
|
||||||
|
<span style="color: gray;">{{ page.date }}</span>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<p style="text-align: center; color: gray;">
|
||||||
|
There are no blogposts currently
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
23
templates/index.html
Normal file
23
templates/index.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<img alt="A cirno fumo" src="/image/cirno-fumo.png" />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<p style="text-align: center; color: gray;">
|
||||||
|
I will be shitposting here shortly...
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% if section.pages | length > 1 %}
|
||||||
|
<h1>Blog</h1>
|
||||||
|
|
||||||
|
{% set section = get_section(path="blog/_index.md") %}
|
||||||
|
{% for page in section.pages %}
|
||||||
|
<a style="text-decoration: none; font-size: 1.2rem;" href="{{ page.permalink | safe }}">{{ page.title }}</a>
|
||||||
|
<br />
|
||||||
|
<span class="date">{{ page.date }}</span>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
10
templates/page.html
Normal file
10
templates/page.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main>
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
<p>{{ page.description }}</p>
|
||||||
|
|
||||||
|
{{ page.content | safe }}
|
||||||
|
</main>
|
||||||
|
{% endblock %}
|
15
templates/post.html
Normal file
15
templates/post.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main>
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
<p>{{ page.description }}</p>
|
||||||
|
|
||||||
|
<time class="date" datetime="{{ page.date }}">{{ page.date }}</time>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
{{ page.content | safe }}
|
||||||
|
</main>
|
||||||
|
{% endblock %}
|
Loading…
Reference in a new issue