diff --git a/Installation/Windows.md b/Installation/Windows.md new file mode 100644 index 0000000..a2a6db2 --- /dev/null +++ b/Installation/Windows.md @@ -0,0 +1,193 @@ +How to Install the HoTT Game on Windows +======================================= + +## Prerequisites + +MUST USE POWERSHELL AS ADMIN +- chocolatey (this shld be easy) +- Via chocolatey + - `choco install ghc` + - `choco install cabal` +- via cabal + - `cabal install happy` + - `cabal install alex` + +## The Damned Paths + +Something something need to add new system environment variables, +need to ask Samuel again. + +## Doom Emacs + +IN POWERSHELL LOCAL TO USER + +- Prerequisites + ``` + choco install git emacs ripgrep + choco install fd llvm + ``` +- Doom Emacs itself + ``` + git clone https://github.com/hlissner/doom-emacs ~/.emacs.d + ~/.emacs.d/bin/doom install + ``` + **Icons will be missing for windows sadly** + +## Development Version of Agda + +POWERSHALL IN LOCAL +- Directly clone the repo for development version. + _You can choose where to put this_. + ``` + git clone https://github.com/agda/agda.git + ``` +- We need to install `make` for windows. Easiest via cabal. + ``` + cabal install make + ``` +- Go into folder of agda repo then do + ``` + cabal update + make install + ``` +- Agda should be finished. Use `agda` in powershell to check version. + +Now agda-mode in Doom Emacs. +- to install agda2-mode. + ``` + M-x package-install + ``` +- In `init.el`, uncomment `agda` in `lang`. +- `doom sync` to update. Then `SPC-q-R` to restart. + +To test things, make a `test.agda` file anywhere you'd like. +- Using Doom Emacs, open `test.agda`. +- Type in + ```agda + open import Agda.Builtin.Nat + ``` +- Use `C-c C-d` then enter `Nat`. + The output in the agda info window should be `Set`. + +Congratulations, you now have Agda and +can use emacs bindings for Agda. +However, you have nothing more than the +builtin types. + +## The Cubical Library + +The HoTT Game currently requires the `cubical-0.3` library. +We walk through _a_ installation of the `cubical-0.3` library. +See the [Agda documentation](https://agda.readthedocs.io/en/latest/tools/package-system.html) +for more about libraries. + +- Go to [here](https://github.com/agda/cubical/releases). + Under 'version 0.3', + download the 'Source Code' file in either formats `zip` or `tar.gz`. +- Open the 'Source Code' file. + It should turn into a folder which contains a folder called + 'cubical'. +- Rename 'cubical' to 'cubical-0.3'. + Inside it, there should be a `cubical.agda-lib` file + with contents + ``` + name: cubical-0.3 + include: . + depend: + flags: --cubical --no-import-sorts + ``` + This is the file that tells Agda "this is a library" when + Agda looks into this folder. + You can place 'cubical' anywhere you like. + For the sake of this guide, + let's say you put it in a place so that + the path is `LOCATION/cubical-0.3`. + +Now we need to tell Agda this 'cubical-0.3' library exists, +so that it will look for it when an Agda file uses code from it. + +- Open Powershell locally and do + ``` + agda -l fjdsk Dummy.agda + ``` +- Assuming you don't already have an Agda library called `fjdsk`, + you should see an error message of the form + ``` + Library 'fjdsk' not found. + Add the path to its .agda-lib file to + 'BLAHBLAHBLAH/libraries' + to install. + Installed libraries: + none + ``` + The `BLAHBLAHBLAH/libraries` is where we tell Agda of + the location of libraries. + For Windows, it should look like + ``` + C:\Users\USERNAME\AppData\Roaming\agda\libraries + ``` + where `USERNAME` is your username on your computer. +- Navigate to the folder + `C:\Users\USERNAME\AppData\Roaming\agda`. + _If there is no `agda` folder in + `C:\Users\USERNAME\AppData\Roaming`, + simply create one_. +- In `C:\Users\USERNAME\AppData\Roaming\agda`, + create a file `libraries` if there isn't one already. + Inside it, put + ``` + LOCATION/cubical-0.3/cubical.agda-lib + ``` +- Now do `agda -l fjdsk Dummy.agda` in powershell locally again. + This time the error message should be + ``` + Library 'fjdsk' not found. + Add the path to its .agda-lib file to + 'BLAHBLAHBLAH/libraries' + to install. + Installed libraries: + cubical-0.3 + (LOCATION/cubical-0.3/cubical.agda-lib) + ``` + Congratulations, Agda is now aware of + the existence of the `cubical-0.3` library. + +## The HoTT Game + +The HoTT Game is also an Agda library +so we need to repeat the above process for it. + +- In Powershell, navigate to + where you would like to put the HoTT Game. +- Use `git clone https://github.com/Jlh18/TheHoTTGame.git`. + This should copy the HoTT Game repository as + a folder called `TheHoTTGame`. + For the purposes of this guide, + let's say you have put the HoTT Game in your computer + at the path + ``` + LOCATION1/TheHoTTGame + ``` + Inside it, you should see many files, + one of which should be `TheHoTTGame.agda-lib`. +- Go back to `BLAHBLAHBLAH/libraries` + and add the following line + ``` + LOCATION1/TheHoTTGame/TheHoTTGame.agda-lib + ``` +- In Powershell, use `agda -l fjdsk Dummy.agda` again. + The error message should now look something like + ``` + Library 'fjdsk' not found. + Add the path to its .agda-lib file to + 'BLAHBLAHBLAH/libraries' + to install. + Installed libraries: + cubical-0.3 + (LOCATION/cubical-0.3/cubical-0.3.agda-lib) + TheHoTTGame + (LOCATION1/TheHoTTGame/TheHoTTGame.agda-lib) + ``` +- Using Doom Emacs, + open `Trinitarianism/Quest0.agda` and do `C-c C-l`. + Congratulations, you can now play the HoTT Game. diff --git a/HoTTGameLib.agda-lib b/TheHoTTGame.agda-lib similarity index 78% rename from HoTTGameLib.agda-lib rename to TheHoTTGame.agda-lib index 7702b7c..0fefef7 100644 --- a/HoTTGameLib.agda-lib +++ b/TheHoTTGame.agda-lib @@ -1,4 +1,4 @@ -name: HoTTGameLib +name: TheHoTTGame include: . depend: cubical-0.3 flags: --cubical --no-import-sorts diff --git a/_build/2.6.3/agda/Trinitarianism/Quest1Solutions.agdai b/_build/2.6.3/agda/Trinitarianism/Quest1Solutions.agdai index f29337d..b594971 100644 Binary files a/_build/2.6.3/agda/Trinitarianism/Quest1Solutions.agdai and b/_build/2.6.3/agda/Trinitarianism/Quest1Solutions.agdai differ