{ stdenvNoCC, writeText, emacs, }: let src = ./.; buildScript = writeText "build-site.el" '' ;; Load the publishing system (require 'ox-publish) ;; Define the publishing project (setq org-publish-project-alist (list (list "kylekrein's website" :recursive t :base-directory "${src}" :exclude "webarchive" :publishing-directory "./public" :publishing-function 'org-html-publish-to-html :with-author nil ;; Don't include author name :with-creator t ;; Include Emacs and Org versions in footer :with-toc nil ;; Include a table of contents :section-numbers nil ;; Don't include section numbers :time-stamp-file nil) (list "attachments" :recursive t :base-directory "${src}" :base-extension "jpg\\|gif\\|png\\|css\\|webp\\|pdf" :exclude "webarchive" :publishing-directory "./public" :publishing-function 'org-publish-attachment))) ;; Customize the HTML output (setq org-html-validation-link nil ;; Don't show validation link org-html-head-include-scripts nil ;; Use our own scripts org-html-head-include-default-style nil ;; Use our own styles org-html-head " ") ;; Generate the site output (org-publish-all t) (copy-file "${src}/LICENSE" "./public/LICENSE") (copy-directory "${src}/webarchive" "./public/") (message "Build complete!") ''; in stdenvNoCC.mkDerivation { name = "KyleKrein's Website"; inherit src; buildPhase = '' HOME=$(pwd) ${emacs}/bin/emacs -Q --script ${buildScript} ''; installPhase = '' mkdir -p $out cd public cp -r . $out/ ''; }