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
-
- 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
-
- 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 .
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
- © 2023 Joshua Potter
-
-
-
-
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"
-}