diff --git a/.gitignore b/.gitignore index 3389e0e..c341ed4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ bake/ .sass-cache/ sandbox/ -www/imgs diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 0000000..4896e1d --- /dev/null +++ b/CREDITS.md @@ -0,0 +1 @@ +1. [github:rose-pine/tailwind-css](https://github.com/rose-pine/tailwind-css): I modified their css palettes diff --git a/README.md b/README.md index d8ea07c..525b827 100644 --- a/README.md +++ b/README.md @@ -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** diff --git a/docs/butterfly.txt b/docs/butterfly.txt index 68a173e..85b0d2c 100644 --- a/docs/butterfly.txt +++ b/docs/butterfly.txt @@ -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 ! ! diff --git a/docs/hown/README.md b/docs/hown/README.md new file mode 100644 index 0000000..ebb9434 --- /dev/null +++ b/docs/hown/README.md @@ -0,0 +1,2 @@ +# Html With Nix (HOWN/hown) +Hown is a system for static html/css compilation with the NixExpr language. diff --git a/docs/hown/default.nix b/docs/hown/default.nix new file mode 100644 index 0000000..fc335f0 --- /dev/null +++ b/docs/hown/default.nix @@ -0,0 +1,6 @@ +{mix, ...} @ inputs: +mix.newMixture inputs (mixture: { + includes.public = [ + ./tty.nix + ]; +}) diff --git a/docs/hown/index.html b/docs/hown/index.html new file mode 100644 index 0000000..4e161b4 --- /dev/null +++ b/docs/hown/index.html @@ -0,0 +1,8 @@ + + {Text, mkTypingEffect, ...}: + mkTypingEffect { + head = Text "$ Do butterflies cry when they're sad?"; + body = Text "Segmentation fault (core dumped)"; + } + <--> + diff --git a/docs/hown/tty.nix b/docs/hown/tty.nix new file mode 100644 index 0000000..34741b6 --- /dev/null +++ b/docs/hown/tty.nix @@ -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; + }) + ]; + }; +} diff --git a/docs/links.md b/docs/links.md new file mode 100644 index 0000000..48c13dc --- /dev/null +++ b/docs/links.md @@ -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 + diff --git a/docs/palette.theme b/docs/palette.theme new file mode 100644 index 0000000..8644157 --- /dev/null +++ b/docs/palette.theme @@ -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 diff --git a/docs/todo/ipv6.md b/docs/todo/ipv6.md new file mode 100644 index 0000000..31ddba0 --- /dev/null +++ b/docs/todo/ipv6.md @@ -0,0 +1,26 @@ +## Current State + Analysis +> Current (default) `ens3` interface configuration +```fish +ae@hyrule ~> ip -6 addr +1: lo: mtu 65536 state UNKNOWN qlen 1000 + inet6 ::1/128 scope host noprefixroute + valid_lft forever preferred_lft forever +2: ens3: mtu 1500 state UP qlen 1000 + inet6 fe80::a0c7:1fe3:4851:b2b4/64 scope link noprefixroute + valid_lft forever preferred_lft forever +3: docker0: 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 diff --git a/guide/guide.md b/guide/guide.md new file mode 100644 index 0000000..6a48bc0 --- /dev/null +++ b/guide/guide.md @@ -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). diff --git a/scripts/bakeimgs b/scripts/bakeimgs index aae2484..b04afbb 100755 --- a/scripts/bakeimgs +++ b/scripts/bakeimgs @@ -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" diff --git a/www/css/themes/core.css b/www/css/themes/core.css index e8af746..2c30107 100644 --- a/www/css/themes/core.css +++ b/www/css/themes/core.css @@ -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); +} diff --git a/www/index.html b/www/index.html index 0fe3adb..9fcd45d 100644 --- a/www/index.html +++ b/www/index.html @@ -5,16 +5,6 @@ have you tried crying more? - - - - - - - - - - @@ -124,43 +114,6 @@

hi!! i'm cry (they/them) <3

- - - - - - - - - - - - - - - - - - -
- <--                `         '                -->
-<-- ;,,,             `       '             ,,,; -->
-<-- `CRY6666bo.       :     :       .od8888CRY' -->
-  <-- 888IO8DO88b.     :   :     .d88OD8OI888 -->
-  <-- 8LOVET'  `Y8b.   `   '   .d8Y'  `TLOVE8 -->
- <-- jYOUM!  .db.  Yb. '   ' .dY  .db.  !MYOUk -->
-   <-- `888  Y88Y    `q ( ) p'    Y88Y  888' -->
-    <-- 8SOb  '"        ,',        "'  dSO8 -->
-   <-- j8PLEASEYgr"'    ':'   `"?gpYPLEASESk -->
-     <-- 'Y'   .8'     d' 'b     '8.   'Y' -->
-      <-- !   .8' db  d'; ;`b  db '8.   ! -->
-         <-- d88  `'  8 ; ; 8  `'  88b -->
-        <-- d88Ib   .g8 ',' 8g.   dI88b -->
-       <-- :888LOVE88Y'     'Y88LOVE888: -->
-       <-- '! YpME888'       `888MEpY !' -->
-          <-- '8Y  `Y         Y'  Y8' -->
-           <-- Y                   Y -->
-           <-- !                   ! -->