about summary refs log tree commit diff
path: root/users/glittershark/gws.fyi
diff options
context:
space:
mode:
Diffstat (limited to 'users/glittershark/gws.fyi')
-rw-r--r--users/glittershark/gws.fyi/.envrc1
-rw-r--r--users/glittershark/gws.fyi/.gitignore2
-rw-r--r--users/glittershark/gws.fyi/Makefile30
-rw-r--r--users/glittershark/gws.fyi/config.el6
-rw-r--r--users/glittershark/gws.fyi/default.nix21
-rw-r--r--users/glittershark/gws.fyi/index.org22
-rw-r--r--users/glittershark/gws.fyi/orgExportHTML.nix54
-rw-r--r--users/glittershark/gws.fyi/shell.nix9
-rw-r--r--users/glittershark/gws.fyi/site.nix11
9 files changed, 156 insertions, 0 deletions
diff --git a/users/glittershark/gws.fyi/.envrc b/users/glittershark/gws.fyi/.envrc
new file mode 100644
index 000000000000..be81feddb1a5
--- /dev/null
+++ b/users/glittershark/gws.fyi/.envrc
@@ -0,0 +1 @@
+eval "$(lorri direnv)"
\ No newline at end of file
diff --git a/users/glittershark/gws.fyi/.gitignore b/users/glittershark/gws.fyi/.gitignore
new file mode 100644
index 000000000000..7783c2834f92
--- /dev/null
+++ b/users/glittershark/gws.fyi/.gitignore
@@ -0,0 +1,2 @@
+result
+letsencrypt
diff --git a/users/glittershark/gws.fyi/Makefile b/users/glittershark/gws.fyi/Makefile
new file mode 100644
index 000000000000..83b60ef9bb52
--- /dev/null
+++ b/users/glittershark/gws.fyi/Makefile
@@ -0,0 +1,30 @@
+.PHONY: deploy
+
+deploy:
+	@$(shell nix-build `git rev-parse --show-toplevel` -A 'users.glittershark."gws.fyi"')
+
+renew:
+	@echo Renewing...
+	@certbot certonly \
+		--manual \
+		--domain www.gws.fyi \
+		--preferred-challenges dns \
+		--server https://acme-v02.api.letsencrypt.org/directory \
+		--agree-tos \
+		--work-dir $(shell pwd)/letsencrypt/work \
+		--logs-dir $(shell pwd)/letsencrypt/logs \
+		--config-dir $(shell pwd)/letsencrypt/config
+	@echo "Reimporting certificate"
+	@aws acm import-certificate \
+	    --certificate file://letsencrypt/config/live/www.gws.fyi/cert.pem \
+	    --certificate-chain file://letsencrypt/config/live/www.gws.fyi/fullchain.pem \
+	    --private-key file://letsencrypt/config/live/www.gws.fyi/privkey.pem \
+	    --certificate-arn arn:aws:acm:us-east-1:797089351721:certificate/628e54f3-55f9-49c0-811a-eba516b68e30 \
+		--region us-east-1
+
+backup:
+	@tarsnap -cf $(shell uname -n)-letsencrypt-$(shell date +%Y-%m-%d_%H-%M-%S) \
+		letsencrypt/
+
+open:
+	$$BROWSER "https://www.gws.fyi"
diff --git a/users/glittershark/gws.fyi/config.el b/users/glittershark/gws.fyi/config.el
new file mode 100644
index 000000000000..b05d897d3ddb
--- /dev/null
+++ b/users/glittershark/gws.fyi/config.el
@@ -0,0 +1,6 @@
+(require 'org)
+
+(setq org-html-postamble nil)
+
+(defadvice org-export-grab-title-from-buffer
+    (around org-export-grab-title-from-buffer-disable activate))
diff --git a/users/glittershark/gws.fyi/default.nix b/users/glittershark/gws.fyi/default.nix
new file mode 100644
index 000000000000..6ec1262f67be
--- /dev/null
+++ b/users/glittershark/gws.fyi/default.nix
@@ -0,0 +1,21 @@
+args@{ pkgs, ... }:
+with pkgs;
+let
+  site = import ./site.nix args;
+  resume = import ../resume args;
+  bucket = "s3://gws.fyi";
+  distributionID = "E2ST43JNBH8C64";
+  website =
+    runCommand "gws.fyi" { } ''
+      mkdir -p $out
+      cp ${site.index} $out/index.html
+      cp ${resume} $out/resume.pdf
+    '';
+
+in writeShellScript "deploy.sh" ''
+  ${awscli}/bin/aws s3 sync ${website}/ ${bucket}
+  ${awscli}/bin/aws cloudfront create-invalidation \
+    --distribution-id "${distributionID}" \
+    --paths "/*"
+  echo "Deployed to http://gws.fyi"
+''
diff --git a/users/glittershark/gws.fyi/index.org b/users/glittershark/gws.fyi/index.org
new file mode 100644
index 000000000000..a9413a69ba70
--- /dev/null
+++ b/users/glittershark/gws.fyi/index.org
@@ -0,0 +1,22 @@
+#+OPTIONS: title:nil
+#+HTML_HEAD: <title>griffin smith</title>
+
+my name is griffin ward smith (aka grfn, glittershark, gws) and i'm a software
+engineer and musician
+
+code
+- [[https://github.com/glittershark/][github]]
+- [[https://cs.tvl.fyi/depot/-/tree/users/glittershark][my directory in the tvl monorepo]]
+
+music
+- https://sacrosanct.bandcamp.com/, a post-rock project with a [[https://bandcamp.com/h34rken][friend of mine]]
+- [[https://soundcloud.com/missingggg][my current soundcloud]], releasing instrumental hip-hop under the name *missing*
+- you can also find a log of all the music I listen to [[https://www.last.fm/user/wildgriffin45][on last.fm]]
+
+contact
+
+- [[mailto:web@gws.fyi][web@gws.fyi]]
+- [[https://twitter.com/glittershark1][twitter]]
+- https://keybase.io/glittershark
+- grfn on freenode
+- [[http://keys.gnupg.net/pks/lookup?op=get&search=0x44EF5B5E861C09A7][gpg key: 0F11A989879E8BBBFDC1E23644EF5B5E861C09A7]]
diff --git a/users/glittershark/gws.fyi/orgExportHTML.nix b/users/glittershark/gws.fyi/orgExportHTML.nix
new file mode 100644
index 000000000000..ad5a24795826
--- /dev/null
+++ b/users/glittershark/gws.fyi/orgExportHTML.nix
@@ -0,0 +1,54 @@
+{ pkgs, ... }:
+
+with pkgs;
+with lib;
+
+let
+
+  emacsWithPackages = (pkgs.emacsPackagesGen pkgs.emacs27).emacsWithPackages;
+
+  emacs = emacsWithPackages (p: with p; [
+    org
+  ]);
+
+in
+
+opts:
+
+let
+  src = if isAttrs opts then opts.src else opts;
+  headline = if isAttrs opts then opts.headline else null;
+
+  bn = builtins.baseNameOf src;
+  filename = elemAt (splitString "." bn) 0;
+
+  outName =
+    if isNull headline
+    then
+      let bn = builtins.baseNameOf src;
+          filename = elemAt (splitString "." bn) 0;
+      in filename + ".html"
+    else "${filename}-${replaceStrings [" "] ["-"] filename}.html";
+
+  escapeDoubleQuotes = replaceStrings ["\""] ["\\\""];
+
+  navToHeadline = optionalString (! isNull headline) ''
+    (search-forward "${escapeDoubleQuotes headline}")
+    (org-narrow-to-subtree)
+  '';
+
+in
+
+runCommand outName {} ''
+  cp ${src} file.org
+  echo "${emacs}/bin/emacs --batch"
+  ${emacs}/bin/emacs --batch \
+    --load ${./config.el} \
+    --visit file.org \
+    --eval "(progn
+      ${escapeDoubleQuotes navToHeadline}
+      (org-html-export-to-html))" \
+    --kill
+  substitute file.html $out \
+    --replace '<title>&lrm;</title>' ""
+''
diff --git a/users/glittershark/gws.fyi/shell.nix b/users/glittershark/gws.fyi/shell.nix
new file mode 100644
index 000000000000..846bdb6677a3
--- /dev/null
+++ b/users/glittershark/gws.fyi/shell.nix
@@ -0,0 +1,9 @@
+with import <nixpkgs> { config.allowUnfree = true; };
+mkShell {
+  buildInputs = [
+    awscli
+    gnumake
+    letsencrypt
+    tarsnap
+  ];
+}
diff --git a/users/glittershark/gws.fyi/site.nix b/users/glittershark/gws.fyi/site.nix
new file mode 100644
index 000000000000..a74bee0bef0a
--- /dev/null
+++ b/users/glittershark/gws.fyi/site.nix
@@ -0,0 +1,11 @@
+args@{ pkgs ? import <nixpkgs> {}, ... }:
+
+let
+
+  orgExportHTML = import ./orgExportHTML.nix args;
+
+in
+
+{
+  index = orgExportHTML ./index.org;
+}