diff options
Diffstat (limited to 'nix/profiles/home-manager/dev.nix')
| -rw-r--r-- | nix/profiles/home-manager/dev.nix | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/nix/profiles/home-manager/dev.nix b/nix/profiles/home-manager/dev.nix new file mode 100644 index 0000000..e0ca68b --- /dev/null +++ b/nix/profiles/home-manager/dev.nix @@ -0,0 +1,167 @@ +{ 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; + }; + + home.packages = with pkgs; [ + go-tools + golangci-lint + gopls + + dive # explore layers in docker images + + pythonEnv + + kubectl + + google-cloud-sdk + + rnix-lsp + alejandra + nil + ]; + + 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 + ]; + 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"; + }; +} |
