diff --git a/flake.lock b/flake.lock
new file mode 100644
index 000000000..af48a76d1
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,26 @@
+{
+  "nodes": {
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1706211182,
+        "narHash": "sha256-Fh4w+m6jt1TdSkAIYvuYxjrpuWO0I76sRPOjEYdqaNY=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "8cc42008aa3b1cba810b1bbe3745619214c6359d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "nixpkgs": "nixpkgs"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 000000000..1adf4cf0a
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,30 @@
+{
+  description = "DANDI native build dev environment";
+
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
+
+  outputs = { self, nixpkgs }:
+    let
+      pkgs = nixpkgs.legacyPackages.x86_64-linux;
+    in
+    {
+      devShells.x86_64-linux.default = pkgs.mkShell {
+        buildInputs = with pkgs; [
+          # Python 3.11
+          python311Packages.python
+
+          # Docker and Docker Compose
+          docker
+
+          # Postgres stuff
+          postgresql
+          libpqxx
+        ];
+
+        shellHook = ''
+          source ./venv/bin/activate
+          source ./dev/export-env.sh
+        '';
+      };
+    };
+}