{
  description = "A Nix-flake-based Bun development environment";

  inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";

  outputs = { self, nixpkgs }:
    let
      supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
      forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
        pkgs = import nixpkgs { 
          inherit system;
          config.permittedInsecurePackages = ["dotnet-sdk-6.0.428"];
        };
      });
    in
    {
      devShells = forEachSupportedSystem ({ pkgs }: {
        default = pkgs.mkShell {
          packages = with pkgs; [ 
            # Frontend
            nodejs
            sqlite
            sqls
            sql-studio
            zlib
            # Backend
            (dotnetCorePackages.combinePackages [
              dotnetCorePackages.sdk_9_0
              dotnetCorePackages.aspnetcore_9_0
              dotnetCorePackages.sdk_8_0
            ])
            nuget
            # msbuild
            omnisharp-roslyn
            csharpier

            # LSP
            typescript-language-server
          ];
          shellHook = ''
            export PATH=$PATH:
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${pkgs.zlib}/lib
          '';
          
        };
      });
    };
}
