diff options
Diffstat (limited to 'pkgs/development/lisp-modules-new-obsolete/import/nix.lisp')
-rw-r--r-- | pkgs/development/lisp-modules-new-obsolete/import/nix.lisp | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/pkgs/development/lisp-modules-new-obsolete/import/nix.lisp b/pkgs/development/lisp-modules-new-obsolete/import/nix.lisp deleted file mode 100644 index c6de5a4c9932d..0000000000000 --- a/pkgs/development/lisp-modules-new-obsolete/import/nix.lisp +++ /dev/null @@ -1,81 +0,0 @@ -(defpackage org.lispbuilds.nix/nix - (:documentation "Utilities for generating Nix code") - (:use :cl) - (:import-from :str) - (:import-from :ppcre) - (:import-from :arrow-macros :->>) - (:import-from :org.lispbuilds.nix/util :replace-regexes) - (:export - :nix-eval - :system-master - :nixify-symbol - :make-pname - :*nix-attrs-depth*)) - -(in-package org.lispbuilds.nix/nix) - -;; Path names are alphanumeric and can include the symbols +-._?= and -;; must not begin with a period. -(defun make-pname (string) - (replace-regexes '("^[.]" "[^a-zA-Z0-9+-._?=]") - '("_" "_") - string)) - -(defun system-master (system) - (first (str:split "/" system))) - -;;;; Nix generation - -(defun nix-eval (exp) - (assert (consp exp)) - (ecase (car exp) - (:string (nix-string (cadr exp))) - (:list (apply #'nix-list (rest exp))) - (:funcall (apply #'nix-funcall (rest exp))) - (:attrs (nix-attrs (cdr exp))) - (:merge (apply #'nix-merge (cdr exp))) - (:symbol (nix-symbol (cadr exp))))) - -(defun nix-string (object) - (format nil "\"~a\"" object)) - -(defun nixify-symbol (string) - (flet ((fix-special-chars (str) - (replace-regexes '("[+]$" "[+][/]" "[+]" "[.]" "[/]") - '("_plus" "_plus/" "_plus_" "_dot_" "_slash_") - str))) - (if (ppcre:scan "^[0-9]" string) - (str:concat "_" (fix-special-chars string)) - (fix-special-chars string)))) - - -(defun nix-symbol (object) - (nixify-symbol (format nil "~a" object))) - -(defun nix-list (&rest things) - (format nil "[ ~{~A~^ ~} ]" (mapcar 'nix-eval things))) -(defvar *nix-attrs-depth* 0) - -(defun nix-attrs (keyvals) - (let ((*nix-attrs-depth* (1+ *nix-attrs-depth*))) - (format - nil - (->> "{~%*depth*~{~{~A = ~A;~}~^~%*depth*~}~%*depth-1*}" - (str:replace-all "*depth*" (str:repeat *nix-attrs-depth* " ")) - (str:replace-all "*depth-1*" (str:repeat (1- *nix-attrs-depth*) " "))) - (mapcar (lambda (keyval) - (let ((key (car keyval)) - (val (cadr keyval))) - (list (nix-symbol key) - (nix-eval val)))) - keyvals)))) - -(defun nix-funcall (fun &rest args) - (format nil "(~a ~{~a~^ ~})" - (nixify-symbol fun) - (mapcar 'nix-eval args))) - -(defun nix-merge (a b) - (format nil "(~a // ~b)" - (nix-eval a) - (nix-eval b))) |