summary refs log tree commit diff
path: root/pkgs/build-support/emacs/melpa2nix.el
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/emacs/melpa2nix.el')
-rw-r--r--pkgs/build-support/emacs/melpa2nix.el36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkgs/build-support/emacs/melpa2nix.el b/pkgs/build-support/emacs/melpa2nix.el
new file mode 100644
index 00000000000..d54e9d21e25
--- /dev/null
+++ b/pkgs/build-support/emacs/melpa2nix.el
@@ -0,0 +1,36 @@
+(require 'package)
+(package-initialize)
+
+(require 'package-build)
+
+(setq package-build-working-dir (expand-file-name ".")
+      package-build-archive-dir (expand-file-name "."))
+
+(defun melpa2nix-install-package ()
+  (if (not noninteractive)
+      (error "`melpa2nix-install-package' is to be used only with -batch"))
+  (pcase command-line-args-left
+    (`(,archive ,elpa)
+     (progn (setq package-user-dir elpa)
+            (package-install-file archive)))))
+
+(defun melpa2nix-build-package ()
+  (if (not noninteractive)
+      (error "`melpa2nix-build-package' is to be used only with -batch"))
+  (pcase command-line-args-left
+    (`(,package ,version . ,files)
+     (melpa2nix-package-build-archive package version files))))
+
+(defun melpa2nix-package-build-archive (name version files)
+  "Build a package archive for package NAME."
+  (pb/message "\n;;; %s\n" name)
+  (let* ((start-time (current-time))
+         (archive-entry (package-build-package name
+                                               version
+                                               files
+                                               package-build-working-dir
+                                               package-build-archive-dir)))
+    
+    (pb/message "Built in %.3fs, finished at %s"
+                (time-to-seconds (time-since start-time))
+                (current-time-string))))