Compare commits

..

6 Commits

Author SHA1 Message Date
fe39468ba1 fix jj-diffconflicts hash 2026-03-01 15:00:51 +00:00
ef3e5c836c rm lumen 2026-03-01 14:57:48 +00:00
f090642bf8 restore jj/jjui alongside git 2026-03-01 14:57:44 +00:00
31a5057517 add yazi, dust, ouch, serie; drop zip/unzip 2026-03-01 14:33:16 +00:00
5a0e6a1e94 flk
Signed-off-by: Christoph Schmatzler <christoph@schmatzler.com>
2026-03-01 13:24:40 +00:00
3aa24701ef autostart zj
Signed-off-by: Christoph Schmatzler <christoph@schmatzler.com>
2026-03-01 13:24:14 +00:00
17 changed files with 226 additions and 112 deletions

173
flake.lock generated
View File

@@ -6,7 +6,7 @@
"llm-agents",
"nixpkgs"
],
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1771437256,
@@ -119,28 +119,6 @@
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"lumen",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1768113825,
"narHash": "sha256-f09fAifGPEuRrz1DFY910jexq0DaBuQBbq7WcxQIUgs=",
"owner": "nix-community",
"repo": "fenix",
"rev": "55106e04d905c6a7726d0f6be77ed39a99f66a61",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@@ -213,7 +191,7 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
@@ -254,11 +232,11 @@
]
},
"locked": {
"lastModified": 1772060133,
"narHash": "sha256-VuyRptb8v1lVGMlLp4/1vRX3Efwec0CN0S6mKmDPzLg=",
"lastModified": 1772330611,
"narHash": "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ce9b6e52500a0ea0ec48f0bbf6d7a3e431d9dfa4",
"rev": "58fd7ff0eec2cda43e705c4c0585729ec471d400",
"type": "github"
},
"original": {
@@ -270,11 +248,11 @@
"homebrew-cask": {
"flake": false,
"locked": {
"lastModified": 1772091955,
"narHash": "sha256-QrJInCs0cusmdQIwMxZ/WCZqsXRJpAOOp4NMJBr60e4=",
"lastModified": 1772365063,
"narHash": "sha256-c20fIE8+nLb4bcC74xf6HcSsKUjZOs5ZCJ0mh8uEQVQ=",
"owner": "homebrew",
"repo": "homebrew-cask",
"rev": "91ab3ea239965492bc6200477f88bffe6889de10",
"rev": "1308f866f7736f2ee3f69b6ad0f313a5831df20f",
"type": "github"
},
"original": {
@@ -286,11 +264,11 @@
"homebrew-core": {
"flake": false,
"locked": {
"lastModified": 1772095164,
"narHash": "sha256-y0NghXXUbY50Is9CmcYcHfkyUG9C0X1R+zwc4PR+xZU=",
"lastModified": 1772370842,
"narHash": "sha256-iJgJ0tTIn6FdHIhJRSvYepJYAKhBQ6tiuLrRsgMRI4A=",
"owner": "homebrew",
"repo": "homebrew-core",
"rev": "43b12c623003085786780e1702e502f95183e21f",
"rev": "6bd9541c8f2b41dfce36bff2317ee6e63afa7a16",
"type": "github"
},
"original": {
@@ -299,18 +277,53 @@
"type": "github"
}
},
"jj-ryu": {
"flake": false,
"locked": {
"lastModified": 1769803702,
"narHash": "sha256-gE4lvqyC2LRAWNDUGePklORWjyEofs/dHLHVBAub424=",
"owner": "dmmulroy",
"repo": "jj-ryu",
"rev": "aade8d5acb9c2411828f38049a9b42a4b14529b8",
"type": "github"
},
"original": {
"owner": "dmmulroy",
"repo": "jj-ryu",
"type": "github"
}
},
"jj-starship": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1769370163,
"narHash": "sha256-YfcFlJsPCRfqhN+3JUWE77c+eHIp5RAu2rq/JhSxCec=",
"owner": "dmmulroy",
"repo": "jj-starship",
"rev": "76cf00619b0cce5bd08a1b9a49b310ed928794d5",
"type": "github"
},
"original": {
"owner": "dmmulroy",
"repo": "jj-starship",
"type": "github"
}
},
"llm-agents": {
"inputs": {
"blueprint": "blueprint",
"nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1772080226,
"narHash": "sha256-MoBFhWpy/6ekBGiYcah8VPm/MrAO17VkHpTnCnE1KQI=",
"lastModified": 1772335625,
"narHash": "sha256-9/vBHUzJ/PWbPKP9+ew6BJ2wvW2FMUAChjLXe/E2IOw=",
"owner": "numtide",
"repo": "llm-agents.nix",
"rev": "19cd6674bc322f78be04e8a24654abe99da94461",
"rev": "dd89128aac0b67d2290acac934f0e2ec6dbec53d",
"type": "github"
},
"original": {
@@ -319,28 +332,6 @@
"type": "github"
}
},
"lumen": {
"inputs": {
"fenix": "fenix",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769947964,
"narHash": "sha256-DElM5gwipT82puD7w5KMxG3PGiwozJ2VVXtwwPbwV5g=",
"owner": "jnsahaj",
"repo": "lumen",
"rev": "af5fa88eba126dc4508ddd307fd0a2c78f77c898",
"type": "github"
},
"original": {
"owner": "jnsahaj",
"repo": "lumen",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
@@ -382,11 +373,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1771423170,
"narHash": "sha256-K7Dg9TQ0mOcAtWTO/FX/FaprtWQ8BmEXTpLIaNRhEwU=",
"lastModified": 1766840161,
"narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bcc4a9d9533c033d806a46b37dc444f9b0da49dd",
"rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1",
"type": "github"
},
"original": {
@@ -413,11 +404,27 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1772094992,
"narHash": "sha256-G5l2iUA/a0xzxdsx6AgC80dlBdCC2dGO9h6JxHCg+7c=",
"lastModified": 1771423170,
"narHash": "sha256-K7Dg9TQ0mOcAtWTO/FX/FaprtWQ8BmEXTpLIaNRhEwU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bcc4a9d9533c033d806a46b37dc444f9b0da49dd",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1772370856,
"narHash": "sha256-OXf9tB+s1EPCzIBR4eIQTm1dbbfVgjPNEGChgwEvvIU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "718915dd0a346950e4f6e3c4fcce4bc95cd28485",
"rev": "80c8eb1779ca2aa3a84a9c553dd1ef1e3430867b",
"type": "github"
},
"original": {
@@ -427,7 +434,7 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs_4": {
"locked": {
"lastModified": 1770380644,
"narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=",
@@ -443,7 +450,7 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_5": {
"locked": {
"lastModified": 1765934234,
"narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=",
@@ -462,7 +469,7 @@
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_4",
"systems": "systems_3"
},
"locked": {
@@ -504,33 +511,17 @@
"home-manager": "home-manager",
"homebrew-cask": "homebrew-cask",
"homebrew-core": "homebrew-core",
"jj-ryu": "jj-ryu",
"jj-starship": "jj-starship",
"llm-agents": "llm-agents",
"lumen": "lumen",
"nix-homebrew": "nix-homebrew",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_3",
"nixvim": "nixvim",
"overseer": "overseer",
"sops-nix": "sops-nix",
"zjstatus": "zjstatus"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1768083390,
"narHash": "sha256-TGWPJq2mXwxfAe83iZ18DIqXC4sOSj7RkW9b59h6Ox4=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "e42e8ff582ba12a88b6845525d08b6428e6d0fb9",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
@@ -559,11 +550,11 @@
]
},
"locked": {
"lastModified": 1772048434,
"narHash": "sha256-/wA0OaH6kZ/pFA+nXR/tvg5oupOmEDmMS5us79JT60o=",
"lastModified": 1772340640,
"narHash": "sha256-1nq7+Kt5IUBD8Hu3nptVPbMf+22rNJoHT0t9L1X+GKA=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "334daa7c273dd8bf7a0cd370e4e16022b64e55e9",
"rev": "dec4d8eac700dcd2fe3c020857d3ee220ec147f1",
"type": "github"
},
"original": {
@@ -673,7 +664,7 @@
"inputs": {
"crane": "crane",
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_4",
"nixpkgs": "nixpkgs_5",
"rust-overlay": "rust-overlay"
},
"locked": {

View File

@@ -36,10 +36,11 @@
url = "github:zhaofengli/colmena";
inputs.nixpkgs.follows = "nixpkgs";
};
lumen = {
url = "github:jnsahaj/lumen";
inputs.nixpkgs.follows = "nixpkgs";
jj-ryu = {
url = "github:dmmulroy/jj-ryu";
flake = false;
};
jj-starship.url = "github:dmmulroy/jj-starship";
overseer = {
url = "github:dmmulroy/overseer";
flake = false;

View File

@@ -30,8 +30,9 @@
../../profiles/ghostty.nix
../../profiles/git.nix
../../profiles/home.nix
../../profiles/jjui.nix
../../profiles/jujutsu.nix
../../profiles/lazygit.nix
../../profiles/lumen.nix
../../profiles/mise.nix
../../profiles/neovim
../../profiles/opencode.nix
@@ -39,6 +40,7 @@
../../profiles/ripgrep.nix
../../profiles/ssh.nix
../../profiles/starship.nix
../../profiles/yazi.nix
../../profiles/zellij.nix
../../profiles/zk.nix
../../profiles/zoxide.nix

View File

@@ -29,8 +29,9 @@
../../profiles/ghostty.nix
../../profiles/git.nix
../../profiles/home.nix
../../profiles/jjui.nix
../../profiles/jujutsu.nix
../../profiles/lazygit.nix
../../profiles/lumen.nix
../../profiles/mise.nix
../../profiles/neovim
../../profiles/opencode.nix
@@ -38,6 +39,7 @@
../../profiles/ripgrep.nix
../../profiles/ssh.nix
../../profiles/starship.nix
../../profiles/yazi.nix
../../profiles/zellij.nix
../../profiles/zk.nix
../../profiles/zoxide.nix

View File

@@ -30,8 +30,9 @@
../../profiles/fzf.nix
../../profiles/git.nix
../../profiles/home.nix
../../profiles/jjui.nix
../../profiles/jujutsu.nix
../../profiles/lazygit.nix
../../profiles/lumen.nix
../../profiles/mise.nix
../../profiles/neovim
../../profiles/opencode.nix
@@ -40,6 +41,7 @@
../../profiles/ripgrep.nix
../../profiles/ssh.nix
../../profiles/starship.nix
../../profiles/yazi.nix
../../profiles/zellij.nix
../../profiles/zk.nix
../../profiles/zoxide.nix

View File

@@ -1,7 +1,7 @@
{inputs}: final: prev: {
lumen =
jj-ryu =
import ../lib/build-rust-package.nix {
inherit prev;
input = inputs.lumen;
input = inputs.jj-ryu;
};
}

1
overlays/jj-starship.nix Normal file
View File

@@ -0,0 +1 @@
{inputs}: inputs.jj-starship.overlays.default

5
profiles/jjui.nix Normal file
View File

@@ -0,0 +1,5 @@
{
programs.jjui = {
enable = true;
};
}

60
profiles/jujutsu.nix Normal file
View File

@@ -0,0 +1,60 @@
{
programs.jujutsu = {
enable = true;
settings = {
user = {
name = "Christoph Schmatzler";
email = "christoph@schmatzler.com";
};
git = {
sign-on-push = true;
subprocess = true;
write-change-id-header = true;
private-commits = "description(glob:'wip:*') | description(glob:'WIP:*') | description(exact:'')";
};
fsmonitor = {
backend = "watchman";
};
ui = {
default-command = "status";
diff-formatter = ":git";
pager = ["delta" "--pager" "less -FRX"];
diff-editor = ["nvim" "-c" "DiffEditor $left $right $output"];
movement = {
edit = true;
};
};
aliases = {
n = ["new"];
tug = ["bookmark" "move" "--from" "closest_bookmark(@-)" "--to" "@-"];
stack = ["log" "-r" "stack()"];
retrunk = ["rebase" "-d" "trunk()"];
bm = ["bookmark"];
gf = ["git" "fetch"];
gp = ["git" "push"];
};
revset-aliases = {
"closest_bookmark(to)" = "heads(::to & bookmarks())";
"closest_pushable(to)" = "heads(::to & mutable() & ~description(exact:\"\") & (~empty() | merges()))";
"mine()" = "author(\"christoph@schmatzler.com\")";
"wip()" = "mine() ~ immutable()";
"open()" = "mine() ~ ::trunk()";
"current()" = "@:: & mutable()";
"stack()" = "reachable(@, mutable())";
};
templates = {
draft_commit_description = ''
concat(
coalesce(description, default_commit_description, "\n"),
surround(
"\nJJ: This commit contains the following changes:\n", "",
indent("JJ: ", diff.stat(72)),
),
"\nJJ: ignore-rest\n",
diff.git(),
)
'';
};
};
};
}

View File

@@ -1,5 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
lumen
];
}

View File

@@ -8,6 +8,7 @@
./plugins/grug-far.nix
./plugins/harpoon.nix
./plugins/hunk.nix
./plugins/jj-diffconflicts.nix
./plugins/lsp.nix
./plugins/mini.nix
./plugins/oil.nix

View File

@@ -118,15 +118,21 @@
options.desc = "Visit paths (cwd)";
}
# g - git
{
mode = "n";
key = "<leader>gc";
action = ":JJDiffConflicts<CR>";
options.desc = "Resolve conflicts";
}
{
mode = "n";
key = "<leader>gg";
action.__raw = ''
function()
require('toggleterm.terminal').Terminal:new({ cmd = 'lazygit', direction = 'float' }):toggle()
require('toggleterm.terminal').Terminal:new({ cmd = 'jjui', direction = 'float' }):toggle()
end
'';
options.desc = "lazygit";
options.desc = "jjui";
}
# l - lsp/formatter
{

View File

@@ -0,0 +1,14 @@
{pkgs, ...}: {
programs.nixvim.extraPlugins = [
(pkgs.vimUtils.buildVimPlugin {
name = "jj-diffconflicts";
src =
pkgs.fetchFromGitHub {
owner = "rafikdraoui";
repo = "jj-diffconflicts";
rev = "main";
hash = "sha256-nzjRWHrE2jIcaDoPbixzpvflrtLhPZrihOEQWwqqU0s=";
};
})
];
}

View File

@@ -17,6 +17,7 @@ with pkgs;
dig
docker
docker-compose
dust
fastfetch
fd
gh
@@ -27,25 +28,27 @@ with pkgs;
hledger
htop
hyperfine
jj-ryu
jj-starship
jq
killall
lsof
nodejs_24
nurl
openssh
ouch
ov
pnpm
postgresql_17
sd
serie
sops
sqlite
tea
tokei
tree
tree-sitter
unzip
vivid
zip
]
++ lib.optionals stdenv.isDarwin [
_1password-gui

View File

@@ -5,7 +5,7 @@
settings = {
add_newline = true;
command_timeout = 2000;
format = "$directory$git_branch$git_status$character";
format = "$directory$git_branch$git_status$\{custom.scm}$character";
character = {
error_symbol = "[ ](bold #e64553)";
success_symbol = "[](bold #40a02b)[](bold #df8e1d)[](bold #dc8a78)";
@@ -37,6 +37,11 @@
renamed = "mv:$count ";
deleted = "del:$count ";
};
custom.scm = {
when = "jj-starship detect";
shell = ["jj-starship" "--strip-bookmark-prefix" "cschmatzler/" "--truncate-name" "20" "--bookmarks-display-limit" "1"];
format = "$output ";
};
};
};
}

14
profiles/yazi.nix Normal file
View File

@@ -0,0 +1,14 @@
{
programs.yazi = {
enable = true;
enableNushellIntegration = true;
shellWrapperName = "y";
settings = {
manager = {
show_hidden = true;
sort_by = "natural";
sort_dir_first = true;
};
};
};
}

View File

@@ -1,4 +1,9 @@
{pkgs, ...}: {
{
pkgs,
lib,
osConfig,
...
}: {
programs.zellij = {
enable = true;
settings = {
@@ -11,6 +16,13 @@
};
};
programs.nushell.extraConfig =
lib.optionalString (osConfig.networking.hostName == "tahani") ''
if 'ZELLIJ' not-in ($env | columns) {
zellij
}
'';
xdg.configFile."zellij/layouts/default.kdl".text = ''
layout {
default_tab_template {