Compare commits

..

8 Commits

Author SHA1 Message Date
110f9fa8ee remove lazygit, git shell aliases, and nushell git functions 2026-03-13 10:39:35 +00:00
263fe067e5 oc tweaks 2026-03-13 10:39:35 +00:00
ec04ea123d broder 2026-03-13 10:39:35 +00:00
46cd921ef8 stuff 2026-03-13 10:39:35 +00:00
f40284b3be bg 2026-03-13 10:39:35 +00:00
b45d3c65ac border 2026-03-13 10:39:35 +00:00
10ebe9e1af lnx 2026-03-13 10:39:35 +00:00
6b93e33607 border 2026-03-13 10:39:35 +00:00
9 changed files with 226 additions and 266 deletions

View File

@@ -11,12 +11,15 @@
pattern = "*";
callback.__raw = ''
function()
local base = require("rose-pine.palette").base
local foam = require("rose-pine.palette").foam
vim.api.nvim_set_hl(0, "NormalFloat", { bg = base })
vim.api.nvim_set_hl(0, "FloatTitle", { fg = foam, bg = base, bold = true })
vim.api.nvim_set_hl(0, "MiniPickPrompt", { bg = base, bold = true })
vim.api.nvim_set_hl(0, "MiniPickBorderText", { bg = base })
local p = require("rose-pine.palette")
vim.api.nvim_set_hl(0, "NormalFloat", { bg = p.base })
vim.api.nvim_set_hl(0, "FloatTitle", { fg = p.foam, bg = p.base, bold = true })
vim.api.nvim_set_hl(0, "Pmenu", { fg = p.subtle, bg = p.base })
vim.api.nvim_set_hl(0, "PmenuExtra", { fg = p.muted, bg = p.base })
vim.api.nvim_set_hl(0, "PmenuKind", { fg = p.foam, bg = p.base })
vim.api.nvim_set_hl(0, "PmenuSbar", { bg = p.base })
vim.api.nvim_set_hl(0, "MiniPickPrompt", { bg = p.base, bold = true })
vim.api.nvim_set_hl(0, "MiniPickBorderText", { bg = p.base })
end
'';
}

View File

@@ -348,6 +348,98 @@
action = ":lua vim.lsp.buf.definition()<CR>";
options.desc = "Source definition";
}
# t - tab
{
mode = "n";
key = "<leader>tc";
action = ":tabclose<CR>";
options.desc = "Close tab";
}
{
mode = "n";
key = "<leader>tn";
action = ":tabnew<CR>";
options.desc = "New tab";
}
{
mode = "n";
key = "<leader>to";
action = ":tabonly<CR>";
options.desc = "Close other tabs";
}
{
mode = "n";
key = "<leader>th";
action = ":tabprevious<CR>";
options.desc = "Previous tab";
}
{
mode = "n";
key = "<leader>tl";
action = ":tabnext<CR>";
options.desc = "Next tab";
}
# w - window
{
mode = "n";
key = "<leader>wh";
action = "<C-w>h";
options.desc = "Go left";
}
{
mode = "n";
key = "<leader>wj";
action = "<C-w>j";
options.desc = "Go down";
}
{
mode = "n";
key = "<leader>wk";
action = "<C-w>k";
options.desc = "Go up";
}
{
mode = "n";
key = "<leader>wl";
action = "<C-w>l";
options.desc = "Go right";
}
{
mode = "n";
key = "<leader>ws";
action = ":split<CR>";
options.desc = "Split horizontal";
}
{
mode = "n";
key = "<leader>wv";
action = ":vsplit<CR>";
options.desc = "Split vertical";
}
{
mode = "n";
key = "<leader>wc";
action = ":close<CR>";
options.desc = "Close window";
}
{
mode = "n";
key = "<leader>wq";
action = ":q<CR>";
options.desc = "Quit window";
}
{
mode = "n";
key = "<leader>wo";
action = ":only<CR>";
options.desc = "Close other windows";
}
{
mode = "n";
key = "<leader>w=";
action = "<C-w>=";
options.desc = "Equalize windows";
}
# other
{
mode = "n";

View File

@@ -4,6 +4,7 @@
clipboard = "osc52";
};
opts = {
winborder = "single";
expandtab = false;
tabstop = 2;
ignorecase = true;

View File

@@ -20,6 +20,16 @@ in {
extraConfigLua = ''
require('code-review').setup({
keymaps = false,
ui = {
input_window = {
border = "single",
},
preview = {
float = {
border = "single",
},
},
},
})
'';
};

View File

@@ -35,6 +35,8 @@
{ mode = 'x', keys = '<Leader>o', desc = '+OpenCode' },
{ mode = 'n', keys = '<Leader>r', desc = '+Review' },
{ mode = 'v', keys = '<Leader>r', desc = '+Review' },
{ mode = 'n', keys = '<Leader>t', desc = '+Tab' },
{ mode = 'n', keys = '<Leader>w', desc = '+Window' },
require("mini.clue").gen_clues.builtin_completion(),
require("mini.clue").gen_clues.g(),
require("mini.clue").gen_clues.marks(),

View File

@@ -11,6 +11,16 @@
hash = "sha256-3xyZux5S8ThBsi7AC4AWnd2h2LEI5L+I5Am2PNWKu64=";
};
doCheck = false;
postPatch = ''
# Widen sign column and move border further left for more padding
sed -i "s/signcolumn', 'yes'/signcolumn', 'yes:2'/" lua/opencode/ui/output_window.lua
sed -i "s/, -3)/, -5)/g" lua/opencode/ui/formatter.lua
sed -i "s/win_col = -3/win_col = -5/g" lua/opencode/ui/formatter.lua
# Fix off-by-one: user border starts 1 line too early (bleeds into header empty line)
sed -i 's/start_line = output:get_line_count() *$/start_line = output:get_line_count() + 1/' lua/opencode/ui/formatter.lua
# Fix file mention border starting 1 line too early
sed -i 's/file_line - 1, file_line/file_line, file_line/' lua/opencode/ui/formatter.lua
'';
};
in {
programs.nixvim = {
@@ -35,18 +45,33 @@ in {
debug = {
show_ids = false,
},
ui = {
icons = {
preset = "text",
overrides = {
header_user = " ",
header_assistant = "» ",
},
},
input = {
text = {
wrap = true,
},
},
},
})
local p = require("rose-pine.palette")
local hl = vim.api.nvim_set_hl
hl(0, "OpencodeBorder", { fg = "#9893a5" })
hl(0, "OpencodeToolBorder", { fg = "#cecacd" })
hl(0, "OpencodeDiffAdd", { bg = "#dfeadf" })
hl(0, "OpencodeDiffDelete", { bg = "#f2dde2" })
hl(0, "OpencodeAgentPlan", { bg = "#907aa9", fg = "#fffaf3" })
hl(0, "OpencodeAgentBuild", { bg = "#56949f", fg = "#fffaf3" })
hl(0, "OpencodeAgentCustom", { bg = "#ea9d34", fg = "#fffaf3" })
hl(0, "OpencodeContestualAction", { bg = "#dfdad9" })
hl(0, "OpencodeInputLegend", { bg = "#f2e9e1", fg = "#797593" })
hl(0, "OpencodeBorder", { fg = p.muted })
hl(0, "OpencodeToolBorder", { fg = p.base })
hl(0, "OpencodeDiffAdd", { bg = p.highlight_med })
hl(0, "OpencodeDiffDelete", { bg = p.overlay })
hl(0, "OpencodeAgentPlan", { bg = p.iris, fg = p.surface })
hl(0, "OpencodeAgentBuild", { bg = p.foam, fg = p.surface })
hl(0, "OpencodeAgentCustom", { bg = p.gold, fg = p.surface })
hl(0, "OpencodeContestualAction", { bg = p.highlight_med })
hl(0, "OpencodeInputLegend", { bg = p.overlay, fg = p.subtle })
'';
};
}

View File

@@ -44,200 +44,6 @@
};
};
# Git shell aliases
home.shellAliases = {
g = "git";
ga = "git add";
gaa = "git add --all";
gapa = "git add --patch";
gau = "git add --update";
gav = "git add --verbose";
gap = "git apply";
gapt = "git apply --3way";
gb = "git branch";
gba = "git branch --all";
gbd = "git branch --delete";
gbD = "git branch --delete --force";
gbl = "git blame -w";
gbnm = "git branch --no-merged";
gbr = "git branch --remote";
gbs = "git bisect";
gbsb = "git bisect bad";
gbsg = "git bisect good";
gbsn = "git bisect new";
gbso = "git bisect old";
gbsr = "git bisect reset";
gbss = "git bisect start";
gc = "git commit --verbose";
gca = "git commit --verbose --all";
gcam = "git commit --all --message";
gcas = "git commit --all --signoff";
gcasm = "git commit --all --signoff --message";
gcb = "git checkout -b";
gcB = "git checkout -B";
gcf = "git config --list";
gclean = "git clean --interactive -d";
gcl = "git clone --recurse-submodules";
gclf = "git clone --recursive --shallow-submodules --filter=blob:none --also-filter-submodules";
gcm = "git checkout main";
gcmsg = "git commit --message";
gcn = "git commit --verbose --no-edit";
gco = "git checkout";
gcor = "git checkout --recurse-submodules";
gcount = "git shortlog --summary --numbered";
gcp = "git cherry-pick";
gcpa = "git cherry-pick --abort";
gcpc = "git cherry-pick --continue";
gcs = "git commit --gpg-sign";
gcss = "git commit --gpg-sign --signoff";
gcssm = "git commit --gpg-sign --signoff --message";
gcsm = "git commit --signoff --message";
gd = "git diff";
gdca = "git diff --cached";
gdcw = "git diff --cached --word-diff";
gds = "git diff --staged";
gdw = "git diff --word-diff";
gdt = "git diff-tree --no-commit-id --name-only -r";
gdup = "git diff @{upstream}";
gf = "git fetch";
gfa = "git fetch --all --tags --prune";
gfo = "git fetch origin";
gg = "git gui citool";
gga = "git gui citool --amend";
ghh = "git help";
gignore = "git update-index --assume-unchanged";
gl = "git pull";
glg = "git log --stat";
glgp = "git log --stat --patch";
glgg = "git log --graph";
glgga = "git log --graph --decorate --all";
glgm = "git log --graph --max-count=10";
glo = "git log --oneline --decorate";
glog = "git log --oneline --decorate --graph";
gloga = "git log --oneline --decorate --graph --all";
glol = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\"";
glola = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --all";
glols = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --stat";
glod = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset\"";
glods = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset\" --date=short";
glum = "git pull upstream main";
gm = "git merge";
gma = "git merge --abort";
gmc = "git merge --continue";
gms = "git merge --squash";
gmff = "git merge --ff-only";
gmtl = "git mergetool --no-prompt";
gmtlvim = "git mergetool --no-prompt --tool=vimdiff";
gmum = "git merge upstream/main";
gmom = "git merge origin/main";
gp = "git push";
gpd = "git push --dry-run";
gpf = "git push --force-with-lease";
gpod = "git push origin --delete";
gpr = "git pull --rebase";
gpra = "git pull --rebase --autostash";
gprav = "git pull --rebase --autostash -v";
gprom = "git pull --rebase origin main";
gpromi = "git pull --rebase=interactive origin main";
gprv = "git pull --rebase -v";
gprum = "git pull --rebase upstream main";
gprumi = "git pull --rebase=interactive upstream main";
gpv = "git push --verbose";
gpu = "git push upstream";
gr = "git remote";
gra = "git remote add";
grb = "git rebase";
grba = "git rebase --abort";
grbc = "git rebase --continue";
grbd = "git rebase develop";
grbi = "git rebase --interactive";
grbm = "git rebase main";
grbo = "git rebase --onto";
grbom = "git rebase origin/main";
grbs = "git rebase --skip";
grbum = "git rebase upstream/main";
grev = "git revert";
greva = "git revert --abort";
grevc = "git revert --continue";
grf = "git reflog";
grh = "git reset";
grhh = "git reset --hard";
grhk = "git reset --keep";
grhs = "git reset --soft";
grm = "git rm";
grmc = "git rm --cached";
grmv = "git remote rename";
grrm = "git remote remove";
grs = "git restore";
grset = "git remote set-url";
grss = "git restore --source";
grst = "git restore --staged";
gru = "git reset --";
grup = "git remote update";
grv = "git remote --verbose";
gsb = "git status --short --branch";
gsh = "git show";
gsi = "git submodule init";
gsps = "git show --pretty=short --show-signature";
gss = "git status --short";
gst = "git status";
gsta = "git stash push";
gstaa = "git stash apply";
gstall = "git stash --all";
gstc = "git stash clear";
gstd = "git stash drop";
gstl = "git stash list";
gstp = "git stash pop";
gsts = "git stash show --patch";
gstu = "git stash push --include-untracked";
gsu = "git submodule update";
gsw = "git switch";
gswc = "git switch --create";
gswd = "git switch develop";
gswm = "git switch main";
gta = "git tag --annotate";
gts = "git tag --sign";
gunignore = "git update-index --no-assume-unchanged";
gwch = "git whatchanged -p --abbrev-commit --pretty=medium";
gwt = "git worktree";
gwta = "git worktree add";
gwtls = "git worktree list";
gwtmv = "git worktree move";
gwtrm = "git worktree remove";
lg = "lazygit";
};
# Complex git aliases that require pipes/subshells — nushell `alias` can't
# handle these, so they're defined as custom commands instead.
programs.nushell.extraConfig = ''
def ggpull [] { git pull origin (git branch --show-current | str trim) }
def ggpush [] { git push origin (git branch --show-current | str trim) }
def ggsup [] { git branch $"--set-upstream-to=origin/(git branch --show-current | str trim)" }
def gluc [] { git pull upstream (git branch --show-current | str trim) }
def gpsup [] { git push --set-upstream origin (git branch --show-current | str trim) }
def gpsupf [] { git push --set-upstream origin (git branch --show-current | str trim) --force-with-lease }
def groh [] { git reset $"origin/(git branch --show-current | str trim)" --hard }
def --env grt [] {
let toplevel = (do { git rev-parse --show-toplevel } | complete | get stdout | str trim)
if ($toplevel | is-not-empty) { cd $toplevel } else { cd . }
}
def gfg [...pattern: string] { git ls-files | lines | where {|f| $f =~ ($pattern | str join ".*") } }
def gignored [] { git ls-files -v | lines | where {|l| ($l | str substring 0..1) =~ "[a-z]" } }
def gpoat [] { git push origin --all; git push origin --tags }
def gtv [] { git tag | lines | sort }
def gwipe [] { git reset --hard; git clean --force -df }
def gunwip [] {
let msg = (git rev-list --max-count=1 --format="%s" HEAD | lines | get 1)
if ($msg | str contains "--wip--") { git reset HEAD~1 }
}
def gwip [] {
git add -A
let deleted = (git ls-files --deleted | lines)
if ($deleted | is-not-empty) { git rm ...$deleted }
git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"
}
'';
# Jujutsu configuration
programs.jujutsu = {
enable = true;
@@ -298,63 +104,83 @@
};
};
# Lazygit configuration
programs.lazygit = {
enable = true;
settings = {
git = {
commit.signOff = true;
pagers = [
{
delta = {
colorArg = "always";
pager = "DELTA_FEATURES=decorations delta --light --paging=never --line-numbers --hyperlinks --hyperlinks-file-link-format=\"lazygit-edit://{path}:{line}\"";
};
}
];
};
gui = {
authorColors = {
"*" = "#907aa9";
};
theme = {
activeBorderColor = [
"#907aa9"
"bold"
];
inactiveBorderColor = [
"#9893a5"
];
optionsTextColor = [
"#286983"
];
selectedLineBgColor = [
"#f2e9e1"
];
cherryPickedCommitBgColor = [
"#dfdad9"
];
cherryPickedCommitFgColor = [
"#907aa9"
];
defaultFgColor = [
"#575279"
];
searchingActiveBorderColor = [
"#ea9d34"
];
unstagedChangesColor = [
"#b4637a"
];
};
};
};
};
# JJUI configuration
programs.jjui = {
enable = true;
settings.ui.colors = {
text = {fg = "#575279";};
dimmed = {fg = "#9893a5";};
selected = {
bg = "#f2e9e1";
fg = "#575279";
bold = true;
};
border = {fg = "#9893a5";};
title = {
fg = "#907aa9";
bold = true;
};
shortcut = {
fg = "#286983";
bold = true;
};
matched = {
fg = "#ea9d34";
bold = true;
};
"revisions selected" = {
bg = "#f2e9e1";
fg = "#575279";
bold = true;
};
"status" = {bg = "#f2e9e1";};
"status title" = {
bg = "#907aa9";
fg = "#faf4ed";
bold = true;
};
"status shortcut" = {fg = "#286983";};
"status dimmed" = {fg = "#9893a5";};
"menu" = {bg = "#faf4ed";};
"menu selected" = {
bg = "#f2e9e1";
fg = "#575279";
bold = true;
};
"menu border" = {fg = "#9893a5";};
"menu title" = {
fg = "#907aa9";
bold = true;
};
"menu shortcut" = {fg = "#286983";};
"menu matched" = {
fg = "#ea9d34";
bold = true;
};
"preview border" = {fg = "#9893a5";};
"help" = {bg = "#faf4ed";};
"help border" = {fg = "#9893a5";};
"help title" = {
fg = "#907aa9";
bold = true;
};
"confirmation" = {bg = "#faf4ed";};
"confirmation border" = {fg = "#9893a5";};
"confirmation selected" = {
bg = "#f2e9e1";
fg = "#575279";
bold = true;
};
"confirmation dimmed" = {fg = "#9893a5";};
source_marker = {
fg = "#56949f";
bold = true;
};
target_marker = {
fg = "#d7827e";
bold = true;
};
};
};
# Direnv configuration

View File

@@ -67,7 +67,7 @@
"usb_storage"
"sd_mod"
];
kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages;
};
users.users = {

View File

@@ -9,6 +9,7 @@
settings = {
show_banner = false;
edit_mode = "vi";
completions = {
algorithm = "fuzzy";
case_sensitive = false;