Skip to content

Repository files navigation

takeokunn’s braindump

https://img.shields.io/badge/DeepWiki-takeokunn%2Fblog-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==

Overview

This is a Zettelkasten-style knowledge management system and technical blog.

Notes are written in org-mode and managed with org-roam, enabling bidirectional linking between notes.

The content is then published to multiple platforms through various exporters:

All builds are reproducible using Nix flakes.

Architecture

.
├── hugo/      # Main blog (Hugo + ox-hugo + org-roam)
├── zenn/      # Zenn.dev articles (ox-zenn)
├── devto/     # dev.to articles (ox-gfm)
└── typst/     # PDF slides/articles (Typst + ox-typst)

Each subdirectory contains:

  • org/ - Source org-mode files
  • flake.nix - Build definition
  • scripts/ - Export scripts for Emacs batch mode

Tech Stack

Content Management

  • org-roam - Zettelkasten implementation for Emacs
  • org-mode - Plain text markup

Hugo Blog

Zenn

  • ox-zenn - org-mode to Zenn markdown

dev.to

Typst

  • Typst - Modern typesetting system
  • ox-typst - org-mode to Typst
  • polylux - Presentation slides for Typst

Build & Lint

Published URLs

PlatformURL
Main Bloghttps://www.takeokunn.org
Graph Viewhttps://www.takeokunn.org/graph
Zennhttps://zenn.dev/takeokunn
dev.tohttps://dev.to/takeokunn
PDF slideshttps://www.takeokunn.org/pdf

Build Commands

Hugo

$ cd hugo && nix build '.?submodules=1#build-hugo'

org-roam-ui-lite

$ cd hugo && nix build .#build-org-roam-ui-lite

Zenn

$ cd zenn && nix build .#build-zenn

dev.to

$ cd devto && nix build .#build-devto

Typst

$ cd typst && nix build .#example-slide

Available Typst packages:

Theme

Using takeokunn/hugo-take-theme.

git submodule update --remote --recursive

テーマ自動更新

テーマ hugo-take-theme はサブモジュールとして hugo/themes/hugo-take-theme に組み込まれている。従来は手動で git submodule update --remote を実行してコミットする必要があったが、=.github/workflows/update-theme.yml= により自動化している。

仕組み

  • 毎日 06:00 JST (cron: "0 21 * * *" / UTC 21:00) に schedule トリガーで起動する。
  • テーマ側リポジトリから repository_dispatch イベント (event_type: theme-updated) を送ることで、更新直後に即時同期もできる。
  • workflow_dispatch により手動実行も可能。

ジョブは以下を行う。

  1. submodules: true でチェックアウトし、=git submodule update –remote hugo/themes/hugo-take-theme= でサブモジュールを最新化する。
  2. 差分がある場合のみ github-actions[bot] 名義で build(theme): bump hugo-take-theme to <short-sha> というメッセージでコミットし、=GITHUB_TOKEN= で main に push する。
  3. push 後に gh workflow run main.yml --ref main で Deploy ワークフローを明示的に起動する。

3 が必要なのは、=GITHUB_TOKEN= による push は on: push ワークフローを起動しないという GitHub の再帰トリガー防止仕様のためである。=GITHUB_TOKEN= 経由の workflow_dispatch はこの制限の例外となるため、これで Deploy を確実に走らせられる。

即時同期用の PAT (テーマ側リポジトリで設定)

repository_dispatch による即時同期を使う場合、テーマ側リポジトリ (takeokunn/hugo-take-theme) から本リポジトリへディスパッチを送るために repo スコープを持つ PAT (Personal Access Token) が必要になる。PAT はテーマ側リポジトリのシークレットとして保存し、その用途と設定方法はテーマ側リポジトリのドキュメントに記載する。=schedule= による毎日同期のみで十分な場合は PAT は不要。

About

Zettelkasten-style knowledge base and blog using org-roam, published to Hugo, Zenn, dev.to, and Typst PDF via Nix flakes.

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages