subtree(users/wpcarro): docking briefcase at '24f5a642'
				
					
				
			git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
		
						commit
						019f8fd211
					
				
					 766 changed files with 175420 additions and 0 deletions
				
			
		
							
								
								
									
										72
									
								
								users/wpcarro/emacs/.emacs.d/wpc/wpc-nix.el
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								users/wpcarro/emacs/.emacs.d/wpc/wpc-nix.el
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| ;;; wpc-nix.el --- Nix support -*- lexical-binding: t -*- | ||||
| 
 | ||||
| ;; Author: William Carroll <wpcarro@gmail.com> | ||||
| ;; Version: 0.0.1 | ||||
| ;; Package-Requires: ((emacs "25.1")) | ||||
| ;; Homepage: https://user.git.corp.google.com/wpcarro/briefcase | ||||
| 
 | ||||
| ;;; Commentary: | ||||
| ;; Configuration to support working with Nix. | ||||
| 
 | ||||
| ;;; Code: | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Dependencies | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (require 'device) | ||||
| (require 'constants) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Library | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (use-package nix-mode | ||||
|   :mode "\\.nix\\'") | ||||
| 
 | ||||
| ;; TODO(wpcarro): Ensure the sub-process can resolve <briefcase>. | ||||
| (defun wpc-nix-rebuild-emacs () | ||||
|   "Use nix-env to rebuild wpcarros-emacs." | ||||
|   (interactive) | ||||
|   (let* ((pname (format "nix-build <briefcase/emacs.nixos>")) | ||||
|          (bname (format "*%s*" pname))) | ||||
|     (start-process pname bname | ||||
|                    "nix-env" | ||||
|                    "-I" (format "briefcase=%s" constants-briefcase) | ||||
|                    "-f" "<briefcase>" "-iA" "emacs.nixos") | ||||
|     (display-buffer bname))) | ||||
| 
 | ||||
| (defun wpc-nix-sly-from-briefcase (attr) | ||||
|   "Start a Sly REPL configured using the derivation pointed at by ATTR. | ||||
| 
 | ||||
|   The derivation invokes nix.buildLisp.sbclWith and is built asynchronously. | ||||
|   The build output is included in the error thrown on build failures." | ||||
|   (interactive "sAttribute: ") | ||||
|   (lexical-let* ((outbuf (get-buffer-create (format "*briefcase-out/%s*" attr))) | ||||
|          (errbuf (get-buffer-create (format "*briefcase-errors/%s*" attr))) | ||||
|          (expression (format "let briefcase = import <briefcase> {}; in briefcase.third_party.depot.nix.buildLisp.sbclWith [ briefcase.%s ]" attr)) | ||||
|          (command (list "nix-build" "-E" expression))) | ||||
|     (message "Acquiring Lisp for <briefcase>.%s" attr) | ||||
|     (make-process :name (format "nix-build/%s" attr) | ||||
|                   :buffer outbuf | ||||
|                   :stderr errbuf | ||||
|                   :command command | ||||
|                   :sentinel | ||||
|                   (lambda (process event) | ||||
|                     (unwind-protect | ||||
|                         (pcase event | ||||
|                           ("finished\n" | ||||
|                            (let* ((outpath (s-trim (with-current-buffer outbuf | ||||
|                                                      (buffer-string)))) | ||||
|                                   (lisp-path (s-concat outpath "/bin/sbcl"))) | ||||
|                              (message "Acquired Lisp for <briefcase>.%s at %s" | ||||
|                                       attr lisp-path) | ||||
|                              (sly lisp-path))) | ||||
|                           (_ (with-current-buffer errbuf | ||||
|                                (error "Failed to build '%s':\n%s" attr | ||||
|                                       (buffer-string))))) | ||||
|                       (kill-buffer outbuf) | ||||
|                       (kill-buffer errbuf)))))) | ||||
| 
 | ||||
| (provide 'wpc-nix) | ||||
| ;;; wpc-nix.el ends here | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue