Compare commits
36 Commits
fc0bc34152
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
949d476b43
|
|||
|
cfad9719a7
|
|||
|
67d01c2762
|
|||
|
82b7bc795e
|
|||
|
9195aacab2
|
|||
|
a316bda945
|
|||
|
3d03aa97e2
|
|||
|
5af774f08d
|
|||
|
24ce5cd29d
|
|||
|
97f47b282c
|
|||
|
490ed3e088
|
|||
|
98e2a5c004
|
|||
|
c03ad70a97
|
|||
|
8324bcc33e
|
|||
|
ba247f88d4
|
|||
|
7cb266782d
|
|||
|
2040281fcf
|
|||
|
ff98e0048d
|
|||
| c8259e7150 | |||
| 53483a6708 | |||
| 75ba22464d | |||
| 3dcb311aae | |||
| a8445e3e79 | |||
| d487121f3e | |||
| 6af02d9e0e | |||
| 0708a4c522 | |||
| ea9ec55590 | |||
| bf64bc92ef | |||
| 3aade95b85 | |||
| 9851b69c6a | |||
| b2c9d4fdbd | |||
| 55f020ed73 | |||
| 662c601891 | |||
| 849861bae2 | |||
| 002469acde | |||
| eb031f5f9b |
@@ -6,4 +6,4 @@ Pages by natto
|
||||
* License
|
||||
Software code uses the MIT license.
|
||||
|
||||
All the content under [[/posts/][/posts]] and [[/images/personal/][/images/personal]] uses the CC BY-NC-SA 4.0 license.
|
||||
All the content under [[/posts/][/posts]], [[/documents/][/documents]] and [[/images/personal/][/images/personal]] uses the CC BY-NC-SA 4.0 license.
|
||||
|
||||
@@ -3,12 +3,14 @@ title: About
|
||||
---
|
||||
|
||||
* Alo
|
||||
My name is Amneesh Singh but I also go as natto (or natto1784) online. I was born in the blazing hot summer of 2003 in India, where I also currently reside (just in a different region). I am currently a sophomore in college studying engineering. My major is Information Technology. I struggle with basic tasks but I can barely help that.
|
||||
My name is Amneesh Singh but I also go as natto (or natto1784) online. I am 22 and from Delhi, and currently I stay in Bengaluru. I am working as a software engineer right now, particularly with embedded devices. I struggle with basic tasks but I can barely help that.
|
||||
|
||||
I like a lot of things, but the thing I like the most is sleeping.
|
||||
|
||||
I dislike particularly nothing.
|
||||
|
||||
#+HTML: <p>Here is my <a href="/documents/cv.html">CV</a>.
|
||||
|
||||
* Socials
|
||||
- [[https://twitter.com/natto1784][Twitter]]
|
||||
- [[https://github.com/natto1784][GitHub]]
|
||||
|
||||
204
contact.org
@@ -2,105 +2,117 @@
|
||||
title: Contact
|
||||
---
|
||||
|
||||
- Email :: [[mailto:natto@weirdnatto.in][natto at weirdnatto dot com]]
|
||||
:: [[mailto:singh.amneesh1784@gmail.com][singh dot amneesh1784 at gmail dot com]]
|
||||
:: [[mailto:natto1784@protonmail.com][natto1784 at protonmail dot com]]
|
||||
- IRC Nicks :: natto
|
||||
:: natto17
|
||||
- LinkedIn :: [[https://www.linkedin.com/in/natto1784/][natto1784]]
|
||||
- Discord :: AlpaViraam#0735
|
||||
* Email
|
||||
Fastest way to get to me
|
||||
- [[mailto:natto@weirdnatto.in][natto at weirdnatto dot in]]
|
||||
- [[mailto:me@amneesh.com][me at amneesh dot com]]
|
||||
- [[mailto:amneeshsingh@proton.me][amneeshsingh at proton dot me]]
|
||||
- [[mailto:natto1784@protonmail.com][natto1784 at protonmail dot com]]
|
||||
- [[mailto:singh.amneesh1784@gmail.com][singh dot amneesh1784 at gmail dot com]]
|
||||
|
||||
* IRC Nicks
|
||||
I'll probably be AFK
|
||||
- natto
|
||||
- natto17
|
||||
|
||||
* Public PGP
|
||||
** Amneesh Singh <natto@weirdnatto.in>
|
||||
Fingerprint: 3C4BDBE7BBF45B52C14EA193007257B05FCC86A8
|
||||
|
||||
** Public PGP
|
||||
#+begin_src
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
BN5NULMREAE8wls=
|
||||
=G5qs
|
||||
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
|
||||
=54fJ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
#+end_src
|
||||
|
||||
** Amneesh Singh <me@amneesh.com>
|
||||
Fingerprint: 0C2FDA374F2D48D9F9F0F7788EAAB36980C424C2
|
||||
|
||||
#+begin_src
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEaLML1BYJKwYBBAHaRw8BAQdAzsH8B3rh7b/Y7brho6KmcT0GpBb9tP4a7wbs
|
||||
mB1YXIK0HkFtbmVlc2ggU2luZ2ggPG1lQGFtbmVlc2guY29tPoiWBBMWCgA+FiEE
|
||||
DC/aN08tSNn58Pd4jqqzaYDEJMIFAmizC9QCGwMFCRLMAwAFCwkIBwIGFQoJCAsC
|
||||
BBYCAwECHgECF4AACgkQjqqzaYDEJMLdzAEAgNYmoRrYOusOS7bXptgLDI00VPV9
|
||||
EXzgd0Grqgmho0gBAPsV/ouEemx9d2GYUJ3hJI47KWkrV9dC1r9DpTk8Ak8CuDgE
|
||||
aLML1BIKKwYBBAGXVQEFAQEHQOG0Vs//mYea5BfTPv4MezyMX7e+dSASKY/Cce6x
|
||||
8ORpAwEIB4h+BBgWCgAmFiEEDC/aN08tSNn58Pd4jqqzaYDEJMIFAmizC9QCGwwF
|
||||
CRLMAwAACgkQjqqzaYDEJMJcigEA6Y8hWlVnuFkXCx2z347X38HBQhLFgtldqt5e
|
||||
BMJGWAYA+QHFO8wFQHrgBuvqOBiG878xdE8Td3RjVlCB3OJeMvsE
|
||||
=xA4Z
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
#+end_src
|
||||
|
||||
336
css/default.css
@@ -1,97 +1,202 @@
|
||||
@font-face {
|
||||
font-family: 'Quantico';
|
||||
font-family: "Arvo";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/Quantico-Regular.woff') format('woff');
|
||||
src: url("../fonts/Arvo-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oxygen';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/Oxygen.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Monoid Bold';
|
||||
font-style: normal;
|
||||
font-family: "Arvo";
|
||||
font-weight: bold;
|
||||
src: url('../fonts/Monoid-Bold.woff2') format('woff2'),
|
||||
src: url("../fonts/Arvo-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Arvo";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Arvo-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Arvo";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Arvo-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-style: normal;
|
||||
src: url("../fonts/Lato-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Lato-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Lato-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Lato-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-style: normal;
|
||||
src: url("../fonts/Quantico-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Quantico-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Quantico-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Quantico-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-family {
|
||||
font-family: 'Monoid Regular';
|
||||
font-family: "Monoid";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/Monoid-Regular.woff2') format('woff2');
|
||||
src: url("../fonts/Monoid-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Monoid";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Monoid-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-family {
|
||||
font-family: "Monoid";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Monoid-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
:root {
|
||||
--yellow: #b58900;
|
||||
--orange: #cb4b16;
|
||||
--red: #dc322f;
|
||||
--magenta: #d33682;
|
||||
--violet: #6c71c4;
|
||||
--blue: #268bd2;
|
||||
--cyan: #2aa198;
|
||||
--green: #859900;
|
||||
--fg0: #93a1a1;
|
||||
--fg1: #839496;
|
||||
--fg2: #657b83;
|
||||
--fg3: #586e75;
|
||||
--fg4: #073642;
|
||||
--fg5: #002b36;
|
||||
--bg0: #fdf6e3 ;
|
||||
--bg1: #eee8d5;
|
||||
--dark: #002b36;
|
||||
--light: #fdf6e3;
|
||||
--rosewater: #dc8a78;
|
||||
--flamingo: #dd7878;
|
||||
--pink: #ea76cb;
|
||||
--mauve: #8839ef;
|
||||
--red: #d20f39;
|
||||
--maroon: #e64553;
|
||||
--peach: #fe640b;
|
||||
--yellow: #df8e1d;
|
||||
--green: #40a02b;
|
||||
--teal: #179299;
|
||||
--sky: #04a5e5;
|
||||
--sapphire: #209fb5;
|
||||
--blue: #1e66f5;
|
||||
--lavender: #7287fd;
|
||||
--text: #4c4f69;
|
||||
--subtext1: #5c5f77;
|
||||
--subtext0: #6c6f85;
|
||||
--overlay2: #7c7f93;
|
||||
--overlay1: #8c8fa1;
|
||||
--overlay0: #9ca0b0;
|
||||
--surface2: #acb0be;
|
||||
--surface1: #bcc0cc;
|
||||
--surface0: #ccd0da;
|
||||
--crust: #dce0e8;
|
||||
--mantle: #e6e9ef;
|
||||
--base: #eff1f5;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg0: #073642;
|
||||
--bg1: #002b36;
|
||||
--fg5: #fdf6e3 ;
|
||||
--fg4: #eee8d5;
|
||||
--fg3: #93a1a1;
|
||||
--fg2: #839496;
|
||||
--fg1: #657b83;
|
||||
--fg0: #586e75;
|
||||
}
|
||||
--rosewater: #f5e0dc;
|
||||
--flamingo: #f2cdcd;
|
||||
--pink: #f5c2e7;
|
||||
--mauve: #cba6f7;
|
||||
--red: #f38ba8;
|
||||
--maroon: #eba0ac;
|
||||
--peach: #fab387;
|
||||
--yellow: #f9e2af;
|
||||
--green: #a6e3a1;
|
||||
--teal: #94e2d5;
|
||||
--sky: #89dceb;
|
||||
--sapphire: #74c7ec;
|
||||
--blue: #89b4fa;
|
||||
--lavender: #b4befe;
|
||||
--text: #cdd6f4;
|
||||
--subtext1: #bac2de;
|
||||
--subtext0: #a6adc8;
|
||||
--overlay2: #9399b2;
|
||||
--overlay1: #7f849c;
|
||||
--overlay0: #6c7086;
|
||||
--surface2: #585b70;
|
||||
--surface1: #45475a;
|
||||
--surface0: #313244;
|
||||
--base: #1e1e2e;
|
||||
--mantle: #181825;
|
||||
--crust: #11111b;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
background-color: var(--bg0);
|
||||
color: var(--fg2);
|
||||
background-color: var(--base);
|
||||
color: var(--subtext0);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Oxygen", sans-serif;
|
||||
font-family: "Lato", sans-serif;
|
||||
font-size: 1.6rem;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
color: var(--fg3);
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
color: var(--overlay2);
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: "Arvo", serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
header {
|
||||
border-bottom: 0.2rem solid var(--magenta);
|
||||
border-bottom: 0.2rem solid var(--pink);
|
||||
margin: 4.2rem 0;
|
||||
}
|
||||
|
||||
main a, footer a {
|
||||
color: var(--blue);
|
||||
main a,
|
||||
footer a {
|
||||
color: var(--sky);
|
||||
}
|
||||
|
||||
main a:hover, footer a:hover{
|
||||
color: var(--light);
|
||||
background: var(--blue);
|
||||
main a:not(.footnote-ref):hover,
|
||||
main .footnote-ref *:hover,
|
||||
footer a:hover {
|
||||
color: var(--base);
|
||||
background: var(--sky);
|
||||
}
|
||||
|
||||
.subdomains li a:hover {
|
||||
#subdomains li a:hover {
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
@@ -100,34 +205,38 @@ a {
|
||||
font-family: "Quantico", monospace;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
a:hover,
|
||||
a *:hover {
|
||||
transition-duration: 0.1s;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 3rem;
|
||||
}
|
||||
|
||||
nav a {
|
||||
font-size: 1.8rem;
|
||||
font-size: 2rem;
|
||||
font-weight: bold;
|
||||
color: var(--cyan);
|
||||
color: var(--sapphire);
|
||||
text-transform: uppercase;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
background: var(--cyan);
|
||||
color: var(--dark);
|
||||
background: var(--sapphire);
|
||||
color: var(--base);
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 3rem;
|
||||
padding: 1.2rem 0;
|
||||
border-top: 0.2rem solid var(--magenta);
|
||||
border-top: 0.2rem solid var(--pink);
|
||||
font-size: 1.2rem;
|
||||
color: var(--fg0);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -138,41 +247,27 @@ h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.post-preview-item {
|
||||
list-style-type: none;
|
||||
padding: 2rem;
|
||||
border: 0.2rem ridge var(--fg5);
|
||||
}
|
||||
|
||||
.post-preview-item:not(:last-child) {
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
text-align: center;
|
||||
color: var(--fg5) !important;
|
||||
color: var(--subtext1);
|
||||
}
|
||||
|
||||
article .post-header {
|
||||
font-size: 1.4rem;
|
||||
font-style: italic;
|
||||
color: var(--fg0);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.logo {
|
||||
#nattopages {
|
||||
text-align: center;
|
||||
margin: 1rem auto 3rem;
|
||||
}
|
||||
|
||||
.logo a:hover {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.logo a {
|
||||
#nattopages a {
|
||||
font-weight: bold;
|
||||
font-family: "Monoid Bold", sans-serif;
|
||||
font-family: "Monoid";
|
||||
font-size: 3rem;
|
||||
color: var(--green);
|
||||
color: var(--overlay2);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -189,31 +284,28 @@ article > section {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: 'Monoid Regular', monospace;
|
||||
}
|
||||
|
||||
code {
|
||||
border-radius: 0.2rem;
|
||||
background: var(--bg1);
|
||||
.verbatim {
|
||||
background: var(--mantle);
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: "Monoid", monospace;
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
border-left: 0.5rem solid var(--cyan);
|
||||
background: var(--bg1);
|
||||
border-left: 0.5rem solid var(--sapphire);
|
||||
background: var(--mantle);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.toc {
|
||||
background: var(--bg1);
|
||||
background: var(--mantle);
|
||||
border-radius: 1rem;
|
||||
float: right;
|
||||
max-width: 40%;
|
||||
float: none;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
img, video {
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@@ -221,7 +313,7 @@ img, video {
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
height: 0;
|
||||
padding-bottom: 56.25%
|
||||
padding-bottom: 56.25%;
|
||||
}
|
||||
|
||||
.iframe-parent iframe {
|
||||
@@ -232,19 +324,55 @@ img, video {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#sticker {
|
||||
bottom: -2em;
|
||||
left: -2em;
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
transform: rotate(45deg);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#sticker label:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#sticker-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sticker-toggle:checked ~ #sticker {
|
||||
bottom: 1em;
|
||||
left: 1em;
|
||||
}
|
||||
|
||||
#sticker-toggle:checked ~ #sticker img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 319px) {
|
||||
body {
|
||||
width: 90%;
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
nav a {
|
||||
display: block;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 1rem;
|
||||
}
|
||||
@@ -256,31 +384,47 @@ img, video {
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav a {
|
||||
display: inline;
|
||||
margin: 0 0.6rem;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 639px) {
|
||||
#sticker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
nav {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
body {
|
||||
width: 60%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
nav a {
|
||||
margin: 0 0 0 1.2rem;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
@@ -1,31 +1,97 @@
|
||||
/* Solarized theme for Pandoc Code */
|
||||
pre code { color: var(--fg2); }
|
||||
code span.kw { color: var(--green); } /* Keyword */
|
||||
code span.dt { color: var(--yellow); } /* DataType */
|
||||
code span.dv { color: var(--cyan); } /* DecVal */
|
||||
code span.bn { color: var(--cyan); } /* BaseN */
|
||||
code span.fl { color: var(--cyan); } /* Float */
|
||||
code span.ch { color: var(--cyan); } /* Char */
|
||||
code span.st { color: var(--cyan); } /* String */
|
||||
code span.co { color: var(--fg0); font-style: italic; } /* Comment */
|
||||
code span.ot { color: var(--blue); } /* Other */
|
||||
code span.al { color: var(--red); } /* Alert */
|
||||
code span.fu { color: var(--blue); } /* Function */
|
||||
code span.cn { color: var(--cyan); } /* Constant */
|
||||
code span.sc { color: var(--red); } /* SpecialChar */
|
||||
code span.vs { color: var(--fg2); } /* VerbatimString */
|
||||
code span.ss { color: var(--red); } /* SpecialString */
|
||||
code span.im { color: var(--fg2); } /* Import */
|
||||
code span.va { color: var(--blue); } /* Variable */
|
||||
code span.cf { color: var(--green); } /* ControlFlow */
|
||||
code span.op { color: var(--green); } /* Operator */
|
||||
code span.bu { color: var(--fg2); } /* BuiltIn */
|
||||
code span.ex { color: var(--fg2); } /* Extension */
|
||||
code span.pp { color: var(--orange); } /* Preprocessor */
|
||||
code span.at { color: var(--fg2); } /* Attribute */
|
||||
code span.er { color: var(--red); } /* Error */
|
||||
code span.wa { color: var(--orange); font-style: italic; } /* Warning */
|
||||
code span.do { color: var(--fg0); font-style: italic; } /* Documentation */
|
||||
code span.an { color: var(--fg0); font-style: italic; } /* Annotation */
|
||||
code span.cv { color: var(--fg0); font-style: italic; } /* CommentVar */
|
||||
code span.in { color: var(--fg0); font-weight:normal; font-style: normal; } /* Information */
|
||||
pre code {
|
||||
color: var(--subtext0);
|
||||
}
|
||||
code span.kw {
|
||||
color: var(--green);
|
||||
} /* Keyword */
|
||||
code span.dt {
|
||||
color: var(--yellow);
|
||||
} /* DataType */
|
||||
code span.dv {
|
||||
color: var(--sapphire);
|
||||
} /* DecVal */
|
||||
code span.bn {
|
||||
color: var(--sapphire);
|
||||
} /* BaseN */
|
||||
code span.fl {
|
||||
color: var(--sapphire);
|
||||
} /* Float */
|
||||
code span.ch {
|
||||
color: var(--sapphire);
|
||||
} /* Char */
|
||||
code span.st {
|
||||
color: var(--sapphire);
|
||||
} /* String */
|
||||
code span.co {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Comment */
|
||||
code span.ot {
|
||||
color: var(--sky);
|
||||
} /* Other */
|
||||
code span.al {
|
||||
color: var(--maroon);
|
||||
} /* Alert */
|
||||
code span.fu {
|
||||
color: var(--sky);
|
||||
} /* Function */
|
||||
code span.cn {
|
||||
color: var(--sapphire);
|
||||
} /* Constant */
|
||||
code span.sc {
|
||||
color: var(--maroon);
|
||||
} /* SpecialChar */
|
||||
code span.vs {
|
||||
color: var(--subtext0);
|
||||
} /* VerbatimString */
|
||||
code span.ss {
|
||||
color: var(--maroon);
|
||||
} /* SpecialString */
|
||||
code span.im {
|
||||
color: var(--subtext0);
|
||||
} /* Import */
|
||||
code span.va {
|
||||
color: var(--sky);
|
||||
} /* Variable */
|
||||
code span.cf {
|
||||
color: var(--green);
|
||||
} /* ControlFlow */
|
||||
code span.op {
|
||||
color: var(--green);
|
||||
} /* Operator */
|
||||
code span.bu {
|
||||
color: var(--subtext0);
|
||||
} /* BuiltIn */
|
||||
code span.ex {
|
||||
color: var(--subtext0);
|
||||
} /* Extension */
|
||||
code span.pp {
|
||||
color: var(--peach);
|
||||
} /* Preprocessor */
|
||||
code span.at {
|
||||
color: var(--subtext0);
|
||||
} /* Attribute */
|
||||
code span.er {
|
||||
color: var(--maroon);
|
||||
} /* Error */
|
||||
code span.wa {
|
||||
color: var(--peach);
|
||||
font-style: italic;
|
||||
} /* Warning */
|
||||
code span.do {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Documentation */
|
||||
code span.an {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Annotation */
|
||||
code span.cv {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* CommentVar */
|
||||
code span.in {
|
||||
color: var(--text);
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
} /* Information */
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: "Daily #1"
|
||||
author: natto
|
||||
published: October 29, 2022
|
||||
---
|
||||
* Hm?
|
||||
Doing chores sucks but errands suck more. Also self hosting shit sucks, but I do it anyway.
|
||||
|
||||
* Image of the Day
|
||||
#+ATTR_HTML: :alt Bro thinks he GettyImages 💀
|
||||
[[https://f.weirdnatto.in/sshb-modinazisalute.png]]
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/ZOUJ-osakasohigh.mp4" type="video/mp4">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Song of the Day
|
||||
Been loving this one since my early adolescence.
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/mGnJm0qIpFw" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
Big tech companies are dying, the American century is over. The Chinese century is upon us, long live the CCP.
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: "Daily #2"
|
||||
author: natto
|
||||
published: October 30, 2022
|
||||
---
|
||||
* Hm?
|
||||
I have really shitty internet bandwidth and I have a lot of work pending (that does not involve internet).
|
||||
|
||||
* Image of the Day
|
||||
#+ATTR_HTML: :alt Your dreams and hopes are incompatible with reality.
|
||||
[[http://f.weirdnatto.in/3eW6-dreams.png]]
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
MEGU MEGU FIRE ENDLESS NIGHT SOSHITE MOTTO MOTTO ATSUKU NARE FEVER
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/N6FfOevhA10" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Song of the Day
|
||||
Sofia Vempo's version/cover of Misirlou
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/8myXQRe-WcY" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
Everyone on the internet is a loser (including me). Shit sucks.
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
title: "Daily #3"
|
||||
author: natto
|
||||
published: November 01, 2022
|
||||
---
|
||||
* Hm?
|
||||
College sucks, it makes me eepy.
|
||||
|
||||
* Image of the Day
|
||||
#+ATTR_HTML: :alt LLVM
|
||||
[[https://f.weirdnatto.in/oqKU-llvm.jpg]]
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/Kf6o-bengalibee.webm" type="video/webm">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Song of the Day
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/N-cU-M_tX68" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
Why do people like to photograph every living moment of a trivial event? It feels unnecessary and stupid.
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: "Daily #4"
|
||||
author: natto
|
||||
published: November 02, 2022
|
||||
---
|
||||
* Hm?
|
||||
I really am a midwit.
|
||||
|
||||
* Image of the Day
|
||||
Red and black, I dress eagle on my chest
|
||||
#+ATTR_HTML: :alt Red and black, I dress eagle on my chest
|
||||
[[https://f.weirdnatto.in/EXrJ-albaniagdp.jpg]]
|
||||
|
||||
* Video of the Day
|
||||
Welcome!
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/ftNe-myhouse.mp4" type="video/mp4">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Song of the Day
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/Nfql0PyA8D0" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
People show empathy towards animals and kids for obvious reasons (they cannot hurt their pride) but why do they fail to do the same for a complete stranger?
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: "Daily #5"
|
||||
author: natto
|
||||
published: November 12, 2022
|
||||
---
|
||||
* Hm?
|
||||
Gitea is going company-mode (emacs pun intended), I am not sure whether to continue using it. Also I should look into completing the query-stats featureset in libvirt whenevr I get time.
|
||||
|
||||
* Image of the Day
|
||||
#+ATTR_HTML: :alt we reap what we sow
|
||||
[[https://f.weirdnatto.in/Q0Wa-we-reap-what-we-sow-cat.gif]]
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/z1eU-a2.mp4" type="video/mp4">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Song of the Day
|
||||
#+begin_export html
|
||||
My comfort song of all time
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/2A-zCEMyNV4" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
Black and white is sometimes better than looking beyond it.
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: "Daily #6"
|
||||
author: natto
|
||||
published: December 06, 2022
|
||||
---
|
||||
* Hm?
|
||||
I really should be doing all the pending necessary work.
|
||||
|
||||
* Image of the Day
|
||||
#+ATTR_HTML: :alt You should grow yourself, NOW!
|
||||
[[https://f.weirdnatto.in/kiKc-grow.jpg]]
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/t73H-luka.mp4" type="video/mp4">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Music of the Day
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/wGrGln_eE8I" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
|
||||
Everything is so exhausting, I refuse to think for today's thought.
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: "Daily #7"
|
||||
author: natto
|
||||
published: December 22, 2022
|
||||
---
|
||||
* Hm?
|
||||
I really, REALLY should be doing all the pending necessary work.
|
||||
|
||||
* Video of the Day
|
||||
#+begin_export html
|
||||
<video controls>
|
||||
<source src="https://f.weirdnatto.in/j3Kl-apdhillon.mp4" type="video/mp4">
|
||||
</video>
|
||||
#+end_export
|
||||
|
||||
* Music of the Day
|
||||
#+begin_export html
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/28yqd9Bf3OQ" />
|
||||
</div>
|
||||
<div class="iframe-parent">
|
||||
<iframe src="https://youtube.com/embed/QZQQc4Z1rHo" />
|
||||
</div>
|
||||
#+end_export
|
||||
|
||||
* Thought of the Day
|
||||
Life should only have two milestones, birth and death.
|
||||
69
documents/cv.org
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: Curriculum Vitae
|
||||
---
|
||||
|
||||
#+MACRO: SMALL \mdseries\smaller @@html:<small>@@ /$1/ @@html:</small>@@
|
||||
#+MACRO: RIGHT \hfill @@html:<span style="float:right">@@ $1 @@html:</span>@@
|
||||
#+MACRO: TRULE \titlerule @@html:<hr />@@
|
||||
|
||||
#+HTML: <h1>Curriculum Vitae</h1>Go <a href="/documents/cv.pdf">here</a> for the pdf.<hr>
|
||||
* Amneesh Singh
|
||||
|
||||
{{{TRULE}}}
|
||||
| Email | : | [[mailto:amneeshsingh@proton.me][amneeshsingh at proton dot me]] - [[mailto:me@amneesh.com][me at amneesh dot com]] - [[mailto:natto@weirdnatto.in][natto at weirdnatto dot in]] |
|
||||
| Homepage | : | [[https://weirdnatto.in][weirdnatto.in]] - [[https://amneesh.com][amneesh.com]] |
|
||||
| GitHub | : | [[https://github.com/natto1784/][natto1784]] |
|
||||
|
||||
* Work Experience
|
||||
{{{TRULE}}}
|
||||
** Texas Instruments, Bengaluru
|
||||
/Embedded Software Engineer/ {{{RIGHT(/Aug 2025 - Present/)}}}
|
||||
- Working with Sitara RTOS team
|
||||
- Working on SDHC driver for ZephyrOS
|
||||
|
||||
/Embedded Software Engineer Intern/ {{{RIGHT(/Feb 2025 - July 2025/)}}}
|
||||
- Added AM64x/AM243x Cortex-R and Cortex-M support for ZephyrOS
|
||||
- Wrote ADC, SPI, EPWM, ECAP and NOR Flash device drivers for ZephyrOS
|
||||
|
||||
/Embedded Software Engineer Intern/ {{{RIGHT(/July 2024 - Sept 2024/)}}}
|
||||
- Tested various Xen features on K3 with Linux and ZephyrOS
|
||||
- Wrote Yocto recipes for enabling Xen on K3
|
||||
- Enabled Xen on baremetal and freertos binaries
|
||||
- Wrote sample inter-VM communication programs using shared memory and event channels
|
||||
|
||||
** Cypherock, Gurugram (Hybrid)
|
||||
/Software Engineer Intern/ {{{RIGHT(/June 2023 - Sept 2023/)}}}
|
||||
- Worked on the firmware apps in C
|
||||
- Worked on the Electron side of things in Typescript
|
||||
- [[https://github.com/Cypherock/MPC-TSS/tree/main][Implemented]] the sockets based PoC for an MPC based threshold signing scheme
|
||||
|
||||
** TurboML, Remote
|
||||
/Software Engineer Intern/ {{{RIGHT(/November 2023/)}}}
|
||||
- Worked on the deployment side of things involving docker and nomad
|
||||
|
||||
* Student Programs, Scholarships, Examinations
|
||||
{{{TRULE}}}
|
||||
- *Google Summer of Code 2022* | {{{SMALL(C - GLib - Git)}}}
|
||||
I participated as a contributor in [[https://summerofcode.withgoogle.com/archive/2022][Google Summer of Code 2022]] at [[https://libvirt.org][libvirt]] and got paid a stipend for it by Google. The project involved adding the new introspectable statistics provided by QEMU and adding them under the libvirt statistics API.
|
||||
- NOC: Foundations of Cryptography, IIIT Bangalore, NPTEL {{{RIGHT(/May 2022/)}}}
|
||||
- NOC: Computer Architecture, IIT Delhi, NPTEL - {{{RIGHT(/May 2022/)}}}
|
||||
|
||||
* Education
|
||||
{{{TRULE}}}
|
||||
** B.Tech, Information Technology
|
||||
Maharaja Agrasen Institute of Technology {{{RIGHT(/(2021 - 2025)\, 8.6GPA/)}}}
|
||||
|
||||
* Skills
|
||||
{{{TRULE}}}
|
||||
** Programming Languages
|
||||
- *Proficient*: C/C++, Rust, Python, Javascript
|
||||
- *Experienced*: Lisp, Haskell, PHP, Java, Lua, Go, x86-Assembly, ARM-Assembly
|
||||
|
||||
** Tools
|
||||
- *General*: GNU/Linux, Nix/NixOS, Xen, POSIX shells, TeX, Git, ffmpeg
|
||||
- *DevOps*: Docker, Nomad, Consul, Vault, Terraform, ConcourseCI, GitHub Actions, nginx, OCI
|
||||
- *Embedded*: ZephyrOS, Yocto, Baremetal, FreeRTOS, Device Driver Development
|
||||
|
||||
** Soft Skills
|
||||
- *Languages*: Hindi, Punjabi, English
|
||||
- *Hobbies*: Home server/lab, Writing, Philosophy
|
||||
616
flake.lock
generated
@@ -1,34 +1,624 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"HTTP": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1666393929,
|
||||
"narHash": "sha256-Tet6WIaK0NaeNmr+0ayIkHEauuKde+Tv3X+giSQB6wE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7a0b1f3b9549507ba45339178221e6494f5ab6d7",
|
||||
"lastModified": 1451647621,
|
||||
"narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=",
|
||||
"owner": "phadej",
|
||||
"repo": "HTTP",
|
||||
"rev": "9bc0996d412fef1787449d841277ef663ad9a915",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-22.05",
|
||||
"owner": "phadej",
|
||||
"repo": "HTTP",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-32": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1603716527,
|
||||
"narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "48bf10787e27364730dd37a42b603cee8d6af7ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.2",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-34": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1645834128,
|
||||
"narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "5ff598c67f53f7c4f48e31d722ba37172230c462",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.4",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-36": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1669081697,
|
||||
"narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.6",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cardano-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1608537748,
|
||||
"narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "cardano-shell",
|
||||
"rev": "9392c75087cb9a3d453998f4230930dea3a95725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "cardano-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1672831974,
|
||||
"narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "flake-compat",
|
||||
"rev": "45f2638735f8cdc40fe302742b79f248d23eb368",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"ref": "hkm/gitlab-fix",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756600676,
|
||||
"narHash": "sha256-jwu+nyaVHxJzgDJMJjZ6ZJ7kR/Tc0Zd+kj0TnbhXzwU=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "e020d73db65a3077ed216941a682ac8de3722cd2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage-for-stackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756600075,
|
||||
"narHash": "sha256-rCDhCCWoNPbNM92s+Cy2ynLsy26GLwaT0cNgttbHbTY=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "cfc1ade34a20cf02b8da122c7c13dc8402cff0e1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"ref": "for-stackage",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage-internal": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1750307553,
|
||||
"narHash": "sha256-iiafNoeLHwlSLQTyvy8nPe2t6g5AV4PPcpMeH/2/DLs=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "f7867baa8817fab296528f4a4ec39d1c7c4da4f3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1741604408,
|
||||
"narHash": "sha256-tuq3+Ip70yu89GswZ7DSINBpwRprnWnl6xDYnS4GOsc=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "682d6894c94087da5e566771f25311c47e145359",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-1.10": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1680000865,
|
||||
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "1.10.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.0": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1687698105,
|
||||
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "783905f211ac63edf982dd1889c671653327e441",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.0.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.10": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1743069404,
|
||||
"narHash": "sha256-q4kDFyJDDeoGqfEtrZRx4iqMVEC2MOzCToWsFY+TOzY=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "2318c61db3a01e03700bd4b05665662929b7fe8b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.10.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.11": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747306193,
|
||||
"narHash": "sha256-/MmtpF8+FyQlwfKHqHK05BdsxC9LHV70d/FiMM7pzBM=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "46ef4523ea4949f47f6d2752476239f1c6d806fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.11.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1693064058,
|
||||
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.2.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695910642,
|
||||
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.3.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1699862708,
|
||||
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.4.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.5": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1701080174,
|
||||
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.5.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.6": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1705325287,
|
||||
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.6.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.7": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1708965829,
|
||||
"narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.7.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.8": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715153580,
|
||||
"narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "dd1be1beb16700de59e0d6801957290bcf956a0a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.8.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.9": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1719993701,
|
||||
"narHash": "sha256-wy348++MiMm/xwtI9M3vVpqj2qfGgnDcZIGXw8sF1sA=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "90319a7e62ab93ab65a95f8f2bcf537e34dae76a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.9.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hnix": {
|
||||
"inputs": {
|
||||
"HTTP": "HTTP",
|
||||
"cabal-32": "cabal-32",
|
||||
"cabal-34": "cabal-34",
|
||||
"cabal-36": "cabal-36",
|
||||
"cardano-shell": "cardano-shell",
|
||||
"flake-compat": "flake-compat",
|
||||
"hackage": "hackage",
|
||||
"hackage-for-stackage": "hackage-for-stackage",
|
||||
"hackage-internal": "hackage-internal",
|
||||
"hls": "hls",
|
||||
"hls-1.10": "hls-1.10",
|
||||
"hls-2.0": "hls-2.0",
|
||||
"hls-2.10": "hls-2.10",
|
||||
"hls-2.11": "hls-2.11",
|
||||
"hls-2.2": "hls-2.2",
|
||||
"hls-2.3": "hls-2.3",
|
||||
"hls-2.4": "hls-2.4",
|
||||
"hls-2.5": "hls-2.5",
|
||||
"hls-2.6": "hls-2.6",
|
||||
"hls-2.7": "hls-2.7",
|
||||
"hls-2.8": "hls-2.8",
|
||||
"hls-2.9": "hls-2.9",
|
||||
"hpc-coveralls": "hpc-coveralls",
|
||||
"iserv-proxy": "iserv-proxy",
|
||||
"nixpkgs": [
|
||||
"hnix",
|
||||
"nixpkgs-unstable"
|
||||
],
|
||||
"nixpkgs-2305": "nixpkgs-2305",
|
||||
"nixpkgs-2311": "nixpkgs-2311",
|
||||
"nixpkgs-2405": "nixpkgs-2405",
|
||||
"nixpkgs-2411": "nixpkgs-2411",
|
||||
"nixpkgs-2505": "nixpkgs-2505",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"old-ghc-nix": "old-ghc-nix",
|
||||
"stackage": "stackage"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756601532,
|
||||
"narHash": "sha256-r6p+T14ZlXEDVGml9scgfz7SFq03vOdnOVpDi/muAr8=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"rev": "c3380cc02d0e5249b6c1b609833135b95a610af9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hpc-coveralls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1607498076,
|
||||
"narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=",
|
||||
"owner": "sevanspowell",
|
||||
"repo": "hpc-coveralls",
|
||||
"rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sevanspowell",
|
||||
"repo": "hpc-coveralls",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"iserv-proxy": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755243078,
|
||||
"narHash": "sha256-GLbl1YaohKdpzZVJFRdcI1O1oE3F3uBer4lFv3Yy0l8=",
|
||||
"owner": "stable-haskell",
|
||||
"repo": "iserv-proxy",
|
||||
"rev": "150605195cb7183a6fb7bed82f23fedf37c6f52a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "stable-haskell",
|
||||
"ref": "iserv-syms",
|
||||
"repo": "iserv-proxy",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2305": {
|
||||
"locked": {
|
||||
"lastModified": 1705033721,
|
||||
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2311": {
|
||||
"locked": {
|
||||
"lastModified": 1719957072,
|
||||
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.11-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2405": {
|
||||
"locked": {
|
||||
"lastModified": 1735564410,
|
||||
"narHash": "sha256-HB/FA0+1gpSs8+/boEavrGJH+Eq08/R2wWNph1sM1Dg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1e7a8f391f1a490460760065fa0630b5520f9cf8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-24.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2411": {
|
||||
"locked": {
|
||||
"lastModified": 1748037224,
|
||||
"narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f09dede81861f3a83f7f06641ead34f02f37597f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-24.11-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2505": {
|
||||
"locked": {
|
||||
"lastModified": 1754477006,
|
||||
"narHash": "sha256-suIgZZHXdb4ca9nN4MIcmdjeN+ZWsTwCtYAG4HExqAo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4896699973299bffae27d0d9828226983544d9e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-25.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1754393734,
|
||||
"narHash": "sha256-fbnmAwTQkuXHKBlcL5Nq1sMAzd3GFqCOQgEQw6Hy0Ak=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a683adc19ff5228af548c6539dbc3440509bfed3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"old-ghc-nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1631092763,
|
||||
"narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=",
|
||||
"owner": "angerman",
|
||||
"repo": "old-ghc-nix",
|
||||
"rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "angerman",
|
||||
"ref": "master",
|
||||
"repo": "old-ghc-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"hnix": "hnix",
|
||||
"nixpkgs": [
|
||||
"hnix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"stackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"lastModified": 1756599261,
|
||||
"narHash": "sha256-q5bRMT/Zr/hzXT1q8yDzPDsthgVIn6KLTa9Uens2oWo=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "stackage.nix",
|
||||
"rev": "1ae535ce067096a08308b6884e70a634a16ee8d0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "stackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
116
flake.nix
@@ -2,64 +2,76 @@
|
||||
description = "My personal website";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = github:nixos/nixpkgs/release-22.05;
|
||||
utils.url = github:numtide/flake-utils;
|
||||
nixpkgs.follows = "hnix/nixpkgs";
|
||||
hnix.url = "github:input-output-hk/haskell.nix";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, utils }:
|
||||
utils.lib.eachDefaultSystem
|
||||
(system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
utils,
|
||||
hnix,
|
||||
}:
|
||||
utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
overlays = [
|
||||
hnix.overlay
|
||||
];
|
||||
|
||||
inherit (pkgs.lib.sources) cleanSourceWith cleanSource;
|
||||
pkgs = import nixpkgs {
|
||||
inherit system overlays;
|
||||
inherit (hnix) config;
|
||||
};
|
||||
|
||||
filterCI = name: type:
|
||||
!((type == "directory") && (baseNameOf name == ".woodpecker"));
|
||||
nattopages = pkgs.haskell-nix.hix.project {
|
||||
src = ./src;
|
||||
compiler-nix-name = "ghc948";
|
||||
};
|
||||
|
||||
cleanSrc = cleanSourceWith {
|
||||
filter = filterCI;
|
||||
src = cleanSource ./.;
|
||||
};
|
||||
|
||||
vars = pkgs.lib.mapAttrsToList (n: v: "export ${n}=${v}") {
|
||||
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
|
||||
LANG = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
site = pkgs.haskellPackages.callCabal2nix "nattopages" ./src { };
|
||||
nattopages = pkgs.stdenv.mkDerivation {
|
||||
name = "nattopages";
|
||||
src = cleanSrc;
|
||||
phases = "unpackPhase buildPhase";
|
||||
nativeBuildInputs = [ site ];
|
||||
buildPhase = (pkgs.lib.concatStringsSep "\n" vars) + "\n" +
|
||||
''
|
||||
site build
|
||||
mkdir -p $out
|
||||
cp -r _site/* $out
|
||||
'';
|
||||
};
|
||||
in
|
||||
rec {
|
||||
devShell = with pkgs.haskellPackages; shellFor {
|
||||
packages = _: [ site ];
|
||||
withHoogle = true;
|
||||
buildInputs = [
|
||||
flake = nattopages.flake { };
|
||||
in
|
||||
flake
|
||||
// rec {
|
||||
packages.default = flake.packages."nattopages:exe:site";
|
||||
devShells.default =
|
||||
with pkgs;
|
||||
mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
cabal-install
|
||||
haskell-language-server
|
||||
ghcid
|
||||
];
|
||||
nativeBuildInputs = with pkgs; [
|
||||
zlib
|
||||
haskellPackages.fourmolu
|
||||
prettier
|
||||
|
||||
(texlive.combine {
|
||||
inherit (texlive)
|
||||
scheme-small
|
||||
fontspec
|
||||
enumitem
|
||||
parskip
|
||||
hyperref
|
||||
standalone
|
||||
relsize
|
||||
titlesec
|
||||
;
|
||||
})
|
||||
|
||||
packages.default
|
||||
];
|
||||
SSHTARGET = "bat@weirdnatto.in:/var/lib/site/";
|
||||
SSHTARGETPORT = 22002;
|
||||
};
|
||||
packages = {
|
||||
inherit nattopages site;
|
||||
};
|
||||
defaultPackage = packages.nattopages;
|
||||
}
|
||||
);
|
||||
formatter = pkgs.nixfmt-tree;
|
||||
}
|
||||
);
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://cache.iog.io"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
BIN
fonts/Arvo-Bold.ttf
Normal file
BIN
fonts/Arvo-Bold.woff2
Normal file
BIN
fonts/Arvo-BoldItalic.ttf
Normal file
BIN
fonts/Arvo-BoldItalic.woff2
Normal file
BIN
fonts/Arvo-Italic.ttf
Normal file
BIN
fonts/Arvo-Italic.woff2
Normal file
BIN
fonts/Arvo-Regular.ttf
Normal file
BIN
fonts/Arvo-Regular.woff2
Normal file
BIN
fonts/Lato-Bold.ttf
Normal file
BIN
fonts/Lato-Bold.woff2
Normal file
BIN
fonts/Lato-BoldItalic.ttf
Normal file
BIN
fonts/Lato-BoldItalic.woff2
Normal file
BIN
fonts/Lato-Italic.ttf
Normal file
BIN
fonts/Lato-Italic.woff2
Normal file
BIN
fonts/Lato-Regular.ttf
Normal file
BIN
fonts/Lato-Regular.woff2
Normal file
BIN
fonts/Monoid-Italic.woff2
Normal file
BIN
fonts/Quantico-Bold.woff2
Normal file
BIN
fonts/Quantico-BoldItalic.woff2
Normal file
BIN
fonts/Quantico-Italic.woff2
Normal file
BIN
fonts/Quantico-Regular.woff2
Normal file
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 559 B After Width: | Height: | Size: 559 B |
@@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 116.12" style="enable-background:new 0 0 122.88 116.12" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M84.61,51.83c13.81,0,25.01,11.2,25.01,25.01s-11.2,25.01-25.01,25.01s-25.01-11.2-25.01-25.01 S70.8,51.83,84.61,51.83L84.61,51.83z M12.53,36.69c0.28-0.27,0.63-0.49,1.02-0.64L42.4,25.29c0.63-0.23,1.29-0.24,1.89-0.06 c0.19-0.15,0.4-0.28,0.64-0.36l18.39-6.9c0.41-0.15,0.84-0.18,1.24-0.1c0.03-0.02,0.07-0.03,0.1-0.04l18.85-7.36 c0.53-0.21,1.1-0.17,1.57,0.06c0.06-0.04,0.13-0.07,0.21-0.1l19-7.32c0.08-0.03,0.16-0.05,0.24-0.07c0.11-1.7,1.52-3.04,3.24-3.04 c1.8,0,3.25,1.46,3.25,3.25s-1.46,3.25-3.25,3.25c-0.94,0-1.78-0.4-2.37-1.03c-0.06,0.03-0.12,0.06-0.18,0.08l-19,7.32 c-0.04,0.02-0.09,0.03-0.13,0.04c-0.18,0.54-0.58,1-1.15,1.22l-18.85,7.36c-0.07,0.03-0.13,0.05-0.2,0.07 c-0.25,0.31-0.58,0.56-0.98,0.71l-18.39,6.9c-0.14,0.05-0.28,0.09-0.42,0.11c-0.31,0.69-0.89,1.25-1.65,1.53l-15.78,5.89h84.21 c2.75,0,5.25,1.12,7.06,2.93c1.81,1.81,2.93,4.31,2.93,7.06v59.44c0,2.75-1.12,5.25-2.93,7.06c-1.81,1.81-4.31,2.93-7.06,2.93H9.99 c-2.75,0-5.25-1.12-7.06-2.93C1.12,111.38,0,108.88,0,106.13V46.69c0-2.75,1.12-5.25,2.93-7.06c1.81-1.81,4.31-2.93,7.06-2.93 H12.53L12.53,36.69z M13.79,88.93c-1.45,0-2.63-1.18-2.63-2.63s1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63 s-1.18,2.63-2.63,2.63H13.79L13.79,88.93z M13.79,98.89c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h39.15 c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,98.89z M13.79,59.06c-1.45,0-2.63-1.18-2.63-2.63 c0-1.45,1.18-2.63,2.63-2.63h38.03c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,59.06z M13.79,69.02 c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79 L13.79,69.02z M13.79,78.98c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h30.84c1.45,0,2.63,1.18,2.63,2.63 c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,78.98z M112.89,42.94H9.99c-1.03,0-1.96,0.42-2.65,1.1c-0.68,0.68-1.1,1.62-1.1,2.65 v59.44c0,1.03,0.42,1.96,1.1,2.65c0.68,0.68,1.62,1.1,2.65,1.1h102.9c1.03,0,1.96-0.42,2.65-1.1c0.68-0.68,1.1-1.62,1.1-2.65V46.69 c0-1.03-0.42-1.96-1.1-2.65C114.85,43.36,113.92,42.94,112.89,42.94L112.89,42.94z M84.61,59.05c9.82,0,17.79,7.96,17.79,17.79 c0,9.82-7.96,17.79-17.79,17.79s-17.79-7.96-17.79-17.79C66.83,67.02,74.79,59.05,84.61,59.05L84.61,59.05z M84.61,71.61 c2.89,0,5.23,2.34,5.23,5.23c0,2.89-2.34,5.23-5.23,5.23s-5.23-2.34-5.23-5.23C79.38,73.95,81.72,71.61,84.61,71.61L84.61,71.61z"/></g></svg>
|
||||
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 116.12" style="enable-background:new 0 0 122.88 116.12" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M84.61,51.83c13.81,0,25.01,11.2,25.01,25.01s-11.2,25.01-25.01,25.01s-25.01-11.2-25.01-25.01 S70.8,51.83,84.61,51.83L84.61,51.83z M12.53,36.69c0.28-0.27,0.63-0.49,1.02-0.64L42.4,25.29c0.63-0.23,1.29-0.24,1.89-0.06 c0.19-0.15,0.4-0.28,0.64-0.36l18.39-6.9c0.41-0.15,0.84-0.18,1.24-0.1c0.03-0.02,0.07-0.03,0.1-0.04l18.85-7.36 c0.53-0.21,1.1-0.17,1.57,0.06c0.06-0.04,0.13-0.07,0.21-0.1l19-7.32c0.08-0.03,0.16-0.05,0.24-0.07c0.11-1.7,1.52-3.04,3.24-3.04 c1.8,0,3.25,1.46,3.25,3.25s-1.46,3.25-3.25,3.25c-0.94,0-1.78-0.4-2.37-1.03c-0.06,0.03-0.12,0.06-0.18,0.08l-19,7.32 c-0.04,0.02-0.09,0.03-0.13,0.04c-0.18,0.54-0.58,1-1.15,1.22l-18.85,7.36c-0.07,0.03-0.13,0.05-0.2,0.07 c-0.25,0.31-0.58,0.56-0.98,0.71l-18.39,6.9c-0.14,0.05-0.28,0.09-0.42,0.11c-0.31,0.69-0.89,1.25-1.65,1.53l-15.78,5.89h84.21 c2.75,0,5.25,1.12,7.06,2.93c1.81,1.81,2.93,4.31,2.93,7.06v59.44c0,2.75-1.12,5.25-2.93,7.06c-1.81,1.81-4.31,2.93-7.06,2.93H9.99 c-2.75,0-5.25-1.12-7.06-2.93C1.12,111.38,0,108.88,0,106.13V46.69c0-2.75,1.12-5.25,2.93-7.06c1.81-1.81,4.31-2.93,7.06-2.93 H12.53L12.53,36.69z M13.79,88.93c-1.45,0-2.63-1.18-2.63-2.63s1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63 s-1.18,2.63-2.63,2.63H13.79L13.79,88.93z M13.79,98.89c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h39.15 c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,98.89z M13.79,59.06c-1.45,0-2.63-1.18-2.63-2.63 c0-1.45,1.18-2.63,2.63-2.63h38.03c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,59.06z M13.79,69.02 c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79 L13.79,69.02z M13.79,78.98c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h30.84c1.45,0,2.63,1.18,2.63,2.63 c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,78.98z M112.89,42.94H9.99c-1.03,0-1.96,0.42-2.65,1.1c-0.68,0.68-1.1,1.62-1.1,2.65 v59.44c0,1.03,0.42,1.96,1.1,2.65c0.68,0.68,1.62,1.1,2.65,1.1h102.9c1.03,0,1.96-0.42,2.65-1.1c0.68-0.68,1.1-1.62,1.1-2.65V46.69 c0-1.03-0.42-1.96-1.1-2.65C114.85,43.36,113.92,42.94,112.89,42.94L112.89,42.94z M84.61,59.05c9.82,0,17.79,7.96,17.79,17.79 c0,9.82-7.96,17.79-17.79,17.79s-17.79-7.96-17.79-17.79C66.83,67.02,74.79,59.05,84.61,59.05L84.61,59.05z M84.61,71.61 c2.89,0,5.23,2.34,5.23,5.23c0,2.89-2.34,5.23-5.23,5.23s-5.23-2.34-5.23-5.23C79.38,73.95,81.72,71.61,84.61,71.61L84.61,71.61z" fill="white"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
images/personal/nyn.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
@@ -2,6 +2,6 @@
|
||||
title: Home
|
||||
home: true
|
||||
---
|
||||
<h2>Welcome</h2>
|
||||
$partial("templates/post-preview-list.html")$
|
||||
<p>Find more in the <a href="/archive.html">archives</a>.</p>
|
||||
|
||||
<h2><b>Welcome</b></h2>
|
||||
Hello, I post stuff here. Check the <a href="/archive.html">archive</a>.
|
||||
|
||||
12
links.org
@@ -41,10 +41,10 @@ Random links I find useful
|
||||
- [[https://github.com/NixOS/nixpkgs][Nixpkgs]]: Nix Packages collection.
|
||||
- [[https://github.com/concourse/concourse][Concourse CI]]: A continuous thing-doer.
|
||||
- [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]]: Emacs library for Language Server Protocol.
|
||||
- [[https://gitlab.com/qemu-project/qemu][QEMU]]: The famous virtualization API library.
|
||||
- [[https://gitlab.com/libvirt/libvirt/][libvirt]]: The famous virtualization API library.
|
||||
- [[https://github.com/CompVis/stable-diffusion][Stable Diffusion]]: Text2Image and Image2Image diffusion scripts for the SD models.
|
||||
- [[https://gitlab.com/simple-nixos-mailserver/nixos-mailserver][Simple Nixos Mailserver]]: True to its name.
|
||||
- [[https://github.com/bakape/captchouli][Captchouli]]: Booru-backed procedurally-generated anime image captcha library and server
|
||||
- [[https://github.com/rui314/chibicc][chibicc]]: A [[https://jisho.org/word/%E7%A6%BF%E3%81%B3][chibi]] C compiler by Rui Ueyama.
|
||||
|
||||
** Torrent Trackers
|
||||
- I won't post any more private trackers even if you want me to.
|
||||
@@ -53,5 +53,13 @@ Random links I find useful
|
||||
- [[https://nyaa.si][Nyaa]]: The anime public tracker, also has JP music, games, manga, books and software. Mirror for blocked countries: [[https://nyaa.iss.one]].
|
||||
- [[https://en.metal-tracker.com][METAL-TRACKER.COM]]: Public metal music tracker.
|
||||
|
||||
** Music
|
||||
- [[https://doujinstyle.com/][DOUJINSTYLE.COM]]: Everything doujin, convenient way to get albums although LOG files may not be 100% correct.
|
||||
|
||||
** Misc
|
||||
- [[https://www.proxysite.com/][ProxySite]]: I use it to download large GitHub assets.
|
||||
|
||||
* Other Blogs
|
||||
- [[https://justinas.org/nixos-in-the-cloud-step-by-step-part-2][NixOS in the Cloud, step-by-step: part 2]] by Justinas Stankevičius (also see https://github.com/justinas/nixos-cloud)
|
||||
- [[https://snehit.dev/posts/body-trade-in-mainline-streams/][Body Trade in Mainline Streams?]] by Snehit Shah (flyingcakes)
|
||||
- [[https://blog.konno.tk/#30][most depressing midi player]] by junko (Possibly browsing https://github.com/Henrixounez/v-midi/)
|
||||
|
||||
21
posts/cut-my-hair.org
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: I cut my hair
|
||||
author: Amneesh
|
||||
tags: rant, religion
|
||||
published: May 08, 2023
|
||||
---
|
||||
|
||||
Hello, it has been ages since I last wrote something, life has been hard in ways more than one. As the post title says, I cut my hair, for the very first time, a few days before my 20th birthday.
|
||||
|
||||
It may not seem like a huge deal to many but being born in a Sikh family, although I was never initiated/baptised (Amrit Sanchar/ਅੰਮ੍ਰਿਤ ਸੰਚਾਰ), I have had my hair my entire life. That is the only way I have ever lived, with uncut hair and a turban when outside. I went through an atheist phase back in middle school like many, and that is when I decided I will get rid of my hair some day. Albeit I am not an atheist (or a theist for that matter) anymore, I got a haircut yesterday. I had been preparing for this passively for years and mentally for months at least, but a day later, it hit me like a truck.
|
||||
|
||||
I woke up feeling rather shitty about the whole situation. I cut my hair and that's what I wanted, then why am I mad about it? The answer is an amalgam of a number of reasons, one of the major ones being that it was not about Sikhi or religion anymore, it was about the culture.It is ironic but I have never cared about Sikh tenets that much despite knowing their significance; that is how it has been, but the hair and the turban have become my very identity. They are me and I am them, at least that's how it had been up until yesterday. Now I am left with this gaping hole in my chest with this new me. My relatives do not know about the entire ordeal but my parents and sister have accepted me for what I did and do not think ill of it anymore. The problem is selfish. I want to go back to how I was so much, and think about all this again. The entire problem stems from my coping mechanism for major changes; but even if I say that, everything is the same - friend and family are the same and so are my memories; however, I am not me anymore. I cannot bring myself to look into the eyes of other people, as if I have somehow defiled myself. I am completely aware that this is not the case, and people who have not been in this situation might find it offensive or hilarious at best, my upbringing has has had somewhat of an effect on how I think subconsciously. I should try to get rid of that.
|
||||
|
||||
Even Bulleh Shah did not know who they were, nor does any thinking mortal either. And Nanak said that the 'I' does not exist. But the fact remains that people are who they believe they are, and that is not at all wrong. Maybe that is why the lack of an existing identity is so excruciating. Being as reserved and introverted as I am, with no contact with the native Punjabi culture outside textbooks and the internet, why do I feel this strange lack of brotherhood? I am more fragile and weak than I thought. Doing this on purpose without being forced by external factors does not feel right. Maybe I was looking for a reason, but that would mean I indeed wanted what I did. Today is a rough day and tomorrow will be rougher, all I can hope for is for me to get through it.
|
||||
|
||||
Before closing, I must state that I did not do this to "look" good. I looked much better when I used to don a turban, I do not anymore. I do not hate or even dislike Sikhi or Punjabi culture; on the contrary, I very much like it since I somewhat grew up with it. The only reason I did it was because I did not want to be associated with a single group identity; turns out I miss it. This post was just me sharing my experience.
|
||||
|
||||
Short hair feel shitty and my beard is prickly. Maybe I will go back to being the way I was some day or maybe I won't.
|
||||
|
||||
-----
|
||||
Too many 'I's in this post, lol.
|
||||
20
posts/fear.org
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Fear
|
||||
tags: random
|
||||
author: AlpaViraam
|
||||
published: September 30, 2023
|
||||
---
|
||||
|
||||
One often wonders if it is possible to attain a better tomorrow - a better future; and if it is, then how? A common question with an obvious answer that it is all rooted in the fear of a worse tomorrow or of a “worse you”. This much is obvious, however, not many attempt to eliminate this fear and instead focus on getting over it by overcoming the trials it sets. Is there something more to it than fear? Is the desire, greed or want driven by this fear? Or is the fear driven by them? Does eliminating the fear eliminate the associated desires, and vice versa? What is the primal nature of this fear and what does it mean to be the “worse you”, when the only “you” is the “you” of the “now”? Many more questions may arise from this very obvious inference. However, do these questions even hold any value over determining whether fear is something to be taken hold of? Or is it some part of you that makes you the person you are? Perhaps it is both, or perhaps it is something that we can completely get rid of and get closer to understanding what it means to realise oneself, that is, the “you”. This text tries a little to explore these questions and possibly get closer to the answer.
|
||||
|
||||
* Ideology
|
||||
Fear is associated with, as petty as they may be, an individual’s ideologies, ambitions, feelings, etc. But the primary and the most important factor is the ideology. Ideologies have surrounded mankind since the dawn of it, it is not something new and nor is it much more advanced than it was in the older times; at least, when it comes to the core values. One may see oneself as an individual with a unique ideology, however, it is a fact that parts of this ideology are shared by many; making it less of an individual thing and more of what would be called a “product” - a product of things greater than the individual. To understand this, we must understand that this product may be a result of influences, feelings, senses, environment and of course, society. Even if a person is to seclude themselves, they are still living on the same planet, experiencing the same emotions and same senses, making them less of an individual but more of a collective idea. This is the part where fear comes in - the ideology or what can also be sometimes called the philosophy is many time so rigid that one would get so attached to it, very much like other material things, like money and family; that it can be a cause of fear for him to instantly get rid of it. Imagine building something up for a long time, perhaps even your entire life and then instantly giving it up when you find something more suited to the truth or subjectively “correct” or “better”. This is no easy feat to do - perhaps even harder than giving up on one’s most treasured belongings like their own children or spouse. Now what does this fear “actually” stem from? Why is it hard to give up on something you worked so hard on? One possible answer might be the individual himself. Encouraging deletion of the already present beliefs might lead one to question the credibility of his own existence or the individualism itself. This might just be the fear of not being “one” as in a separate “one”. As soon as the idea of “one” (or “you”) begins to dissolve, the fear takes hold. What can be inferred from this is that there is no such thing as a “you” - neither of the past, nor of the present and neither worse or better. The entity that is often associated with these idologies is not “you” but “you” is the ideologies themselves; and if we remember from earlier, ideologies are not something alien for every being, it is a shared belief, no matter how much the overlap is. Then why does the “you” and “me” exist? What is the “me” and “you”, and why fear losing it? This all sounds so childish but that is only because it is so. Rigid ideologies, for a lack of a better term, whether religious, political or philosophical, are pretty much the very definition of childish. This is because a “child” lacks, not the understanding of what is and what is not, but the understanding of what may be.
|
||||
|
||||
* Ego
|
||||
Why would one get troubled over abandoning their entire life’s meaning despite knowing very well that their life has no inherent impact? That is due to one’s idea about themselves. We earlier inferred that a person is nothing but his own idea, but it is now time to understand that the idea also includes something along the lines of what is one’s perception of self. Contrary to the popular belief I do not think life is something as romantic as what can be called “absurd”. Abandoning self and attributing happens to this absurdity does hold some truth in it but it comes off as plain lazy. What should be analyzed here is that living is fear; even if you “embrace this absurdity”, you are still living in the constant fear of tomorrow and have your own little ambitions for it. Then when we say that losing this fear might help in embracing the reality itself and being “happy”, we might not be completely wrong. But is the fear something to be conquered? Probably not; the fear from abandoning the ideology is at the core, the fear of abandoning your existence as discussed earlier; but let’s say we completely demolish this fear, then what is left? Certainly not you or even the idea of you. This is because having an idea of yourself is a very primary trait of being alive and has a streak of arrogance in it. Is the self so petty as to need an idea of self while not even realising what self might be. Perhaps having even an inkling of what the self might be would prevent this idea of self from existing. Acceptance is the natural step in conquering fear. However, this acceptance would eventually collapse the entire ego and the self. Is this the same as death, is it even achievable? I do not know, but probably not. Then is the best we can do is simplify the complexities involved and figure out what might be causing this fear at the high level to begin going into the process of even understading it? No, but it is certainly a good point to start.
|
||||
|
||||
* Desires
|
||||
Let’s explore this fear at a high level now since delving deep into the abyss has only raised more questions. As we discussed earlier, one “desires” a better or sustainable tomorrow, but what entails this betterment might be very different for each individual. Whatever these desires may be, these may be the easiest things to control so far, and doing this may also lead to being free of the desire of the better tomorrow and subsequently, the fear itself. This is what one would think, but isn’t being free of desires also a desire itself? As long as one continues to think of getting rid of these desires, he is only substituting one desire with another. To continue living is to indulge in desires - the desire to live, the desire to breathe, the desire to exist, we cannot deny that. So is the only solution of being free of fear dying? That is a reasonable solution and it probably works as well but do we really need to eliminate this fear? Well, objectively speaking, we do not “need” to do anything, “need” is nothing but an unavoidable desire; but addressing the question with another question - would eliminating fear, eliminate the desires and the self containing them, and subsequently simulate a state similar to that of death? Let me correct my earlier sentence, living is to indulge in fear and grief, for the lack of grief is very attractive. If there was no grief, there would not be any lack of it either; happiness is only a state achievable with the presence of grief. This dichotomy is what drives fear and it is not possible to live outside this very basic dichotomy.
|
||||
|
||||
* Fear
|
||||
Fear is something that cannot be eliminated without eliminating oneself. As stated earlier, thinking about eliminating fear is nothing but fearing having fear itself. It is not enough to accept and identify this fear to do something about it; as this will only lead to more fears and thus creating an illusion of seeing fear as a separate entity. One must understand that one is one’s fear itself. Trying to change this fear or trying to change oneself will only deepen the illusion; but when one realises the fear itself, the entire perspective is changed. Now one is the fear, and inevitably one is bound to undergo changes and when I say changes, I do not mean voluntary or changes by desires; since those are nothing but illusion of changes and the idea of the self. If you read this entire piece so far, and can only take away one thing from it, please realise that thinking of yourself or anything as a separate entity gives rise to this another so called entity called “fear” and you cannot just try to be one with it by wanting and trying to be one with it, for there is no “you” but an already inseparable entity.
|
||||
@@ -5,15 +5,15 @@ tags: terminals, indic
|
||||
published: November 11, 2022
|
||||
---
|
||||
* Preface
|
||||
I have been using the [[https://st.suckless.org/][simple terminal]], or =st=, by [[suckless.org]], for almost two years now, and it has been great. Unfortunately it has fixed width unicode support and hence hindi ligatures cannot be rendered properly. There is a [[https://st.suckless.org/patches/ligatures/][ligatures patch]] available but all it does it combine fixed width LTR ligatures. So I spent the last 8 hours or so looking for a way to implement it. Here is what I learnt.
|
||||
I have been using the [[https://st.suckless.org/][simple terminal]], or =st=, by [[https://suckless.org ][suckless.org]] for almost two years now, and it has been great. Unfortunately it has fixed width unicode support and hence hindi ligatures cannot be rendered properly. There is a [[https://st.suckless.org/patches/ligatures/][ligatures patch]] available but all it does it combine fixed width LTR ligatures. So I spent the last 8 hours or so looking for a way to implement it. Here is what I learnt.
|
||||
|
||||
* The problem
|
||||
The only problem with rendering indic fonts on terminal is that they cannot be monospace and has have variable widths, which are much harder to implement than one realises. The ligature combining stuff can be done using =harfbuzz=, =pango=, =fribidi= / =ubidi(ICU)= or their combination without any problem. The problem is the varying widths and how the terminal is supposed to be a grid of rows and =$COLUMNS=. Also I need perfect input for indic languages with =fcitx4= (I use m17n methods just for the context). These problems have haunted me for months now, and I finally decided to confront them.
|
||||
|
||||
* The candidates
|
||||
- [[https://github.com/arakiken/mlterm][mlterm]] promises to solve these issues but its primary focus is arabic languages from what I understand, and Indic languages are not rendered correctly.
|
||||
- [[https://github.com/KDE/konsole][konsole]] by =KDE= solves the rendering stuff beautifully, however it has problem with inputting =halant= and the following character. Another problem it has is incorrect cursor rendering position when inputting. However it is good enough for displaying Indic text in terminal.
|
||||
- [[https://github.com/emacs-mirror/emacs/][Emacs eshell]] is perfect when it comes to rendering, inputting and navigating the text with not just indic languages but many other languages as well, however it requires =GNU Emacs= as its elisp interpreter whose primary function is not a terminal emulator.
|
||||
+ [[https://github.com/arakiken/mlterm][mlterm]] promises to solve these issues but its primary focus is arabic languages from what I understand, and Indic languages are not rendered correctly.
|
||||
+ [[https://github.com/KDE/konsole][konsole]] by =KDE= solves the rendering stuff beautifully, however it has problem with inputting =halant= and the following character. Another problem it has is incorrect cursor rendering position when inputting. However it is good enough for displaying Indic text in terminal.
|
||||
+ [[https://github.com/emacs-mirror/emacs/][Emacs eshell]] is perfect when it comes to rendering, inputting and navigating the text with not just indic languages but many other languages as well, however it requires =GNU Emacs=. And as obvious as it is, GUI stuff usually does render ligatures properly, so nothing surprising there.
|
||||
|
||||
* The compromise
|
||||
I wil use Emacs for any Indic language related stuff and st for everything else, but I guess that is fine since English is the lingua franca when it comes to computers.
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
title: The Nugatory Fetish 2 - The Game
|
||||
author: AlpaViraam
|
||||
tags: the_nugatory_fetish, creative_writing
|
||||
published: November 07, 2022
|
||||
---
|
||||
Exhausted and jaded, now more than ever, Lyngdoh took the bus back home, to the Western outskirts of Bhikan, also known as the 'Immigrant Central'. It was crammed with hippies and vagrants, and bottom feeders of all sorts. Not a surprise, given the time; another three hours and it will be a brand new day. Nevertheless, he still somehow reached his matchbox of an apartment, fit for a bachelor his age. It was raining, perfect weather for a drink or two, but as it happens, Lyngdoh did not drink. The first and the last time he got drunk was with his then friends, on his brother's wedding day, truly an occasion worth celebrating. As soon as he rested his hands on the door handle, he heard a yell, but could not comprehend it. It came from the bottom of the staircase leading to his door, consequently he looked in that direction tardily. There stood the tenant who lived below his room, but as it happens, Lyngdoh could not remember his name but outright ignoring him would not exactly be polite either. The only thing on his mind now was that he definitely could not afford to miss out on his daily six hours of sleep.
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
"Hey, you free? Want to join?" The neighbor stood there, slightly intoxicated, waving a half-empty Kissan bottle at Lyngdoh. He wore an unbuttoned black suit with a stained white shirt and some generic leather shoes, ironically resembling what a law attorney would look like in the court. But there was no way that they shared the same profession, Lyngdoh would not have missed it if that was true.
|
||||
|
||||
Lyngdoh was inexplicably tired, and thus could not just yell back without frowning. The creaks of the staircase soon joined the crickets. He took a deep breath and started throwing up words in quick succession - "I respect the offer and thank you for it; however, today was a harsh day and a bed is all I crave right now." Lyngdoh intentionally rubbed his forehead while talking, emphasizing the feelings behind his words even further.
|
||||
|
||||
"Bullshit! You even came all the way down here, you know that you want it, don't pretend like you don't." The neighbor cried out in response, almost hitting that bottle on the staircase railing in the process. Lyngdoh could not just outright be honest and tell him that he did not drink and needed his six hours of daily sleep, as obviously, it would be seen as a rude gesture in these parts where people struggle to make the ends meet.
|
||||
|
||||
"Okay, how about a game?" As Lyngdoh was trying to come up with the perfect excuse, the neighbor snapped him back to reality.
|
||||
|
||||
"Sorry? I am afraid a game is not enough to tempt me." Lyngdoh replied in a sorry, yet dignified voice.
|
||||
|
||||
"Nyet, you got it all wrong, I am not inviting you to a game. I am asking you to play a game that decides whether you join me or not." A smug face would go along with such a cheesy invitation but the guy was dead serious, probably about to cry. Lyngdoh wanted to ask him "Why should I?", but did not want to start an ideological debate with him at the same time; he was not a student anymore and therefore, asked him what really mattered.
|
||||
|
||||
"What game? Something involving cards?" Lyngdoh asked, making the obvious guess.
|
||||
|
||||
"Bingo. Here's a deck, you go blind a choose a card. Draw a king and you stay." The guy almost started sounding sober all of a sudden. He held a soft, dampened, yet not wet, deck of cards, probably used a good amount of times. The game favored Lyngdoh heavily and was a good way to get out of this stalemate. There was absolutely no reason for him to decline the offer and he made the obvious decision of taking it.
|
||||
He shoved the deck into Lyngdoh's chest. The latter picked out a card without looking at the deck as it would require sharp neck movement which his tired body was incapable of right now. He seemingly woke up from his half-sleepy state as he held that card right to his face. It was the king of diamonds. What luck!
|
||||
|
||||
Lyngdoh was now frustrated once again, the second time this evening. "Why does this always happen to me", he thought while still staring at the king, "Dutt and now him, lady luck has truly abandoned me." There were no ladies or anything so pleasant involved, it was all but a king. The king smiled down from his throne at this peasant clown who had lost all hope.
|
||||
|
||||
"Ha! There you go, I win, you stay." The author of these words was overjoyed at his victory. Upon noticing Lyngdoh's pitiable expression he lashed out at him. "Come on, you lost, don't be such a child, learn to let loose once in a while. You are not the only busy person in this world, we are all struggling here, okay? Now come, join me, let's throw our woes at each other and be men who help each other out." He gave a weak attempt at smiling and arguably failed.
|
||||
|
||||
It did not matter what Lyngdoh wanted now, he cannot wriggle his way out of this now, it is too late. The carrier, the battleship, the destroyer, the submarine and the boat have all been shot and dealt with, there is no escaping this nightmare now. All he could do now was stay true to his character and once again, justify the time that he is about to waste. "It is not too bad to relax, I have been busy for months now, it is only natural to let loose," Lyngdoh told himself. He would have rated this attempt at consolation pretty badly but anything works now, he was too tired to think rationally.
|
||||
|
||||
He went into the man's apartment as the latter held the door, and helped himself to the sofa. The floor layout was the same as his and etiquettes were a no-go in this poor man's suburb, so he did not need his permission to sit, especially after he was practically begged into doing this. The man went from closing the door to pouring in Lyngdoh's glass instantaneously, or more accurately, his assigned glass, as the latter was still contemplating his choices for the day.
|
||||
|
||||
"So, what bothers you today, my friend?" The man asked reluctantly, folding his hands, probably roleplaying as a therapist. Lyngdoh was snapped back from the, oh so meaningful abyss to reality.
|
||||
|
||||
"Huh, what bothers me? You were the one who invited me here against my wishes. Should you not be the one to talk about what distresses you? I thought you just wanted an ear." He spoke, not so much angry as confused now. He picked up his glass and took a meager sip but his expression failed to change; he was successfully duped into doing what the person wanted and was an active part of the conversation now.
|
||||
|
||||
"You are not wrong, I indeed wanted to rant about practically everything but that can wait, you seem more annoyed and perplexed than me; and something tells me, I am not the sole reason for that." The man was grinning, but was back to his relaxed, drunken state, probably on purpose, as part of his roleplay as a therapist; ergo pretending to be a serious listener, he put down his glass.
|
||||
|
||||
"You are not wrong either, you're not as dumb as you look. Either way, it is of little importance, I am already over it. More importantly, what happened to you, what got you into this severe state of needing a drinking partner? And why me? If I can recall correctly, you have been living here for almost two months shy of an annum, and not once have we talked outside greeting each other; what happened to your usual friends? If you allow me to be honest, I do not even remember your name."Lyngdoh spoke, still sober, but with an almost empty glass now. This was his mixed attempt at annoying his neighbor back and sating his curiosity. He has thrown away all his desire for having a purpose for the mere sake of having a break from everything.
|
||||
|
||||
|
||||
245
src/Main.hs
Normal file
@@ -0,0 +1,245 @@
|
||||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.Maybe (isJust)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Hakyll
|
||||
import System.Environment (getEnv)
|
||||
import System.FilePath (replaceDirectory, replaceExtension, takeDirectory)
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
import qualified System.Process as Process
|
||||
import Text.Pandoc (
|
||||
WriterOptions (
|
||||
writerHighlightStyle,
|
||||
writerNumberSections,
|
||||
writerTOCDepth,
|
||||
writerTableOfContents,
|
||||
writerTemplate
|
||||
),
|
||||
)
|
||||
import qualified Text.Pandoc as Pandoc
|
||||
import Text.Pandoc.Templates (Template, compileTemplate)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main = hakyllWith config $ do
|
||||
let individualPatterns = fromList ["about.org", "contact.org", "links.org", "documents/cv.org"]
|
||||
let copyPatterns = fromList ["images/**", "fonts/*", "documents/*"]
|
||||
|
||||
match "images/**" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "fonts/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "css/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match "*pdf" $ do
|
||||
route idRoute
|
||||
|
||||
match individualPatterns $ do
|
||||
route $ setExtension "html"
|
||||
compile $
|
||||
pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/default.html" defaultCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
-- kindly stolen from https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L163-L169
|
||||
-- also see helper functions writeXetex and xelatex
|
||||
match "documents/cv.org" $
|
||||
version "pdf" $ do
|
||||
route $ setExtension "pdf"
|
||||
compile $
|
||||
getResourceBody
|
||||
>>= readPandoc
|
||||
>>= writeXeTex
|
||||
>>= loadAndApplyTemplate "templates/cv.tex" defaultCtx
|
||||
>>= xelatex
|
||||
|
||||
tags <- buildTags "posts/*" (fromCapture "archive/tags/*.html")
|
||||
|
||||
tagsRules tags $ \tag pattern -> do
|
||||
let title = "Posts tagged \"" ++ tag ++ "\""
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll pattern
|
||||
let tagCtx =
|
||||
constField "title" title
|
||||
<> constField "tag" tag
|
||||
<> listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/tag.html" tagCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" tagCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "posts/*org" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ do
|
||||
identifier <- getUnderlying
|
||||
toc <- getMetadataField identifier "enabletoc"
|
||||
numbering <- getMetadataField identifier "enablenumbering"
|
||||
let writerOptions' = maybe defaultHakyllWriterOptions (const $ writerOptions $ isJust numbering) toc
|
||||
pandocCompilerWith defaultHakyllReaderOptions writerOptions'
|
||||
>>= saveSnapshot "content"
|
||||
>>= loadAndApplyTemplate "templates/post.html" (postCtx tags)
|
||||
>>= loadAndApplyTemplate "templates/default.html" (postCtx tags)
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["archive.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let archiveCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> constField "title" "Archives"
|
||||
<> field "tags" (\_ -> renderTagList tags)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "index.html" $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let indexCtx = defaultCtx
|
||||
|
||||
getResourceBody
|
||||
>>= applyAsTemplate indexCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" indexCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["rss.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let feedCtx = postCtx tags <> bodyField "description"
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
renderRss rssFeedConfiguration feedCtx posts
|
||||
|
||||
-- https://robertwpearce.com/hakyll-pt-2-generating-a-sitemap-xml-file.html
|
||||
create ["sitemap.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
individualPages <- loadAll individualPatterns
|
||||
let pages = posts <> individualPages
|
||||
sitemapCtx =
|
||||
listField "pages" (postCtx tags) (return pages)
|
||||
<> defaultCtx
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/sitemap.xml" sitemapCtx
|
||||
|
||||
match "templates/*" $ compile templateBodyCompiler
|
||||
where
|
||||
-- https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L214-L218
|
||||
writeXeTex :: Item Pandoc.Pandoc -> Compiler (Item String)
|
||||
writeXeTex = traverse $ \pandoc ->
|
||||
case Pandoc.runPure (Pandoc.writeLaTeX Pandoc.def pandoc) of
|
||||
Left err -> fail $ show err
|
||||
Right x -> return (T.unpack x)
|
||||
|
||||
-- https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L280-L292
|
||||
-- but even more hacky
|
||||
xelatex :: Item String -> Compiler (Item TmpFile)
|
||||
xelatex item = do
|
||||
TmpFile texPath <- newTmpFile "xelatex.tex"
|
||||
let tmpDir = takeDirectory texPath
|
||||
pdfPath = replaceExtension texPath "pdf"
|
||||
|
||||
unsafeCompiler $ do
|
||||
writeFile texPath $ itemBody item
|
||||
let x = itemBody item
|
||||
_ <-
|
||||
Process.system $
|
||||
unwords
|
||||
[ "xelatex"
|
||||
, "-halt-on-error"
|
||||
, "-output-directory"
|
||||
, tmpDir
|
||||
, texPath
|
||||
, ">/dev/null"
|
||||
, "2>&1"
|
||||
]
|
||||
return ()
|
||||
|
||||
makeItem $ TmpFile pdfPath
|
||||
|
||||
rssFeedConfiguration :: FeedConfiguration
|
||||
rssFeedConfiguration =
|
||||
FeedConfiguration
|
||||
{ feedTitle = "nattopages"
|
||||
, feedDescription = "Pages by natto"
|
||||
, feedAuthorName = "Amneesh Singh"
|
||||
, feedAuthorEmail = "natto@weirdnatto.in"
|
||||
, feedRoot = "https://weirdnatto.in"
|
||||
}
|
||||
|
||||
config :: Configuration
|
||||
config =
|
||||
defaultConfiguration
|
||||
{ deployCommand = "rsync --checksum -ave 'ssh -p" ++ sshTargetPort ++ "' _site/* " ++ sshTarget
|
||||
, previewPort = 3333
|
||||
}
|
||||
where
|
||||
{-# NOINLINE sshTarget #-}
|
||||
sshTarget = unsafePerformIO $ getEnv "SSHTARGET"
|
||||
{-# NOINLINE sshTargetPort #-}
|
||||
sshTargetPort = unsafePerformIO $ getEnv "SSHTARGETPORT"
|
||||
|
||||
postCtx :: Tags -> Context String
|
||||
postCtx tags =
|
||||
tagsField "tags" tags
|
||||
-- <> teaserFieldWithSeparator "((.tease.))" "teaser" "content"
|
||||
<> dateField "date" "%B %e, %Y"
|
||||
<> dateField "altdate" "%Y-%m-%d"
|
||||
<> teaserField "teaser" "content"
|
||||
<> defaultCtx
|
||||
|
||||
defaultCtx :: Context String
|
||||
defaultCtx =
|
||||
listField "subdomains" subCtx (return subdomains)
|
||||
<> domainCtx
|
||||
<> defaultContext
|
||||
where
|
||||
domain :: String
|
||||
domain = "weirdnatto.in"
|
||||
subCtx :: Context String
|
||||
subCtx =
|
||||
field "name" (return . itemBody)
|
||||
<> domainCtx
|
||||
domainCtx :: Context String
|
||||
domainCtx = constField "domain" domain
|
||||
subdomains :: [Item String]
|
||||
subdomains = map mkItem ["git", "radio", "f"]
|
||||
where
|
||||
mkItem :: a -> Item a
|
||||
mkItem a = Item{itemIdentifier = "subdomain", itemBody = a}
|
||||
|
||||
writerOptions :: Bool -> WriterOptions
|
||||
writerOptions withNumbering =
|
||||
defaultHakyllWriterOptions
|
||||
{ writerNumberSections = withNumbering
|
||||
, writerTableOfContents = True
|
||||
, writerTOCDepth = 2
|
||||
, writerTemplate = Just tocTemplate
|
||||
}
|
||||
|
||||
tocTemplate :: Text.Pandoc.Templates.Template Text
|
||||
tocTemplate =
|
||||
either error id . runIdentity . compileTemplate "" $
|
||||
T.unlines
|
||||
[ "<div class=\"toc\"><div class=\"toc-header\">Table of Contents</div>"
|
||||
, "$toc$"
|
||||
, "</div>"
|
||||
, "$body$"
|
||||
]
|
||||
7
src/cabal.project
Normal file
@@ -0,0 +1,7 @@
|
||||
packages: .
|
||||
|
||||
source-repository-package
|
||||
type: git
|
||||
location: https://github.com/natto1784/pandoc.git
|
||||
tag: b30124ce3e835cdb7b35fafd88c86d0841dcfaa9
|
||||
--sha256: sha256-tHUhx+RBGFN+Km0qulSrD9NSsMIAjIhOU+6CxGPmwZ8=
|
||||
@@ -5,10 +5,12 @@ license: MIT
|
||||
cabal-version: >= 1.10
|
||||
|
||||
executable site
|
||||
main-is: site.hs
|
||||
main-is: Main.hs
|
||||
build-depends: base == 4.*
|
||||
, hakyll == 4.15.*
|
||||
, pandoc == 2.*
|
||||
, text == 1.*
|
||||
, filepath == 1.4.*
|
||||
, hakyll == 4.16.*
|
||||
, pandoc == 3.1.6.2
|
||||
, process == 1.6.*
|
||||
, text == 2.*
|
||||
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||
default-language: Haskell2010
|
||||
|
||||
214
src/site.hs
@@ -1,214 +0,0 @@
|
||||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.Maybe (isJust)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Hakyll
|
||||
import Text.Pandoc (WriterOptions (writerHighlightStyle, writerNumberSections, writerTOCDepth, writerTableOfContents, writerTemplate))
|
||||
import Text.Pandoc.Templates (Template, compileTemplate)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main = hakyllWith config $ do
|
||||
let individualPatterns = fromList ["about.org", "contact.org", "links.org"]
|
||||
|
||||
match "images/**" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "fonts/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "css/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match individualPatterns $ do
|
||||
route $ setExtension "html"
|
||||
compile $
|
||||
pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/default.html" defaultCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
tags <- buildTags "posts/*" (fromCapture "archive/tags/*.html")
|
||||
|
||||
tagsRules tags $ \tag pattern -> do
|
||||
let title = "Posts tagged \"" ++ tag ++ "\""
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll pattern
|
||||
let tagCtx =
|
||||
constField "title" title
|
||||
<> constField "tag" tag
|
||||
<> listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/tag.html" tagCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" tagCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "posts/*org" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ do
|
||||
identifier <- getUnderlying
|
||||
toc <- getMetadataField identifier "enabletoc"
|
||||
numbering <- getMetadataField identifier "enablenumbering"
|
||||
let writerOptions' = maybe defaultHakyllWriterOptions (const $ writerOptions $ isJust numbering) toc
|
||||
pandocCompilerWith defaultHakyllReaderOptions writerOptions'
|
||||
>>= saveSnapshot "content"
|
||||
>>= loadAndApplyTemplate "templates/post.html" (postCtx tags)
|
||||
>>= loadAndApplyTemplate "templates/default.html" (postCtx tags)
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["archive.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let archiveCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> constField "title" "Archives"
|
||||
<> field "tags" (\_ -> renderTagList tags)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "dailies/*org" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ do
|
||||
pandocCompiler
|
||||
>>= saveSnapshot "dailiescontent"
|
||||
>>= loadAndApplyTemplate "templates/post.html" dailiesCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" dailiesCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["dailies.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
dailyToday <- fmap (take 1) . recentFirst =<< loadAllSnapshots "dailies/*" "dailiescontent"
|
||||
dailies <- recentFirst =<< loadAll "dailies/*"
|
||||
let dailiesCtx' =
|
||||
listField "today" dailiesCtx (return dailyToday)
|
||||
<> listField "posts" dailiesCtx (return dailies)
|
||||
<> constField "title" "Dailies"
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/dailies.html" dailiesCtx'
|
||||
>>= loadAndApplyTemplate "templates/default.html" dailiesCtx'
|
||||
>>= relativizeUrls
|
||||
|
||||
match "index.html" $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
let indexCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
getResourceBody
|
||||
>>= applyAsTemplate indexCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" indexCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["rss.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let feedCtx = postCtx tags <> bodyField "description"
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
renderRss rssFeedConfiguration feedCtx posts
|
||||
|
||||
-- https://robertwpearce.com/hakyll-pt-2-generating-a-sitemap-xml-file.html
|
||||
create ["sitemap.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
individualPages <- loadAll individualPatterns
|
||||
let pages = posts <> individualPages
|
||||
sitemapCtx =
|
||||
listField "pages" (postCtx tags) (return pages)
|
||||
<> defaultCtx
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/sitemap.xml" sitemapCtx
|
||||
|
||||
match "templates/*" $ compile templateBodyCompiler
|
||||
|
||||
rssFeedConfiguration :: FeedConfiguration
|
||||
rssFeedConfiguration =
|
||||
FeedConfiguration
|
||||
{ feedTitle = "nattopages",
|
||||
feedDescription = "Pages by natto",
|
||||
feedAuthorName = "Amneesh Singh",
|
||||
feedAuthorEmail = "natto@weirdnatto.in",
|
||||
feedRoot = "https://weirdnatto.in"
|
||||
}
|
||||
|
||||
config :: Configuration
|
||||
config =
|
||||
defaultConfiguration
|
||||
{ deployCommand =
|
||||
"rsync --checksum -ave 'ssh -p 22001' \
|
||||
\_site/* \
|
||||
\root@weirdnatto.in:/var/lib/site/",
|
||||
previewPort = 3333
|
||||
}
|
||||
|
||||
postCtx :: Tags -> Context String
|
||||
postCtx tags =
|
||||
tagsField "tags" tags
|
||||
-- <> teaserFieldWithSeparator "((.tease.))" "teaser" "content"
|
||||
<> dateField "date" "%B %e, %Y"
|
||||
<> dateField "altdate" "%Y-%m-%d"
|
||||
<> teaserField "teaser" "content"
|
||||
<> defaultCtx
|
||||
|
||||
dailiesCtx :: Context String
|
||||
dailiesCtx =
|
||||
dateField "date" "%B %e, %Y"
|
||||
<> defaultCtx
|
||||
|
||||
defaultCtx :: Context String
|
||||
defaultCtx =
|
||||
listField "subdomains" subCtx (return subdomains)
|
||||
<> domainCtx
|
||||
<> defaultContext
|
||||
where
|
||||
domain :: String
|
||||
domain = "weirdnatto.in"
|
||||
subCtx :: Context String
|
||||
subCtx =
|
||||
field "name" (return . itemBody)
|
||||
<> domainCtx
|
||||
domainCtx :: Context String
|
||||
domainCtx = constField "domain" domain
|
||||
subdomains :: [Item String]
|
||||
subdomains = map mkItem ["git", "nomad", "consul", "vault", "radio", "f", "ci"]
|
||||
where
|
||||
mkItem :: a -> Item a
|
||||
mkItem a = Item {itemIdentifier = "subdomain", itemBody = a}
|
||||
|
||||
writerOptions :: Bool -> WriterOptions
|
||||
writerOptions withNumbering =
|
||||
defaultHakyllWriterOptions
|
||||
{ writerNumberSections = withNumbering,
|
||||
writerTableOfContents = True,
|
||||
writerTOCDepth = 2,
|
||||
writerTemplate = Just tocTemplate
|
||||
}
|
||||
|
||||
tocTemplate :: Text.Pandoc.Templates.Template Text
|
||||
tocTemplate =
|
||||
either error id . runIdentity . compileTemplate "" $
|
||||
T.unlines
|
||||
[ "<div class=\"toc\"><div class=\"toc-header\">Table of Contents</div>",
|
||||
"$toc$",
|
||||
"</div>",
|
||||
"$body$"
|
||||
]
|
||||
@@ -1,7 +1,5 @@
|
||||
<p>
|
||||
<h3> Here you can find all my previous posts: </h3>
|
||||
</p>
|
||||
<h3>Here you can find all my previous posts:</h3>
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||
<h3>Tags</strong></h3>
|
||||
<h3><strong>Tags</strong></h3>
|
||||
<div class="tags">$tags$</div>
|
||||
|
||||
43
templates/cv.tex
Normal file
@@ -0,0 +1,43 @@
|
||||
\documentclass[a4paper,11pt]{article}
|
||||
|
||||
|
||||
\usepackage[margin=0.5in]{geometry}
|
||||
\usepackage[colorlinks=true]{hyperref}
|
||||
\usepackage{longtable}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{enumitem}
|
||||
\setlist[itemize]{partopsep=-4pt, itemsep=-6pt}
|
||||
|
||||
\usepackage{parskip}
|
||||
\setlength{\parindent}{0em}
|
||||
\setlength{\parskip}{0.5em}
|
||||
\setcounter{secnumdepth}{-1}
|
||||
|
||||
\def\tightlist{}
|
||||
\usepackage{ulem}
|
||||
\normalem
|
||||
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}{
|
||||
\vspace{-5pt}\scshape\raggedright\large
|
||||
}{}{0em}{}[\vspace{-5pt}]
|
||||
|
||||
\titleformat{\subsection}{
|
||||
\vspace{0pt}\raggedright\normalsize\bfseries
|
||||
}{}{0em}{}[\vspace{-4pt}]
|
||||
|
||||
\titlespacing{\subsection}{0pt}{8pt}{5pt}
|
||||
|
||||
\let\OldRule\rule
|
||||
\renewcommand{\rule}[2]{\OldRule{\linewidth}{#2}}
|
||||
|
||||
\setlength{\LTleft}{0pt}
|
||||
\setlength{\LTpre}{3pt}
|
||||
\setlength{\LTpost}{0pt}
|
||||
|
||||
\usepackage{relsize}
|
||||
|
||||
\begin{document}
|
||||
$body$
|
||||
\end{document}
|
||||
@@ -1,16 +1,13 @@
|
||||
These are called dailies but these are not posted daily
|
||||
<hr>
|
||||
You have stumbled upon a relic of the past that I never maintained.
|
||||
<hr />
|
||||
$for(today)$
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<div class="post-teaser">
|
||||
$body$
|
||||
</div>
|
||||
<hr>
|
||||
</article>
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<div class="post-teaser">$body$</div>
|
||||
<hr />
|
||||
</article>
|
||||
$endfor$
|
||||
|
||||
<p>
|
||||
<h3> Previous Dailies: </h3>
|
||||
</p>
|
||||
<h3>Previous Dailies:</h3>
|
||||
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||
@@ -1,47 +1,65 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>nattopages - $title$</title>
|
||||
<link rel="stylesheet" href="/css/default.css" />
|
||||
<link rel="stylesheet" href="/css/highlight.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo">
|
||||
<a href="/">nattopages</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/archive.html">Archive</a>
|
||||
<a href="/dailies.html">Dailies</a>
|
||||
<a href="/links.html">Links</a>
|
||||
</nav>
|
||||
</header>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>nattopages - $title$</title>
|
||||
<link rel="stylesheet" href="/css/default.css" />
|
||||
<link rel="stylesheet" href="/css/highlight.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div id="nattopages">
|
||||
<a href="/">nattopages</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/archive.html">Archive</a>
|
||||
<a href="/links.html">Links</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main role="main">
|
||||
$body$
|
||||
</main>
|
||||
<main role="main">$body$</main>
|
||||
|
||||
<footer>
|
||||
All content published under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International</a><br>
|
||||
<a href="https://git.weirdnatto.in/natto1784/nattopages">Source</a> available under MIT License<br>
|
||||
Site proudly generated by
|
||||
<a href="http://jaspervdj.be/hakyll">Hakyll</a><br>
|
||||
53EC 089E F230 E47A 83BA 8F81 9594 9BD4 B853 F559<br>
|
||||
<a href="/rss.xml">RSS 2.0</a><br>
|
||||
<ul class="subdomains" style="list-style-type: none;">
|
||||
$for(subdomains)$
|
||||
<li style="display: inline-block;">
|
||||
<a href="https://$name$.$domain$">
|
||||
<img src="/images/logos/$name$.svg" alt="https://$name$.$domain$" width="30" height="30"/>
|
||||
</a>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
</footer>
|
||||
</body>
|
||||
<footer>
|
||||
All content published under
|
||||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"
|
||||
>Creative Commons Attribution-NonCommercial-ShareAlike 4.0
|
||||
International</a
|
||||
><br />
|
||||
<a href="https://git.weirdnatto.in/natto1784/nattopages">Source</a>
|
||||
available under MIT License<br />
|
||||
Site proudly generated by
|
||||
<a href="http://jaspervdj.be/hakyll">Hakyll</a><br />
|
||||
3C4B DBE7 BBF4 5B52 C14E A193 0072 57B0 5FCC 86A8<br />
|
||||
<a href="/rss.xml">RSS 2.0</a><br />
|
||||
<ul id="subdomains" style="list-style-type: none">
|
||||
$for(subdomains)$
|
||||
<li style="display: inline-block">
|
||||
<a href="https://$name$.$domain$">
|
||||
<img
|
||||
src="/images/icons/$name$.svg"
|
||||
alt="https://$name$.$domain$"
|
||||
width="30"
|
||||
height="30"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
</footer>
|
||||
<input type="checkbox" id="sticker-toggle" />
|
||||
<div id="sticker">
|
||||
<label for="sticker-toggle"> hello! </label>
|
||||
<label for="sticker-toggle">
|
||||
<img
|
||||
src="/images/personal/nyn.webp"
|
||||
alt="いらっしゃいませ"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<ul>
|
||||
$for(posts)$
|
||||
<li class="post-item">
|
||||
<a href="$url$">$title$</a> - $date$
|
||||
</li>
|
||||
$endfor$
|
||||
$for(posts)$
|
||||
<li class="post-item"><a href="$url$">$title$</a> - $date$</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<ul class="post-preview-item-list">
|
||||
$for(posts)$
|
||||
<li class="post-preview-item" >
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<div class="post-header">
|
||||
<div class="post-date" >
|
||||
Posted $date$
|
||||
</div>
|
||||
<div class="tags" >
|
||||
$if(tags)$
|
||||
Tags: $tags$
|
||||
$endif$
|
||||
</div>
|
||||
</div>
|
||||
<div class="post-teaser">
|
||||
$if(teaser)$
|
||||
$teaser$
|
||||
$else$
|
||||
$body$
|
||||
$endif$
|
||||
</div>
|
||||
<a href="$url$">Read more</a>
|
||||
</article>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
@@ -1,19 +1,10 @@
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<section class="post-header">
|
||||
Posted on $date$
|
||||
$if(author)$
|
||||
by $author$
|
||||
$endif$<br>
|
||||
$if(tags)$
|
||||
Tags: $tags$
|
||||
$endif$<br>
|
||||
$if(modified)$
|
||||
Last modified on $modified$
|
||||
$endif$
|
||||
</section>
|
||||
<hr>
|
||||
<section>
|
||||
$body$
|
||||
</section>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<section class="post-header">
|
||||
Posted on $date$ $if(author)$ by $author$ $endif$<br />
|
||||
$if(tags)$ Tags: $tags$ $endif$<br />
|
||||
$if(modified)$ Last modified on $modified$ $endif$
|
||||
</section>
|
||||
<hr />
|
||||
<section>$body$</section>
|
||||
</article>
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
Here are all the posts marked with tag <strong style="font-size: 3rem;">$tag$</strong>:
|
||||
Here are all the posts marked with tag
|
||||
<strong style="font-size: 3rem">$tag$</strong>:
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||