Initial checkin
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
{ pkgs, localLispPackages, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
let
|
||||
url = "https://git.informis.land/informis/cl-gemini.git";
|
||||
version = "0.1";
|
||||
|
||||
server-launcher = pkgs.writeText "launch-cl-gemini.lisp" ''
|
||||
(defun getenv-or-fail (env-var &optional default)
|
||||
(let ((value (uiop:getenv env-var)))
|
||||
(if (null value)
|
||||
(if default
|
||||
default
|
||||
(uiop:die 1 "unable to find required env var: ~A" env-var))
|
||||
value)))
|
||||
|
||||
(require :asdf)
|
||||
(asdf:load-system :slynk)
|
||||
(asdf:load-system :cl-gemini)
|
||||
(let ((slynk-port (uiop:getenvp "GEMINI_SLYNK_PORT")))
|
||||
(when slynk-port
|
||||
(slynk:create-server :port (parse-integer slynk-port) :dont-close t)))
|
||||
(let ((feed-file (uiop:getenvp "GEMINI_FEEDS")))
|
||||
(when feed-file
|
||||
(load feed-file)))
|
||||
(cl-gemini:start-gemini-server
|
||||
(getenv-or-fail "GEMINI_LISTEN_IP")
|
||||
(getenv-or-fail "GEMINI_PRIVATE_KEY")
|
||||
(getenv-or-fail "GEMINI_CERTIFICATE")
|
||||
:port (parse-integer (getenv-or-fail "GEMINI_LISTEN_PORT"))
|
||||
:document-root (getenv-or-fail "GEMINI_DOCUMENT_ROOT")
|
||||
:textfiles-root (getenv-or-fail "GEMINI_TEXTFILES_ROOT")
|
||||
:log-stream *standard-output*
|
||||
:threaded t
|
||||
:separate-thread t)
|
||||
(loop (sleep 10))
|
||||
'';
|
||||
|
||||
server-wrapper = pkgs.writeShellScript "launch-server.sh" ''
|
||||
${pkgs.lispPackages.clwrapper}/bin/common-lisp.sh --load ${server-launcher}
|
||||
'';
|
||||
|
||||
sbcl-with-ssl = pkgs.sbcl.overrideAttrs (oldAttrs: rec {
|
||||
buildInputs = oldAttrs.buildInputs ++ [
|
||||
pkgs.openssl_1_1.dev
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
in pkgs.stdenv.mkDerivation {
|
||||
name = "cl-gemini-${version}";
|
||||
|
||||
propagatedBuildInputs = with pkgs; [
|
||||
asdf
|
||||
sbcl-with-ssl
|
||||
localLispPackages.cl-gemini
|
||||
];
|
||||
|
||||
phases = ["installPhase"];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp "${server-wrapper}" "$out/bin/launch-server.sh"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user