(require 'package) (add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/")) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (eval-and-compile (setq use-package-always-ensure t use-package-expand-minimally t)) (use-package org :ensure org-plus-contrib) (use-package ox-rss :after org) (use-package htmlize :after org) (use-package yaml-mode) (use-package nix-mode) (use-package plz) (require 'org) (require 'ox-html) (require 'plz) (defun my/org-publish-org-sitemap-format (entry style project) (cond ((not (directory-name-p entry)) (format "(%s) [[file:blog/%s][%s]]\n" (format-time-string "%Y-%m-%d" (org-publish-find-date entry project)) entry (org-publish-find-title entry project))))) (defun posts-rss-feed (title list) (concat "#+TITLE: " title "\n\n" (org-list-to-subtree list))) (defun get-file-contents (filename) (with-temp-buffer (insert-file-contents filename) (buffer-string))) (defun format-posts-rss-feed-entry (entry _style project) (let* ( (title (org-publish-find-title entry project)) (link (concat (file-name-sans-extension entry) ".html")) (file (org-publish--expand-file-name entry project)) (pubdate (format-time-string (car org-time-stamp-formats) (org-publish-find-date entry project)))) (message pubdate) (format "%s :properties: :rss_permalink: blog/%s :pubdate: %s :author: jjanzen :end:\n%s" title link pubdate (get-file-contents file)))) (defun publish-posts-rss-feed (plist filename dir) (if (equal "rss.org" (file-name-nondirectory filename)) (org-rss-publish-to-rss plist filename dir))) (defvar jj/html-head "\ \ ") (defvar jj/html-preamble "\
\ Home\ Projects\ Blog\ Dotfiles\ About Me\ RSS\ Git\
") (defvar jj/html-postamble "\ ") (setq org-html-htmlize-output-type 'css) (setq org-publish-project-alist `( ("org-core" :base-directory "~/website/" :base-extension "org" :publishing-directory "~/public_html/" :recursive t :publishing-function org-html-publish-to-html :with-toc nil :headline-levels 4 :section-numbers nil :html-head ,jj/html-head :html-preamble ,jj/html-preamble :html-postamble ,jj/html-postamble) ("org-static-website" :base-directory "~/website/" :base-extension "txt\\|css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" :publishing-directory "~/public_html" :recursive t :publishing-function org-publish-attachment) ("org-blog" :base-directory "~/blog/" :base-extension "org" :publishing-directory "~/public_html/blog" :recursive t :publishing-function org-html-publish-to-html :with-toc nil :with-properties t :with-date t :with-timestamps nil :headline-levels 4 :section-numbers nil :html-head ,jj/html-head :html-preamble ,jj/html-preamble :html-postamble ,jj/html-postamble :auto-sitemap t :sitemap-filename "index.org" :sitemap-format-entry my/org-publish-org-sitemap-format :sitemap-sort-files anti-chronologically :sitemap-title "Blog") ("org-rss" :publishing-directory "~/public_html" :base-directory "~/blog/" :base-extension "org" :exclude "index.org" :publishing-function publish-posts-rss-feed :rss-extension "xml" :html-link-home "https://jjanzen.ca" :html-link-use-abs-url t :html-link-org-files-as-html t :auto-sitemap t :sitemap-function posts-rss-feed :sitemap-title "jjanzen's Blog" :sitemap-filename "rss.org" :sitemap-style list :sitemap-sort-files anti-chronologically :sitemap-format-entry format-posts-rss-feed-entry) ("org-config" :base-directory "~/dotfiles/" :base-extension "org" :html-head ,jj/html-head :html-preamble ,jj/html-preamble :html-postamble ,jj/html-postamble :html-wrap-src-lines t :with-toc nil :section-numbers nil :recursive t :publishing-directory "~/public_html/dotfiles" :publishing-function org-html-publish-to-html :headline-levels 4 :auto-preamble t) ("org-static-config" :base-directory "~/.dotfiles/" :base-extension "txt\\|css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" :publishing-directory "~/public_html/dotfiles" :recursive t :publishing-function org-publish-attachment) ("org" :components ("org-core" "org-static-website" "org-config" "org-blog" "org-rss")))) (org-publish-all t)