Skip to content
Research wiki
Haskell CSS JavaScript Shell HTML Python
Branch: master
Clone or download

README.md

Running on macOS

brew install s3cmd
brew install tidy-html5
brew install imagemagick
brew install exiftool
npm i -g mathjax-node-page

#
# Setting up Haskell
#

# https://github.com/haskell/ghcup

# complete bootstrap
curl https://gitlab.haskell.org/haskell/ghcup/raw/master/bootstrap-haskell -sSf | sh

# prepare your environment
. "$HOME/.ghcup/env"
echo '. $HOME/.ghcup/env' >> "$HOME/.bash_profile"

#
# Setting up the website
#

git clone https://github.com/shawwn/wiki ~/wiki
cd ~/wiki

# edit env.sh and fill in your own name, website URL, and S3 bucket

# build the project
cabal v2-build

# you can generate the site with this, or by running ./build.sh (see Deployment section below)
cabal v2-run wiki -- build

Notes on setting up a fork of gwern.net

#
# Setting up the VM
#

# create a Digital Ocean Ubuntu droplet (the $5/mo plan is fine) and ssh into it

# install tmux
apt-get install tmux
tmux new -s wiki

# add 10GB of swap space
sudo fallocate -l 10G /swapfile
sudo dd if=/dev/zero of=/swapfile bs=10240 count=1048576
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
sudo free -h
echo 10 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

#
# Setting up Haskell
#

# install haskell prereqs
sudo apt-get update
sudo apt-get install build-essential curl libgmp-dev libffi-dev libncurses-dev -y

# https://github.com/haskell/ghcup

# complete bootstrap
curl https://gitlab.haskell.org/haskell/ghcup/raw/master/bootstrap-haskell -sSf | sh

# prepare your environment
. "$HOME/.ghcup/env"
echo '. $HOME/.ghcup/env' >> "$HOME/.bashrc" # or similar


#
# Setting up the website
#

git clone https://github.com/shawwn/wiki ~/wiki
cd ~/wiki

# edit env.sh and fill in your own name, website URL, and S3 bucket

# zlib headers are required
sudo apt-get install zlib1g-dev

# build the project
cabal v2-build

# you can generate the site with this, or by running ./build.sh (see Deployment section below)
cabal v2-run wiki -- build

Notes on what I did to create wiki.cabal (skip this section)

cabal init -n --is-executable
cabal v2-run

echo dist-newstyle >> .gitignore
git add .gitignore
git commit -m "cabal init -n --is-executable && cabal v2-run"

# required packages:
# pandoc missingh happy pretty-show tagsoup arxiv aeson hakyll

# Add the following to wiki.cabal:
# base >=4.12 && <4.13, bytestring >=0.10 && <0.11, containers >=0.6 && <0.7, text >=1.2 && <1.3, directory >=1.3 && <1.4, pandoc >=2.7.2 && <= 2.7.3, MissingH ==1.4.1.0, pretty-show ==1.9.5, aeson ==1.4.2.0, tagsoup == 0.14.7, arxiv == 0.0.1, hakyll == 4.12.5.2, filestore ==0.6.3.4

Notes on deployment

# install ripgrep (optional)
snap install ripgrep --classic

# install required prerequisites
sudo apt-get install parallel
sudo apt-get install npm
npm i -g mathjax-node-page
sudo apt-get install tidy
sudo apt-get install imagemagick

# - create s3 bucket. I used US East (Ohio)
# - uncheck "Block all public access"

# - go to top right -> "My Security Credentials" -> Access Keys (access key ID and secret access key)
# - create a new access key

# install s3cmd
sudo apt-get install s3cmd

# https://kunallillaney.github.io/s3cmd-tutorial/
s3cmd --configure

# paste your access key and secret key

# add public buket policy

{"Version": "2008-10-17",
"Statement": [{"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.shawwn.com/*"
}]}

# Turn on S3 static site hosting on your bucket
# https://docs.aws.amazon.com/AmazonS3/latest/user-guide/static-website-hosting.html

# Add a cloudflare CNAME entry to your bucket
# CNAME www www.shawwn.com.s3-website.us-east-2.amazonaws.com 

# Update all pages with your own name and url
rg 'Shawn' -i

# Create a google analytics account

# Change google analytics codes. Search for "UA-" and replace with your own code
rg UA-

# Sign up at https://tinyletter.com/

# Create a subreddit

# Create a patreon

# Create a disqus account

# Run ./sync.sh to build and deploy your site
You can’t perform that action at this time.