feat(gs/emacs): Set compile-command in nix buffers
When visiting buffers that represent home-manager or nixos modules, set compile-command to the relevant switch command. Change-Id: I565e092d1e6b97eb7fee9d88211c0ee6ebb30b53 Reviewed-on: https://cl.tvl.fyi/c/depot/+/846 Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
parent
2b4abca80f
commit
2ad67392a6
2 changed files with 31 additions and 0 deletions
|
@ -27,6 +27,7 @@
|
|||
(load! "github-org")
|
||||
(load! "org-gcal")
|
||||
(load! "grid")
|
||||
(load! "nix")
|
||||
|
||||
(require 's)
|
||||
(require 'tvl)
|
||||
|
|
30
users/glittershark/emacs.d/nix.el
Normal file
30
users/glittershark/emacs.d/nix.el
Normal file
|
@ -0,0 +1,30 @@
|
|||
;;; ~/code/depot/users/glittershark/emacs.d/nix.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defun nix-buffer-type ()
|
||||
"Returns:
|
||||
|
||||
'home-manager, if the current buffer is a home-manager module
|
||||
'nixos, if the current buffer is a nixos module
|
||||
nil, if none of the above are the case"
|
||||
(when buffer-file-name
|
||||
(pcase buffer-file-name
|
||||
((rx (0+ nonl) "system/home" (0+ nonl) ".nix" eos)
|
||||
'home-manager)
|
||||
((rx (0+ nonl) "system/system" (0+ nonl) ".nix" eos)
|
||||
'nixos))))
|
||||
|
||||
(defun set-nix-compile-command ()
|
||||
"Set the compile command for the current buffer based on the type of nix
|
||||
buffer it is, per `nix-buffer-type'"
|
||||
(interactive)
|
||||
(when-let ((btype (nix-buffer-type)))
|
||||
(setq-local
|
||||
compile-command
|
||||
(case btype
|
||||
('home-manager "home-manager switch")
|
||||
('nixos "sudo nixos-rebuild switch")))))
|
||||
|
||||
(add-hook 'nix-mode-hook #'set-nix-compile-command)
|
||||
|
||||
(map! (:map nix-mode-map
|
||||
(:n "g SPC" #'compile)))
|
Loading…
Reference in a new issue