From 20208010c6460624e338cc78186847564ac6e34a Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Wed, 5 Feb 2025 10:27:12 -0300 Subject: [PATCH] feat: develpment environment module This should remove the necessity of dot013/shell and dot013/environment --- flake.nix | 3 ++ home/default.nix | 1 + modules/home-manager/devenv.nix | 96 +++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 modules/home-manager/devenv.nix diff --git a/flake.nix b/flake.nix index d6f0d38..da95163 100644 --- a/flake.nix +++ b/flake.nix @@ -88,5 +88,8 @@ }; }; + homeManagerModules = { + devenv = ./modules/home-manager/devenv.nix; + }; }; } diff --git a/home/default.nix b/home/default.nix index ab2f99c..5107da7 100644 --- a/home/default.nix +++ b/home/default.nix @@ -3,6 +3,7 @@ home.homeDirectory = "/home/guz"; imports = [ + self.homeManagerModules.devenv ./desktop.nix ./keymaps.nix diff --git a/modules/home-manager/devenv.nix b/modules/home-manager/devenv.nix new file mode 100644 index 0000000..bab7890 --- /dev/null +++ b/modules/home-manager/devenv.nix @@ -0,0 +1,96 @@ +{ + config, + inputs, + lib, + pkgs, + ... +}: { + home.sessionVariables = { + EDITOR = "nvim"; # Default editor + SHELL = lib.getExe config.programs.zsh.package; + TERMINAL = lib.getExe config.programs.ghostty.package; + }; + + # Local development shells + programs.direnv.enable = true; + programs.direnv.enableZshIntegration = true; + programs.direnv.nix-direnv.enable = true; + + # Ghostty (Terminal) + programs.ghostty.enable = true; + programs.ghostty.enableZshIntegration = true; + + # Git + programs.git.enable = true; + programs.git.userEmail = "contact@guz.one"; + programs.git.userName = "Gustavo \"Guz\" L de Mello"; + programs.git.extraConfig = { + credential.helper = "store"; + http.proxy = ""; + https.proxy = ""; + signing.singByDefault = true; + }; + + # Better git diff + programs.git.delta.enable = true; + + # GPG Keyring + programs.gpg.enable = true; + programs.gpg.mutableKeys = true; + programs.gpg.mutableTrust = true; + + services.gpg-agent.enable = true; + services.gpg-agent.enableZshIntegration = true; + services.gpg-agent.defaultCacheTtl = 3600 * 24; + services.gpg-agent.pinentryPackage = pkgs.pinentry-gtk2; + + # Git TUI + programs.lazygit.enable = true; + programs.lazygit.settings = { + git.paging.colorArg = "always"; + git.paging.pager = "${lib.getExe config.programs.git.delta.package} --dark --paging=never"; + }; + + # Neovim (Code editor) + programs.neovim.enable = true; + # programs.neovim.package = pkgs.callPackage ../../packages/nvim/neovim.nix { + # go-grip = inputs.go-grip.packages.${pkgs.system}.default; + # yazi = config.programs.yazi.package; + # }; + + # Shell decoration + programs.starship.enable = true; + programs.starship.enableZshIntegration = true; + + # SSH + programs.ssh.enable = true; + programs.ssh.matchBlocks = { + "battleship" = { + hostname = "battleship"; + user = "${config.home.username}"; + identitiesOnly = true; + identityFile = "${config.home.homeDirectory}/home/battleship"; + extraOptions = {RequestTTY = "yes";}; + }; + "fithter" = { + hostname = "fighter"; + user = "${config.home.username}"; + identitiesOnly = true; + identityFile = "${config.home.homeDirectory}/home/fighter"; + extraOptions = {RequestTTY = "yes";}; + }; + }; + + # Yazi (File manager) + programs.yazi.enable = true; + programs.yazi.enableZshIntegration = true; + + # Zellij (Terminal multiplexer) + programs.zellij.enable = true; + programs.zellij.enableZshIntegration = true; + + # Default shell + programs.zsh.enable = true; + programs.zsh.autosuggestion.enable = true; + programs.zsh.enableCompletion = true; +}