Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			892 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			892 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| ;;; -*- 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)))
 |