197 lines
5.5 KiB
Markdown
197 lines
5.5 KiB
Markdown
How to Install the HoTT Game on Windows
|
|
=======================================
|
|
|
|
## Prerequisites
|
|
|
|
MUST USE POWERSHELL AS ADMIN
|
|
- chocolatey: follow instructions on
|
|
[their page](https://chocolatey.org/install)
|
|
- In (admin) powershell do (via chocolatey, cabal)
|
|
- `choco install ghc`
|
|
- `choco install 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
|
|
Get doom emacs following instructions made [here](
|
|
earvingad.github.io/posts/doom_emacs_windows/
|
|
)
|
|
|
|
<!-- 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.
|