{ pkgs , config , ... }: let pythonEnv = pkgs.python3.withPackages (p: with p; [ black click isort pylsp-mypy requests types-requests pip ipython virtualenv ]); in { programs.go = { enable = true; goPath = ".local/share/pkg.go"; goBin = ".local/bin.go"; package = pkgs.go_1_21; goPrivate = [ "github.rbx.com/roblox/*" "github.com/fcuny/world/*" ]; }; home.packages = with pkgs; [ # go go-tools golangci-lint gopls # docker dive # explore layers in docker images # shell shellcheck # ops google-cloud-sdk kubectl tfswitch # python pythonEnv ]; home.sessionPath = [ config.home.sessionVariables.GOBIN ]; programs.zsh.shellAliases = { kc = "kubectl"; }; programs.vscode = { enable = true; # Workaround https://github.com/nix-community/home-manager/issues/3507 mutableExtensionsDir = false; extensions = with pkgs.vscode-extensions; [ #go golang.go # nix arrterian.nix-env-selector bbenoist.nix jnoortheen.nix-ide # python ms-python.python ms-python.vscode-pylance ms-python.black-formatter # shell mads-hartmann.bash-ide-vscode # utils ms-vscode.makefile-tools # Makefile support mkhl.direnv # direnv editorconfig.editorconfig # editor config for vscode tamasfe.even-better-toml # better TOML mode streetsidesoftware.code-spell-checker # code spell checker github.vscode-github-actions # GHA github.copilot # https://docs.github.com/en/copilot github.copilot-chat ]; userSettings = { # editor editor.fontSize = 15; "editor.formatOnSave" = true; "editor.minimap.enabled" = false; "editor.fontFamily" = "Monaspace Neon"; "editor.fontLigatures" = true; "editor.rulers" = [ 80 120 ]; "editor.folding" = false; "editor.foldingHighlight" = false; # explorer "explorer.sortOrder" = "default"; "explorer.autoRevealExcludes" = { "**/result" = true; }; # extensions "extensions.ignoreRecommendations" = true; "extensions.autoCheckUpdates" = false; "extensions.autoUpdate" = false; # files "files.trimFinalNewLines" = true; "files.insertFinalNewLine" = true; "files.autoSave" = "afterDelay"; "files.autoSaveDelay" = 100; # in milliseconds "files.exclude" = { "**/.direnv" = true; "**/result" = true; }; # formatter formatter = { "[python]"."editor.defaultFormatter" = "ms-python.black-formatter"; }; # workbench workbench.colorTheme = "Default Light Modern"; workbench.sideBar.location = "right"; # telemetry "telemetry.telemetryLevel" = "off"; # terminal "terminal.integrated.fontFamily" = "Monaspace Xenon"; "terminal.integrated.fontSize" = 13; # go "go.lintTool" = "golangci-lint"; "go.toolsManagemenent.checkForUpdates" = "off"; "go.toolsManagemenent.autoUpdate" = false; "gopls" = { "format.gofumpt" = true; "ui.semanticTokens" = true; }; # shell bash = { "bashIde.shellcheckPath" = "${pkgs.shellcheck}/bin/shellcheck"; "shfmt.executablePath" = "${pkgs.shfmt}/bin/shfmt"; }; # nix "nix.serverPath" = "nil"; "nix.serverSettings" = { "nil" = { "formatting" = { "command" = [ "nixpkgs-fmt" ]; }; }; }; "nix.enableLanguageServer" = true; }; }; home.sessionVariables = with config.xdg; { IPYTHONDIR = "${cacheHome}/ipython"; PIP_LOG = "${cacheHome}/pip/pip.log"; PYLINTHOME = "${cacheHome}/pylint"; PYTHON_EGG_CACHE = "${cacheHome}/python-eggs"; MYPY_CACHE_DIR = "${cacheHome}/mypy"; }; }