From 1c379cc4a3273d47acadefe97dad232f801c5cbd Mon Sep 17 00:00:00 2001 From: Joe Frikker Date: Thu, 2 Jul 2026 15:19:56 -0400 Subject: [PATCH] wip --- flake.lock | 110 +++++++++++++++++++++++++++-------------------------- flake.nix | 21 ++++++---- home.org | 65 +++++++++++++++++++++++++++++-- 3 files changed, 131 insertions(+), 65 deletions(-) diff --git a/flake.lock b/flake.lock index 413c16f..a6866e3 100644 --- a/flake.lock +++ b/flake.lock @@ -1,20 +1,41 @@ { "nodes": { - "flake-parts": { + "claude-code": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib" + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1765835352, - "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "a34fae9c08a15ad73f295041fec82323541400a9", + "lastModified": 1782941856, + "narHash": "sha256-dFuLC6GQSR1g9Uy7lc9Qk/etujkCjrDE85B/np7khvg=", + "owner": "sadjow", + "repo": "claude-code-nix", + "rev": "90a137caf9a6d82389c0b26a719e26c4e6707367", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "sadjow", + "repo": "claude-code-nix", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, @@ -25,11 +46,11 @@ ] }, "locked": { - "lastModified": 1782233665, - "narHash": "sha256-h/xOtrByoA/Ak1lWHn0O1lVZz4qWYbwOSLQ8YSwQO0I=", + "lastModified": 1782964450, + "narHash": "sha256-2rwNd77TzZ4sDDvMam0IXFXN5IfC35mifoeKS0uAc/4=", "owner": "nix-community", "repo": "home-manager", - "rev": "062581938b4a378a82dfbb294b494808157153a1", + "rev": "ebc87daabc8d3f595e9a8b67107eaaa8115ad582", "type": "github" }, "original": { @@ -39,25 +60,6 @@ "type": "github" } }, - "kube": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1767247330, - "narHash": "sha256-CxXwzmvAOO07719jzE0Zw14C9r3fQcXfPllLtt5cIzo=", - "rev": "4a4d79a290c92de630e503f395fc8fd709904c1b", - "type": "tarball", - "url": "https://gitea.home-frikker.dedyn.io/api/v1/repos/jfrikker/kube/archive/4a4d79a290c92de630e503f395fc8fd709904c1b.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://gitea.home-frikker.dedyn.io/jfrikker/kube/archive/1.0.1.tar.gz" - } - }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -65,11 +67,11 @@ ] }, "locked": { - "lastModified": 1782030356, - "narHash": "sha256-h4WpMr455AfRub0FXBaon6Vcpe0waUyJ4GivIW6oyd4=", + "lastModified": 1782636943, + "narHash": "sha256-ripjZa7BBLwL1uS5VJF3s/VpZpWt5ZIQEvkJ/FJNpQw=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "3017088b49efd404f78e3b104f553b97e4af786b", + "rev": "058b1f9381fa79fcda49982370a750ff92dbba43", "type": "github" }, "original": { @@ -80,42 +82,42 @@ }, "nixpkgs": { "locked": { - "lastModified": 1781577229, - "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "lastModified": 1782847225, + "narHash": "sha256-JC9PjqKYG9ve5U8aDOLQipp3+KLANBHUvGdLZlxzdKI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", + "rev": "95ca1e203c0750115fd4a6f17d5a245dfe6b1edd", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixos-26.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1765674936, - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, "root": { "inputs": { + "claude-code": "claude-code", "home-manager": "home-manager", - "kube": "kube", "nix-index-database": "nix-index-database", "nixpkgs": "nixpkgs" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 0d616a9..ab31f89 100644 --- a/flake.nix +++ b/flake.nix @@ -3,15 +3,20 @@ inputs = { # Specify the source of Home Manager and Nixpkgs. - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; + claude-code = { + url = "github:sadjow/claude-code-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; - kube = { - url = "https://gitea.home-frikker.dedyn.io/jfrikker/kube/archive/1.0.1.tar.gz"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + # kube = { + # url = "https://gitea.home-frikker.dedyn.io/jfrikker/kube/archive/1.0.1.tar.gz"; + # inputs.nixpkgs.follows = "nixpkgs"; + # }; nix-index-database = { url = "github:nix-community/nix-index-database"; @@ -19,7 +24,7 @@ }; }; - outputs = { nixpkgs, home-manager, kube, nix-index-database, ... }: + outputs = { nixpkgs, home-manager, claude-code, nix-index-database, ... }: let modules-for-system = pkgs: pkgs.stdenv.mkDerivation { name = "home-manager-modules"; src = pkgs.lib.fileset.toSource { @@ -62,7 +67,7 @@ home.packages = [ pkgs.pinentry_mac ]; }]; - extraSpecialArgs = { kube = kube.packages.aarch64-darwin.default; }; + extraSpecialArgs = { claude-code = claude-code.packages.aarch64-darwin.default; }; }; homeConfigurations.home = let pkgs = nixpkgs.legacyPackages.x86_64-linux; @@ -82,7 +87,7 @@ home.homeDirectory = "/home/jfrikker"; }]; - extraSpecialArgs = { kube = kube.packages.x86_64-linux.default; }; + extraSpecialArgs = { claude-code = claude-code.packages.x86_64-linux.default; }; }; packages.aarch64-darwin.default = modules-for-system nixpkgs.legacyPackages.aarch64-darwin; }; diff --git a/home.org b/home.org index 2305d48..6be14b5 100644 --- a/home.org +++ b/home.org @@ -166,7 +166,7 @@ These are the other programs I have installed globally. A few (like ~awscli~, ~m are still Redbook-specific; ideally I'd find another way to install them. #+BEGIN_SRC nix :tangle target/redbook/other-packages.nix - {pkgs, kube, ...}: + {pkgs, ...}: { home.packages = with pkgs; [ postgresql @@ -728,9 +728,10 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f ** Claude Code #+BEGIN_SRC nix :tangle target/base/claude-code.nix - { + {claude-code, ...}: { programs.claude-code = { enable = true; + package = claude-code; }; } #+END_SRC @@ -1197,12 +1198,21 @@ Just "silently" wrap when searching at the bottom of a document. #+BEGIN_SRC elisp (bufferlo-mode) + (setopt bufferlo-include-buried-buffers nil) + (with-eval-after-load 'bufferlo (setq mode-line-misc-info (assq-delete-all 'bufferlo-mode mode-line-misc-info))) + (defun my/bury-or-kill-buffer () + (interactive) + (bury-buffer) + (bufferlo-kill-orphan-buffers)) + (bind-keys - ("s-b" . bufferlo-switch-to-buffer)) + ("s-b" . bufferlo-switch-to-buffer) + ("C-x t 0" . bufferlo-tab-close-kill-buffers) + ("C-x k" . my/bury-or-kill-buffer)) #+END_SRC ** Language Support @@ -1216,6 +1226,7 @@ Just "silently" wrap when searching at the bottom of a document. enable = true; extraPackages = epkgs: with epkgs; [ consult-eglot + graphql-ts-mode haskell-ts-mode jenkinsfile-mode jq-mode @@ -1335,6 +1346,10 @@ available? It seems to work for now anyway... (advice-add 'prog-fill-reindent-defun :override #'my-prog-fill-reindent-defun)) #+end_src +#+BEGIN_SRC elisp + (add-hook 'compilation-filter-hook 'ansi-color-compilation-filter) +#+END_SRC + *** Flymake #+begin_src elisp (autoload 'flymake-show-project-diagnostics "flymake") @@ -1406,6 +1421,7 @@ for completion. That makes it really annoying to use; don't use yasnippet with e (setopt lispy-compat '(god-mode edebug)) (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) @@ -1437,6 +1453,49 @@ for completion. That makes it really annoying to use; don't use yasnippet with e `(((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)) + + (defvar my/edit-indirect-tag-modes + '(("graphql" . graphql-ts-mode) + ("gql" . graphql-ts-mode) + ("sql" . sql-mode) + ("css" . css-mode)) + "Map of tagged-template tag names to major modes.") + + (defun my/edit-indirect--node-bounds (node) + "Return (BEG . END) for NODE's contents, excluding delimiters." + (cons (1+ (treesit-node-start node)) + (1- (treesit-node-end node)))) + + (defun my/edit-indirect-tagged-template-at-point () + (interactive) + (let* ((node (treesit-node-at (point))) + (tmpl-node (treesit-parent-until + node + (lambda (n) (equal (treesit-node-type n) "template_string")))) + (str-node (unless tmpl-node + (treesit-parent-until + node + (lambda (n) (equal (treesit-node-type n) "string"))))) + (target-node (or tmpl-node str-node))) + (unless target-node + (user-error "Point is not inside a string or template literal")) + (let* ((tagged-node (and tmpl-node (treesit-node-parent tmpl-node))) + (tag-node (and tagged-node + (equal (treesit-node-type tagged-node) "call_expression") + (treesit-node-child-by-field-name tagged-node "function"))) + (tag-name (and tag-node (treesit-node-text tag-node t))) + (mode (cond + (tag-name (or (cdr (assoc tag-name my/edit-indirect-tag-modes)) + major-mode)) + (t 'text-mode))) + (bounds (my/edit-indirect--node-bounds target-node)) + (buf (edit-indirect-region (car bounds) (cdr bounds) t))) + (with-current-buffer buf + (funcall mode))))) + + (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)) #+END_SRC *** Java