diff --git a/README.md b/README.md
index fee61e3d..c8503cdf 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,38 @@ Same Steps 1-7 above
10. Choose "build > build Zelda3" in the menu to create `zelda3.exe` in the "/bin/release" subfolder
11. Configure with `zelda3.ini` in the main dir
+## Compiling on Linux with Nix
+1. Open a terminal
+2. Clone the repo and `cd` into it
+```sh
+git clone https://github.com/snesrev/zelda3
+cd zelda3
+```
+3. Place your US ROM file named `zelda3.sfc` in `zelda3/tables`
+4. Enter the nix shell environment
+```sh
+nix-shell
+```
+5. Compile
+```sh
+make
+```
+6. Running the executable with the proper graphics driver
+```sh
+nixGL ./zelda3
+```
+
+
+Advanced make usage ...
+
+
+```sh
+make -j$(nproc) # run on all core
+make clean all # clear gen+obj and rebuild
+CC=clang make # specify compiler
+```
+
+
## Installing libraries on Linux/MacOS
1. Open a terminal
2. Install pip if not already installed
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 00000000..a6fa91e1
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,47 @@
+with (import {});
+
+let
+ nixgl = import (builtins.fetchTarball https://github.com/guibou/nixGL/archive/main.tar.gz) {};
+ my-py-pkgs = py-pkgs: with py-pkgs; [
+ pillow
+ pyyaml
+ ];
+ py-packaged = python3.withPackages my-py-pkgs;
+ libPath = with pkgs; lib.makeLibraryPath [
+ libGL
+ xorg.libX11
+ xorg.libX11.dev
+ xorg.libXcursor
+ xorg.libXrender
+ xorg.libXfixes
+ xorg.libXi
+ xorg.libxcb
+ xorg.libXScrnSaver
+ xorg.libpthreadstubs
+ xorg.libXext
+ xorg.libXrandr
+ xorg.libXau
+ xorg.libXdmcp
+ libxkbcommon
+ ];
+in
+mkShell {
+ buildInputs = [
+ py-packaged
+ SDL2
+ SDL2.dev
+ xorg.libX11
+ xorg.libX11.dev
+ xorg.libXcursor
+ xorg.libXScrnSaver
+ xorg.libXi
+ xorg.libXrandr
+ xorg.libxcb
+ libxkbcommon
+ libGL
+ gcc
+ nixgl.auto.nixGLDefault
+ ];
+ LD_LIBRARY_PATH = libPath;
+ LDFLAGS = "-lpthread -lrt";
+}