Compare commits

..

No commits in common. "9968a82d7aeb48a0943abfd7a97354f19b68d184" and "36dde64b611f7bd3112038fd868c2a3c300eeb7a" have entirely different histories.

15 changed files with 261 additions and 95 deletions

1
.gitignore vendored
View file

@ -1,4 +1,3 @@
bake/
.sass-cache/
sandbox/
www/imgs

1
CREDITS.md Normal file
View file

@ -0,0 +1 @@
1. [github:rose-pine/tailwind-css](https://github.com/rose-pine/tailwind-css): I modified their css palettes

View file

@ -33,7 +33,3 @@ nix-shell$ ./serve &
### Inspiration
1. https://namishh.me/ (uses https://actix.rs/)
1. [github:rose-pine/tailwind-css](https://github.com/rose-pine/tailwind-css): I modified their css palettes
# Credit
1. [me and my UNREGISTERED FIREARM](https://www.youtube.com/watch?v=5NWH-UmwWeM) by **@oranjate**
2. [UNDO UNDO](https://www.youtube.com/watch?v=lCaun_EiJZQ) by **@Rolobi**

View file

@ -3,17 +3,17 @@
;,,, ` ' ,,,;
`CRY6666bo. : : .od8888CRY'
888IO8DO88b. : : .d8888I8DO88
8LOVET' `Y8b. ` ' .d8Y' `TLOVE8
jYOUM! .db. Yb. ' ' .dY .db. !MYOUk
8LOVEY' `Y8b. ` ' .d8Y' `YLOVE8
jTHEE! .db. Yb. ' ' .dY .db. 8THEE!
`888 Y88Y `q ( ) p' Y88Y 888'
8SOb '" ,', "' dSO8
j8plEASEYgr"' ':' `"?gpYplEASESk
8MYb '" ,', "' dMY8
j8prECIOUSgf"' ':' `"?g8prECIOUSk
'Y' .8' d' 'b '8. 'Y'
! .8' db d'; ;`b db '8. !
d88 `' 8 ; ; 8 `' 88b
d88Ib .g8 ',' 8g. dI88b
:888LOVE88Y' 'Y88LOVE888:
'! YpME888' `888MEpY !'
:888BAUD88Y' 'Y88BAUD888:
'! BAUD888' `888BAUD !'
'8Y `Y Y' Y8'
Y Y
! !

2
docs/hown/README.md Normal file
View file

@ -0,0 +1,2 @@
# Html With Nix (HOWN/hown)
Hown is a system for static html/css compilation with the NixExpr language.

6
docs/hown/default.nix Normal file
View file

@ -0,0 +1,6 @@
{mix, ...} @ inputs:
mix.newMixture inputs (mixture: {
includes.public = [
./tty.nix
];
})

8
docs/hown/index.html Normal file
View file

@ -0,0 +1,8 @@
<!-->
{Text, mkTypingEffect, ...}:
mkTypingEffect {
head = Text "$ Do butterflies cry when they're sad?";
body = Text "Segmentation fault (core dumped)";
}
<-->

100
docs/hown/tty.nix Normal file
View file

@ -0,0 +1,100 @@
# XXX: TODO: The howl.Div, howl.Text, ... types implement
# XXX: TODO: the HtmlTag' typeclass, which in turn implements
# XXX: TODO: a morphism to the nt.String type. This makes compiling
# XXX: TODO: to html super duper simple!!
{
nt,
howl,
...
}: let
inherit
(nt)
projectOnto
;
inherit
(howl)
# HTML
Div
Text
# CSS
StyleClass
StyleSheet
ContinuousAnimation
DiscreteAnimation
;
in {
typing = StyleSheet {
include = [./tty.css];
classes = {
typing-wrapper = null;
typing-prompt = promptLength: commandLength: duration: period:
StyleClass {
width = promptLength + commandLength; # ignore cursor
border.right = "TODO"; # cursor
# hide what the animation hasn't shown yet
whitespace = "nowrap";
overflow = "hidden";
# run typing animation then start cursor blink
animations = [
(DiscreteAnimation {
inherit duration;
keyframes = {
"0"
};
})
];
};
typing-result = typingDuration: delay:
StyleClass {
visibility = "hidden";
whitespace = "pre-wrap"; # preserve linebreaks
# show result once typing duration + delay is over
animations = [
(ContinuousAnimation {
name = "unhide-result";
duration = 1; # animation-duration
# timingFn = ; # animation-timing-function
delay = typingDuration + delay; # animation-delay
# animation-iteration-count
direction = "forwards"; # animation-direction
# animation-fill-mode
# animation-play-state
keyframes = {
"100" = {
visibility = "visible";
};
};
})
];
};
};
};
mkTypingEffect = decl': let
decl =
decl'
|> projectOnto
{
head = "";
body = "";
};
in
Div {
id = "typing-wrapper";
content = [
(Div {
id = "typing-prompt";
content = Text decl.head;
})
(Div {
id = "typing-result";
content = Text decl.body;
})
];
};
}

12
docs/links.md Normal file
View file

@ -0,0 +1,12 @@
Web: dobutterfliescry.net
imbored.dev (195.114.14.69)
Socials:
Bluesky: @dobutterfliescry.bsky.social
Discord: @emileisbaud
Forges:
Github: @emileclarkb
Coderberg: @dobutterfliescry
Tearforge: https://tearforge.online

53
docs/palette.theme Normal file
View file

@ -0,0 +1,53 @@
# REF: https://github.com/rose-pine/fish/blob/main/themes/Ros%C3%A9%20Pine%20Moon.theme
# syntax highlighting variables
# https://fishshell.com/docs/current/interactive.html#syntax-highlighting-variables
fish_color_normal e0def4
fish_color_command c4a7e7
fish_color_keyword 9ccfd8
fish_color_quote f6c177
fish_color_redirection 3e8fb0
fish_color_end 908caa
fish_color_error eb6f92
fish_color_param ea9a97
fish_color_comment 908caa
# fish_color_match --background=brblue
fish_color_selection --reverse
# fish_color_history_current --bold
fish_color_operator e0def4
fish_color_escape 3e8fb0
fish_color_autosuggestion 908caa
fish_color_cwd ea9a97
# fish_color_cwd_root red
fish_color_user f6c177
fish_color_host 9ccfd8
fish_color_host_remote c4a7e7
fish_color_cancel e0def4
fish_color_search_match --background=232136
fish_color_valid_path
# pager color variables
# https://fishshell.com/docs/current/interactive.html#pager-color-variables
fish_pager_color_progress ea9a97
fish_pager_color_background --background=2a273f
fish_pager_color_prefix 9ccfd8
fish_pager_color_completion 908caa
fish_pager_color_description 908caa
fish_pager_color_secondary_background
fish_pager_color_secondary_prefix
fish_pager_color_secondary_completion
fish_pager_color_secondary_description
fish_pager_color_selected_background --background=393552
fish_pager_color_selected_prefix 9ccfd8
fish_pager_color_selected_completion e0def4
fish_pager_color_selected_description e0def4
# custom color variables
fish_color_subtle 908caa
fish_color_text e0def4
fish_color_love eb6f92
fish_color_gold f6c177
fish_color_rose ea9a97
fish_color_pine 3e8fb0
fish_color_foam 9ccfd8
fish_color_iris c4a7e7

26
docs/todo/ipv6.md Normal file
View file

@ -0,0 +1,26 @@
## Current State + Analysis
> Current (default) `ens3` interface configuration
```fish
ae@hyrule ~> ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::a0c7:1fe3:4851:b2b4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 state DOWN
inet6 fe80::42:9ff:fe40:1e1c/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
```
However the address should actually be `2402:7340:5000:1800::a`.
Using the `2402:7340:5000::1` gateway.
IPv6 allocations are viewable under the VPS `Control Panel / Network` tab
## Guides + Resources
Mini guide on configuring IPv6 for NixOS:
https://nlewo.github.io/nixos-manual-sphinx/configuration/ipv6-config.xml.html
This forum post says how to do everything:
https://discourse.nixos.org/t/how-to-setup-ipv6-correctly-so-that-ping-6-google-com-works/33686

11
guide/guide.md Normal file
View file

@ -0,0 +1,11 @@
### Properly configuring a mailserver
[These docs](https://nixos-mailserver.readthedocs.io/en/latest/setup-guide.html)
explains (in depth) how to configure [simple-nixos-mailserver](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver)
and achieve a 10/10 [mail-tester](https://mail-tester.com) score.
Due to a lot of internet politics self-hosting a mail server isn't always
super easy. TLDR a lot of VPS subnets get abused and get registered on blacklists.
You should test your IPv4 address (or domain) on [MxToolbox](https://mxtoolbox.com/blacklists.aspx)
first. If you're not blacklisted you you'll only need to worry about writing
out DNS records (very specific ones that avoid your emails going straight to spam).

View file

@ -1,31 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
# TODO: write this as a Makefile maybe?
# ===== Configuration ===== #
IMGS="imgs"
BAKED="www/imgs"
FAVICON="$BAKED/favicon"
IMGS_DIR="imgs"
BAKE_DIR="www/baked"
# ========================= #
mkdir -p "$BAKED"
mkdir -p "$FAVICON"
echo 'Generating mirror icon'
magick -background '#000000' -size 100x100 "$IMGS/mirror-icon.svg" "$BAKED/mirror-icon.png"
# resize avatar
echo "Resizing avatar"
magick "$IMGS/c00L_y2k_g1rL.png" -resize 50% "$BAKED/avatar.png"
# crop avatar
echo 'Cropping avatar'
magick "$IMGS/c00L_y2k_g1rL.png" -crop '%wx%w+0+180' "$BAKED/avatar_crop.png"
# create favicon
echo 'Generating favicon.ico'
magick -define icon:auto-resize=16,32,48,64,128,256 -compress zip "$BAKED/avatar_crop.png" "$FAVICON/favicon.ico"
# create separate png favicon alternatives
for n in 16 32 48 64 128 256; do
echo "Generating favicon-${n}x${n}.png"
magick "$BAKED/avatar_crop.png" -resize "${n}x${n}" "$FAVICON/favicon-${n}x${n}.png"
done
mkdir -p "$BAKE_DIR"
magick -background '#000000' -size 100x100 "$IMGS_DIR/mirror-icon.svg" "$BAKE_DIR/mirror-icon.png"
magick "$IMGS_DIR/c00L_y2k_g1rL.png" -resize 50% "$BAKE_DIR/avatar.png"

View file

@ -1,14 +1,32 @@
.theme-base { color: var(--theme-base); }
.theme-bg { color: var(--theme-bg); }
.theme-text { color: var(--theme-text); }
.theme-link { color: var(--theme-link); }
.theme-base {
color: var(--theme-base);
}
.theme-icon { color: var(--theme-icon); }
.theme-icon-off { color: var(--theme-icon-off); }
.theme-bg {
color: var(--theme-bg);
}
.theme-tty-prompt { color: var(--theme-tty-prompt); }
.theme-tty-command { color: var(--theme-tty-command); }
.theme-tty-output { color: var(--theme-tty-output); }
.theme-tty-warning { color: var(--theme-tty-warning); }
.theme-tty-error { color: var(--theme-tty-error); }
.theme-text {
color: var(--theme-text);
}
.theme-tty-prompt {
color: var(--theme-tty-prompt);
}
.theme-tty-command {
color: var(--theme-tty-command);
}
.theme-tty-output {
color: var(--theme-tty-output);
}
.theme-tty-warning {
color: var(--theme-tty-warning);
}
.theme-tty-error {
color: var(--theme-tty-error);
}

View file

@ -5,16 +5,6 @@
<meta charset="utf-8" />
<title>have you tried crying more?</title>
<!-- !! Favicon !! -->
<link rel="icon" href="imgs/favicon/favicon.ico" />
<link rel="icon" type="image/png" sizes="16x16" href="imgs/favicon/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="imgs/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="48x48" href="imgs/favicon/favicon-48x48.png" />
<link rel="icon" type="image/png" sizes="64x64" href="imgs/favicon/favicon-64x64.png" />
<!-- TODO: add 96x96 -->
<link rel="icon" type="image/png" sizes="128x128" href="imgs/favicon/favicon-128x128.png" />
<link rel="icon" type="image/png" sizes="256x256" href="imgs/favicon/favicon-256x256.png" />
<script src="js/main.js" type="module"></script>
<!-- Theming -->
@ -124,43 +114,6 @@
<p>hi!! i'm cry (they/them) <3</p>
</div>
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ` ' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ;,,, ` ' ,,,; </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> `CRY6666bo. : : .od8888CRY' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 888IO8DO88b. : : .d8888I8DO88 </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 8LOVET' `Y8b. ` ' .d8Y' `TLOVE8 </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> jYOUM! .db. Yb. ' ' .dY .db. !MYOUk </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> `888 Y88Y `q ( ) p' Y88Y 888' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 8SOb '" ,', "' dSO8 </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> j8plEASEYgr"' ':' `"?gpYplEASESk </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 'Y' .8' d' 'b '8. 'Y' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ! .8' db d'; ;`b db '8. ! </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> d88 `' 8 ; ; 8 `' 88b </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> d88Ib .g8 ',' 8g. dI88b </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> :888LOVE88Y' 'Y88LOVE888: </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> '! YpME888' `888MEpY !' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> '8Y `Y Y' Y8' </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> Y Y </span><span class="theme-tty-warning">--&gt;</span> -->
<!-- <span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ! ! </span><span class="theme-tty-warning">--&gt;</span> -->
<pre class="centered cryframe">
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ` ' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ;,,, ` ' ,,,; </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> `<span class="theme-tty-output">CRY</span>6666bo. : : .od8888<span class="theme-tty-output">CRY</span>' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 888<span class="theme-icon">I</span>O8DO88b. : : .d88OD8O<span class="theme-icon">I</span>888 </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 8<span class="theme-icon">LOVE</span>T' `Y8b. ` ' .d8Y' `T<span class="theme-icon">LOVE</span>8 </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> j<span class="theme-icon">YOU</span>M! .db. Yb. ' ' .dY .db. !M<span class="theme-icon">YOU</span>k </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> `888 Y88Y `q ( ) p' Y88Y 888' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 8<span class="theme-icon">SO</span>b '" ,', "' d<span class="theme-icon">SO</span>8 </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> j8<span class="theme-icon">PLEASE</span>Ygr"' ':' `"?gpY<span class="theme-icon">PLEASE</span>Sk </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> 'Y' .8' d' 'b '8. 'Y' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ! .8' db d'; ;`b db '8. ! </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> d88 `' 8 ; ; 8 `' 88b </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> d88Ib .g8 ',' 8g. dI88b </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> :888<span class="theme-icon">LOVE</span>88Y' 'Y88<span class="theme-icon">LOVE</span>888: </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> '! Yp<span class="theme-icon">ME</span>888' `888<span class="theme-icon">ME</span>pY !' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> '8Y `Y Y' Y8' </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> Y Y </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ! ! </span><span class="theme-tty-warning">--&gt;</span></pre>
</div>
</main>