diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2faacbe8362a86d7b77399cfb3d3547189dc6f77
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,69 @@
+{
+ description = "A reasonably complete and well-tested golang port of Kenneth Reitz's httpbin service, with zero dependencies outside the go stdlib."
+
+  # Nixpkgs / NixOS version to use.
+  inputs.nixpkgs.url = "nixpkgs/nixos-23.05";
+
+  outputs = { self, nixpkgs }:
+    let
+
+      # to work with older version of flakes
+      lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
+
+      rootPath = ./.;
+
+      # System types to support.
+      supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
+
+      # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
+      forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+
+      # Nixpkgs instantiated for supported system types.
+      nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
+
+    in
+    {
+
+      packages = forAllSystems (system:
+        let
+          pkgs = nixpkgsFor.${system};
+        in
+        {
+          version = pkgs.buildGoModule {
+            name = "go-httpbin";
+
+            # In 'nix develop', we don't need a copy of the source tree
+            # in the Nix store.
+            src = ././cmd/go-httpbin;
+
+            vendorSha256 = pkgs.lib.fakeSha256;
+
+            #vendorSha256 = "sha256-zdoTGTcC0NpVKWR8O7pQhmqOdcAwHhgFwR62uqi/EKo=";
+
+            meta = with nixpkgs.legacyPackages.${system}.lib; {
+                description = "A reasonably complete and well-tested golang port of Kenneth Reitz's httpbin service, with zero dependencies outside the go stdlib.";
+                homepage = "https://gitlab.schukai.com/oss/utilities/version";
+                license = licenses.mit;
+                maintainers = with maintainers; [ "mccutchen and more"];
+              };    
+
+          };
+        });
+      
+      # Add dependencies that are only needed for development
+      devShells = forAllSystems (system:
+        let 
+          pkgs = nixpkgsFor.${system};
+        in
+        {
+          default = pkgs.mkShell {
+            buildInputs = with pkgs; [ go gopls gotools go-tools ];
+          };
+        });
+
+      # The default package for 'nix build'. This makes sense if the
+      # flake provides only one package or there is a clear "main"
+      # package.
+      defaultPackage = forAllSystems (system: self.packages.${system}.version);
+    };
+}