this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add JJ helpers to work with megamerges

+81 -36
+29 -29
flake.lock
··· 28 28 ] 29 29 }, 30 30 "locked": { 31 - "lastModified": 1755825449, 32 - "narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=", 31 + "lastModified": 1758102940, 32 + "narHash": "sha256-wwqf3+A8EiqwWpcAaPN20QXJLlpGPpwtLTrzgnngI2o=", 33 33 "owner": "lnl7", 34 34 "repo": "nix-darwin", 35 - "rev": "8df64f819698c1fee0c2969696f54a843b2231e8", 35 + "rev": "ebd0bfc11fc2b5cff37401e9b3703881ad5fabbd", 36 36 "type": "github" 37 37 }, 38 38 "original": { ··· 43 43 }, 44 44 "darwin-stable": { 45 45 "locked": { 46 - "lastModified": 1751290243, 47 - "narHash": "sha256-kNf+obkpJZWar7HZymXZbW+Rlk3HTEIMlpc6FCNz0Ds=", 46 + "lastModified": 1758235313, 47 + "narHash": "sha256-OGnmMaDFlg/6TcF/MUns9WGGGKXgbZi+kIT2xrWP0zM=", 48 48 "owner": "nixos", 49 49 "repo": "nixpkgs", 50 - "rev": "5ab036a8d97cb9476fbe81b09076e6e91d15e1b6", 50 + "rev": "660ccb4ded7a6a715a79fdee58f064e8beecb65a", 51 51 "type": "github" 52 52 }, 53 53 "original": { 54 54 "owner": "nixos", 55 - "ref": "nixpkgs-24.11-darwin", 55 + "ref": "nixpkgs-25.05-darwin", 56 56 "repo": "nixpkgs", 57 57 "type": "github" 58 58 } ··· 94 94 "nixpkgs-lib": "nixpkgs-lib" 95 95 }, 96 96 "locked": { 97 - "lastModified": 1754487366, 98 - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", 97 + "lastModified": 1756770412, 98 + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", 99 99 "owner": "hercules-ci", 100 100 "repo": "flake-parts", 101 - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", 101 + "rev": "4524271976b625a4a605beefd893f270620fd751", 102 102 "type": "github" 103 103 }, 104 104 "original": { ··· 228 228 ] 229 229 }, 230 230 "locked": { 231 - "lastModified": 1756579987, 232 - "narHash": "sha256-duCce8zGsaMsrqqOmLOsuaV1PVIw/vXWnKuLKZClsGg=", 231 + "lastModified": 1758250706, 232 + "narHash": "sha256-Jv/V+PNi5RyqCUK2V6YJ0iCqdLPutU69LZas85EBUaU=", 233 233 "owner": "nix-community", 234 234 "repo": "home-manager", 235 - "rev": "99a69bdf8a3c6bf038c4121e9c4b6e99706a187a", 235 + "rev": "363007f12930caf8b0ea59c0bf5be109c52ad0ef", 236 236 "type": "github" 237 237 }, 238 238 "original": { ··· 264 264 "lix": { 265 265 "flake": false, 266 266 "locked": { 267 - "lastModified": 1753306924, 268 - "narHash": "sha256-jLCEW0FvjFhC+c4RHzH+xbkSOxrnpFHnhjOw6sudhx0=", 269 - "rev": "1a4393d0aac31aba21f5737ede1b171e11336d77", 267 + "lastModified": 1757791921, 268 + "narHash": "sha256-83qbJckLOLrAsKO88UI9N4QRatNEc3gUFtLMiAPwK0g=", 269 + "rev": "b7c2f17e9133e8b85d41c58b52f9d4e3254f41da", 270 270 "type": "tarball", 271 - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/1a4393d0aac31aba21f5737ede1b171e11336d77.tar.gz?rev=1a4393d0aac31aba21f5737ede1b171e11336d77" 271 + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/b7c2f17e9133e8b85d41c58b52f9d4e3254f41da.tar.gz?rev=b7c2f17e9133e8b85d41c58b52f9d4e3254f41da" 272 272 }, 273 273 "original": { 274 274 "type": "tarball", ··· 301 301 "neorg": { 302 302 "flake": false, 303 303 "locked": { 304 - "lastModified": 1751646203, 305 - "narHash": "sha256-uQSrXTngyRSWRyPN7v7uVQOHw+8rLm8+KXxls4nT2K4=", 304 + "lastModified": 1757505607, 305 + "narHash": "sha256-FwxvApfOcnHH1kWYDccaKRGObLhT4zx/FzjrvasefVI=", 306 306 "owner": "nvim-neorg", 307 307 "repo": "neorg", 308 - "rev": "790b0444c0c654131a722817dc893332e06c72b9", 308 + "rev": "91db472c7f65a1a8f7fdc461e0fb040f565a95c4", 309 309 "type": "github" 310 310 }, 311 311 "original": { ··· 326 326 "norg-meta": "norg-meta" 327 327 }, 328 328 "locked": { 329 - "lastModified": 1756585044, 330 - "narHash": "sha256-Pd71Z4muaqfFdbbW7gajF7mJurgPGK5V+dp1gDhB7io=", 329 + "lastModified": 1758277139, 330 + "narHash": "sha256-x6IhcmQI6JpM3G4kRhSA3ZSdB09l5prYPE2hK+Eb3Uw=", 331 331 "owner": "nvim-neorg", 332 332 "repo": "nixpkgs-neorg-overlay", 333 - "rev": "9050eda53388acfa780b8e6e316c2ec5758cd492", 333 + "rev": "0bb8d5b94424dacd788a71f3f1da68eafdf175de", 334 334 "type": "github" 335 335 }, 336 336 "original": { ··· 371 371 }, 372 372 "nixpkgs-lib": { 373 373 "locked": { 374 - "lastModified": 1753579242, 375 - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", 374 + "lastModified": 1754788789, 375 + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", 376 376 "owner": "nix-community", 377 377 "repo": "nixpkgs.lib", 378 - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", 378 + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", 379 379 "type": "github" 380 380 }, 381 381 "original": { ··· 430 430 }, 431 431 "nixpkgs_4": { 432 432 "locked": { 433 - "lastModified": 1756536218, 434 - "narHash": "sha256-ynQxPVN2FIPheUgTFhv01gYLbaiSOS7NgWJPm9LF9D0=", 433 + "lastModified": 1758213207, 434 + "narHash": "sha256-rqoqF0LEi+6ZT59tr+hTQlxVwrzQsET01U4uUdmqRtM=", 435 435 "owner": "NixOS", 436 436 "repo": "nixpkgs", 437 - "rev": "a918bb3594dd243c2f8534b3be01b3cb4ed35fd1", 437 + "rev": "f4b140d5b253f5e2a1ff4e5506edbf8267724bde", 438 438 "type": "github" 439 439 }, 440 440 "original": {
+3 -1
flake.nix
··· 3 3 4 4 inputs = { 5 5 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 - darwin-stable.url = "github:nixos/nixpkgs/nixpkgs-24.11-darwin"; 6 + darwin-stable.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin"; 7 7 flake-parts.url = "github:hercules-ci/flake-parts"; 8 8 9 9 home-manager = { ··· 88 88 ... 89 89 }: { 90 90 formatter = pkgs.alejandra; 91 + 92 + legacyPackages = inputs'.darwin-stable.legacyPackages.callPackage ./pkgs {}; 91 93 92 94 packages = 93 95 (pkgs.callPackage ./pkgs {})
+1 -1
modules/fish.nix
··· 56 56 }; 57 57 58 58 loginShellInit = '' 59 - fish_add_path --move --path $HOME/.nix-profile/bin /run/wrappers/bin /etc/profiles/per-user/$USER/bin /nix/var/nix/profiles/default/bin /run/current-system/sw/bin 59 + fish_add_path --move --path /run/wrappers/bin /etc/profiles/per-user/$USER/bin /nix/var/nix/profiles/default/bin /run/current-system/sw/bin 60 60 fish_add_path $HOME/.local/bin 61 61 ''; 62 62
+1 -1
modules/fonts.nix
··· 3 3 inputs, 4 4 ... 5 5 }: let 6 - pkgs-self = inputs.self.packages.${pkgs.stdenv.hostPlatform.system}; 6 + pkgs-self = inputs.self.legacyPackages.${pkgs.stdenv.hostPlatform.system}; 7 7 in { 8 8 fonts = { 9 9 packages = [
+46 -4
modules/jj.nix
··· 13 13 }; 14 14 15 15 aliases = { 16 - record = ["commit"]; 17 - ci = ["commit"]; 18 - rci = ["squash"]; 19 - lg = ["log"]; 20 16 tug = ["bookmark" "move" "--from" "closest_bookmark(@-)" "--to" "@-"]; 21 17 pull = ["git" "fetch"]; 22 18 push = ["git" "push"]; ··· 25 21 "--source" "roots(trunk()..mutable())" 26 22 "--destination" "trunk()" 27 23 ]; 24 + 25 + # Put changes from `@` into another change 26 + # Inverse of `extract` 27 + inject = ["squash" "--from" "@" "--into"]; 28 + 29 + # Fetch changes from change into `@` 30 + # Inverse of `inject` 31 + extract = ["squash" "--into" "@" "--form"]; 32 + 33 + # 'jj sandwich xyz' to move xyz into the megamerge in parallel to everything 34 + # else. See notes on 'megamerge()' above for how it's resolved. 35 + sandwich = [ "rebase" "-B" "megamerge()" "-A" "trunk()" "-r"]; 28 36 }; 29 37 30 38 revset-aliases = { 31 39 "closest_bookmark(to)" = "heads(::to & bookmarks())"; 40 + 41 + # stack(x, n) is the set of mutable commits reachable from 'x', with 'n' 42 + # parents. 'n' is often useful to customize the display and return set for 43 + # certain operations. 'x' can be used to target the set of 'roots' to traverse, 44 + # e.g. @ is the current stack. 45 + "stack()" = "stack(@)"; 46 + "stack(x)" = "stack(x, 2)"; 47 + "stack(x, n)" = "ancestors(reachable(x, mutable()), n)"; 48 + 49 + # Find the megamerge. Mostly useful in combination with other aliases, primarily 50 + # 'sandwich'. Normally when there's only one megamerge, sandwich works perfectly 51 + # fine and is basically "magic". However, there are more complex cases; consider 52 + # something like this which represents a forked repository of an upstream: 53 + # 54 + # 55 + # ----> P1 ... Pn -----------\ 56 + # / \ 57 + # /---> X --\ (main) \ 58 + # B M1 --> T1 ... Tn --> M2 --> @ 59 + # \---> Y --/ 60 + # 61 + # X and Y are typical features on top of base B, combined inside megamerge M1. 62 + # However, we may want changes T1...Tn to go on top of M1, because (in my case) 63 + # they're custom and will never go upstream, but are correctly published as part 64 + # of the fork; Tn is where the main bookmark points. Finally, we have changes P1 65 + # ... Pn which are private and should never be pushed upstream at all. 66 + # 67 + # In this case, sandwich will fail because 'reachable(stack(), merges())' will 68 + # resolve to {M1, M2}, which is an invalid argument for 'rebase -B' due to not 69 + # having an all: prefix modifier. So to handle that case, we allow the user 70 + # to either specify the merge via literal tag "megamerge". In this case if we 71 + # 'bookmark set megamerge -r M1' then sandwich will always work correctly. 72 + "megamerge()" = "coalesce(present(megamerge), reachable(stack(), merges()))"; 32 73 }; 33 74 34 75 git = { 76 + colocate = true; 35 77 write-change-id-header = true; 36 78 push-new-bookmarks = true; 37 79 };
+1
modules/tools.nix
··· 12 12 home.packages = [ 13 13 # bfs 14 14 # pkgs-self.ubin-client 15 + pkgs.ast-grep 15 16 pkgs.btop 16 17 pkgs.charm-freeze 17 18 # pkgs.comby