diff --git a/.envrc b/.envrc
index 3557c5dfdfa3e337d844c66f35bb52645f934569..0da5bcc289d246be36c8c9d23bacb549fc3a3064 100644
--- a/.envrc
+++ b/.envrc
@@ -1,24 +1,2 @@
-if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
-  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
-fi
-
-nix_direnv_watch_file devenv.nix
-nix_direnv_watch_file system/scripts/*.nix
-nix_direnv_watch_file system/config/*.nix
-nix_direnv_watch_file project.nix
-nix_direnv_watch_file devenv.lock
-nix_direnv_watch_file devenv.yaml
-
-nix_direnv_watch_file flake.nix
-nix_direnv_watch_file flake.lock
-
-if ! use flake . --impure --show-trace 
-then
-  echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
-fi
-
-updateCommand="update-files"
-if type "$command" &>/dev/null; then 
-    $command 
-fi 
-
+watch_file ./flake.nix ./nix/scripts/*.nix ./nix/config/*.nix ./nix/packages/*.nix 
+use flake
\ No newline at end of file
diff --git a/flake.lock b/flake.lock
index 4296ed1256eb4fb8599f6d5142c6637fe69d47f3..a6efea922af315f79b17fac793b68c861626ef05 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,535 +1,12 @@
 {
   "nodes": {
-    "cachix": {
-      "inputs": {
-        "devenv": "devenv_2",
-        "flake-compat": "flake-compat_2",
-        "nixpkgs": [
-          "devenv",
-          "nixpkgs"
-        ],
-        "pre-commit-hooks": "pre-commit-hooks"
-      },
-      "locked": {
-        "lastModified": 1710475558,
-        "narHash": "sha256-egKrPCKjy/cE+NqCj4hg2fNX/NwLCf0bRDInraYXDgs=",
-        "owner": "cachix",
-        "repo": "cachix",
-        "rev": "661bbb7f8b55722a0406456b15267b5426a3bda6",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "repo": "cachix",
-        "type": "github"
-      }
-    },
-    "devenv": {
-      "inputs": {
-        "cachix": "cachix",
-        "flake-compat": "flake-compat_4",
-        "nix": "nix_2",
-        "nixpkgs": "nixpkgs_2",
-        "pre-commit-hooks": "pre-commit-hooks_2"
-      },
-      "locked": {
-        "lastModified": 1711535042,
-        "narHash": "sha256-Jr0LQ+bvFekPJvWxost2oymNNUzdym/Hu+HzQ6Fp630=",
-        "owner": "cachix",
-        "repo": "devenv",
-        "rev": "ad5a82f493f016bf4e82fae481b374d943be9560",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "repo": "devenv",
-        "type": "github"
-      }
-    },
-    "devenv_2": {
-      "inputs": {
-        "flake-compat": [
-          "devenv",
-          "cachix",
-          "flake-compat"
-        ],
-        "nix": "nix",
-        "nixpkgs": "nixpkgs",
-        "poetry2nix": "poetry2nix",
-        "pre-commit-hooks": [
-          "devenv",
-          "cachix",
-          "pre-commit-hooks"
-        ]
-      },
-      "locked": {
-        "lastModified": 1708704632,
-        "narHash": "sha256-w+dOIW60FKMaHI1q5714CSibk99JfYxm0CzTinYWr+Q=",
-        "owner": "cachix",
-        "repo": "devenv",
-        "rev": "2ee4450b0f4b95a1b90f2eb5ffea98b90e48c196",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "ref": "python-rewrite",
-        "repo": "devenv",
-        "type": "github"
-      }
-    },
-    "flake-compat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1673956053,
-        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_2": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_3": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_4": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_5": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1673956053,
-        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-parts": {
-      "inputs": {
-        "nixpkgs-lib": "nixpkgs-lib"
-      },
-      "locked": {
-        "lastModified": 1709336216,
-        "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
-        "owner": "hercules-ci",
-        "repo": "flake-parts",
-        "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
-        "type": "github"
-      },
-      "original": {
-        "id": "flake-parts",
-        "type": "indirect"
-      }
-    },
-    "flake-root": {
-      "locked": {
-        "lastModified": 1692742795,
-        "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=",
-        "owner": "srid",
-        "repo": "flake-root",
-        "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937",
-        "type": "github"
-      },
-      "original": {
-        "owner": "srid",
-        "repo": "flake-root",
-        "type": "github"
-      }
-    },
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1689068808,
-        "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_2": {
-      "inputs": {
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1701680307,
-        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_3": {
-      "inputs": {
-        "systems": "systems_3"
-      },
-      "locked": {
-        "lastModified": 1701680307,
-        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "gitignore": {
-      "inputs": {
-        "nixpkgs": [
-          "devenv",
-          "cachix",
-          "pre-commit-hooks",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1703887061,
-        "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "type": "github"
-      }
-    },
-    "gitignore_2": {
-      "inputs": {
-        "nixpkgs": [
-          "devenv",
-          "pre-commit-hooks",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1703887061,
-        "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "type": "github"
-      }
-    },
-    "mk-shell-bin": {
-      "locked": {
-        "lastModified": 1677004959,
-        "narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=",
-        "owner": "rrbutani",
-        "repo": "nix-mk-shell-bin",
-        "rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887",
-        "type": "github"
-      },
-      "original": {
-        "owner": "rrbutani",
-        "repo": "nix-mk-shell-bin",
-        "type": "github"
-      }
-    },
-    "nix": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "nixpkgs": [
-          "devenv",
-          "cachix",
-          "devenv",
-          "nixpkgs"
-        ],
-        "nixpkgs-regression": "nixpkgs-regression"
-      },
-      "locked": {
-        "lastModified": 1708577783,
-        "narHash": "sha256-92xq7eXlxIT5zFNccLpjiP7sdQqQI30Gyui2p/PfKZM=",
-        "owner": "domenkozar",
-        "repo": "nix",
-        "rev": "ecd0af0c1f56de32cbad14daa1d82a132bf298f8",
-        "type": "github"
-      },
-      "original": {
-        "owner": "domenkozar",
-        "ref": "devenv-2.21",
-        "repo": "nix",
-        "type": "github"
-      }
-    },
-    "nix-github-actions": {
-      "inputs": {
-        "nixpkgs": [
-          "devenv",
-          "cachix",
-          "devenv",
-          "poetry2nix",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1688870561,
-        "narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
-        "owner": "nix-community",
-        "repo": "nix-github-actions",
-        "rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "nix-github-actions",
-        "type": "github"
-      }
-    },
-    "nix_2": {
-      "inputs": {
-        "flake-compat": "flake-compat_5",
-        "nixpkgs": [
-          "devenv",
-          "nixpkgs"
-        ],
-        "nixpkgs-regression": "nixpkgs-regression_2"
-      },
-      "locked": {
-        "lastModified": 1710500156,
-        "narHash": "sha256-zvCqeUO2GLOm7jnU23G4EzTZR7eylcJN+HJ5svjmubI=",
-        "owner": "domenkozar",
-        "repo": "nix",
-        "rev": "c5bbf14ecbd692eeabf4184cc8d50f79c2446549",
-        "type": "github"
-      },
-      "original": {
-        "owner": "domenkozar",
-        "ref": "devenv-2.21",
-        "repo": "nix",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1692808169,
-        "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=",
+        "lastModified": 1716061101,
+        "narHash": "sha256-H0eCta7ahEgloGIwE/ihkyGstOGu+kQwAiHvwVoXaA0=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "9201b5ff357e781bf014d0330d18555695df7ba8",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-lib": {
-      "locked": {
-        "dir": "lib",
-        "lastModified": 1709237383,
-        "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
-        "type": "github"
-      },
-      "original": {
-        "dir": "lib",
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-regression": {
-      "locked": {
-        "lastModified": 1643052045,
-        "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
-        "type": "github"
-      }
-    },
-    "nixpkgs-regression_2": {
-      "locked": {
-        "lastModified": 1643052045,
-        "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
-        "type": "github"
-      }
-    },
-    "nixpkgs-stable": {
-      "locked": {
-        "lastModified": 1704874635,
-        "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-23.11",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-stable_2": {
-      "locked": {
-        "lastModified": 1704874635,
-        "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-23.11",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_2": {
-      "locked": {
-        "lastModified": 1710236354,
-        "narHash": "sha256-vWrciFdq49vve43g4pbi7NjmL4cwG1ifXnQx+dU3T5E=",
-        "owner": "cachix",
-        "repo": "devenv-nixpkgs",
-        "rev": "829e73affeadfb4198a7105cbe3a03153d13edc9",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "ref": "rolling",
-        "repo": "devenv-nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_3": {
-      "locked": {
-        "lastModified": 1711460390,
-        "narHash": "sha256-akSgjDZL6pVHEfSE6sz1DNSXuYX6hq+P/1Z5IoYWs7E=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "44733514b72e732bd49f5511bd0203dea9b9a434",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-23.11",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_4": {
-      "locked": {
-        "lastModified": 1708475490,
-        "narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "0e74ca98a74bc7270d28838369593635a5db3260",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_5": {
-      "locked": {
-        "lastModified": 1704145853,
-        "narHash": "sha256-G/1AMt9ibpeMlcxvD1vNaC8imGaK+g7zZ99e29BLgWw=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "2d2ea8eab9e400618748ab1a6a108255233b602c",
+        "rev": "e7cc61784ddf51c81487637b3031a6dd2d6673a2",
         "type": "github"
       },
       "original": {
@@ -538,175 +15,9 @@
         "type": "indirect"
       }
     },
-    "poetry2nix": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "nix-github-actions": "nix-github-actions",
-        "nixpkgs": [
-          "devenv",
-          "cachix",
-          "devenv",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1692876271,
-        "narHash": "sha256-IXfZEkI0Mal5y1jr6IRWMqK8GW2/f28xJenZIPQqkY0=",
-        "owner": "nix-community",
-        "repo": "poetry2nix",
-        "rev": "d5006be9c2c2417dafb2e2e5034d83fabd207ee3",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "poetry2nix",
-        "type": "github"
-      }
-    },
-    "pre-commit-hooks": {
-      "inputs": {
-        "flake-compat": "flake-compat_3",
-        "flake-utils": "flake-utils_2",
-        "gitignore": "gitignore",
-        "nixpkgs": [
-          "devenv",
-          "cachix",
-          "nixpkgs"
-        ],
-        "nixpkgs-stable": "nixpkgs-stable"
-      },
-      "locked": {
-        "lastModified": 1708018599,
-        "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=",
-        "owner": "cachix",
-        "repo": "pre-commit-hooks.nix",
-        "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "repo": "pre-commit-hooks.nix",
-        "type": "github"
-      }
-    },
-    "pre-commit-hooks_2": {
-      "inputs": {
-        "flake-compat": [
-          "devenv",
-          "flake-compat"
-        ],
-        "flake-utils": "flake-utils_3",
-        "gitignore": "gitignore_2",
-        "nixpkgs": [
-          "devenv",
-          "nixpkgs"
-        ],
-        "nixpkgs-stable": "nixpkgs-stable_2"
-      },
-      "locked": {
-        "lastModified": 1708018599,
-        "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=",
-        "owner": "cachix",
-        "repo": "pre-commit-hooks.nix",
-        "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431",
-        "type": "github"
-      },
-      "original": {
-        "owner": "cachix",
-        "repo": "pre-commit-hooks.nix",
-        "type": "github"
-      }
-    },
     "root": {
       "inputs": {
-        "devenv": "devenv",
-        "flake-parts": "flake-parts",
-        "flake-root": "flake-root",
-        "mk-shell-bin": "mk-shell-bin",
-        "nixpkgs": "nixpkgs_3",
-        "treefmt-nix": "treefmt-nix",
-        "versions-tool": "versions-tool"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
-    "systems_2": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
-    "systems_3": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
-    "treefmt-nix": {
-      "inputs": {
-        "nixpkgs": "nixpkgs_4"
-      },
-      "locked": {
-        "lastModified": 1711531821,
-        "narHash": "sha256-5n4hq7PsH8g9czJ5HvXpVrJ4AiJdzrutHK01oKIaCXE=",
-        "owner": "numtide",
-        "repo": "treefmt-nix",
-        "rev": "c2172ef83d6904cdff3118e0c08e89171db6028a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "treefmt-nix",
-        "type": "github"
-      }
-    },
-    "versions-tool": {
-      "inputs": {
-        "nixpkgs": "nixpkgs_5"
-      },
-      "locked": {
-        "lastModified": 1704542622,
-        "narHash": "sha256-HnFuaOXHoxv8tpBvMsEjfhcl/hFNxEY7GbBqoyJ1U8U=",
-        "ref": "refs/heads/master",
-        "rev": "6b4f85fe6d934429cf3055bbcd8cf15014730118",
-        "revCount": 114,
-        "type": "git",
-        "url": "https://gitlab.schukai.com/oss/utilities/version.git"
-      },
-      "original": {
-        "type": "git",
-        "url": "https://gitlab.schukai.com/oss/utilities/version.git"
+        "nixpkgs": "nixpkgs"
       }
     }
   },
diff --git a/flake.nix b/flake.nix
index 86d804947d62f446c80e304422dc4212bcad116a..750757e65c5c3cd7f5b488ed05e7461a82980f9b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,198 +1,84 @@
 {
-  description = "Configuration for the bob project";
+  description = "Bob the builder for Go projects";
 
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
-    devenv.url = "github:cachix/devenv";
-    mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
-    flake-root.url = "github:srid/flake-root";
-    treefmt-nix.url = "github:numtide/treefmt-nix";
-    versions-tool.url = "git+https://gitlab.schukai.com/oss/utilities/version.git";
-  };
-
-  nixConfig = {
-    extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
-    extra-substituters = "https://devenv.cachix.org";
-  };
+  # Nixpkgs / NixOS version to use.
+  inputs.nixpkgs.url = "nixpkgs/nixos-23.11";
 
-  outputs = inputs @ {
+  outputs = {
     self,
-    flake-parts,
-    versions-tool,
-    ...
-  }:
-    flake-parts.lib.mkFlake {inherit inputs;} {
-      imports = [
-        inputs.devenv.flakeModule
-        inputs.flake-root.flakeModule
-        inputs.treefmt-nix.flakeModule
-      ];
-
-      systems = (import ./project.nix).supportedSystems;
-
-      perSystem = let
-        common-script = import ./system/scripts/common.nix;
-      in
-        {
-          config,
-          self',
-          inputs',
-          pkgs,
-          system,
-          ...
-        }: let
-          projectDefinition = import ./project.nix;
-          buildRoot = ./.;
-
-          enableDebugPackage = true;
-
-          portAsString = toString projectDefinition.k8s.port;
-        in {
-          packages = rec {
-            default = self.packages.${system}.bob;
-
-            bob = let
-              projectDefinition = import ./project.nix;
-              sourcePath = ./source;
-
-              timestamp = let
-                pkgs = import inputs.nixpkgs {};
-              in
-                builtins.readFile (
-                  pkgs.runCommand "timestamp"
-                  {when = builtins.currentTime;}
-                  "echo -n `date -d @$when +%Y-%m-%d_%H-%M-%S` > $out"
-                );
-            in
-              # https://nixos.wiki/wiki/Go
-              pkgs.buildGoModule {
-                pname = projectDefinition.name;
-                version = projectDefinition.version;
-
-                src = sourcePath;
-
-                tags = []; # add your tags here (eq  "netgo" "osusergo" "static_build")
-
-                # The -w turns off DWARF debugging information:
-                # The -s flag will omit the symbol table and debug information.
-                ldflags = [
-                  "-s -w"
-                  "-X '${projectDefinition.modulePath}/release.version=${projectDefinition.version}'"
-                  "-X '${projectDefinition.modulePath}/release.commit=${projectDefinition.commitHash}'"
-                  "-X '${projectDefinition.modulePath}/release.name=${projectDefinition.name}'"
-                  "-X '${projectDefinition.modulePath}/release.mnemonic=${projectDefinition.mnemonic}'"
-                  "-X '${projectDefinition.modulePath}/release.buildDate=${timestamp}'"
-                ];
-
-                #vendorHash = null;
-                vendorHash = projectDefinition.vendorHash;
-                #vendorHash = system.lib.fakeHash;
-                proxyVendor = true;
-
-                meta = with system.lib; {
-                  description = projectDefinition.description;
-                  homepage = "https://" + projectDefinition.modulePath;
-                  maintainers = with maintainers; ["schukai GmbH"];
-                };
-
-                buildInputs = [pkgs.bash];
-                nativeBuildInputs = with system; [pkgs.alejandra pkgs.shellcheck pkgs.shfmt];
-
-                doCheck = true;
-
-                checkPhase = ''
-                  cd ${sourcePath}
-                  if ! go test -v ./... 2>&1 | cat ; then
-                    echo "Test failed."
-                    exit 1
-                  fi
-
-                  echo "Test passed: '$out' is as expected."
-                '';
-              };
-          };
-
-          treefmt.config = {
-            inherit (config.flake-root) projectRootFile;
-            programs.alejandra.enable = true;
-            programs.gofmt.enable = true;
-            programs.shfmt.enable = true;
-            programs.shellcheck.enable = true;
-            programs.yamlfmt.enable = true;
-            programs.prettier.enable = true;
-          };
-
-          devenv.shells = let
-            projectDefinition = import ./project.nix;
-            buildRoot = ./.;
-          in {
-            default = rec {
-              name = projectDefinition.name;
-
-              scripts = let
-                versions-tool = inputs.versions-tool.defaultPackage."${builtins.currentSystem}";
-
-                workingDirectory = builtins.getEnv "PWD";
-              in {
-                treefmt.exec = ''
-                  ${config.treefmt.build.wrapper}/bin/treefmt
-                '';
-
-                rm-gitlab-pipelines.exec = import ./system/scripts/rm-gitlab-pipelines.nix {
-                  inherit pkgs config buildRoot projectDefinition;
-                };
-
-                update-files.exec = import ./system/scripts/update-files.nix {
-                  inherit pkgs config buildRoot projectDefinition;
-                };
-
-                check-licences.exec = import ./system/scripts/check-licences.nix {
-                  inherit pkgs config buildRoot projectDefinition;
-                };
-
-                update-hashes.exec = import ./system/scripts/update-hashes.nix {
-                  inherit pkgs config buildRoot projectDefinition workingDirectory;
-                };
-
-                update-version.exec = import ./system/scripts/update-version.nix {
-                  inherit pkgs config buildRoot projectDefinition versions-tool workingDirectory;
-                };
-
-                git-commit.exec = import ./system/scripts/git-commit.nix {
-                  inherit pkgs;
-                };
-              };
-
-              imports = [
-              ];
-
-              packages = with pkgs; [
-                inputs.versions-tool.defaultPackage."${builtins.currentSystem}"
-                nodePackages.prettier-plugin-toml
-                nodePackages.prettier
-                go-task
-                alejandra
-              ];
-
-              languages.javascript = {
-                enable = true;
-                package = pkgs.nodejs_21;
-                corepack.enable = true;
-              };
-              languages.nix.enable = true;
-              languages = {go = {enable = true;};};
-
-              difftastic.enable = true;
-
-              enterShell = ''
-                post-init-setup
-              '';
-            };
-          };
+    nixpkgs,
+  }: let
+    # to work with older version of flakes
+    lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
+
+    rootPath = ./.;
+
+    goPkgReleaseData = import "${rootPath}/project.nix";
+
+    goPkgName = goPkgReleaseData.name or "goPkg";
+    goPkgMnemonic = goPkgReleaseData.mnemonic or "go-pkg";
+    goPkgDescription = goPkgReleaseData.description or "this is a goPkg";
+    goPkgVersion = goPkgReleaseData.version or "0.1.0";
+    goPkgHash =
+      if (self ? shortRev)
+      then self.shortRev
+      else "dirty-not-for-production";
+    goPkgVendorHash = goPkgReleaseData.vendorHash or null;
+
+    # System types to support.
+    supportedSystems = ["x86_64-linux" "x86_64-windows" "x86_64-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 {
+      bob = pkgs.buildGoModule {
+        name = goPkgName;
+
+        # In 'nix develop', we don't need a copy of the source tree
+        # in the Nix store.
+        src = ././source;
+        tags = []; # add your tags here (eq  "netgo" "osusergo" "static_build")
+
+        ldflags = [
+          "-X 'main.version=${goPkgVersion}'"
+          "-X 'main.commit=${goPkgHash}'"
+          "-X 'main.build=${lastModifiedDate}'"
+          "-X 'main.name=${goPkgName}'"
+          "-X 'main.mnemonic=${goPkgMnemonic}'"
+        ];
+
+        #vendorHash = pkgs.lib.fakeHash;
+        vendorHash = null; # disable vendorHash for goPkgVendorHash;
+
+        meta = with nixpkgs.legacyPackages.${system}.lib; {
+          description = goPkgDescription;
+          homepage = "https://gitlab.schukai.com/oss/bob";
+          license = licenses.mit;
+          maintainers = with maintainers; ["schukai GmbH"];
         };
+      };
+
+      default = self.packages.${system}.bob;
+    });
 
-      flake = {
-        defaultPackage = self.packages.${builtins.currentSystem}.bob;
+    # 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}.bob);
+  };
 }
diff --git a/system/scripts/check-licences.nix b/system/scripts/check-licences.nix
index 058cb7ebf53c01ac1bd423a0b9c9f0f8289457a7..d5998eac13fe9c8ac01f960b8e667197e366a0bc 100644
--- a/system/scripts/check-licences.nix
+++ b/system/scripts/check-licences.nix
@@ -6,7 +6,7 @@
 }: let
   serviceSourcePath = "${buildRoot}/services/";
   licensesPath = "${buildRoot}/documentation/licenses/";
-  common = import ./common.nix {inherit pkgs;};
+  common = import "${./common.nix}" {inherit pkgs;};
   moduleGoPath = projectDefinition.modulePath;
 in ''
   #!${pkgs.bash}/bin/bash
diff --git a/system/scripts/git-commit.nix b/system/scripts/git-commit.nix
index 13341a1b8277d0cf7558a7b9445bd8de127ed067..9657c4c88913fd7673375f43db4eb3b98e675a40 100644
--- a/system/scripts/git-commit.nix
+++ b/system/scripts/git-commit.nix
@@ -1,5 +1,5 @@
 {pkgs, ...}: let
-  common = import ./common.nix {inherit pkgs;};
+common = import "${./common.nix}" {inherit pkgs;};
   nix-flakes = builtins.getFlake "git+https://gitlab.schukai.com/schukai/entwicklung/nix-flakes";
 in ''
   #!${pkgs.bash}/bin/bash
diff --git a/system/scripts/rm-gitlab-pipelines.nix b/system/scripts/rm-gitlab-pipelines.nix
index 9d2f3329c28aabc88948824eef70cbd8803e41cc..ae6b0a1fad71a71dd70f99de97d34a7f551c76f1 100644
--- a/system/scripts/rm-gitlab-pipelines.nix
+++ b/system/scripts/rm-gitlab-pipelines.nix
@@ -4,7 +4,7 @@
   projectDefinition,
   ...
 }: let
-  common = import ./common.nix {inherit pkgs;};
+common = import "${./common.nix}" {inherit pkgs;};
 in ''
   #!${pkgs.bash}/bin/bash
   ${common}
diff --git a/system/scripts/update-files.nix b/system/scripts/update-files.nix
index 70369be33e01c7c3a4a2b24add446886b6b4ffc5..dc076c9fb8d64332fb0f09f369fc02e10b447a98 100644
--- a/system/scripts/update-files.nix
+++ b/system/scripts/update-files.nix
@@ -5,7 +5,7 @@
   projectDefinition,
   ...
 }: let
-  common = import ./common.nix {inherit pkgs;};
+common = import "${./common.nix}" {inherit pkgs;};
   taskfileYaml = import ../config/taskfile.nix {
     inherit pkgs config buildRoot projectDefinition;
   };
diff --git a/system/scripts/update-hashes.nix b/system/scripts/update-hashes.nix
index 365178617562a8471f3e85237576be1b07f10cc8..2473fd83bf89ae42dba99dc8c6d3a8c9b769e29a 100644
--- a/system/scripts/update-hashes.nix
+++ b/system/scripts/update-hashes.nix
@@ -6,7 +6,7 @@
   ...
 }: let
   serviceSourcePath = "${buildRoot}/";
-  common = import ./common.nix {inherit pkgs;};
+common = import "${./common.nix}" {inherit pkgs;};
 in ''
   #!${pkgs.bash}/bin/bash
 
diff --git a/system/scripts/update-version.nix b/system/scripts/update-version.nix
index 8deb58a8851449108b19ebd53fac96e8f95936d3..5a932e6fd4948f0a74b541af44772cfe0fc67cd0 100644
--- a/system/scripts/update-version.nix
+++ b/system/scripts/update-version.nix
@@ -7,7 +7,7 @@
   ...
 }: let
   serviceSourcePath = "${buildRoot}/";
-  common = import ./common.nix {inherit pkgs;};
+common = import "${./common.nix}" {inherit pkgs;};
 in ''
   #!${pkgs.bash}/bin/bash