diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 6f8d235def..d0f0671cec 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -2,12 +2,20 @@ ;;; Commentary: ;;; Code: -(when (or (maybe-require-package 'nix-ts-mode) - (maybe-require-package 'nix-mode)) - (maybe-require-package 'nixpkgs-fmt) +(if (maybe-require-package 'nix-ts-mode) + (progn + (defun sanityinc/set-nix-ts-auto-mode () + (when (and (fboundp 'treesit-ready-p) + (treesit-ready-p 'nix) + (fboundp 'nix-ts-mode)) + (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)))) + (add-hook 'after-init-hook 'sanityinc/set-nix-ts-auto-mode)) + (maybe-require-package 'nix-mode)) - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil"))))) +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil")))) + +(maybe-require-package 'nixpkgs-fmt) (provide 'init-nix) ;;; init-nix.el ends here