diff --git a/content/emacs-packages.md b/content/emacs-packages.md
index 221fd57..a4dfb4a 100644
--- a/content/emacs-packages.md
+++ b/content/emacs-packages.md
@@ -5,4 +5,151 @@ draft = false
norss = true
+++
-- [Lyrics Fetcher](/packages/lyrics-fetcher)
+Following is the list of Emacs packages I authored.
+
+See also [the same list with timestamps](/packages/), and the corresponding [RSS feed](/packages/index.xml). This page is somewhat inspired by , thanks Prot.
+
+
+## org-clock-agg {#org-clock-agg}
+
+Aggregate [org-clock](https://orgmode.org/manual/Clocking-Work-Time.html) records and display the results in a tree form.
+
+- Package name: `org-clock-agg`
+- Homepage:
+- Git repo:
+
+
+## BIOME {#biome}
+
+Emacs client for [Open Meteo](https://open-meteo.com/), an open-source weather API.
+
+The package provides a bunch of [transients](https://github.com/magit/transient/) to query the service and displays the results with formatted tables.
+
+- Package name: `biome`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+- Backronym: Boutiful Interface to Open Meteo for Emacs
+
+
+## micromamba.el {#micromamba-dot-el}
+
+Emacs package for working with [micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html) environments.
+
+Essentially, it provides a subset of the functionality of [conda.el](https://github.com/necaris/conda.el), adapted for `micromamba` because interfaces of the two aren't quite compatible.
+
+- Package name: `micromamba`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+
+
+## reverso.el {#reverso-dot-el}
+
+A client for a service called [Reverso](https://www.reverso.net/); supports translation, grammar check, context and synonyms search.
+
+The package uses a reverse-engineered API, but it's been surprisingly stable.
+
+- Package name: `reverso`
+- Homepage:
+- Git repo:
+
+
+## Elfeed Sync {#elfeed-sync}
+
+Sync [elfeed](https://github.com/skeeto/elfeed) and [elfeed-summary](https://github.com/SqrtMinusOne/elfeed-summary) with [Tiny Tiny RSS](https://tt-rss.org/).
+
+This syncs the statuses of entries (read/unread) and, optionally, the feed tree of elfeed-summary. The latter is the key difference from [elfeed-protocol](https://github.com/fasheng/elfeed-protocol).
+
+- Package name: `elfeed-sync`
+- Homepage:
+- Git repo:
+
+
+## avy-dired {#avy-dired}
+
+My experiment with reducing the number of keystrokes required for filesystem navigation to an absolute minimum, with [avy](https://github.com/abo-abo/avy) and [dired](https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html).
+
+This is a bit flaky and will probably remain so because somehow I found that way of navigation cognitively harder than evil motions with [dired-narrow](https://github.com/Fuco1/dired-hacks/blob/master/dired-narrow.el). But it works.
+
+- Status: _experimental_
+- Package name: `avy-dired`
+- Homepage:
+- Git repo:
+
+
+## Elfeed Summary {#elfeed-summary}
+
+An alternative tree-based interface for [elfeed](https://github.com/skeeto/elfeed).
+
+- Package name: `elfeed-summary`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+
+
+## password-store-ivy {#password-store-ivy}
+
+Auto-type fields from [pass](https://www.passwordstore.org/) entries. Essentially, this is a reimplementation of [rofi-pass](https://github.com/carnager/rofi-pass) with [Ivy](https://github.com/abo-abo/swiper) which I made after migrating to [EXWM](https://github.com/ch11ng/exwm). I used to use the package with [ivy-posframe](https://github.com/tumashu/ivy-posframe), but the latter turned out to be unnecessary.
+
+I might archive this if I switch to a different completion framework (or even ditch the WM), which is why I'm not submitting it anywhere. But the package is pretty simple.
+
+- Package name: `password-store-ivy`
+- Homepage:
+- Git repo:
+
+
+## Org Journal Tags {#org-journal-tags}
+
+The package extends [org-journal](https://github.com/bastibe/org-journal) by introducing "tags" that reference a journal section or subset thereof. These tags can be later queried. The package also provides a UI with statistics about tags and things like records on this day a year ago.
+
+- Package name: `org-journal-tags`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+
+
+## EXWM Modeline {#exwm-modeline}
+
+Display EXWM workspaces in the modeline. Supports multiple monitors.
+
+- Package name: `exwm-modeline`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+
+
+## perspective-exwm {#perspective-exwm}
+
+A bunch of hacks & functions that make [perspective.el](https://github.com/nex3/perspective-el) play better with [EXWM](https://github.com/ch11ng/exwm).
+
+The package advices away certain weird interactions between EXWM frames and perspectives, such as a chance to break the current perspective when killing a floating frame. Both EXWM and perspective poke into the same domain of unconventional management of buffers and frames, so such issues arise.
+
+I'm uncertain how many of these issues are reproducible outside my config or workflow, because I saw people using perspective+EXWM before I had written this package. But these were blockers for my adoption of EXWM, at the very least.
+
+- Homepage:
+- Git repo:
+- Package at MELPA:
+
+
+## pomm {#pomm}
+
+Implementation of [Pomodoro](https://en.wikipedia.org/wiki/Pomodoro_Technique) and [Third Time](https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work) methods for Emacs.
+
+- Package name: `pomm`
+- Homepage:
+- Git repo:
+- Package at MELPA:
+- Backronym: Perfectly Optimized Management Methods
+
+
+## Lyrics Fetcher {#lyrics-fetcher}
+
+Retrieve and display song lyrics from [genius.com](https://genius.com/) and [music.163.com](https://music.163.com/) (thanks [Eli](https://github.com/Elilif) for the latter). The package is primarily designed for use with [EMMS](https://www.gnu.org/software/emms/), for instance, to display lyrics for the current song or for one at point in the EMMS browser. However, it can be used independently.
+
+Also, this is my first Emacs package.
+
+- Package name: `lyrics-fetcher`
+- Homepage:
+- Git repo:
+- Package at MELPA:
diff --git a/org/pages/emacs-packages.org b/org/pages/emacs-packages.org
index 1fbd1c2..980f2f6 100644
--- a/org/pages/emacs-packages.org
+++ b/org/pages/emacs-packages.org
@@ -3,4 +3,125 @@
#+TITLE: My Emacs packages
#+HUGO_CUSTOM_FRONT_MATTER: :norss true
-- [[/packages/lyrics-fetcher][Lyrics Fetcher]]
+Following is the list of Emacs packages I authored.
+
+See also [[/packages/][the same list with timestamps]], and the corresponding [[/packages/index.xml][RSS feed]]. This page is somewhat inspired by https://protesilaos.com/emacs/, thanks Prot.
+
+* org-clock-agg
+Aggregate [[https://orgmode.org/manual/Clocking-Work-Time.html][org-clock]] records and display the results in a tree form.
+
+- Package name: =org-clock-agg=
+- Homepage: https://sqrtminusone.xyz/packages/org-clock-agg
+- Git repo: https://github.com/SqrtMinusOne/org-clock-agg
+
+* BIOME
+Emacs client for [[https://open-meteo.com/][Open Meteo]], an open-source weather API.
+
+The package provides a bunch of [[https://github.com/magit/transient/][transients]] to query the service and displays the results with formatted tables.
+
+- Package name: =biome=
+- Homepage: https://sqrtminusone.xyz/packages/biome
+- Git repo: https://github.com/SqrtMinusOne/biome
+- Package at MELPA: https://melpa.org/#/biome
+- Backronym: Boutiful Interface to Open Meteo for Emacs
+
+* micromamba.el
+Emacs package for working with [[https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html][micromamba]] environments.
+
+Essentially, it provides a subset of the functionality of [[https://github.com/necaris/conda.el][conda.el]], adapted for =micromamba= because interfaces of the two aren't quite compatible.
+
+- Package name: =micromamba=
+- Homepage: https://sqrtminusone.xyz/packages/micromamba
+- Git repo: https://github.com/SqrtMinusOne/micromamba.el
+- Package at MELPA: https://melpa.org/#/micromamba
+
+* reverso.el
+A client for a service called [[https://www.reverso.net/][Reverso]]; supports translation, grammar check, context and synonyms search.
+
+The package uses a reverse-engineered API, but it's been surprisingly stable.
+
+- Package name: =reverso=
+- Homepage: https://sqrtminusone.xyz/packages/reverso
+- Git repo: https://github.com/SqrtMinusOne/reverso.el
+
+* Elfeed Sync
+Sync [[https://github.com/skeeto/elfeed][elfeed]] and [[https://github.com/SqrtMinusOne/elfeed-summary][elfeed-summary]] with [[https://tt-rss.org/][Tiny Tiny RSS]].
+
+This syncs the statuses of entries (read/unread) and, optionally, the feed tree of elfeed-summary. The latter is the key difference from [[https://github.com/fasheng/elfeed-protocol][elfeed-protocol]].
+
+- Package name: =elfeed-sync=
+- Homepage: https://sqrtminusone.xyz/packages/elfeed-sync
+- Git repo: https://github.com/SqrtMinusOne/elfeed-sync
+
+* avy-dired
+My experiment with reducing the number of keystrokes required for filesystem navigation to an absolute minimum, with [[https://github.com/abo-abo/avy][avy]] and [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html][dired]].
+
+This is a bit flaky and will probably remain so because somehow I found that way of navigation cognitively harder than evil motions with [[https://github.com/Fuco1/dired-hacks/blob/master/dired-narrow.el][dired-narrow]]. But it works.
+
+- Status: /experimental/
+- Package name: =avy-dired=
+- Homepage: https://sqrtminusone.xyz/packages/avy-dired
+- Git repo: https://github.com/SqrtMinusOne/avy-dired
+
+* Elfeed Summary
+An alternative tree-based interface for [[https://github.com/skeeto/elfeed][elfeed]].
+
+- Package name: =elfeed-summary=
+- Homepage: https://sqrtminusone.xyz/packages/elfeed-summary
+- Git repo: https://github.com/SqrtMinusOne/elfeed-summary
+- Package at MELPA: https://melpa.org/#/elfeed-summary
+
+* password-store-ivy
+Auto-type fields from [[https://www.passwordstore.org/][pass]] entries. Essentially, this is a reimplementation of [[https://github.com/carnager/rofi-pass][rofi-pass]] with [[https://github.com/abo-abo/swiper][Ivy]] which I made after migrating to [[https://github.com/ch11ng/exwm][EXWM]]. I used to use the package with [[https://github.com/tumashu/ivy-posframe][ivy-posframe]], but the latter turned out to be unnecessary.
+
+I might archive this if I switch to a different completion framework (or even ditch the WM), which is why I'm not submitting it anywhere. But the package is pretty simple.
+
+- Package name: =password-store-ivy=
+- Homepage: https://sqrtminusone.xyz/packages/password-store-ivy
+- Git repo: https://github.com/SqrtMinusOne/password-store-ivy
+
+* Org Journal Tags
+The package extends [[https://github.com/bastibe/org-journal][org-journal]] by introducing "tags" that reference a journal section or subset thereof. These tags can be later queried. The package also provides a UI with statistics about tags and things like records on this day a year ago.
+
+- Package name: =org-journal-tags=
+- Homepage: https://sqrtminusone.xyz/packages/org-journal-tags
+- Git repo: https://github.com/SqrtMinusOne/org-journal-tags
+- Package at MELPA: https://melpa.org/#/org-journal-tags
+
+* EXWM Modeline
+Display EXWM workspaces in the modeline. Supports multiple monitors.
+
+- Package name: =exwm-modeline=
+- Homepage: https://sqrtminusone.xyz/packages/exwm-modeline
+- Git repo: https://github.com/SqrtMinusOne/exwm-modeline
+- Package at MELPA: https://melpa.org/#/exwm-modeline
+
+* perspective-exwm
+A bunch of hacks & functions that make [[https://github.com/nex3/perspective-el][perspective.el]] play better with [[https://github.com/ch11ng/exwm][EXWM]].
+
+The package advices away certain weird interactions between EXWM frames and perspectives, such as a chance to break the current perspective when killing a floating frame. Both EXWM and perspective poke into the same domain of unconventional management of buffers and frames, so such issues arise.
+
+I'm uncertain how many of these issues are reproducible outside my config or workflow, because I saw people using perspective+EXWM before I had written this package. But these were blockers for my adoption of EXWM, at the very least.
+
+- Homepage: https://sqrtminusone.xyz/packages/perspective-exwm
+- Git repo: https://github.com/SqrtMinusOne/perspective-exwm.el
+- Package at MELPA: https://melpa.org/#/perspective-exwm
+
+* pomm
+Implementation of [[https://en.wikipedia.org/wiki/Pomodoro_Technique][Pomodoro]] and [[https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work][Third Time]] methods for Emacs.
+
+- Package name: =pomm=
+- Homepage: https://sqrtminusone.xyz/packages/pomm
+- Git repo: https://github.com/SqrtMinusOne/pomm.el
+- Package at MELPA: https://melpa.org/#/pomm
+- Backronym: Perfectly Optimized Management Methods
+
+* Lyrics Fetcher
+Retrieve and display song lyrics from [[https://genius.com/][genius.com]] and [[https://music.163.com/][music.163.com]] (thanks [[https://github.com/Elilif][Eli]] for the latter). The package is primarily designed for use with [[https://www.gnu.org/software/emms/][EMMS]], for instance, to display lyrics for the current song or for one at point in the EMMS browser. However, it can be used independently.
+
+Also, this is my first Emacs package.
+
+- Package name: =lyrics-fetcher=
+- Homepage: https://sqrtminusone.xyz/packages/lyrics-fetcher
+- Git repo: https://github.com/SqrtMinusOne/lyrics-fetcher.el
+- Package at MELPA: https://melpa.org/#/lyrics-fetcher