aboutsummaryrefslogtreecommitdiff
path: root/nix/profiles/home-manager/dev.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/profiles/home-manager/dev.nix')
-rw-r--r--nix/profiles/home-manager/dev.nix167
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";
+ };
+}