276 lines
6.9 KiB
Nix
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;
|
|
};
|
|
})
|
|
]);
|
|
}
|