Files
dotfiles/modules/home/default.nix
T
2026-09-16 23:38:22 -04:00

276 lines
6.9 KiB
Nix

{
lib,
pkgs,
config,
...
}:
let
inherit (lib)
mkIf
mkMerge
;
cfg = config.jfrikker;
in
{
imports = [
./emacs.nix
./helix.nix
./starship.nix
./tmux.nix
];
options.jfrikker = {
enable = lib.mkEnableOption "Joe Frikker's configuration";
desktop.enable = lib.mkEnableOption "Desktop (GUI) applications";
redbook.enable = lib.mkEnableOption "Redbook-specific configuration";
};
config = mkIf cfg.enable (mkMerge [
{
home.packages = with pkgs; [
age-plugin-yubikey
dust
fd
ledger
magic-wormhole
nil
nixfmt
openssh
rage
ripgrep
rlwrap
(sbcl.withPackages (
ps: with ps; [
alexandria
cl-markup
cl-mock
clack
clack-handler-woo
dbi
defstar
dexador
fare-csv
group-by
lack-request
lack-response
local-time
log4cl
mito
myway
prove
prove-asdf
replic
serapeum
shasht
slynk
smug
split-sequence
str
sxql-composer
trivia
trivial-mmap
trivial-ws
trivial-open-browser
trivial-timeout
uuid
]
))
tokei
xh
yubikey-manager
];
programs = {
bash.enable = true;
gh.enable = true;
home-manager.enable = true;
jq.enable = true;
lazygit.enable = true;
nix-index.enable = true;
nix-index-database.comma.enable = true;
zoxide.enable = true;
bat = {
enable = true;
config.style = "numbers";
config.theme = "catppuccin-frappe";
themes = {
catppuccin-frappe = {
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "sublime-text"; # Bat uses sublime syntax for its themes
rev = "3d8625d937d89869476e94bc100192aa220ce44a";
sha256 = "3ABUsfJpb6RO6AiuuSL5gwDofJIwC5tlEMzBrlY9/s0=";
};
file = "Frappe.tmTheme";
};
};
};
claude-code = {
enable = true;
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
eza = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
icons = "auto";
};
fzf = {
defaultCommand = "fd --type f";
fileWidgetCommand = "fd --type f";
fileWidgetOptions = [
"--preview"
"'bat --color=always --style=numbers --line-range=:500 {}'"
];
changeDirWidgetCommand = "fd --type d";
tmux.enableShellIntegration = true;
};
git = {
enable = true;
settings.user.name = "Joe Frikker";
settings.user.email = "joe@redbookcattle.com";
settings.github.user = "joe@redbookcattle.com";
settings.merge.conflictstyle = "zdiff3";
};
nh = {
enable = true;
};
delta = {
enable = true;
enableGitIntegration = true;
};
zsh = {
enable = true;
oh-my-zsh.enable = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
historySubstringSearch.enable = true;
history.share = false;
cdpath = [ "~/source" ];
plugins = [
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "v0.7.0";
sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1";
};
}
];
};
};
xdg = {
enable = false;
# configFile."lazygit/config.yml" = {
# enable = true;
# source = pkgs.fetchFromGitHub
# {
# owner = "catppuccin";
# repo = "lazygit";
# rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
# sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
# } + /themes/frappe.yml;
# };
};
}
(mkIf cfg.desktop.enable {
home.packages = with pkgs; [
google-chrome
nerd-fonts.jetbrains-mono
nerd-fonts.symbols-only
(iosevka-bin.override { variant = "Aile"; })
(iosevka-bin.override { variant = "Etoile"; })
(iosevka-bin.override { variant = "SGr-IosevkaTermSS14"; })
nerd-fonts.symbols-only
keymapp
proton-pass
wireshark
];
programs = {
ghostty = {
enable = false;
package = pkgs.ghostty-bin;
settings = {
adjust-cell-height = "15%";
font-family = "Iosevka Term SS14";
font-size = 13;
theme = "Catppuccin Frappe";
};
};
kitty = {
enable = true;
font = {
name = "Iosevka Term SS14";
package = pkgs.iosevka-bin.override { variant = "SGr-IosevkaTermSS14"; };
size = 13;
};
themeFile = "Catppuccin-Frappe";
keybindings = {
"ctrl+1" = "goto_tab 1";
"ctrl+2" = "goto_tab 2";
"ctrl+3" = "goto_tab 3";
"ctrl+4" = "goto_tab 4";
"ctrl+5" = "goto_tab 5";
"ctrl+6" = "goto_tab 6";
"ctrl+7" = "goto_tab 7";
"ctrl+8" = "goto_tab 8";
"ctrl+9" = "goto_tab 9";
};
};
wezterm = {
enable = true;
extraConfig = ''
local config = {}
config.default_prog = { '${pkgs.zsh}/bin/zsh', '-l'}
config.font_size = ${if pkgs.stdenv.isDarwin then "13.0" else "10.0"}
''
+ builtins.readFile ./wezterm.lua;
};
};
fonts.fontconfig.enable = true;
})
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
home.packages = with pkgs; [
linear
notion-app
(slack.overrideAttrs {
version = "4.50.143";
src = pkgs.fetchurl {
url = "https://downloads.slack-edge.com/desktop-releases/mac/arm64/4.50.143/Slack-4.50.143-macOS.dmg";
hash = "sha256-f5oYi8NPKXWpDcowFYMUjptbQs4V9hK2bm1TuaQeJn0=";
};
})
teams
];
})
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
programs.emacs = {
extraPackages =
epkgs: with epkgs; [
slack
ox-slack
];
extraConfig = builtins.readFile ./slack.el;
};
})
]);
}