Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66cb17371d |
+160
-531
@@ -1,23 +1,46 @@
|
|||||||
{lib, pkgs, config, ...}: let
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
mkIf
|
mkIf
|
||||||
mkMerge
|
mkMerge
|
||||||
;
|
;
|
||||||
cfg = config.jfrikker;
|
cfg = config.jfrikker;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./emacs.nix
|
||||||
|
./helix.nix
|
||||||
|
./starship.nix
|
||||||
|
./tmux.nix
|
||||||
|
];
|
||||||
|
|
||||||
options.jfrikker = {
|
options.jfrikker = {
|
||||||
enable = lib.mkEnableOption "Joe Frikker's configuration";
|
enable = lib.mkEnableOption "Joe Frikker's configuration";
|
||||||
desktop.enable = lib.mkEnableOption "Desktop (GUI) applications";
|
desktop.enable = lib.mkEnableOption "Desktop (GUI) applications";
|
||||||
redbook.enable = lib.mkEnableOption "Redbook-specific configuration";
|
redbook.enable = lib.mkEnableOption "Redbook-specific configuration";
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
age-plugin-yubikey
|
||||||
|
dust
|
||||||
|
fd
|
||||||
|
ledger
|
||||||
|
magic-wormhole
|
||||||
|
nil
|
||||||
|
nixfmt
|
||||||
|
openssh
|
||||||
|
rage
|
||||||
|
ripgrep
|
||||||
rlwrap
|
rlwrap
|
||||||
(sbcl.withPackages (ps: with ps; [
|
(sbcl.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
alexandria
|
alexandria
|
||||||
cl-markup
|
cl-markup
|
||||||
cl-mock
|
cl-mock
|
||||||
@@ -50,53 +73,120 @@
|
|||||||
trivial-open-browser
|
trivial-open-browser
|
||||||
trivial-timeout
|
trivial-timeout
|
||||||
uuid
|
uuid
|
||||||
]))
|
]
|
||||||
];
|
))
|
||||||
}
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
rage
|
|
||||||
age-plugin-yubikey
|
|
||||||
yubikey-manager
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
dust
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
tokei
|
tokei
|
||||||
xh
|
xh
|
||||||
|
yubikey-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.eza = {
|
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;
|
enable = true;
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
icons = "auto";
|
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 = [
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
name = "zsh-nix-shell";
|
||||||
ledger
|
file = "nix-shell.plugin.zsh";
|
||||||
];
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "chisui";
|
||||||
|
repo = "zsh-nix-shell";
|
||||||
|
rev = "v0.7.0";
|
||||||
|
sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nil
|
|
||||||
nixfmt
|
|
||||||
];
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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;
|
||||||
|
# };
|
||||||
|
};
|
||||||
}
|
}
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
magic-wormhole
|
|
||||||
];
|
|
||||||
}
|
|
||||||
(mkIf cfg.redbook.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
openssh
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(mkIf cfg.desktop.enable {
|
(mkIf cfg.desktop.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
google-chrome
|
google-chrome
|
||||||
@@ -111,207 +201,19 @@
|
|||||||
wireshark
|
wireshark
|
||||||
];
|
];
|
||||||
|
|
||||||
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
|
|
||||||
];
|
|
||||||
})
|
|
||||||
{
|
|
||||||
programs = {
|
programs = {
|
||||||
bash.enable = true;
|
ghostty = {
|
||||||
gh.enable = true;
|
enable = false;
|
||||||
home-manager.enable = true;
|
package = pkgs.ghostty-bin;
|
||||||
jq.enable = true;
|
|
||||||
lazygit.enable = true;
|
|
||||||
zoxide.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.bat = {
|
|
||||||
enable = true;
|
|
||||||
config.style = "numbers";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.nix-index.enable = true;
|
|
||||||
programs.nix-index-database.comma.enable = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
settings.user.name = "Joe Frikker";
|
|
||||||
settings.user.email = "joe@redbookcattle.com";
|
|
||||||
settings.github.user = "joe@redbookcattle.com";
|
|
||||||
settings.merge.conflictstyle = "zdiff3";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.delta = {
|
|
||||||
enable = true;
|
|
||||||
enableGitIntegration = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.helix = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
|
|
||||||
settings.editor = {
|
|
||||||
auto-format = false;
|
|
||||||
auto-pairs = false;
|
|
||||||
auto-save.after-delay.enable = true;
|
|
||||||
auto-save.after-delay.timeout = 1000;
|
|
||||||
cursorline = true;
|
|
||||||
idle-timeout = 0;
|
|
||||||
rulers = [120];
|
|
||||||
text-width = 100;
|
|
||||||
lsp.goto-reference-include-declaration = false;
|
|
||||||
cursor-shape.insert = "bar";
|
|
||||||
smart-tab.supersede-menu = true;
|
|
||||||
whitespace.render.newline = "all";
|
|
||||||
};
|
|
||||||
|
|
||||||
settings.keys.normal.space = {
|
|
||||||
space = "file_picker";
|
|
||||||
"," = "buffer_picker";
|
|
||||||
# b = "@:sh wezterm cli spawn --cwd . -- tig blame <C-r>%<ret>";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
languages.language-server.eslint = {
|
|
||||||
args = ["--stdio"];
|
|
||||||
command = "vscode-eslint-language-server";
|
|
||||||
config.nodePath = "";
|
|
||||||
config.quiet = false;
|
|
||||||
config.rulesCustomizations = [];
|
|
||||||
config.run = "onType";
|
|
||||||
config.validate = "on";
|
|
||||||
config.codeAction.disableRuleComment.enable = true;
|
|
||||||
config.codeAction.disableRuleComment.location = "separateLine";
|
|
||||||
config.codeAction.showDocumentation.enable = true;
|
|
||||||
config.problems.shortenToSingleLine = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
languages.language-server.jdtls.config.java = {
|
|
||||||
autobuild.enabled = true;
|
|
||||||
completion.maxResults = 1000;
|
|
||||||
format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml";
|
|
||||||
};
|
|
||||||
|
|
||||||
languages.language-server.rust-analyzer.config.files.watcher = "client";
|
|
||||||
|
|
||||||
languages.language = [
|
|
||||||
{
|
|
||||||
name = "typescript";
|
|
||||||
language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ];
|
|
||||||
indent.tab-width = 4;
|
|
||||||
indent.unit = " ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "tsx";
|
|
||||||
language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ];
|
|
||||||
indent.tab-width = 4;
|
|
||||||
indent.unit = " ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "java";
|
|
||||||
indent.tab-width = 4;
|
|
||||||
indent.unit = " ";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.nh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
settings = {
|
||||||
add_newline = false;
|
adjust-cell-height = "15%";
|
||||||
container.disabled = true;
|
font-family = "Iosevka Term SS14";
|
||||||
git_branch.symbol = " ";
|
font-size = 13;
|
||||||
git_status.ahead = "⇡\${count}";
|
theme = "Catppuccin Frappe";
|
||||||
git_status.behind = "⇣\${count}";
|
|
||||||
git_status.diverged = "⇕⇡\${ahead_count}⇣\${behind_count}";
|
|
||||||
git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )";
|
|
||||||
java.symbol = " ";
|
|
||||||
line_break.disabled = true;
|
|
||||||
nix_shell.symbol = " ";
|
|
||||||
nodejs.symbol = " ";
|
|
||||||
package.disabled = true;
|
|
||||||
palette = "catppuccin_frappe";
|
|
||||||
python.symbol = " ";
|
|
||||||
package.symbol = " ";
|
|
||||||
rust.symbol = " ";
|
|
||||||
docker_context.disabled = true;
|
|
||||||
shell.disabled = false;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.tmux = {
|
|
||||||
baseIndex = 1;
|
|
||||||
clock24 = true;
|
|
||||||
customPaneNavigationAndResize = true;
|
|
||||||
historyLimit = 50000;
|
|
||||||
enable = true;
|
|
||||||
escapeTime = 0;
|
|
||||||
keyMode = "vi";
|
|
||||||
mouse = true;
|
|
||||||
shell = pkgs.zsh + "/bin/zsh";
|
|
||||||
shortcut = "Space";
|
|
||||||
tmuxinator.enable = true;
|
|
||||||
terminal = "xterm-256color";
|
|
||||||
extraConfig = ''
|
|
||||||
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
|
||||||
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
|
|
||||||
|
|
||||||
bind-key -T launcher g popup -h 100% -w 100% -E lazygit
|
kitty = {
|
||||||
bind-key g switch-client -Tlauncher
|
|
||||||
set -g default-command ""
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
(mkIf cfg.desktop.enable {
|
|
||||||
programs.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;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf cfg.desktop.enable {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
font = {
|
font = {
|
||||||
name = "Iosevka Term SS14";
|
name = "Iosevka Term SS14";
|
||||||
@@ -331,316 +233,43 @@
|
|||||||
"ctrl+9" = "goto_tab 9";
|
"ctrl+9" = "goto_tab 9";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
|
||||||
{
|
wezterm = {
|
||||||
programs.ghostty = {
|
|
||||||
enable = false;
|
|
||||||
package = pkgs.ghostty-bin;
|
|
||||||
settings = {
|
|
||||||
adjust-cell-height = "15%";
|
|
||||||
font-family = "Iosevka Term SS14";
|
|
||||||
font-size = 13;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
oh-my-zsh.enable = true;
|
extraConfig = ''
|
||||||
syntaxHighlighting.enable = true;
|
local config = {}
|
||||||
autosuggestion.enable = true;
|
config.default_prog = { '${pkgs.zsh}/bin/zsh', '-l'}
|
||||||
historySubstringSearch.enable = true;
|
config.font_size = ${if pkgs.stdenv.isDarwin then "13.0" else "10.0"}
|
||||||
history.share = false;
|
''
|
||||||
cdpath = ["~/source"];
|
+ builtins.readFile ./wezterm.lua;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.zsh.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";
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
];
|
fonts.fontconfig.enable = true;
|
||||||
}
|
})
|
||||||
(mkIf cfg.desktop.enable {
|
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
||||||
programs.emacs = {
|
home.packages = with pkgs; [
|
||||||
enable = true;
|
linear
|
||||||
extraConfig = builtins.readFile ./emacs.el;
|
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
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
ace-window
|
|
||||||
doom-modeline
|
|
||||||
free-keys
|
|
||||||
ligature
|
|
||||||
mixed-pitch
|
|
||||||
popper
|
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
apheleia
|
|
||||||
avy
|
|
||||||
edit-indirect
|
|
||||||
embark
|
|
||||||
god-mode
|
|
||||||
# evil
|
|
||||||
# evil-collection
|
|
||||||
# evil-org
|
|
||||||
string-inflection
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
buffer-terminator
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
consult-eglot
|
|
||||||
graphql-ts-mode
|
|
||||||
haskell-ts-mode
|
|
||||||
jenkinsfile-mode
|
|
||||||
jq-mode
|
|
||||||
(lispy.overrideAttrs {
|
|
||||||
packageRequires = [
|
|
||||||
ace-window iedit swiper zoutline hydra
|
|
||||||
];
|
|
||||||
ignoreCompilationError = true;
|
|
||||||
})
|
})
|
||||||
# lispyville
|
|
||||||
lua-mode
|
|
||||||
nix-mode
|
|
||||||
pnpm-mode
|
|
||||||
prisma-ts-mode
|
|
||||||
rust-mode
|
|
||||||
sly
|
|
||||||
sly-macrostep
|
|
||||||
sql-indent
|
|
||||||
tree-sitter
|
|
||||||
(treesit-grammars.with-grammars (g: [
|
|
||||||
g.tree-sitter-bash
|
|
||||||
g.tree-sitter-commonlisp
|
|
||||||
g.tree-sitter-css
|
|
||||||
g.tree-sitter-dockerfile
|
|
||||||
g.tree-sitter-dot
|
|
||||||
g.tree-sitter-elisp
|
|
||||||
g.tree-sitter-graphql
|
|
||||||
g.tree-sitter-gitcommit
|
|
||||||
g.tree-sitter-gitignore
|
|
||||||
g.tree-sitter-haskell
|
|
||||||
g.tree-sitter-html
|
|
||||||
g.tree-sitter-java
|
|
||||||
g.tree-sitter-javascript
|
|
||||||
g.tree-sitter-jq
|
|
||||||
g.tree-sitter-json
|
|
||||||
g.tree-sitter-json5
|
|
||||||
g.tree-sitter-just
|
|
||||||
g.tree-sitter-ledger
|
|
||||||
g.tree-sitter-llvm
|
|
||||||
g.tree-sitter-make
|
|
||||||
g.tree-sitter-nginx
|
|
||||||
g.tree-sitter-nix
|
|
||||||
g.tree-sitter-org
|
|
||||||
g.tree-sitter-php
|
|
||||||
g.tree-sitter-prisma
|
|
||||||
g.tree-sitter-python
|
|
||||||
g.tree-sitter-rust
|
|
||||||
g.tree-sitter-rust-format-args
|
|
||||||
g.tree-sitter-scss
|
|
||||||
g.tree-sitter-sql
|
|
||||||
g.tree-sitter-toml
|
|
||||||
g.tree-sitter-tsx
|
|
||||||
g.tree-sitter-typescript
|
|
||||||
g.tree-sitter-xml
|
|
||||||
g.tree-sitter-yaml
|
|
||||||
]))
|
|
||||||
yaml-pro
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
envrc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
consult-gh
|
|
||||||
diff-hl
|
|
||||||
forge
|
|
||||||
git-timemachine
|
|
||||||
magit
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
cape
|
|
||||||
consult
|
|
||||||
corfu
|
|
||||||
embark-consult
|
|
||||||
marginalia
|
|
||||||
orderless
|
|
||||||
vertico
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
org-modern
|
|
||||||
org-present
|
|
||||||
org-roam
|
|
||||||
verb
|
|
||||||
visual-fill-column
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
eat
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages =
|
||||||
|
epkgs: with epkgs; [
|
||||||
slack
|
slack
|
||||||
ox-slack
|
ox-slack
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./slack.el;
|
extraConfig = builtins.readFile ./slack.el;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
ledger-mode
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
age
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.claude-code = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
(epkgs.trivialBuild {
|
|
||||||
pname = "claude-code";
|
|
||||||
version = "0.4.5";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "stevemolitor";
|
|
||||||
repo = "claude-code.el";
|
|
||||||
rev = "03199df8b3a1e9cd4857f0851f7a912ba524aff3";
|
|
||||||
sha256 = "sha256-5QJrWIu4EgnHcOqMwlrs2JBBx7aI9OaSJswesr6Apfk=";
|
|
||||||
};
|
|
||||||
packageRequires = [ epkgs.inheritenv ];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.bat = {
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.helix.settings.theme = "catppuccin_frappe";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.tmux.plugins = [
|
|
||||||
{
|
|
||||||
plugin = pkgs.tmuxPlugins.catppuccin;
|
|
||||||
extraConfig = ''set -g @catppuccin_window_tabs_enabled on
|
|
||||||
set -g @catppuccin_window_default_text "#W"
|
|
||||||
set -g @catppuccin_window_current_text "#W"'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.starship.settings = builtins.fromTOML (builtins.readFile
|
|
||||||
(pkgs.fetchFromGitHub
|
|
||||||
{
|
|
||||||
owner = "catppuccin";
|
|
||||||
repo = "starship";
|
|
||||||
rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash
|
|
||||||
sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY=";
|
|
||||||
} + /palettes/frappe.toml));
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.ghostty.settings.theme = "Catppuccin Frappe";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
catppuccin-theme
|
|
||||||
];
|
|
||||||
extraConfig = ''(defvar my-base-font-size ${if pkgs.stdenv.isDarwin then "130" else "100"})
|
|
||||||
(require 'catppuccin-theme)
|
|
||||||
(setopt catppuccin-flavor 'frappe)
|
|
||||||
(load-theme 'catppuccin :no-confirm)
|
|
||||||
|
|
||||||
;; (set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130)
|
|
||||||
;; (set-face-attribute 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130)
|
|
||||||
(set-face-attribute 'default nil :font "Iosevka Term SS14" :height my-base-font-size)
|
|
||||||
(set-face-attribute 'fixed-pitch nil :font "Iosevka Term SS14" :height my-base-font-size)
|
|
||||||
(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height my-base-font-size)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
+186
-159
@@ -1,3 +1,15 @@
|
|||||||
|
(setq use-package-always-defer t)
|
||||||
|
|
||||||
|
(use-package emacs
|
||||||
|
:defer nil
|
||||||
|
:config
|
||||||
|
(setq-default fill-column 120)
|
||||||
|
(setq-default tab-width 4))
|
||||||
|
|
||||||
|
(use-package simple
|
||||||
|
:config
|
||||||
|
(setq-default indent-tabs-mode nil))
|
||||||
|
|
||||||
(setopt save-interprogram-paste-before-kill t)
|
(setopt save-interprogram-paste-before-kill t)
|
||||||
(setopt enable-recursive-minibuffers t)
|
(setopt enable-recursive-minibuffers t)
|
||||||
(setopt line-spacing 0.15)
|
(setopt line-spacing 0.15)
|
||||||
@@ -27,8 +39,6 @@
|
|||||||
|
|
||||||
(column-number-mode t)
|
(column-number-mode t)
|
||||||
|
|
||||||
(which-key-mode)
|
|
||||||
|
|
||||||
(setopt dired-auto-revert-buffer t)
|
(setopt dired-auto-revert-buffer t)
|
||||||
|
|
||||||
(global-hl-line-mode)
|
(global-hl-line-mode)
|
||||||
@@ -120,6 +130,34 @@
|
|||||||
|
|
||||||
(setopt compilation-scroll-output 'first-error)
|
(setopt compilation-scroll-output 'first-error)
|
||||||
|
|
||||||
|
(use-package minibuffer
|
||||||
|
:bind (:map minibuffer-local-map
|
||||||
|
("M-s" . consult-history)
|
||||||
|
("M-r" . consult-history) )
|
||||||
|
:custom
|
||||||
|
(completion-styles '(orderless basic)))
|
||||||
|
|
||||||
|
(use-package xref
|
||||||
|
:custom
|
||||||
|
(xref-show-xrefs-function 'consult-xref)
|
||||||
|
(xref-show-definitions-function 'consult-xref))
|
||||||
|
|
||||||
|
(use-package register
|
||||||
|
:custom
|
||||||
|
(register-preview-delay 0.5)
|
||||||
|
:config
|
||||||
|
(advice-add 'register-preview :override #'consult-register-window))
|
||||||
|
|
||||||
|
(use-package isearch
|
||||||
|
:bind
|
||||||
|
(:map isearch-mode-map
|
||||||
|
("M-e" . consult-isearch-history)
|
||||||
|
("M-s e" . consult-isearch-history)
|
||||||
|
("M-s l" . consult-line)
|
||||||
|
("M-s L" . consult-line-multi))
|
||||||
|
:custom
|
||||||
|
(isearch-wrap-pause 'no-ding))
|
||||||
|
|
||||||
(defun jf/window-children (window)
|
(defun jf/window-children (window)
|
||||||
(let ((result nil)
|
(let ((result nil)
|
||||||
(child (window-child window)))
|
(child (window-child window)))
|
||||||
@@ -352,21 +390,23 @@ falls back to the outer one first."
|
|||||||
;; (evil-org-set-key-theme '(navigation insert textobjects additional calendar))
|
;; (evil-org-set-key-theme '(navigation insert textobjects additional calendar))
|
||||||
;; (require 'evil-org-agenda)
|
;; (require 'evil-org-agenda)
|
||||||
;; (evil-org-agenda-set-keys)
|
;; (evil-org-agenda-set-keys)
|
||||||
(require 'god-mode)
|
(use-package god-mode
|
||||||
(require 'which-key)
|
:bind (("<escape>" . (lambda () (interactive) (god-mode-all 1)))
|
||||||
|
:map god-local-mode-map
|
||||||
(bind-keys :map god-local-mode-map
|
|
||||||
("i" . (lambda () (interactive) (god-mode-all -1)))
|
("i" . (lambda () (interactive) (god-mode-all -1)))
|
||||||
("z" . repeat))
|
("z" . repeat)))
|
||||||
(bind-keys ("<escape>" . (lambda () (interactive) (god-mode-all 1))))
|
|
||||||
(defun my-god-mode-update-cursor-type ()
|
(defun my-god-mode-update-cursor-type ()
|
||||||
(setq cursor-type (cond
|
(setq cursor-type (cond
|
||||||
((and (featurep 'org-present) org-present-mode) nil)
|
((and (featurep 'org-present) org-present-mode) nil)
|
||||||
((or (and (featurep 'god-mode) god-local-mode) buffer-read-only) 'box)
|
((or (and (featurep 'god-mode) god-local-mode) buffer-read-only) 'box)
|
||||||
(t 'bar))))
|
(t 'bar))))
|
||||||
|
|
||||||
(add-hook 'post-command-hook 'my-god-mode-update-cursor-type)
|
(add-hook 'post-command-hook 'my-god-mode-update-cursor-type)
|
||||||
(which-key-enable-god-mode-support)
|
|
||||||
|
(use-package which-key
|
||||||
|
:hook after-init
|
||||||
|
:config
|
||||||
|
(which-key-enable-god-mode-support))
|
||||||
|
|
||||||
(defun avy-goto-char-timer-embark ()
|
(defun avy-goto-char-timer-embark ()
|
||||||
(interactive)
|
(interactive)
|
||||||
@@ -382,19 +422,13 @@ falls back to the outer one first."
|
|||||||
(avy-goto-char-timer)))
|
(avy-goto-char-timer)))
|
||||||
|
|
||||||
(bind-keys
|
(bind-keys
|
||||||
("C-j" . avy-goto-char-timer)
|
("M-j" . avy-goto-char-timer-embark))
|
||||||
("M-j" . avy-goto-char-timer-embark)
|
|
||||||
("C-." . embark-act))
|
|
||||||
|
|
||||||
(with-eval-after-load 'lispy
|
(use-package avy
|
||||||
(bind-keys :map lispy-mode-map
|
:bind (("C-j" . avy-goto-char-timer)))
|
||||||
("C-j" . avy-goto-char-timer)))
|
|
||||||
|
|
||||||
(with-eval-after-load 'org
|
(use-package embark
|
||||||
(bind-keys :map org-mode-map
|
:bind (("C-." . embark-act)))
|
||||||
("C-j" . avy-goto-char-timer)))
|
|
||||||
|
|
||||||
(setopt isearch-wrap-pause 'no-ding)
|
|
||||||
|
|
||||||
(defun string-inflection-rust-style-cycle-function (str)
|
(defun string-inflection-rust-style-cycle-function (str)
|
||||||
(cond
|
(cond
|
||||||
@@ -416,36 +450,44 @@ falls back to the outer one first."
|
|||||||
(bind-keys :repeat-map string-inflection-rust-map
|
(bind-keys :repeat-map string-inflection-rust-map
|
||||||
("u" . string-inflection-rust-style-cycle))
|
("u" . string-inflection-rust-style-cycle))
|
||||||
|
|
||||||
(bind-keys ("C-x 4 n" . edit-indirect-region))
|
(use-package edit-indirect
|
||||||
|
:bind (("C-x 4 n" . edit-indirect-region)))
|
||||||
|
|
||||||
(with-eval-after-load 'apheleia
|
(use-package apheleia
|
||||||
|
:config
|
||||||
(push '(prisma-format "prisma" "format" "--schema" filepath) apheleia-formatters))
|
(push '(prisma-format "prisma" "format" "--schema" filepath) apheleia-formatters))
|
||||||
|
|
||||||
(buffer-terminator-mode 1)
|
(use-package buffer-terminator
|
||||||
|
:hook after-init)
|
||||||
|
|
||||||
(bind-keys
|
(use-package elec-pair
|
||||||
("s-b" . consult-project-buffer))
|
:hook (after-init . electric-pair-mode))
|
||||||
|
|
||||||
(electric-pair-mode 1)
|
(use-package tree-sitter
|
||||||
|
:hook (after-init . global-tree-sitter-mode))
|
||||||
|
|
||||||
(setq-default indent-tabs-mode nil)
|
(use-package ediff-wind
|
||||||
(setq-default tab-width 4)
|
:custom
|
||||||
(global-tree-sitter-mode 1)
|
(ediff-split-window-function 'split-window-horizontally))
|
||||||
|
|
||||||
(setopt ediff-split-window-function 'split-window-horizontally)
|
|
||||||
|
|
||||||
(defun project-nix-flake ()
|
(defun project-nix-flake ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(nix-flake (project-root (project-current t))))
|
(nix-flake (project-root (project-current t))))
|
||||||
(bind-keys ("C-x p n" . project-nix-flake))
|
(bind-keys ("C-x p n" . project-nix-flake))
|
||||||
|
|
||||||
(setq-default fill-column 120)
|
(use-package ansi-color
|
||||||
|
:hook
|
||||||
|
(compilation-filter . ansi-color-compilation-filter))
|
||||||
|
|
||||||
(defun jf-init-fill-column ()
|
(use-package display-fill-column-indicator
|
||||||
(display-fill-column-indicator-mode 1))
|
:hook (prog-mode))
|
||||||
(add-hook 'prog-mode-hook 'jf-init-fill-column)
|
|
||||||
|
|
||||||
(with-eval-after-load 'prog-mode
|
(use-package prog-mode
|
||||||
|
:bind (:map prog-mode-map
|
||||||
|
("C-c D" . flymake-show-project-diagnostics)
|
||||||
|
("M-n" . flymake-goto-next-error)
|
||||||
|
("M-p" . flymake-goto-prev-error))
|
||||||
|
:config
|
||||||
(defun my-prog-fill-reindent-defun (&optional argument)
|
(defun my-prog-fill-reindent-defun (&optional argument)
|
||||||
"Refill or reindent the paragraph or defun that contains point.
|
"Refill or reindent the paragraph or defun that contains point.
|
||||||
|
|
||||||
@@ -472,85 +514,44 @@ or follows point."
|
|||||||
|
|
||||||
(advice-add 'prog-fill-reindent-defun :override #'my-prog-fill-reindent-defun))
|
(advice-add 'prog-fill-reindent-defun :override #'my-prog-fill-reindent-defun))
|
||||||
|
|
||||||
(add-hook 'compilation-filter-hook 'ansi-color-compilation-filter)
|
(use-package flymake
|
||||||
|
:commands (flymake-show-project-diagnostics flymake-goto-next-error flymake-goto-prev-error)
|
||||||
(autoload 'flymake-show-project-diagnostics "flymake")
|
:bind (:map flymake-project-diagnostics-mode-map
|
||||||
(autoload 'flymake-goto-next-error "flymake")
|
|
||||||
(autoload 'flymake-goto-prev-error "flymake")
|
|
||||||
|
|
||||||
(with-eval-after-load 'prog-mode
|
|
||||||
(bind-keys :map prog-mode-map
|
|
||||||
("C-c D" . flymake-show-project-diagnostics)
|
|
||||||
("M-n" . flymake-goto-next-error)
|
|
||||||
("M-p" . flymake-goto-prev-error)))
|
|
||||||
|
|
||||||
(with-eval-after-load 'flymake
|
|
||||||
(bind-keys :map flymake-project-diagnostics-mode-map
|
|
||||||
("q" . quit-window)))
|
("q" . quit-window)))
|
||||||
|
|
||||||
(setopt eglot-ignored-server-capabilities '(:inlayHintProvider :semanticTokensProvider))
|
|
||||||
(add-hook 'eglot-managed-mode-hook (lambda () (eglot-inlay-hints-mode -1)) nil t)
|
|
||||||
(setopt eglot-code-action-indications nil)
|
|
||||||
(setopt eglot-events-buffer-config '(:size 300000 :format full))
|
|
||||||
|
|
||||||
(with-eval-after-load 'eglot
|
|
||||||
(bind-keys :map eglot-mode-map
|
|
||||||
("C-c a" . eglot-code-actions)
|
|
||||||
("C-c r" . eglot-rename)
|
|
||||||
("C-c i" . eglot-find-implementation)))
|
|
||||||
|
|
||||||
(with-eval-after-load 'eglot
|
|
||||||
(add-to-list 'eglot-stay-out-of 'yasnippet))
|
|
||||||
|
|
||||||
(setq major-mode-remap-alist '((rust-mode . rust-mode)))
|
(setq major-mode-remap-alist '((rust-mode . rust-mode)))
|
||||||
|
(use-package rust-mode
|
||||||
(setopt rust-mode-treesitter-derive t)
|
:bind (:map rust-mode-map
|
||||||
|
("C-c u" . string-inflection-rust-style-cycle))
|
||||||
(with-eval-after-load 'rust-prog-mode
|
:custom
|
||||||
(bind-keys :map rust-mode-map
|
(rust-mode-treesitter-derive t))
|
||||||
("C-c u" . string-inflection-rust-style-cycle)))
|
|
||||||
|
|
||||||
(defun yaml-validate ()
|
(defun yaml-validate ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(compile (concat "yamllint -d '{extends: default, rules: {indentation: {indent-sequences: false}, braces: {max-spaces-inside: 1}}}' " (buffer-file-name)) t))
|
(compile (concat "yamllint -d '{extends: default, rules: {indentation: {indent-sequences: false}, braces: {max-spaces-inside: 1}}}' " (buffer-file-name)) t))
|
||||||
|
|
||||||
(add-hook 'yaml-ts-mode-hook 'yaml-pro-ts-mode)
|
(use-package yaml-pro
|
||||||
|
:hook (yaml-ts-mode . yaml-pro-ts-mode))
|
||||||
|
|
||||||
(setopt inferior-lisp-program "sbcl")
|
(use-package lispy
|
||||||
|
:hook (emacs-lisp-mode lisp-mode lisp-data-mode)
|
||||||
(setopt lispy-compat '(god-mode edebug))
|
:bind (:map lispy-mode-map
|
||||||
(add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))
|
|
||||||
(add-hook 'lisp-mode-hook (lambda () (lispy-mode 1)))
|
|
||||||
(add-hook 'lisp-data-mode-hook (lambda () (lispy-mode 1)))
|
|
||||||
(with-eval-after-load 'lispy
|
|
||||||
;; (require 'lispyville)
|
|
||||||
;; (add-hook 'lispy-mode-hook #'lispyville-mode)
|
|
||||||
(bind-keys :map lispy-mode-map
|
|
||||||
("i" . (lambda ()
|
("i" . (lambda ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (and (featurep 'god-mode) god-global-mode)
|
(if (and (featurep 'god-mode) god-global-mode)
|
||||||
(god-mode-all -1)
|
(god-mode-all -1)
|
||||||
(special-lispy-tab))))))
|
(special-lispy-tab))))
|
||||||
|
("C-j" . avy-goto-char-timer))
|
||||||
|
:custom
|
||||||
|
(lispy-compat '(god-mode edebug)))
|
||||||
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
|
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
|
||||||
(add-to-list 'major-mode-remap-alist '(typescript-mode . typescript-ts-mode))
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-mode))
|
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-mode))
|
||||||
(add-to-list 'major-mode-remap-alist '(tsx-mode . tsx-ts-mode))
|
|
||||||
(setopt typescript-ts-mode-indent-offset 2)
|
|
||||||
(with-eval-after-load 'typescript-ts-mode
|
|
||||||
(defun my-tsx-ts-mode--indent-compatibility-b893426 ()
|
|
||||||
"Indent rules helper, to handle different releases of tree-sitter-tsx.
|
|
||||||
Check if a node type is available, then return the right indent rules."
|
|
||||||
;; handle https://github.com/tree-sitter/tree-sitter-typescript/commit/b893426b82492e59388a326b824a346d829487e8
|
|
||||||
(condition-case nil
|
|
||||||
(progn (treesit-query-capture 'tsx '((jsx_fragment) @capture))
|
|
||||||
`(((match "<" "jsx_fragment") parent 0)
|
|
||||||
((parent-is "jsx_fragment") parent typescript-ts-mode-indent-offset)))
|
|
||||||
(treesit-query-error
|
|
||||||
`(((match "<" "jsx_text") parent 0)
|
|
||||||
((parent-is "jsx_text") grand-parent typescript-ts-mode-indent-offset)))))
|
|
||||||
(advice-add 'tsx-ts-mode--indent-compatibility-b893426 :override #'my-tsx-ts-mode--indent-compatibility-b893426))
|
|
||||||
|
|
||||||
|
(use-package typescript-ts-mode
|
||||||
|
:init
|
||||||
|
(add-to-list 'major-mode-remap-alist '(typescript-mode . typescript-ts-mode))
|
||||||
|
(add-to-list 'major-mode-remap-alist '(tsx-mode . tsx-ts-mode))
|
||||||
(defvar my/edit-indirect-tag-modes
|
(defvar my/edit-indirect-tag-modes
|
||||||
'(("graphql" . graphql-ts-mode)
|
'(("graphql" . graphql-ts-mode)
|
||||||
("gql" . graphql-ts-mode)
|
("gql" . graphql-ts-mode)
|
||||||
@@ -589,17 +590,45 @@ Check if a node type is available, then return the right indent rules."
|
|||||||
(buf (edit-indirect-region (car bounds) (cdr bounds) t)))
|
(buf (edit-indirect-region (car bounds) (cdr bounds) t)))
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(funcall mode)))))
|
(funcall mode)))))
|
||||||
|
:bind
|
||||||
|
(:map typescript-ts-mode-map
|
||||||
|
("C-c '" . my/edit-indirect-tagged-template-at-point)
|
||||||
|
:map tsx-ts-mode-map
|
||||||
|
("C-c '" . my/edit-indirect-tagged-template-at-point))
|
||||||
|
:custom (typescript-ts-mode-indent-offset 2)
|
||||||
|
:config
|
||||||
|
(defun my-tsx-ts-mode--indent-compatibility-b893426 ()
|
||||||
|
"Indent rules helper, to handle different releases of tree-sitter-tsx.
|
||||||
|
Check if a node type is available, then return the right indent rules."
|
||||||
|
;; handle https://github.com/tree-sitter/tree-sitter-typescript/commit/b893426b82492e59388a326b824a346d829487e8
|
||||||
|
(condition-case nil
|
||||||
|
(progn (treesit-query-capture 'tsx '((jsx_fragment) @capture))
|
||||||
|
`(((match "<" "jsx_fragment") parent 0)
|
||||||
|
((parent-is "jsx_fragment") parent typescript-ts-mode-indent-offset)))
|
||||||
|
(treesit-query-error
|
||||||
|
`(((match "<" "jsx_text") parent 0)
|
||||||
|
((parent-is "jsx_text") grand-parent typescript-ts-mode-indent-offset)))))
|
||||||
|
(advice-add 'tsx-ts-mode--indent-compatibility-b893426 :override #'my-tsx-ts-mode--indent-compatibility-b893426))
|
||||||
|
|
||||||
(with-eval-after-load 'typescript-ts-mode
|
|
||||||
(define-key typescript-ts-mode-map (kbd "C-c '") #'my/edit-indirect-tagged-template-at-point)
|
|
||||||
(define-key tsx-ts-mode-map (kbd "C-c '") #'my/edit-indirect-tagged-template-at-point))
|
|
||||||
|
|
||||||
(with-eval-after-load 'eglot
|
(use-package eglot
|
||||||
(add-to-list 'eglot-server-programs '((prisma-ts-mode) "prisma-language-server" "--stdio")))
|
:bind (:map eglot-mode-map
|
||||||
|
("C-c a" . eglot-code-actions)
|
||||||
|
("C-c r" . eglot-rename)
|
||||||
|
("C-c i" . eglot-find-implementation))
|
||||||
|
:custom
|
||||||
|
(eglot-ignored-server-capabilities '(:inlayHintProvider :semanticTokensProvider))
|
||||||
|
(eglot-code-action-indications nil)
|
||||||
|
(eglot-events-buffer-config '(:size 300000 :format full))
|
||||||
|
:config
|
||||||
|
(add-to-list 'eglot-server-programs '((prisma-ts-mode) "prisma-language-server" "--stdio"))
|
||||||
|
(add-to-list 'eglot-stay-out-of 'yasnippet)
|
||||||
|
(add-hook 'eglot-managed-mode-hook (lambda () (eglot-inlay-hints-mode -1)) nil t))
|
||||||
|
|
||||||
|
(use-package java-ts-mode
|
||||||
|
:init
|
||||||
(push '(java-mode . java-ts-mode) major-mode-remap-alist)
|
(push '(java-mode . java-ts-mode) major-mode-remap-alist)
|
||||||
(with-eval-after-load 'java-ts-mode
|
:bind (:map java-ts-mode-map
|
||||||
(bind-keys :map java-ts-mode-map
|
|
||||||
("C-c u" . string-inflection-java-style-cycle))
|
("C-c u" . string-inflection-java-style-cycle))
|
||||||
(push `((n-p-gp nil "block" "lambda_expression") parent-bol java-ts-mode-indent-offset)
|
(push `((n-p-gp nil "block" "lambda_expression") parent-bol java-ts-mode-indent-offset)
|
||||||
(cdar java-ts-mode--indent-rules))
|
(cdar java-ts-mode--indent-rules))
|
||||||
@@ -629,36 +658,50 @@ Check if a node type is available, then return the right indent rules."
|
|||||||
; jf/compile-class-to-file 3)))
|
; jf/compile-class-to-file 3)))
|
||||||
;(add-to-list 'compilation-error-regexp-alist 'java-stack-trace)
|
;(add-to-list 'compilation-error-regexp-alist 'java-stack-trace)
|
||||||
|
|
||||||
(add-hook 'sql-mode-hook 'sqlind-minor-mode)
|
(use-package sql-indent
|
||||||
|
:hook
|
||||||
|
(sql-mode . sqlind-minor-mode))
|
||||||
|
|
||||||
(setopt haskell-ts-use-indent t)
|
(use-package haskell-ts-mode
|
||||||
|
:custom
|
||||||
|
(haskell-ts-use-indent t))
|
||||||
|
|
||||||
(add-hook 'after-init-hook 'envrc-global-mode)
|
(use-package envrc
|
||||||
(setopt envrc-show-summary-in-minibuffer nil)
|
:hook
|
||||||
|
(after-init . envrc-global-mode)
|
||||||
|
:custom
|
||||||
|
(envrc-show-summary-in-minibuffer nil))
|
||||||
|
|
||||||
(setopt magit-define-global-key-bindings 'recommended)
|
(use-package magit
|
||||||
(bind-keys ("s-g" . magit))
|
:bind (("s-g" . magit))
|
||||||
|
:custom
|
||||||
(setopt magit-save-repository-buffers 'dontask)
|
(magit-define-global-key-bindings 'recommended)
|
||||||
(setopt magit-commit-show-diff nil)
|
(magit-save-repository-buffers 'dontask)
|
||||||
(with-eval-after-load 'magit
|
(magit-commit-show-diff nil)
|
||||||
|
:config
|
||||||
(set-face-attribute 'git-commit-summary nil :inherit nil)
|
(set-face-attribute 'git-commit-summary nil :inherit nil)
|
||||||
(defun magit-fetch-all-on-load ()
|
(defun magit-fetch-all-on-load ()
|
||||||
(magit-run-git-async "fetch" "--all"))
|
(magit-run-git-async "fetch" "--all"))
|
||||||
(add-hook 'magit-status-mode-hook 'magit-fetch-all-on-load)
|
(add-hook 'magit-status-mode-hook 'magit-fetch-all-on-load)
|
||||||
(remove-hook 'magit-status-headers-hook 'magit-insert-tags-header)
|
(remove-hook 'magit-status-headers-hook 'magit-insert-tags-header))
|
||||||
(require 'forge)
|
|
||||||
(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh))
|
|
||||||
|
|
||||||
(with-eval-after-load 'forge
|
(use-package forge
|
||||||
|
:after magit
|
||||||
|
:config
|
||||||
(add-hook 'forge-edit-post-hook 'forge-create-pullreq-insert-single-commit-message)
|
(add-hook 'forge-edit-post-hook 'forge-create-pullreq-insert-single-commit-message)
|
||||||
(setopt forge-status-buffer-default-topic-filters
|
(setopt forge-status-buffer-default-topic-filters
|
||||||
(forge--topics-spec :type 'topic :active nil :state 'open :order 'newest)))
|
(forge--topics-spec :type 'topic :active nil :state 'open :order 'newest)))
|
||||||
|
|
||||||
(global-diff-hl-mode)
|
(use-package diff-hl
|
||||||
|
:hook
|
||||||
|
((after-init . global-diff-hl-mode)
|
||||||
|
(magit-post-refresh . diff-hl-magit-post-refresh)))
|
||||||
|
|
||||||
(bind-keys
|
(use-package consult
|
||||||
;; ("C-c M-x" . consult-mode-command)
|
:commands (consult-history)
|
||||||
|
:functions (consult-register-window consult-xref)
|
||||||
|
:binds (;; ("C-c M-x" . consult-mode-command)
|
||||||
|
("s-b" . consult-project-buffer)
|
||||||
("C-c h" . consult-history)
|
("C-c h" . consult-history)
|
||||||
;; ("C-c k" . consult-kmacro)
|
;; ("C-c k" . consult-kmacro)
|
||||||
;; ("C-c m" . consult-man)
|
;; ("C-c m" . consult-man)
|
||||||
@@ -689,26 +732,10 @@ Check if a node type is available, then return the right indent rules."
|
|||||||
("M-s r" . consult-ripgrep)
|
("M-s r" . consult-ripgrep)
|
||||||
("M-s l" . consult-line)
|
("M-s l" . consult-line)
|
||||||
("M-s L" . consult-line-multi)
|
("M-s L" . consult-line-multi)
|
||||||
("M-s e" . consult-isearch-history)
|
("M-s e" . consult-isearch-history))
|
||||||
:map isearch-mode-map
|
:custom
|
||||||
("M-e" . consult-isearch-history)
|
(consult-narrow-key "<")
|
||||||
("M-s e" . consult-isearch-history)
|
:config
|
||||||
("M-s l" . consult-line)
|
|
||||||
("M-s L" . consult-line-multi)
|
|
||||||
:map minibuffer-local-map
|
|
||||||
("M-s" . consult-history)
|
|
||||||
("M-r" . consult-history))
|
|
||||||
|
|
||||||
(advice-add 'register-preview :override #'consult-register-window)
|
|
||||||
(setopt register-preview-delay 0.5)
|
|
||||||
|
|
||||||
(setopt xref-show-xrefs-function 'consult-xref)
|
|
||||||
(setopt xref-show-definitions-function 'consult-xref)
|
|
||||||
|
|
||||||
(eval-when-compile
|
|
||||||
(require 'consult))
|
|
||||||
|
|
||||||
(with-eval-after-load 'consult
|
|
||||||
(consult-customize
|
(consult-customize
|
||||||
consult-theme :preview-key '(:debounce 0.2 any)
|
consult-theme :preview-key '(:debounce 0.2 any)
|
||||||
consult-ripgrep consult-git-grep consult-grep consult-man
|
consult-ripgrep consult-git-grep consult-grep consult-man
|
||||||
@@ -720,38 +747,37 @@ Check if a node type is available, then return the right indent rules."
|
|||||||
consult-source-project-recent-file
|
consult-source-project-recent-file
|
||||||
:preview-key '(:debounce 0.4 any)))
|
:preview-key '(:debounce 0.4 any)))
|
||||||
|
|
||||||
(setopt consult-narrow-key "<") ;; "C-+"
|
|
||||||
|
|
||||||
(use-package vertico
|
(use-package vertico
|
||||||
|
:hook
|
||||||
|
(after-init . vertico-mode)
|
||||||
:custom
|
:custom
|
||||||
(vertico-count 25)
|
(vertico-count 25))
|
||||||
:config
|
|
||||||
(vertico-mode))
|
|
||||||
|
|
||||||
(setopt completion-styles '(orderless basic))
|
|
||||||
|
|
||||||
(use-package marginalia
|
(use-package marginalia
|
||||||
:config
|
:hook
|
||||||
(marginalia-mode))
|
(after-init . marginalia-mode))
|
||||||
|
|
||||||
(use-package corfu
|
(use-package corfu
|
||||||
|
:hook
|
||||||
|
(after-init . global-corfu-mode)
|
||||||
:custom
|
:custom
|
||||||
(corfu-cycle t)
|
(corfu-cycle t)
|
||||||
(corfu-popupinfo-mode nil)
|
(corfu-popupinfo-mode nil)
|
||||||
(corfu-quit-at-boundary nil)
|
(corfu-quit-at-boundary nil)
|
||||||
(corfu-on-exact-match 'show)
|
(corfu-on-exact-match 'show))
|
||||||
:config
|
|
||||||
(global-corfu-mode))
|
|
||||||
;; (setq completion-in-region-function #'consult-completion-in-region)
|
;; (setq completion-in-region-function #'consult-completion-in-region)
|
||||||
|
|
||||||
(use-package cape
|
(use-package cape
|
||||||
:custom
|
:functions (cape-file)
|
||||||
|
:init
|
||||||
(add-hook 'completion-at-point-functions 'cape-file))
|
(add-hook 'completion-at-point-functions 'cape-file))
|
||||||
|
|
||||||
(use-package org
|
(use-package org
|
||||||
:bind (("C-c A" . org-agenda)
|
:bind (("C-c A" . org-agenda)
|
||||||
("C-c C" . org-capture)
|
("C-c C" . org-capture)
|
||||||
("C-c l" . org-id-store-link))
|
("C-c l" . org-id-store-link)
|
||||||
|
:map org-mode-map
|
||||||
|
("C-j" . avy-goto-char-timer))
|
||||||
:custom
|
:custom
|
||||||
(org-babel-load-languages '((emacs-lisp . t) (sql . t)))
|
(org-babel-load-languages '((emacs-lisp . t) (sql . t)))
|
||||||
(org-confirm-babel-evaluate nil)
|
(org-confirm-babel-evaluate nil)
|
||||||
@@ -869,12 +895,13 @@ Check if a node type is available, then return the right indent rules."
|
|||||||
:hook (eshell-load-hook . eat-eshell-mode))
|
:hook (eshell-load-hook . eat-eshell-mode))
|
||||||
|
|
||||||
(use-package age
|
(use-package age
|
||||||
|
:hook
|
||||||
|
(after-init . age-file-enable)
|
||||||
:custom
|
:custom
|
||||||
(age-default-identity "~/source/dotfiles/keys/yubi1age.txt")
|
(age-default-identity "~/source/dotfiles/keys/yubi1age.txt")
|
||||||
(age-default-recipient "~/source/dotfiles/keys/myself.txt")
|
(age-default-recipient "~/source/dotfiles/keys/myself.txt")
|
||||||
:config
|
:config
|
||||||
(setenv "PINENTRY_PROGRAM" "pinentry-mac")
|
(setenv "PINENTRY_PROGRAM" "pinentry-mac"))
|
||||||
(age-file-enable))
|
|
||||||
|
|
||||||
(use-package claude-code
|
(use-package claude-code
|
||||||
:bind-keymap ("C-c c" . claude-code-command-map)
|
:bind-keymap ("C-c c" . claude-code-command-map)
|
||||||
|
|||||||
@@ -0,0 +1,137 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
config = lib.mkIf (config.jfrikker.enable && config.jfrikker.desktop.enable) {
|
||||||
|
programs.emacs = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages =
|
||||||
|
epkgs: with epkgs; [
|
||||||
|
ace-window
|
||||||
|
age
|
||||||
|
apheleia
|
||||||
|
avy
|
||||||
|
buffer-terminator
|
||||||
|
cape
|
||||||
|
catppuccin-theme
|
||||||
|
(epkgs.trivialBuild {
|
||||||
|
pname = "claude-code";
|
||||||
|
version = "0.4.5";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "stevemolitor";
|
||||||
|
repo = "claude-code.el";
|
||||||
|
rev = "03199df8b3a1e9cd4857f0851f7a912ba524aff3";
|
||||||
|
sha256 = "sha256-5QJrWIu4EgnHcOqMwlrs2JBBx7aI9OaSJswesr6Apfk=";
|
||||||
|
};
|
||||||
|
packageRequires = [ epkgs.inheritenv ];
|
||||||
|
})
|
||||||
|
consult
|
||||||
|
consult-eglot
|
||||||
|
consult-gh
|
||||||
|
corfu
|
||||||
|
diff-hl
|
||||||
|
doom-modeline
|
||||||
|
eat
|
||||||
|
edit-indirect
|
||||||
|
embark
|
||||||
|
embark-consult
|
||||||
|
envrc
|
||||||
|
forge
|
||||||
|
free-keys
|
||||||
|
git-timemachine
|
||||||
|
god-mode
|
||||||
|
graphql-ts-mode
|
||||||
|
haskell-ts-mode
|
||||||
|
jenkinsfile-mode
|
||||||
|
jq-mode
|
||||||
|
ligature
|
||||||
|
(lispy.overrideAttrs {
|
||||||
|
packageRequires = [
|
||||||
|
ace-window
|
||||||
|
iedit
|
||||||
|
swiper
|
||||||
|
zoutline
|
||||||
|
hydra
|
||||||
|
];
|
||||||
|
ignoreCompilationError = true;
|
||||||
|
})
|
||||||
|
ledger-mode
|
||||||
|
lua-mode
|
||||||
|
magit
|
||||||
|
marginalia
|
||||||
|
mixed-pitch
|
||||||
|
nix-mode
|
||||||
|
orderless
|
||||||
|
org-modern
|
||||||
|
org-present
|
||||||
|
org-roam
|
||||||
|
pnpm-mode
|
||||||
|
popper
|
||||||
|
prisma-ts-mode
|
||||||
|
rust-mode
|
||||||
|
sly
|
||||||
|
sly-macrostep
|
||||||
|
sql-indent
|
||||||
|
string-inflection
|
||||||
|
tree-sitter
|
||||||
|
(treesit-grammars.with-grammars (g: [
|
||||||
|
g.tree-sitter-bash
|
||||||
|
g.tree-sitter-commonlisp
|
||||||
|
g.tree-sitter-css
|
||||||
|
g.tree-sitter-dockerfile
|
||||||
|
g.tree-sitter-dot
|
||||||
|
g.tree-sitter-elisp
|
||||||
|
g.tree-sitter-graphql
|
||||||
|
g.tree-sitter-gitcommit
|
||||||
|
g.tree-sitter-gitignore
|
||||||
|
g.tree-sitter-haskell
|
||||||
|
g.tree-sitter-html
|
||||||
|
g.tree-sitter-java
|
||||||
|
g.tree-sitter-javascript
|
||||||
|
g.tree-sitter-jq
|
||||||
|
g.tree-sitter-json
|
||||||
|
g.tree-sitter-json5
|
||||||
|
g.tree-sitter-just
|
||||||
|
g.tree-sitter-ledger
|
||||||
|
g.tree-sitter-llvm
|
||||||
|
g.tree-sitter-make
|
||||||
|
g.tree-sitter-nginx
|
||||||
|
g.tree-sitter-nix
|
||||||
|
g.tree-sitter-org
|
||||||
|
g.tree-sitter-php
|
||||||
|
g.tree-sitter-prisma
|
||||||
|
g.tree-sitter-python
|
||||||
|
g.tree-sitter-rust
|
||||||
|
g.tree-sitter-rust-format-args
|
||||||
|
g.tree-sitter-scss
|
||||||
|
g.tree-sitter-sql
|
||||||
|
g.tree-sitter-toml
|
||||||
|
g.tree-sitter-tsx
|
||||||
|
g.tree-sitter-typescript
|
||||||
|
g.tree-sitter-xml
|
||||||
|
g.tree-sitter-yaml
|
||||||
|
]))
|
||||||
|
verb
|
||||||
|
vertico
|
||||||
|
visual-fill-column
|
||||||
|
yaml-pro
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
(defvar my-base-font-size ${if pkgs.stdenv.isDarwin then "130" else "100"})
|
||||||
|
(require 'catppuccin-theme)
|
||||||
|
(setopt catppuccin-flavor 'frappe)
|
||||||
|
(load-theme 'catppuccin :no-confirm)
|
||||||
|
|
||||||
|
;; (set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130)
|
||||||
|
;; (set-face-attribute 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130)
|
||||||
|
(set-face-attribute 'default nil :font "Iosevka Term SS14" :height my-base-font-size)
|
||||||
|
(set-face-attribute 'fixed-pitch nil :font "Iosevka Term SS14" :height my-base-font-size)
|
||||||
|
(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height my-base-font-size)
|
||||||
|
''
|
||||||
|
+ builtins.readFile ./emacs.el;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
{ config, lib, ... }: {
|
||||||
|
config = lib.mkIf config.jfrikker.enable {
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
|
||||||
|
settings.editor = {
|
||||||
|
auto-format = false;
|
||||||
|
auto-pairs = false;
|
||||||
|
auto-save.after-delay.enable = true;
|
||||||
|
auto-save.after-delay.timeout = 1000;
|
||||||
|
cursorline = true;
|
||||||
|
idle-timeout = 0;
|
||||||
|
rulers = [ 120 ];
|
||||||
|
text-width = 100;
|
||||||
|
lsp.goto-reference-include-declaration = false;
|
||||||
|
cursor-shape.insert = "bar";
|
||||||
|
smart-tab.supersede-menu = true;
|
||||||
|
whitespace.render.newline = "all";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.keys.normal.space = {
|
||||||
|
space = "file_picker";
|
||||||
|
"," = "buffer_picker";
|
||||||
|
# b = "@:sh wezterm cli spawn --cwd . -- tig blame <C-r>%<ret>";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.theme = "catppuccin_frappe";
|
||||||
|
|
||||||
|
languages.language-server.eslint = {
|
||||||
|
args = [ "--stdio" ];
|
||||||
|
command = "vscode-eslint-language-server";
|
||||||
|
config.nodePath = "";
|
||||||
|
config.quiet = false;
|
||||||
|
config.rulesCustomizations = [ ];
|
||||||
|
config.run = "onType";
|
||||||
|
config.validate = "on";
|
||||||
|
config.codeAction.disableRuleComment.enable = true;
|
||||||
|
config.codeAction.disableRuleComment.location = "separateLine";
|
||||||
|
config.codeAction.showDocumentation.enable = true;
|
||||||
|
config.problems.shortenToSingleLine = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
languages.language-server.jdtls.config.java = {
|
||||||
|
autobuild.enabled = true;
|
||||||
|
completion.maxResults = 1000;
|
||||||
|
format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml";
|
||||||
|
};
|
||||||
|
|
||||||
|
languages.language-server.rust-analyzer.config.files.watcher = "client";
|
||||||
|
|
||||||
|
languages.language = [
|
||||||
|
{
|
||||||
|
name = "typescript";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
];
|
||||||
|
indent.tab-width = 4;
|
||||||
|
indent.unit = " ";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tsx";
|
||||||
|
language-servers = [
|
||||||
|
"typescript-language-server"
|
||||||
|
"vscode-eslint-language-server"
|
||||||
|
];
|
||||||
|
indent.tab-width = 4;
|
||||||
|
indent.unit = " ";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "java";
|
||||||
|
indent.tab-width = 4;
|
||||||
|
indent.unit = " ";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
config.programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = false;
|
||||||
|
container.disabled = true;
|
||||||
|
git_branch.symbol = " ";
|
||||||
|
git_status.ahead = "⇡\${count}";
|
||||||
|
git_status.behind = "⇣\${count}";
|
||||||
|
git_status.diverged = "⇕⇡\${ahead_count}⇣\${behind_count}";
|
||||||
|
git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )";
|
||||||
|
java.symbol = " ";
|
||||||
|
line_break.disabled = true;
|
||||||
|
nix_shell.symbol = " ";
|
||||||
|
nodejs.symbol = " ";
|
||||||
|
package.disabled = true;
|
||||||
|
palette = "catppuccin_frappe";
|
||||||
|
python.symbol = " ";
|
||||||
|
package.symbol = " ";
|
||||||
|
rust.symbol = " ";
|
||||||
|
docker_context.disabled = true;
|
||||||
|
shell.disabled = false;
|
||||||
|
}
|
||||||
|
// builtins.fromTOML (
|
||||||
|
builtins.readFile (
|
||||||
|
pkgs.fetchFromGitHub {
|
||||||
|
owner = "catppuccin";
|
||||||
|
repo = "starship";
|
||||||
|
rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash
|
||||||
|
sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY=";
|
||||||
|
}
|
||||||
|
+ /palettes/frappe.toml
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
config.programs.tmux = {
|
||||||
|
baseIndex = 1;
|
||||||
|
clock24 = true;
|
||||||
|
customPaneNavigationAndResize = true;
|
||||||
|
historyLimit = 50000;
|
||||||
|
enable = true;
|
||||||
|
escapeTime = 0;
|
||||||
|
keyMode = "vi";
|
||||||
|
mouse = true;
|
||||||
|
shell = pkgs.zsh + "/bin/zsh";
|
||||||
|
shortcut = "Space";
|
||||||
|
tmuxinator.enable = true;
|
||||||
|
terminal = "xterm-256color";
|
||||||
|
extraConfig = ''
|
||||||
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||||
|
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
|
||||||
|
|
||||||
|
bind-key -T launcher g popup -h 100% -w 100% -E lazygit
|
||||||
|
bind-key g switch-client -Tlauncher
|
||||||
|
set -g default-command ""
|
||||||
|
'';
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
plugin = pkgs.tmuxPlugins.catppuccin;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @catppuccin_window_tabs_enabled on
|
||||||
|
set -g @catppuccin_window_default_text "#W"
|
||||||
|
set -g @catppuccin_window_current_text "#W"'';
|
||||||
|
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user