56 lines
2.1 KiB
Nix
56 lines
2.1 KiB
Nix
{
|
|
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 "<link rel=\"stylesheet\" href=\"https://cdn.simplecss.org/simple.min.css\" /> <link rel=\"stylesheet\" href=\"/style.css\" />")
|
|
|
|
;; 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/
|
|
'';
|
|
}
|