Files
nix/modules/home-manager/devenv.nix

136 lines
3.7 KiB
Nix
Raw Normal View History

{
config,
inputs,
lib,
pkgs,
...
}: {
imports = [
inputs.dot013-nvim.homeManagerModules.neovim
];
home.sessionVariables = {
# EDITOR = "nvim"; # Default editor, already defined by dot013-nvim
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;
# Neovim (Editor)
# programs.neovim.enable = true; # Already enabled by dot013-nvim
# 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";
};
# 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;
2025-02-05 13:59:25 -03:00
programs.yazi.settings = {
manager = {
show_hidden = true;
show_symlink = true;
2025-02-05 13:59:25 -03:00
sort_by = "natural";
sort_dir_first = true;
sort_sensitive = false;
sort_translit = true;
linemode = "size";
};
};
home.file."${config.xdg.configHome}/yazi/init.lua".text = ''
-- Add username and hostname in header
-- https://yazi-rs.github.io/docs/tips#username-hostname-in-header
Header:children_add(function()
if ya.target_family() ~= "unix" then
return ""
end
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
end, 500, Header.LEFT)
-- Add user and group owner of file in status line
-- https://yazi-rs.github.io/docs/tips#user-group-in-status
Status:children_add(function()
local h = cx.active.current.hovered
if h == nil or ya.target_family() ~= "unix" then
return ""
end
return ui.Line({
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
":",
ui.Span(ya.user_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
})
end, 500, Status.RIGHT)
'';
# 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;
2025-02-05 15:41:49 -03:00
programs.zsh.syntaxHighlighting.enable = true;
}