diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
index 920ec13..7dae2b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,7 @@
 
 # Exclude exported Modrinth modpacks
 *.mrpack
+
+# nix
+result
+.direnv
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..cd28615
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,41 @@
+{
+  "nodes": {
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1710408871,
+        "narHash": "sha256-YpSGYZR96I8g5OK/Fdm0O4+mHLen6YPA1cPanqqNqT0=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "bd5ddf2c6bfafff031edf80221e1ee94e86ca10a",
+        "type": "github"
+      },
+      "original": {
+        "id": "nixpkgs",
+        "type": "indirect"
+      }
+    },
+    "root": {
+      "inputs": {
+        "nixpkgs": "nixpkgs",
+        "systems": "systems"
+      }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..e58ba3a
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,14 @@
+{
+  inputs.systems.url = "github:nix-systems/default";
+  outputs = { self, systems, nixpkgs }: let
+    lib = nixpkgs.lib;
+    eachSystem = lib.genAttrs (import systems);
+  in {
+    devShells = eachSystem (system: let pkgs = import nixpkgs { inherit system; };
+    in {
+      default = pkgs.mkShell {
+        buildInputs = with pkgs; [ packwiz ];
+      };
+    });
+  };
+}