at master 1.6 kB view raw
1(defpackage org.lispbuilds.nix/main 2 (:use :common-lisp 3 :org.lispbuilds.nix/database/sqlite 4 :org.lispbuilds.nix/repository/quicklisp 5 :org.lispbuilds.nix/api) 6 (:local-nicknames 7 (:http :dexador))) 8 9(in-package org.lispbuilds.nix/main) 10 11(defun resource (name type) 12 (make-pathname 13 :defaults (asdf:system-source-directory :org.lispbuilds.nix) 14 :name name 15 :type type)) 16 17(defvar *sqlite* 18 (make-instance 19 'sqlite-database 20 :init-file (resource "init" "sql") 21 :url "packages.sqlite")) 22 23(defvar *quicklisp* nil) 24 25(defun get-quicklisp-version () 26 (let ((response (http:get "http://beta.quicklisp.org/dist/quicklisp.txt"))) 27 (subseq 28 (second (uiop:split-string response :separator '(#\Newline))) 29 9))) 30 31(defun init-quicklisp () 32 (setf *quicklisp* 33 (make-instance 34 'quicklisp-repository 35 :dist-url 36 (format nil 37 "https://beta.quicklisp.org/dist/quicklisp/~a/" 38 (get-quicklisp-version))))) 39 40(defun run-importers () 41 (ignore-errors (delete-file "packages.sqlite")) 42 (import-lisp-packages *quicklisp* *sqlite*) 43 (format t "Imported packages from quicklisp to ~A~%" 44 (truename "packages.sqlite"))) 45 46(defun gen-nix-file () 47 (database->nix-expression *sqlite* "imported.nix") 48 (format t "Dumped nix file to ~a~%" 49 (truename "imported.nix"))) 50 51(defun run-nix-formatter () 52 (uiop:run-program '("nixfmt" "imported.nix"))) 53 54(defun main () 55 (format t "~%") 56 (init-quicklisp) 57 (run-importers) 58 (gen-nix-file) 59 (run-nix-formatter))