{pkgs, ...}: {
  home.packages = [
    (pkgs.writeScriptBin "create-project"
      ''
        #!${pkgs.nushell}/bin/nu

        def main [
        	type?: string
        	name?: string
        	--local (-l)
        ] {

        if $name == null or $type == null {
        	print "Usage: create-project <name> <type> [Options: -l]"
        	exit 1
        }

        if ($name | str contains "/") or ($name | str contains ".") {
        	print "This is not a valid name for a project"
        	exit 1
        }

        if ($type | str contains "/") or ($type | str contains ".") {
        	print "This is not a valid project type"
        	exit 1
        }

        mkdir $name
        cd $name

        if ($"~/.nix-config/home/modules/create-project/project-blueprints/($type)" | path expand | ls $in | length) > 0 {
        	glob $"~/.nix-config/home/modules/create-project/project-blueprints/($type)/*" | each { |file| cp $file . }
        }

        if ($"./init.sh" | path type) == "file" {
        	bash $"./init.sh" $name
        	rm "init.sh"
        }

        echo "use flake" | save .envrc
        direnv allow

        git init
        git add .
        git commit -m "Project setup"

        if $local {
        	print "You are all done"
        	exit 0
        }

        ${pkgs.tea}/bin/tea repos create --name $name
        git remote add origin $"https://git.stribrny.org/ben_ag/($name).git"
        git push -u origin main

        print "You are all done"
        exit 0

        }
      '')
  ];
}
