rec {
  description = "templ-practice";
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs";
    flake-utils.url = "github:numtide/flake-utils";
    templ.url = "github:a-h/templ";
  };

  outputs = { self, nixpkgs, flake-utils, templ }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        templPkg = templ.packages.${system}.templ;
      in {
        devShells.default = pkgs.mkShell {
          buildInputs = [
            pkgs.go
            pkgs.wgo
            pkgs.semgrep
            pkgs.gopls
            pkgs.gnumake
            templPkg
            pkgs.tailwindcss
          ];
          shellHook = ''
            export GOPATH=$PWD/.go
            export PATH=$GOPATH/bin:$PATH
          '';
        };
      });
  # see https://serokell.io/blog/practical-nix-flakes
}
