diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000000000000000000000000000000000000..8f5e0f2a2e3a68ea6f0b9296f655cc35c0ce1382
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+  "nodes": {
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1713805509,
+        "narHash": "sha256-YgSEan4CcrjivCNO5ZNzhg7/8ViLkZ4CB/GrGBVSudo=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "1e1dc66fe68972a76679644a5577828b6a7e8be4",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "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 0000000000000000000000000000000000000000..c867dedbec6f3d4caae1a8feef80c602e76d5f13
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,34 @@
+{
+  description = "nixfig, nix configuration";
+
+  inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+
+  outputs = {
+    self,
+    nixpkgs,
+  }: let
+    system = "x86_64-linux";
+    pkgs = nixpkgs.legacyPackages.${system};
+    nixgen = pkgs.buildGoModule {
+      pname = "nixgen";
+      version = self.rev or "dev";
+      src = ./.;
+      vendorHash = pkgs.lib.fileContents ./go.mod.sri;
+      doCheck = false;
+      meta = with pkgs.lib; {
+        description = "nixfig, nix configuration";
+        homepage = "https:/git.jolheiser.com/nixfig";
+        maintainers = with maintainers; [jolheiser];
+        mainProgram = "nixgen";
+      };
+    };
+  in {
+    packages.${system}.default = nixgen;
+    devShells.${system}.default = pkgs.mkShell {
+      nativeBuildInputs = with pkgs; [
+        go
+        gopls
+      ];
+    };
+  };
+}
diff --git a/go.mod.sri b/go.mod.sri
new file mode 100644
index 0000000000000000000000000000000000000000..202b1f445b89f626fc40db53627566f47b81de65
--- /dev/null
+++ b/go.mod.sri
@@ -0,0 +1 @@
+sha256-zCqjwA9uFvE9qg0WHAGZxWIHxBLpPbaSg7Nn+YE6pHc=
\ No newline at end of file