Files
nixos/demilich/home.nix

374 lines
8.8 KiB
Nix

{
email,
pkgs,
username,
stateVersion,
inputs,
config,
lib,
...
}:
{
imports = [
inputs.noctalia.homeModules.default
];
nixpkgs = {
config = {
allowUnfree = true;
permittedInsecurePackages = [ "electron-39.8.10" ];
};
};
home = {
username = "${username}";
homeDirectory = "/home/${username}";
preferXdgDirectories = true;
stateVersion = stateVersion;
packages = with pkgs; [
bitwarden-cli
bitwarden-desktop
duf
dust
sd
seafile-client
stow
tealdeer
xh
];
};
editorconfig = {
enable = true;
settings = {
"*" = {
charset = "utf-8";
end_of_line = "lf";
trim_trailing_whitespace = true;
insert_final_newline = false;
max_line_width = 80;
indent_style = "space";
indent_size = 2;
};
};
};
programs = {
bat = {
enable = true;
extraPackages = with pkgs.bat-extras; [
batdiff
batman
batgrep
batwatch
];
};
delta = {
enable = true;
enableGitIntegration = true;
options = {
decorations = {
commit-decoration-style = "bold yellow box ul";
file-decoration-style = "none";
file-style = "bold yellow ul";
};
features = "decorations";
whitespace-error-style = "22 reverse";
};
};
direnv = {
enable = true;
enableZshIntegration = true;
};
eza = {
enable = true;
enableZshIntegration = true;
colors = "auto";
extraOptions = [
"--group-directories-first"
"--header"
];
git = true;
icons = "auto";
};
fd = {
enable = true;
};
fuzzel = {
enable = true;
settings = {
main = {
terminal = "${pkgs.ghostty}/bin/ghostty";
layer = "overlay";
};
};
};
fzf = {
enable = true;
enableZshIntegration = true;
};
ghostty = {
enable = true;
enableZshIntegration = true;
installBatSyntax = true;
installVimSyntax = true;
settings = {
font-family = "JetBrainsMono Nerd Font";
font-size = 13;
theme = "sproutingdark";
macos-option-as-alt = true;
shell-integration-features = "no-cursor";
cursor-style = "block";
background-opacity = 0.75;
};
themes = {
sproutingdark = {
palette = [
"0=#1f2620"
"1=#e04b7c"
"2=#9dbf9e"
"3=#ccca7a"
"4=#5586db"
"5=#dc51de"
"6=#7ef3ef"
"7=#d8e5d8"
"8=#3f4c3f"
"9=#e8789d"
"10=#b1ccb1"
"11=#fffd98"
"12=#99b6e9"
"13=#ea97eb"
"14=#b2f8f5"
"15=#f5f9f5"
];
background = "1f2620";
foreground = "eaeaea";
cursor-color = "fffd98";
cursor-text = "3f4c3f";
cursor-opacity = 0.7;
cursor-style = "block";
selection-background = "3f4c3f";
selection-foreground = "ffffea";
background-opacity = 1;
window-padding-x = "2,2";
window-padding-y = "2,2";
window-padding-balance = true;
window-height = 25;
window-width = 80;
};
};
};
git = {
enable = true;
lfs = {
enable = true;
};
settings = {
user.name = "Matthew Stobbs";
user.email = "${email}";
init.defaultBranch = "main";
};
};
go = {
enable = true;
env = {
GOPRIVATE = [ "git.sprouting.cloud" ];
};
};
gpg = {
enable = true;
};
home-manager = {
enable = true;
};
jq = {
enable = true;
};
lazygit = {
enable = true;
enableZshIntegration = true;
};
neovide = {
enable = true;
};
# noctalia = {
# enable = true;
# settings = "${config.xdg.configHome}/dotfiles/niri/.config/niri/full.kdl";
# };
pandoc = {
enable = true;
};
ripgrep = {
enable = true;
};
starship = {
enable = true;
enableZshIntegration = true;
settings = {
palette = "sproutingdark";
add_newline = true;
command_timeout = 2000;
format = lib.concatStrings [
"\$username"
"[](fg:yellow)\$git_status\$git_branch\$directory"
"[](fg:yellow bg:green)"
"\$fill"
"\$c"
"\$golang"
"\$nodejs"
"\$rust"
"\$fill"
"[](fg:silver bg:green)\$time[](fg:silver)\n"
"\$character"
];
character = {
success_symbol = "[ ](bold lime)";
error_symbol = "[ ](bold red)";
};
username = {
show_always = false;
style_user = "bg:fuchsia fg:black";
style_root = "bg:fuchsia fg:black";
format = "[](fg:fuchsia)[\$user ](\$style)[](fg:fuchsia)";
disabled = false;
};
fill = {
symbol = " ";
style = "bg:green";
};
directory = {
style = "bg:yellow fg:black";
format = "[ \$path ](\$style)";
truncation_length = 3;
truncation_symbol = "/";
substitutions = {
"~" = "";
"Documents" = "󰈙";
"Downloads" = "";
"Music" = "";
"Pictures" = "";
};
};
time = {
disabled = false;
time_format = " %F %T";
style = "bg:silver fg:black";
format = "[ \$time ](\$style)";
};
docker_context = {
symbol = " ";
style = "bg:fuchsia fg:black";
format = "[ \$symbol \$context ](\$style)";
};
git_branch = {
symbol = "";
style = "bg:yellow fg:black";
format = "[ \$symbol \$branch ](\$style)";
};
git_status = {
style = "bg:yellow fg:black";
format = "[\$all_status\$ahead_behind ](\$style)";
};
c = {
symbol = " ";
style = "bg:aqua fg:black";
format = "[](fg:aqua bg:green)[\$symbol (\$version) ](\$style)[](fg:aqua bg:green)";
};
golang = {
symbol = " ";
style = "bg:aqua fg:black";
format = "[](fg:aqua bg:green)[\$symbol (\$version) ](\$style)[](fg:aqua bg:green)";
};
nodejs = {
symbol = " ";
style = "bg:aqua fg:black";
format = "[](fg:aqua bg:green)[\$symbol (\$version) ](\$style)[](fg:aqua bg:green)";
};
rust = {
symbol = " ";
style = "bg:aqua fg:black";
format = "[](fg:aqua bg:green)[\$symbol (\$version) ](\$style)[](fg:aqua bg:green)";
};
palettes = {
sproutingdark = {
black = "#1f2620";
grey = "#3f4c3f";
maroon = "#e04b7c";
red = "#e8789d";
green = "#9bdf9e";
lime = "#b1ccb1";
olive = "#ccca7a";
yellow = "#fffd98";
navy = "#5586db";
blue = "#99b6e9";
purple = "#dc51de";
fuchsia = "#ea97eb";
teal = "#7ef3ef";
aqua = "#b2f8f5";
silver = "#d8e5d8";
white = "#f5f9f5";
};
sproutinglight = {
black = "#3f4c3f";
grey = "#7e997e";
maroon = "#ad1849";
red = "#d81e5b";
green = "#7e997e";
lime = "#9dbf9e";
olive = "#99985b";
yellow = "#ccca7a";
navy = "#779ee2";
blue = "#446baf";
purple = "#843185";
fuchsia = "#b041b2";
teal = "#4c928f";
aqua = "#65c2bf";
silver = "#f5f9f5";
white = "#d8e5d8";
};
};
};
};
tmux = {
enable = true;
};
uv = {
enable = true;
};
yazi = {
enable = true;
enableZshIntegration = true;
settings = {
mgr = {
show_hidden = true;
sort_by = "natural";
sort_sensitive = true;
sort_dir_first = true;
scrolloff = 5;
};
};
};
zoxide = {
enable = true;
enableZshIntegration = true;
};
zsh = {
enable = true;
enableCompletion = true;
oh-my-zsh = {
enable = true;
plugins = [
"aliases"
"direnv"
"eza"
"fzf"
"golang"
"podman"
"starship"
"zoxide"
];
theme = "robbyrussell";
extraConfig = ''
zstyle ':omz:update' mode reminder
'';
};
};
};
}