(require 'package) (package-initialize) (require 'package-recipe) (require 'package-build) (setq package-build-working-dir (expand-file-name "working/")) (setq package-build-archive-dir (expand-file-name "packages/")) (setq package-build-recipes-dir (expand-file-name "recipes/")) ;; Allow installing package tarfiles larger than 10MB (setq large-file-warning-threshold nil) (defun melpa2nix-build-package-1 (rcp) (let* ((default-directory (package-recipe--working-tree rcp))) (unwind-protect (let ((files (package-build-expand-files-spec rcp t))) (unless files (error "Unable to find files matching recipe patterns")) (if (> (length files) 1) (package-build--build-multi-file-package rcp files) (package-build--build-single-file-package rcp files)))))) (defun melpa2nix-build-package () (unless noninteractive (error "`melpa2nix-build-package' is to be used only with -batch")) (pcase command-line-args-left (`(,package ,version ,commit) (let ((recipe (package-recipe-lookup package))) (setf (oref recipe commit) commit) (setf (oref recipe version) version) (melpa2nix-build-package-1 recipe)))))