# netcode-io [](https://travis-ci.org/Mokosha/netcode-io)
Haskell bindings to the
[netcode.io](https://github.com/networkprotocol/netcode.io) library
## Development
These bindings were developed using `stack` in the "usual" way. We expect
that anyone building from source to use the same workflow. The only major
dependency is on the `sodium` library. `netcode-io` uses at least version
`1.0.16`. Below are various ways for integrating this into your Haskell
build ecosystem.
### Windows
The cabal file specifies that the `sodium` library is required for building
this package. Unfortunately, this is a bit tricky on Windows since there's no
native package manager. To use this with Windows, we recommend using
[`MSYS2`](https://www.msys2.org/). `msys2.exe` has a built-in shell for using
the `gcc` toolchain on Windows. This toolchain is compatible with the one `ghc`
uses. Within this environment, you can install `sodium` using the `pacman`
package manager:
```
$ pacman -S mingw64/mingw-w64-x86_64-libsodium
```
Once installed, you can add the following lines to your global `config.yaml`:
```
extra-include-dirs:
- D:\msys64\mingw64\include
extra-lib-dirs:
- D:\msys64\mingw64\lib
```
Your `config.yaml` is located at your `%STACK_ROOT%` directory:
```
C:\> stack path --stack-root
C:\path\to\stack\root
```
### OS X
On MacOS, we can install `sodium` simply by using homebrew:
```
$ brew install libsodium
```
### Linux
On Linux, it depends on your package manager, but if you're using Ubuntu Bionic (18.04) or later:
```
$ sudo apt-get install libsodium-dev
```
## LICENSING
IANAL, but these bindings use
[the same license](https://github.com/networkprotocol/netcode.io/blob/master/LICENCE)
that the original library uses, so you must comply with both.