250 lines
5.8 KiB
Nix
250 lines
5.8 KiB
Nix
{ pkgs, ... }:
|
||
|
||
let
|
||
c = import ./colors.nix;
|
||
in
|
||
{
|
||
programs.git.enable = true;
|
||
programs.zsh.enable = true;
|
||
|
||
environment.systemPackages = with pkgs; [
|
||
nixfmt
|
||
ripgrep
|
||
fd
|
||
eza
|
||
jq
|
||
yq-go
|
||
curl
|
||
wget
|
||
file
|
||
tree
|
||
unzip
|
||
zip
|
||
p7zip
|
||
rsync
|
||
openssl
|
||
lsof
|
||
strace
|
||
psmisc
|
||
pciutils
|
||
usbutils
|
||
smartmontools
|
||
nvme-cli
|
||
lm_sensors
|
||
man-pages
|
||
man-pages-posix
|
||
];
|
||
|
||
fonts.packages = [ pkgs.nerd-fonts.jetbrains-mono ];
|
||
fonts.fontconfig.defaultFonts.monospace = [ "JetBrainsMono Nerd Font" ];
|
||
|
||
home-manager.users.dev = { config, ... }: {
|
||
programs.git = {
|
||
enable = true;
|
||
package = null; # The system module supplies Git.
|
||
settings.user.useConfigOnly = true;
|
||
};
|
||
|
||
programs.zsh = {
|
||
enable = true;
|
||
enableCompletion = true;
|
||
autosuggestion.enable = true;
|
||
syntaxHighlighting.enable = true;
|
||
defaultKeymap = "emacs";
|
||
history = {
|
||
path = "${config.xdg.stateHome}/zsh/history";
|
||
size = 50000;
|
||
save = 50000;
|
||
ignoreSpace = true;
|
||
expireDuplicatesFirst = true;
|
||
};
|
||
shellAliases = {
|
||
ll = "eza --long --group-directories-first --icons=auto";
|
||
la = "eza --long --all --group-directories-first --icons=auto";
|
||
};
|
||
initContent = ''
|
||
bindkey '^[[H' beginning-of-line
|
||
bindkey '^[[F' end-of-line
|
||
bindkey '^[[1;5C' forward-word
|
||
bindkey '^[[1;5D' backward-word
|
||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=244'
|
||
'';
|
||
};
|
||
|
||
programs.fzf = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
defaultCommand = "fd --type f --hidden --exclude .git";
|
||
fileWidgetCommand = "fd --type f --hidden --exclude .git";
|
||
changeDirWidgetCommand = "fd --type d --hidden --exclude .git";
|
||
defaultOptions = [
|
||
"--height=45%"
|
||
"--layout=reverse"
|
||
"--border=rounded"
|
||
];
|
||
fileWidgetOptions = [ "--preview 'bat --color=always --line-range=:200 -- {}'" ];
|
||
colors = {
|
||
bg = c.background;
|
||
fg = c.text;
|
||
"bg+" = c.surface;
|
||
"fg+" = c.text;
|
||
hl = c.cyan;
|
||
"hl+" = c.cyan;
|
||
border = c.border;
|
||
prompt = c.blue;
|
||
pointer = c.purple;
|
||
marker = c.green;
|
||
info = c.muted;
|
||
};
|
||
};
|
||
|
||
programs.starship = {
|
||
enable = true;
|
||
settings = {
|
||
add_newline = true;
|
||
format = "$username$hostname$directory$git_branch$git_status$nix_shell$cmd_duration\n$character";
|
||
directory = {
|
||
style = "bold ${c.blue}";
|
||
truncation_length = 4;
|
||
truncation_symbol = "…/";
|
||
read_only = " [read-only]";
|
||
};
|
||
git_branch = {
|
||
symbol = "git:";
|
||
style = c.purple;
|
||
};
|
||
git_status.style = c.purple;
|
||
nix_shell = {
|
||
format = "[nix:$name]($style) ";
|
||
style = c.cyan;
|
||
};
|
||
cmd_duration = {
|
||
format = "[$duration]($style) ";
|
||
style = c.muted;
|
||
};
|
||
character = {
|
||
success_symbol = "[❯](bold ${c.cyan})";
|
||
error_symbol = "[❯](bold ${c.red})";
|
||
};
|
||
};
|
||
};
|
||
|
||
programs.zoxide = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
};
|
||
programs.bat = {
|
||
enable = true;
|
||
config.theme = "base16";
|
||
};
|
||
programs.btop = {
|
||
enable = true;
|
||
settings = {
|
||
theme_background = false;
|
||
rounded_corners = true;
|
||
update_ms = 1500;
|
||
};
|
||
};
|
||
programs.yazi = {
|
||
enable = true;
|
||
enableZshIntegration = true;
|
||
settings.mgr = {
|
||
show_hidden = true;
|
||
sort_by = "natural";
|
||
sort_dir_first = true;
|
||
};
|
||
};
|
||
|
||
programs.alacritty = {
|
||
enable = true;
|
||
settings = {
|
||
window = {
|
||
padding = {
|
||
x = 16;
|
||
y = 12;
|
||
};
|
||
dynamic_padding = true;
|
||
decorations = "None";
|
||
opacity = 1.0;
|
||
};
|
||
font = {
|
||
normal = {
|
||
family = "JetBrainsMono Nerd Font";
|
||
style = "Regular";
|
||
};
|
||
bold = {
|
||
family = "JetBrainsMono Nerd Font";
|
||
style = "Bold";
|
||
};
|
||
italic = {
|
||
family = "JetBrainsMono Nerd Font";
|
||
style = "Italic";
|
||
};
|
||
size = 13.0;
|
||
offset.y = 2;
|
||
};
|
||
cursor = {
|
||
style = {
|
||
shape = "Beam";
|
||
blinking = "Off";
|
||
};
|
||
unfocused_hollow = true;
|
||
};
|
||
scrolling.history = 20000;
|
||
selection.save_to_clipboard = false;
|
||
colors = {
|
||
primary = {
|
||
background = c.background;
|
||
foreground = c.text;
|
||
};
|
||
cursor = {
|
||
text = c.background;
|
||
cursor = c.cyan;
|
||
};
|
||
selection = {
|
||
text = c.text;
|
||
background = "#354562";
|
||
};
|
||
normal = {
|
||
black = c.surface;
|
||
red = c.red;
|
||
green = c.green;
|
||
yellow = c.yellow;
|
||
blue = c.blue;
|
||
magenta = c.purple;
|
||
cyan = c.cyan;
|
||
white = "#dde1e6";
|
||
};
|
||
bright = {
|
||
black = c.muted;
|
||
red = "#ff99a0";
|
||
green = "#6fdc8c";
|
||
yellow = "#f7d75c";
|
||
blue = "#a6c8ff";
|
||
magenta = "#d4bbff";
|
||
cyan = "#82e9de";
|
||
white = c.text;
|
||
};
|
||
};
|
||
keyboard.bindings = [
|
||
{
|
||
key = "Equals";
|
||
mods = "Control|Shift";
|
||
action = "IncreaseFontSize";
|
||
}
|
||
{
|
||
key = "Minus";
|
||
mods = "Control|Shift";
|
||
action = "DecreaseFontSize";
|
||
}
|
||
{
|
||
key = "Key0";
|
||
mods = "Control|Shift";
|
||
action = "ResetFontSize";
|
||
}
|
||
];
|
||
};
|
||
};
|
||
};
|
||
}
|