my website

initial commit. lotsa stuff sorry

eeep.ee 124ff3a3

+293
+2
.gitignore
··· 1 + result 2 + src/fonts
+3
README.md
··· 1 + # website3 2 + 3 + not to be confused with: "web3"
+57
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-utils": { 4 + "inputs": { 5 + "systems": "systems" 6 + }, 7 + "locked": { 8 + "lastModified": 1731533236, 9 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 + "owner": "numtide", 11 + "repo": "flake-utils", 12 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "numtide", 17 + "repo": "flake-utils", 18 + "type": "github" 19 + } 20 + }, 21 + "nixpkgs": { 22 + "locked": { 23 + "lastModified": 0, 24 + "narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=", 25 + "path": "/nix/store/cginla74w7h4gln9b3mva6l4nmj6gj30-source", 26 + "type": "path" 27 + }, 28 + "original": { 29 + "id": "nixpkgs", 30 + "type": "indirect" 31 + } 32 + }, 33 + "root": { 34 + "inputs": { 35 + "flake-utils": "flake-utils", 36 + "nixpkgs": "nixpkgs" 37 + } 38 + }, 39 + "systems": { 40 + "locked": { 41 + "lastModified": 1681028828, 42 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 43 + "owner": "nix-systems", 44 + "repo": "default", 45 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 46 + "type": "github" 47 + }, 48 + "original": { 49 + "owner": "nix-systems", 50 + "repo": "default", 51 + "type": "github" 52 + } 53 + } 54 + }, 55 + "root": "root", 56 + "version": 7 57 + }
+102
flake.nix
··· 1 + { 2 + description = "chfour's website"; 3 + 4 + inputs.flake-utils.url = "github:numtide/flake-utils"; 5 + 6 + outputs = { self, nixpkgs, flake-utils }: 7 + flake-utils.lib.eachSystem flake-utils.lib.allSystems 8 + (system: 9 + let 10 + pkgs = nixpkgs.legacyPackages.${system}; 11 + selfPkgs = self.packages.${system}; 12 + 13 + subsetWoff2 = with pkgs; (src: { pname ? src.pname + "-subset", unicodes, extraArgs ? [] }: src.overrideAttrs (old: { 14 + inherit pname; 15 + 16 + passthru = { 17 + unicodeRanges = unicodes; 18 + }; 19 + 20 + nativeBuildInputs = (old.nativeBuildInputs or []) ++ (with python312Packages; [ fonttools brotli ]); 21 + postInstall = (old.postInstall or "") + '' 22 + for f in $out/share/fonts/woff2/*; do 23 + ${python312Packages.fonttools}/bin/fonttools subset "$f" \ 24 + --unicodes=${lib.escapeShellArg unicodes} \ 25 + ${lib.escapeShellArgs extraArgs} \ 26 + --flavor=woff2 --output-file="$f" 27 + done 28 + ''; 29 + })); 30 + in { 31 + packages.inter-woff2 = pkgs.inter.overrideAttrs (old: { 32 + pname = "inter-woff2"; 33 + installPhase = '' 34 + runHook preInstall 35 + mkdir -p $out/share/fonts/woff2 36 + cp web/InterVariable*.woff2 $out/share/fonts/woff2 37 + runHook postInstall 38 + ''; 39 + }); 40 + 41 + # lib.strings.concatStringsSep ", " packages.x86_64-linux.inter-fast.unicodeRanges 42 + # suboptimal the way it is atm. whatever 43 + packages.inter-fast = subsetWoff2 selfPkgs.inter-woff2 { 44 + pname = "inter-fast"; 45 + unicodes = [ 46 + # stolen from googel fonts and modified 47 + "U+0000-00FF" "U+0131" "U+0152-0153" "U+02BB-02BC" 48 + "U+02C6" "U+02DA" "U+02DC" "U+0304" "U+0308" "U+0329" 49 + "U+2000-206F" "U+20AC" "U+2122" "U+2191" "U+2193" 50 + "U+2212" "U+2215" "U+FEFF" "U+FFFD" "U+0394" "U+0398" 51 + "U+0104" "U+0106" "U+0118" "U+0141" "U+0143" "U+00D3" 52 + "U+015A" "U+0179" "U+017B" "U+0105" "U+0107" "U+0119" 53 + "U+0142" "U+0144" "U+00F3" "U+015B" "U+017A" "U+017C" 54 + ]; 55 + extraArgs = [ "--layout-features+=cv10,cv02,zero" ]; 56 + }; 57 + 58 + packages.website-fonts = pkgs.stdenvNoCC.mkDerivation { 59 + name = "website-fonts"; # i tried pname => attribute 'name' missing ?? 60 + 61 + phases = [ "installPhase" ]; # eh? 62 + 63 + installPhase = '' 64 + runHook preInstall 65 + 66 + mkdir -p $out 67 + 68 + # subset 69 + for f in ${selfPkgs.inter-fast}/share/fonts/woff2/*.woff2; do 70 + f_="''${f##*/}" 71 + cp "$f" "$out/''${f_%*.woff2}.fast.woff2" 72 + done 73 + # full 74 + for f in ${selfPkgs.inter-woff2}/share/fonts/woff2/*.woff2; do 75 + cp "$f" "$out" 76 + done 77 + 78 + runHook postInstall 79 + ''; 80 + }; 81 + 82 + packages.website = pkgs.stdenvNoCC.mkDerivation { 83 + name = "chfour-website"; 84 + 85 + src = ./src; 86 + 87 + phases = [ "installPhase" ]; 88 + 89 + installPhase = '' 90 + runHook preInstall 91 + 92 + mkdir -p $out 93 + 94 + cp -r $src/* $out/ 95 + ln -sf ${selfPkgs.website-fonts} $out/fonts 96 + 97 + runHook postInstall 98 + ''; 99 + }; 100 + } 101 + ); 102 + }
+29
src/discord.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8"> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 + <title>discord contact - chfour</title> 7 + <link rel="stylesheet" href="style.css"> 8 + <style> 9 + :root, body { height: 100vh; width: 100vw; margin: 0; } 10 + body { 11 + display: flex; 12 + text-align: center; 13 + } 14 + p { 15 + margin: auto; 16 + padding: 2em; 17 + } 18 + </style> 19 + </head> 20 + <body> 21 + <p> 22 + discord still hasn't implemented the advanced 23 + feature of "sharing one's profile via a link", 24 + so my discord username is: 25 + <span style="display: block; font-size: 2em; font-weight: bolder;">ch4</span> 26 + i have friend requests disabled, so contact me elsewhere first 27 + </p> 28 + </body> 29 + </html>
+44
src/index.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8"> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 + <title>website of chfour official website</title> 7 + <link rel="stylesheet" href="style.css"> 8 + <style> 9 + img { filter: drop-shadow(0 0 5px #ccc); } 10 + @media (prefers-color-scheme: dark) { 11 + img { filter: drop-shadow(0 0 5px #f2f2f277); } 12 + } 13 + :root { 14 + display: flex; 15 + align-items: flex-end; 16 + min-height: 100vh; 17 + } 18 + </style> 19 + </head> 20 + <body> 21 + <!--<header><h1>chfour</h1></header>--> 22 + <article> 23 + <img src="platinum_fop_45_o.svg" alt="" width="250" height="250" style="margin-block: 2em; max-width: 100%; height: auto;"> 24 + <p>from PCBs to webdev: jack of Too Many trades, master of none</p> 25 + <p>(linux stuff, nix, c, python, shell, html+css+js...)</p> 26 + <p>+ trains, very amateur photography, and radio</p> 27 + <p>high ambitions, low energy, hoarder of assorted junk</p> 28 + <p>exceptionally uncreative</p> 29 + <p>gender outage (any pronouns)</p> 30 + <p>furry, &Theta;&Delta; [platinum] fox</p> 31 + <p>18 years old and counting</p> 32 + <p>from Upper Silesia, Poland</p> 33 + <ul class="inline-list"> 34 + <li style="display: block;">known as <b>chfour</b></li> 35 + <li><a rel="me" href="https://wetdry.world/@chfour">fediverse</a></li> 36 + <li><a href="https://github.com/chfour">github</a></li> 37 + <li><a href="https://matrix.to/#/@chfour:eeep.ee">matrix</a></li> 38 + <li><a href="discord.html">discord</a></li> 39 + <li><a href="https://files.eeep.ee/">file dump</a></li> 40 + <li><a href="https://github.com/chfour/website3">website source</a></li> 41 + </ul> 42 + </article> 43 + </body> 44 + </html>
+2
src/platinum_fop_45_o.svg
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <svg version="1.1" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><g transform="matrix(.62342 -.62342 .62342 .62342 -1.8241 20.604)"><path d="m13.431 9.802c0.658 2.638-8.673 10.489-11.244 4.098-1.491-3.703-2.793-11.466-1.313-11.835 1.48-0.368 11.9 5.098 12.557 7.737z" fill="#303030"/><path d="m11.437 10.355c0.96 1.538-1.831 4.561-3.368 5.522-1.538 0.961-2.899-0.552-4.414-4.414-0.662-1.689-1.666-6.27-1.103-6.622 0.562-0.351 7.924 3.976 8.885 5.514z" fill="#666"/><path d="m22.557 9.802c-0.657 2.639 8.673 10.489 11.245 4.098 1.49-3.703 2.792-11.466 1.312-11.835-1.48-0.368-11.899 5.098-12.557 7.737z" fill="#303030"/><path d="m24.552 10.355c-0.96 1.538 1.831 4.561 3.368 5.522s2.898-0.552 4.413-4.414c0.662-1.688 1.666-6.269 1.104-6.621-0.563-0.352-7.924 3.975-8.885 5.513z" fill="#666"/><g><path d="m32.347 26.912c0-0.454-0.188-1.091-0.407-1.687 0.585 0.028 1.519 0.191 2.77 0.817-8e-3 -0.536-0.118-0.984-0.273-1.393 0.041 0.02 0.075 0.034 0.116 0.055-1.103-3.31-3.309-5.517-3.309-5.517h2.206c-2.331-4.663-4.965-8.015-8.075-9.559-1.39-0.873-3.688-1.338-7.373-1.339h-3e-3c-3.695 0-5.996 0.468-7.385 1.346-3.104 1.547-5.734 4.896-8.061 9.552h2.207s-2.207 2.206-3.311 5.517c0.03-0.015 0.055-0.025 0.084-0.04-0.201 0.392-0.307 0.847-0.282 1.377 1.263-0.632 2.217-0.792 2.813-0.818-0.189 0.513-0.343 1.044-0.386 1.475-0.123 0.371-0.191 0.812-0.135 1.343 3.207-1.457 4.707-1.249 6.457-0.374 1.213 3.623 4.206 6.333 8.001 6.333 3.793 0 6.746-2.794 7.958-6.416 1.458-1.25 3.708-0.875 6.416 0.416 0.066-0.414 0.036-0.773-0.036-1.093z" fill="#ccc"/><path d="m19.993 17.454c0 1.8541 1.0635 4.5587 4.6276 3.9593 2.407-0.781 8.681 0.454 9.9295 3.291-1.1055-3.311-3.3125-5.517-3.3125-5.517h2.207c-2.327-4.656-4.957-8.005-8.061-9.552-0.63799-0.37209-1.3562-0.66242-2.2077-0.87064-2.1724 2.3533-3.3111 5.2072-3.1829 8.6894zm-3.9888-1e-6c0 1.8541-1.0635 4.5587-4.6276 3.9593-2.407-0.781-8.681 0.454-9.9295 3.291 1.1055-3.311 3.3125-5.517 3.3125-5.517h-2.207c2.327-4.656 4.957-8.005 8.061-9.552 0.63799-0.37209 1.3562-0.66242 2.2077-0.87064 2.1724 2.3533 3.3111 5.2072 3.1829 8.6894z" fill="#999" stroke-width="8"/><path d="m31.243 23.601c6e-3 0 1.108 3e-3 3.309 1.103-1.249-2.839-7.525-4.07-9.931-3.291-1.171 1.954-1.281 5.003-3.383 6.622-1.741 1.431-4.713 1.458-6.479 0-2.345-1.924-2.559-5.813-3.382-6.622-2.407-0.781-8.681 0.454-9.931 3.291 2.201-1.101 3.304-1.103 3.309-1.103 0 1e-3 -1.103 2.208-1.103 3.311l1e-3 -1e-3v1e-3c2.398-1.573 5.116-2.271 7.429-0.452 1.666 7.921 12.293 7.545 13.833 0 2.314-1.818 5.03-1.122 7.429 0.452v-1e-3l1e-3 1e-3c2e-3 -1.103-1.101-3.311-1.102-3.311z" fill="#f2f2f2"/><path d="m11 17s0-1.5 1.5-1.5 1.5 1.5 1.5 1.5v1.5s0 1.5-1.5 1.5-1.5-1.5-1.5-1.5zm11 0s0-1.5 1.5-1.5 1.5 1.5 1.5 1.5v1.5s0 1.5-1.5 1.5-1.5-1.5-1.5-1.5zm-7.061 10.808c-1.021 0.208 2.041 3.968 3.062 3.968 1.02 0 4.082-3.76 3.062-3.968-1.021-0.208-5.103-0.208-6.124 0z" fill="#272b2b"/></g></g><metadata><rdf:RDF><cc:Work rdf:about=""><dc:creator><cc:Agent><dc:title>chfour</dc:title></cc:Agent></dc:creator><cc:license rdf:resource="http://creativecommons.org/licenses/by/4.0/"/><dc:source>https://github.com/jdecked/twemoji/blob/main/assets/svg/1f98a.svg</dc:source></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by/4.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/><cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/></cc:License></rdf:RDF></metadata></svg>
+54
src/style.css
··· 1 + @font-face { 2 + font-family: 'Inter'; 3 + font-style: normal; 4 + font-weight: 100 900; 5 + font-display: block; 6 + src: url(fonts/InterVariable.fast.woff2) format('woff2'); 7 + font-feature-settings: "cv10", "cv02", "zero"; 8 + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0394, U+0398, U+0104, U+0106, U+0118, U+0141, U+0143, U+00D3, U+015A, U+0179, U+017B, U+0105, U+0107, U+0119, U+0142, U+0144, U+00F3, U+015B, U+017A, U+017C; 9 + } 10 + @font-face { 11 + font-family: 'Inter'; 12 + font-style: italic; 13 + font-weight: 100 900; 14 + font-display: block; 15 + src: url(fonts/InterVariable-Italic.fast.woff2) format('woff2'); 16 + font-feature-settings: "cv10", "cv02", "zero"; 17 + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0394, U+0398, U+0104, U+0106, U+0118, U+0141, U+0143, U+00D3, U+015A, U+0179, U+017B, U+0105, U+0107, U+0119, U+0142, U+0144, U+00F3, U+015B, U+017A, U+017C; 18 + } 19 + /* todo: non-fast variants lol */ 20 + 21 + body { 22 + background-color: #f2f2f2; 23 + color: black; 24 + font-family: 'Inter', sans-serif; 25 + font-optical-sizing: auto; 26 + } 27 + 28 + article { 29 + /* max-width: 30em; */ 30 + margin: 3rem; 31 + } 32 + 33 + a { color: #7d29e2; } 34 + a:visited { color: #a800ad; } 35 + 36 + @media (prefers-color-scheme: dark) { 37 + body { 38 + background-color: #1a1a1a; 39 + color: #f2f2f2; 40 + } 41 + a { color: #aaf; } 42 + a:visited { color: #fbf; } 43 + } 44 + 45 + img { display: block; } 46 + 47 + .inline-list { 48 + list-style-type: none; 49 + padding-left: 0; 50 + } 51 + .inline-list > * { 52 + display: inline; 53 + white-space: nowrap; 54 + }