diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 0000000..f154eb2 --- /dev/null +++ b/.bundle/config @@ -0,0 +1,2 @@ +--- +BUNDLE_FORCE_RUBY_PLATFORM: "true" diff --git a/.githooks/pre-commit b/.githooks/pre-commit deleted file mode 100755 index 749f5d3..0000000 --- a/.githooks/pre-commit +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -set -e - -STAGED=$( - git --no-pager diff --name-only --no-color --cached --diff-filter=d | - # Remove quotations used to surrounding filenames with special characters. - sed -e "s/^\"//" -e "s/\"$//g" -) - -TARGETS=() -while IFS= read -r FILENAME -do - if [[ "$FILENAME" =~ .*\.jsx?$ ]] || [[ "$FILENAME" == .*\.tsx?$ ]]; then - TARGETS+=("${FILENAME}") - fi -done <<< "$STAGED" - -if (( ${#TARGETS[@]} )); then - prettier --write "${TARGETS[@]}" - git add "${TARGETS[@]}" -fi diff --git a/.gitignore b/.gitignore index 2ae6a44..e99b3ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,8 @@ # Directory used by `direnv` to hold `use flake`-generated profiles. /.direnv/ -# The directory containing all build outputs. -/dist/ - # A symlink produced by default when running `nix build`. /result -# The NodeJS dependency directory. -/node_modules/ +# The jekyll-produced static bundle. +_site/ diff --git a/404.html b/404.html new file mode 100644 index 0000000..086a5c9 --- /dev/null +++ b/404.html @@ -0,0 +1,25 @@ +--- +permalink: /404.html +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..e82fe9b --- /dev/null +++ b/Gemfile @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "jekyll", "~> 4.3.2" +gem "lagrange", "~> 4.0" + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..15765f8 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,87 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + colorator (1.1.0) + concurrent-ruby (1.2.2) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.16.3) + forwardable-extended (2.6.0) + google-protobuf (3.25.1) + http_parser.rb (0.8.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jekyll (4.3.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-paginate (1.1.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + lagrange (4.0.0) + jekyll (~> 4.2) + jekyll-feed (~> 0.6) + jekyll-paginate (~> 1.1) + jekyll-seo-tag (~> 2.6) + jekyll-sitemap (~> 1.3) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.4) + rake (13.1.0) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.6) + rouge (4.2.0) + safe_yaml (1.0.5) + sass-embedded (1.69.5) + google-protobuf (~> 3.23) + rake (>= 13.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.5.0) + webrick (1.8.1) + +PLATFORMS + ruby + +DEPENDENCIES + jekyll (~> 4.3.2) + jekyll-feed (~> 0.12) + lagrange (~> 4.0) + +BUNDLED WITH + 2.4.22 diff --git a/README.md b/README.md index 6d519b4..b8dffa9 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,29 @@ -# Portfolio +# Jekyll Flake Template -This is a single-page springboard for my various links/projects/services. - -## Quickstart - -[direnv](https://direnv.net/) can be used to launch a dev shell upon entering -this directory (refer to `.envrc`). Otherwise run via: +This is a template for bootstrapping a [Jekyll](https://jekyllrb.com/)-based +project (version 4.3.2) with the [minima](https://github.com/jekyll/minima) +theme (version 2.5.1). [direnv](https://direnv.net/) can be used to launch a +dev shell upon entering this directory (refer to `.envrc`). Otherwise run via: ```bash $ nix develop ``` - -## Language Server - -The [typescript-language-server](https://github.com/typescript-language-server/typescript-language-server) -(version 4.1.2) is included in this flake. - -## Formatting - -Formatting depends on [prettier](https://prettier.io/) (version 3.1.0). A -`pre-commit` hook is included in `.githooks` that can be used to format all -`*.jsx?` and `*.tsx?` files prior to commit. Install via: -```bash -$ git config --local core.hooksPath .githooks/ +Start the server by running: ``` -If running [direnv](https://direnv.net/), this hook is installed automatically -when entering the directory. +$ jekyll serve [--watch] +``` + +## Building + +Dependencies are managed using [bundix](https://github.com/nix-community/bundix). +If you make any changes to the `Gemfile`, run the following: +```bash +$ bundix -l +``` +This will update the `Gemfile.lock` and `gemset.nix` files. Afterward you can +run: +```bash +$ nix build +``` +Note that we need the `.bundle/config` file to workaround issues bundix has with +pre-built, platform-specific gems. Refer to +[PR #68](https://github.com/nix-community/bundix/pull/68) for more details. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..694fd77 --- /dev/null +++ b/_config.yml @@ -0,0 +1,48 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: Joshua Potter +description: My portfolio +github_username: jrpotter + +# Build settings +theme: lagrange +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/about.markdown b/about.markdown new file mode 100644 index 0000000..8b4e0b2 --- /dev/null +++ b/about.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: About +permalink: /about/ +--- + +This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) + +You can find the source code for Minima at GitHub: +[jekyll][jekyll-organization] / +[minima](https://github.com/jekyll/minima) + +You can find the source code for Jekyll at GitHub: +[jekyll][jekyll-organization] / +[jekyll](https://github.com/jekyll/jekyll) + + +[jekyll-organization]: https://github.com/jekyll diff --git a/build.sh b/build.sh deleted file mode 100755 index 371fe4d..0000000 --- a/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -tailwindcss -i ./src/main.css -o ./dist/main.css -cp ./src/index.html ./dist/index.html -cp -a ./imgs ./dist diff --git a/flake.lock b/flake.lock index fdd5e26..62fd956 100644 --- a/flake.lock +++ b/flake.lock @@ -19,11 +19,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -34,11 +34,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701253981, - "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "lastModified": 1702312524, + "narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "rev": "a9bf124c46ef298113270b1f84a164865987a91c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 86cf8ba..ce3a8c7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,11 +1,11 @@ { description = '' - An opinionated nodejs flake. + An opinionated jekyll flake. To generate a copy of this template elsewhere, install [bootstrap](https://github.com/jrpotter/bootstrap) and run: ```bash - $ bootstrap nodejs + $ bootstrap jekyll ``` ''; @@ -19,28 +19,20 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; + gems = pkgs.bundlerEnv { + name = "portfolio-gems"; + gemdir = ./.; + ruby = pkgs.ruby_3_2; + }; in { packages = { - app = pkgs.buildNpmPackage { - pname = "portfolio"; - version = "0.1.0"; + app = pkgs.stdenv.mkDerivation { + name = "portfolio"; + buildInputs = [ gems gems.wrappedRuby ]; src = ./.; - npmDepsHash = "sha256-Vx9NOJfk4sF2MMy/x0mJ0SINqWgx5oKmc8XOhi2vu6I"; - forceEmptyCache = true; - - buildPhase = "bash ${./build.sh}"; - - # Needed to properly invoke npm run build. - nativeBuildInputs = with pkgs; [ - nodePackages.tailwindcss - typescript - ]; - - installPhase = '' - mkdir $out - cp -a dist/* $out - ''; + version = "0.1.0"; + installPhase = "jekyll b -d $out"; }; default = self.packages.${system}.app; @@ -48,13 +40,11 @@ devShells.default = pkgs.mkShell { packages = with pkgs; [ - nodePackages.prettier - nodePackages.typescript-language-server - nodePackages.tailwindcss - nodejs - prefetch-npm-deps - typescript + bundix + gems + gems.wrappedRuby ]; }; - }); + } + ); } diff --git a/gemset.nix b/gemset.nix new file mode 100644 index 0000000..c8f0b96 --- /dev/null +++ b/gemset.nix @@ -0,0 +1,369 @@ +{ + addressable = { + dependencies = ["public_suffix"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0irbdwkkjwzajq1ip6ba46q49sxnrl2cw7ddkdhsfhb6aprnm3vr"; + type = "gem"; + }; + version = "2.8.6"; + }; + colorator = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; + type = "gem"; + }; + version = "1.1.0"; + }; + concurrent-ruby = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q"; + type = "gem"; + }; + version = "1.2.2"; + }; + em-websocket = { + dependencies = ["eventmachine" "http_parser.rb"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1a66b0kjk6jx7pai9gc7i27zd0a128gy73nmas98gjz6wjyr4spm"; + type = "gem"; + }; + version = "0.5.3"; + }; + eventmachine = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"; + type = "gem"; + }; + version = "1.2.7"; + }; + ffi = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd"; + type = "gem"; + }; + version = "1.16.3"; + }; + forwardable-extended = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; + type = "gem"; + }; + version = "2.6.0"; + }; + google-protobuf = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18yiqq657lbqbrbdfbxfspdrkiynd0wf49l3cgdw939z36cy0h77"; + type = "gem"; + }; + version = "3.25.1"; + }; + "http_parser.rb" = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gj4fmls0mf52dlr928gaq0c0cb0m3aqa9kaa6l0ikl2zbqk42as"; + type = "gem"; + }; + version = "0.8.0"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx"; + type = "gem"; + }; + version = "1.14.1"; + }; + jekyll = { + dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wbp9xjnjv832ksqs816napy6amp5fh8v4wbrxlpxvgakqz6scsx"; + type = "gem"; + }; + version = "4.3.2"; + }; + jekyll-feed = { + dependencies = ["jekyll"]; + groups = ["jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hzwmjrxi57x68i7jx5rxi8qlcbqcbg3di55wywrp53pr0bap6k8"; + type = "gem"; + }; + version = "0.17.0"; + }; + jekyll-paginate = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; + type = "gem"; + }; + version = "1.1.0"; + }; + jekyll-sass-converter = { + dependencies = ["sass-embedded"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00n9v19h0qgjijygfdkdh2gwpmdlz49nw1mqk6fnp43f317ngrz2"; + type = "gem"; + }; + version = "3.0.0"; + }; + jekyll-seo-tag = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0638mqhqynghnlnaz0xi1kvnv53wkggaq94flfzlxwandn8x2biz"; + type = "gem"; + }; + version = "2.8.0"; + }; + jekyll-sitemap = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"; + type = "gem"; + }; + version = "1.4.0"; + }; + jekyll-watch = { + dependencies = ["listen"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w"; + type = "gem"; + }; + version = "2.2.1"; + }; + kramdown = { + dependencies = ["rexml"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ic14hdcqxn821dvzki99zhmcy130yhv5fqfffkcf87asv5mnbmn"; + type = "gem"; + }; + version = "2.4.0"; + }; + kramdown-parser-gfm = { + dependencies = ["kramdown"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"; + type = "gem"; + }; + version = "1.1.0"; + }; + lagrange = { + dependencies = ["jekyll" "jekyll-feed" "jekyll-paginate" "jekyll-seo-tag" "jekyll-sitemap"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x94cw219d8pwqmsm9dp9swvsfsxpdph1d4sninbr9anc83yndh1"; + type = "gem"; + }; + version = "4.0.0"; + }; + liquid = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1czxv2i1gv3k7hxnrgfjb0z8khz74l4pmfwd70c7kr25l2qypksg"; + type = "gem"; + }; + version = "4.0.4"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13rgkfar8pp31z1aamxf5y7cfq88wv6rxxcwy7cmm177qq508ycn"; + type = "gem"; + }; + version = "3.8.0"; + }; + mercenary = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"; + type = "gem"; + }; + version = "0.4.0"; + }; + pathutil = { + dependencies = ["forwardable-extended"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"; + type = "gem"; + }; + version = "0.16.2"; + }; + public_suffix = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m"; + type = "gem"; + }; + version = "5.0.4"; + }; + rake = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy"; + type = "gem"; + }; + version = "13.1.0"; + }; + rb-fsevent = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423"; + type = "gem"; + }; + version = "0.11.2"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; + type = "gem"; + }; + version = "0.10.1"; + }; + rexml = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0"; + type = "gem"; + }; + version = "3.2.6"; + }; + rouge = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0"; + type = "gem"; + }; + version = "4.2.0"; + }; + safe_yaml = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56"; + type = "gem"; + }; + version = "1.0.5"; + }; + sass-embedded = { + dependencies = ["google-protobuf" "rake"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10f04wvgca22lynvy4pycabkf55p4jf3a3bhmmscjmxv89g9khpg"; + type = "gem"; + }; + version = "1.69.5"; + }; + terminal-table = { + dependencies = ["unicode-display_width"]; + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr"; + type = "gem"; + }; + version = "3.0.2"; + }; + unicode-display_width = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky"; + type = "gem"; + }; + version = "2.5.0"; + }; + webrick = { + groups = ["default" "jekyll_plugins"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; + type = "gem"; + }; + version = "1.8.1"; + }; +} diff --git a/imgs/boardwise.svg b/imgs/boardwise.svg deleted file mode 100644 index e2fa1bc..0000000 --- a/imgs/boardwise.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/imgs/favicon.ico b/imgs/favicon.ico deleted file mode 100644 index d8e2a52..0000000 Binary files a/imgs/favicon.ico and /dev/null differ diff --git a/imgs/github.svg b/imgs/github.svg deleted file mode 100644 index d96a675..0000000 --- a/imgs/github.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/imgs/jekyll.png b/imgs/jekyll.png deleted file mode 100644 index 5e81865..0000000 Binary files a/imgs/jekyll.png and /dev/null differ diff --git a/imgs/lean.png b/imgs/lean.png deleted file mode 100644 index d9f2822..0000000 Binary files a/imgs/lean.png and /dev/null differ diff --git a/imgs/linkedin.svg b/imgs/linkedin.svg deleted file mode 100644 index 5b067bf..0000000 --- a/imgs/linkedin.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/imgs/zotero.svg b/imgs/zotero.svg deleted file mode 100644 index ecb48a1..0000000 --- a/imgs/zotero.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/index.markdown b/index.markdown new file mode 100644 index 0000000..0671507 --- /dev/null +++ b/index.markdown @@ -0,0 +1,6 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +layout: home +--- diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f81657f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "portfolio", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "portfolio", - "version": "0.1.0", - "license": "ISC" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 768e6eb..0000000 --- a/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "portfolio", - "version": "0.1.0", - "description": "", - "main": "main.js", - "scripts": { - "build": "./build.sh", - "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC" -} diff --git a/prettier.config.cjs b/prettier.config.cjs deleted file mode 100644 index ee2e235..0000000 --- a/prettier.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('prettier').Options} */ -module.exports = { - arrowParens: "always", - semi: false, - tabWidth: 2, - trailingComma: "es5", -} diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 203d394..0000000 --- a/src/index.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - Portfolio • Joshua Potter - - - -
-
- -

Joshua Potter

-
-
- - - - - - - - - -
-
-
-
-
-

Hosting

-

- The following websites are served from - NixOS - machines hosted on - Digital Ocean. Configuration files for each of my machines can be found - here. If interested in starting a similar hosting solution, consider - getting a $200 credit using my - referral link. -

-
-
- - blog - -
- Blog -

- I occasionally write about (usually) technical concepts in my - blog. Originally powered by Github Pages, I've since moved the - Jekyll-based - project to a self-hosting solution. Theming is provided by - Chirpy. -

-
-
-
- - bookshelf - -
- Bookshelf -

- A collection of books I am actively studying. Usually mathematics - or computer-science based. I aim to prove concepts as I encounter - them using the - Lean - interactive theorem prover. All proofs are also available in - LaTeX. -

-
-
-
- - boardwise - -
- BoardWise -

- A - Phoenix- and - React-based - project that provides an interface for finding chess coaches. This - serves as an alternative to those found on - Lichess - and - Chess.com. - Based on the - Tailwind Studio - theme. -

-
-
-
-
-

Projects

-
-
- Bootstrap -

- A C-based CLI for initializing projects in a flexible but - deterministic way. Originally motivated to serve as a better - alternative to - Nix flake templates, bootstrap allows you to provide different - parameters to custom initialization scripts akin to - npm init, django-admin startproject, - etc. -

-
-
- Anki Synonyms -

- An - Anki - plugin for specifying synonyms within flashcard question and - answer prompts. -

-
-
- Homesync -

- An experimental Rust-based project for automatically syncing files - scross your desktop to a git repository. Allows upstream and - downstream syncing with a single command, without any need to copy - files manually to and from a git repository. Separately, a daemon - can be spawned that watches files for changes and pushes/pulls - them as they happen. -

-
-
-
-
- - - diff --git a/src/main.css b/src/main.css deleted file mode 100644 index 5bf273f..0000000 --- a/src/main.css +++ /dev/null @@ -1,15 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -a { - text-decoration: underline; -} - -a:hover { - color: #0056b2; -} - -.link:hover { - filter: invert(19%) sepia(98%) saturate(2006%) hue-rotate(198deg) brightness(98%) contrast(101%); -} diff --git a/tailwind.config.cjs b/tailwind.config.cjs deleted file mode 100644 index 932f2d8..0000000 --- a/tailwind.config.cjs +++ /dev/null @@ -1,14 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["src/**/*.{html,ts}"], - theme: { - extend: { - colors: { - primary: "white", - secondary: "#f6f8fa", - }, - }, - }, - plugins: [], -} - diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index c027276..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // Visit https://aka.ms/tsconfig to read more about this file. - "compilerOptions": { - "target": "es2016", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "outDir": "dist" - }, - "include": ["src"], - "$schema": "https://json.schemastore.org/tsconfig" -}