Anastasia V. Sergeeva

jump to main content

How to make this website

This static website is generated from org-mode files using only Emacs text editor called Emacs with weblorg package.

Below is the setup for weblorg that can be tangled from the current org file with org-babel-tangle to ../publish.el.

(setq weblorg-default-url "http://anastasiasergeeva.com")

(add-to-list 'load-path (expand-file-name "~/.emacs.d/straight/repos/weblorg"))
(add-to-list 'load-path (expand-file-name "~/.emacs.d/straight/repos/templatel"))
;; (add-to-list 'load-path (expand-file-name "~/.emacs.d/straight/build/htmlize"))

(require 'weblorg)
;; (require 'htmlize)
;; (setq org-html-htmlize-output-type 'css)

(weblorg-site
 :theme nil
 :template-vars
  '(
   ;; ("project_github" . "")
   ;; ("static_path" . "$site/static")
    ("site_author" . "Anastasia Sergeeva")
    ("site_name" . "Anastasia Sergeeva's blog")
    ("site_url" . "https://anastasiasergeeva.com")
    ;; ("site_email" . "")
    ("project_description" . "Anastasia Sergeeva's blog")))

;; route for rendering each post
(weblorg-route
 :name "posts"
 :input-pattern "posts/*.org"
 :template "post.html"
 :output "output/posts/{{ slug }}.html"
 :url "/posts/{{ slug }}.html")


;; rendering each video post
(weblorg-route
 :name "videos"
 :input-pattern "videos/*.org"
 :template "post.html"
 :output "output/videos/{{ slug }}.html"
 :url "/videos/{{ slug }}.html")

;; index page for videos
(weblorg-route
 :name "videos-list"
 :input-pattern "videos/*.org"
 :input-aggregate #'weblorg-input-aggregate-all-desc
 :template "videos.html"
 :output "output/pages/videos.html"
 :url "/pages/videos.html")


;; Generate pages
(weblorg-route
 :name "pages"
 :input-pattern "pages/*.org"
 :template "page.html"
 :output "output/pages/{{ slug }}.html"
 :url "/pages/{{ slug }}.html")

;; route for rendering the index page of the blog
(weblorg-route
 :name "index"
 :input-pattern "posts/*.org"
 :input-aggregate #'weblorg-input-aggregate-all-desc
 :template "index.html"
 :output "output/index.html"
 :url "/")

(weblorg-copy-static
 :output "output/static/{{ file }}"
 :url "/static/{{ file }}")

;; fire the engine and export all the files declared in the routes above
(weblorg-export)

After that one needs to deploy this site with following shell commands:

cd site

# generate website (make html, etc)
emacs --script publish.el

# copy generated site to the server
rsync --archive \
      --progress \
      --update \
      --verbose \
      --delete \
      output/ user@host:~/anastasiasergeeva_com/public_html

css

#content .avatar > img {
  border-radius: 50%;
  float: right;
  margin: -8px 0 0 16px;
  height: 100px;
  width: 100px;
}