diff --git a/emacs.d/org-roam-templates/main.el b/emacs.d/org-roam-templates/main.el
new file mode 100644
index 0000000..96b66f5
--- /dev/null
+++ b/emacs.d/org-roam-templates/main.el
@@ -0,0 +1,285 @@
+;;;; add inactive timestamp to every org-item
+;; https://stackoverflow.com/a/52815573/5115219
+;; https://emacs.stackexchange.com/a/45369/29404
+(defun insert-created-date (&rest ignore)
+ "Insert inacative timestamp property,
+but only in org-items, not in org-item-checkboxes."
+ (interactive)
+ (if (not (org-at-item-checkbox-p))
+ (progn
+ (insert (format-time-string
+ (concat "\n"
+ ":properties:\n"
+ ":created: "
+ "[%Y-%m-%d %a %H:%M]\n"
+ ":end:"
+ )))
+ ;; in org-capture, this folds the entry; when inserting a heading, this moves point back to the heading line
+ (org-back-to-heading)
+ ;; when inserting a heading, this moves point to the end of the line
+ (move-end-of-line ()))))
+;;;; add inactive timestamp to entries in org-mode
+(advice-add 'org-insert-heading :after #'insert-created-date)
+
+;; ----------------------------------------------------------------------
+;;; org-roam
+;; ----------------------------------------------------------------------
+;;;; Filter nodes
+;; https://www.reddit.com/r/emacs/comments/vb989o/orgroam_show_only_file_nodes_when_inserting_a_node/ic8bc7l/?context=3
+
+;;;;; Define regexp for filtering daily journal files like `2022-05-22'
+(setq my-date-regexp "^[0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [A-Za-z]+")
+
+;;;;; Define filter functions to be used in `org-roam-node-find' function.
+(defun ugt-filter-org-roam-node-file-p (node)
+ "Filter nodes that represent files.
+So exclude nodes that are outline items in org files.
+
+Usage example:
+(org-roam-node-read nil #'ugt-filter-org-roam-node-file-p)
+"
+ (and
+ (= (org-roam-node-level node) 0)
+ (not (string-match my-date-regexp (org-roam-node-title node)))))
+
+(defun ugt-filter-org-roam-node-exclude-dates (node)
+ "Exclude journal files like `2022-05-17' from nodes list."
+ (not (string-match my-date-regexp (org-roam-node-title node))))
+
+(defun ugt-filter-org-roam-node-exclude-archived-and-journal-files (node)
+ "Exclude these files / nodes
+- tagged `archive'
+- in folder `archive'
+- journal files."
+ (and
+ ;; no journal files
+ (not (string-match my-date-regexp (org-roam-node-title node)))
+ ;; not tagged `archive'
+ (not (member "archive" (org-roam-node-tags node)))
+ ;; not in any folder named `archive'
+ (not (string-match-p "archive/" (org-roam-node-file node)))))
+
+;;;;; Define custom `org-roam-node-find' functions with filters.
+(defun ugt-org-roam-node-find nil
+ "Refined search for org-roam nodes.
+Exclude elements tagged `archive'."
+ (interactive)
+ ;; nb: can add initial search string like "^"
+ (org-roam-node-find :other-window nil #'ugt-filter-org-roam-node-exclude-archived-and-journal-files))
+
+(defun ugt-org-roam-node-find-document-nodes nil
+ "Refined search for org-roam nodes.
+Search for only document level nodes. Exclude dates."
+ (interactive)
+ ;;(org-roam-node-find :other-window)
+ (org-roam-node-find :other-window nil #'ugt-filter-org-roam-node-file-p))
+
+;;;; Custom `org-roam-dailies-goto-today' function
+(defun ugt-org-roam-dailies-goto-today nil
+ "Open todays journal in other window."
+ (interactive)
+ (split-window-right)
+ (other-window 1)
+ (org-roam-dailies-goto-today))
+
+ (setq org-roam-node-display-template
+ (concat "${title:70}"(propertize "${tags:30}" 'face 'org-tag) "${file:48}"))
+ (setq org-roam-capture-templates '(
+ ("d" "default (personal notes)"
+ plain "%?"
+ ;; could use
+ ;; (file (concat org-directory "/org-roam/personal/templates/personal.org"))
+ :if-new (file+head "personal/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("q" "FreeBSD"
+ plain "%?"
+ :if-new (file+head "personal/freebsd/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: FreeBSD\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("l" "Japanese"
+ plain "%?"
+ :if-new (file+head "personal/japanese/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: Japanese\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+
+
+ ("z" "Blog Post"
+ plain "%?"
+ :if-new (file+head "~/omnia/weblog/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: blog_post\n#+startup: showall\n
+ #+AUTHOR: Alexandro Longo \n
+ #+HTML_HEAD_EXTRA: \n
+ #+OPTIONS: toc:nil \n
+ #+HTML_HEAD: \n
+ \n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("c" "Math Ideas"
+ plain "%?"
+ :if-new (file+head "personal/math-ideas/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: mathematical_ideas\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("t" "Proofs"
+ plain "%?"
+ :if-new (file+head "personal/math-ideas/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: mathematical_proofs\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("x" "Real Analysis"
+ plain "%?"
+ :if-new (file+head "personal/math-ideas/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: real_analysis\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("m" "mechanics"
+ plain "%?"
+ :if-new (file+head "personal/mechanics/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: mechanics\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("s" "stoicism"
+ plain "%?"
+ :if-new (file+head "personal/stoicism/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: stoicism\n#+startup: showall\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("n" "My Readings"
+ plain "%?"
+ :if-new (file+head "my-readings/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: My_readings \n#+startup: content\n")
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("g" "Guix"
+ plain "%?"
+ :if-new (file+head "guix/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: Guix \n#+startup: content\n")
+ :empty-lines 1
+ :unnarrowed t)
+
+
+ ("m" "Emacs related notes"
+ plain "%?"
+ :if-new (file+head "emacs/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+filetags: emacs\n#+startup: content\n")
+ :empty-lines 1
+ :unnarrowed t)
+
+ ("w" "work notes"
+ plain "%?"
+ :if-new (file+head "work/${slug}.org"
+ "#+title: ${title}\n#+date: %<%Y-%m-%d %a %R>\n#+updated: \n %R>\n#+filetags: work_notes\n\n")
+ :immediate-finish t
+ :empty-lines 1
+ :unnarrowed t))
+ time-stamp-start "#\\+updated: [\t]*")
+ (setq org-roam-dailies-capture-templates '(("d" "default" entry
+ "\n* %<%H:%M> %?\n:properties:\n:created: %U\n:end:\n"
+ :target (file+head "%<%Y-%m-%d>.org"
+ "#+title: %<%Y-%m-%d %a>\n#+startup: showall\n")
+ ;;:unnarrowed t
+ ;;:jump-to-captured t
+ :empty-lines 1
+ )))
+ ;; Change file-name (slug) creation
+ ;; Replace whitespace with dashes instead of underscores.
+ ;; See
+ ;; - https://github.com/org-roam/org-roam/issues/686
+ ;; - https://github.com/org-roam/org-roam/pull/1544[[id:2022-06-12T213159.588064][test mest hest]]
+ (cl-defmethod org-roam-node-slug ((node org-roam-node))
+ "Return the slug of NODE."
+ (let ((title (org-roam-node-title node))
+ (slug-trim-chars '(;; Combining Diacritical Marks https://www.unicode.org/charts/PDF/U0300.pdf
+ 768 ; U+0300 COMBINING GRAVE ACCENT
+ 769 ; U+0301 COMBINING ACUTE ACCENT
+ 770 ; U+0302 COMBINING CIRCUMFLEX ACCENT
+ 771 ; U+0303 COMBINING TILDE
+ 772 ; U+0304 COMBINING MACRON
+ 774 ; U+0306 COMBINING BREVE
+ 775 ; U+0307 COMBINING DOT ABOVE
+ 776 ; U+0308 COMBINING DIAERESIS
+ 777 ; U+0309 COMBINING HOOK ABOVE
+ 778 ; U+030A COMBINING RING ABOVE
+ 779 ; U+030B COMBINING DOUBLE ACUTE ACCENT
+ 780 ; U+030C COMBINING CARON
+ 795 ; U+031B COMBINING HORN
+ 803 ; U+0323 COMBINING DOT BELOW
+ 804 ; U+0324 COMBINING DIAERESIS BELOW
+ 805 ; U+0325 COMBINING RING BELOW
+ 807 ; U+0327 COMBINING CEDILLA
+ 813 ; U+032D COMBINING CIRCUMFLEX ACCENT BELOW
+ 814 ; U+032E COMBINING BREVE BELOW
+ 816 ; U+0330 COMBINING TILDE BELOW
+ 817 ; U+0331 COMBINING MACRON BELOW
+ )))
+ (cl-flet* ((nonspacing-mark-p (char) (memq char slug-trim-chars))
+ (strip-nonspacing-marks (s) (string-glyph-compose
+ (apply #'string
+ (seq-remove #'nonspacing-mark-p
+ (string-glyph-decompose s)))))
+ (cl-replace (title pair) (replace-regexp-in-string (car pair) (cdr pair) title)))
+ (let* ((pairs `(("[^[:alnum:][:digit:]]" . "-") ;; convert anything not alphanumeric
+ ("--*" . "-") ;; remove sequential underscores
+ ("^-" . "") ;; remove starting underscore
+ ("-$" . ""))) ;; remove ending underscore
+ (slug (-reduce-from #'cl-replace (strip-nonspacing-marks title) pairs)))
+ (downcase slug)))))
+ ;; https://org-roam.discourse.group/t/v2-set-id-to-a-timestamp/1492/2
+ ;; (setq org-roam-capture-templates
+ ;; '(("p" "personal" plain
+ ;; (function org-roam--capture-get-point) "%?"
+ ;; :file-name "personal/%<%Y-%m-%dT%H%M%S>"
+ ;; :head "---\ntitle: ${title}\nid: %<%Y-%m-%dT%H%M%S.%6N">\nmodified: <>\n---\n"
+ ;; :unnarrowed t)))
+ (org-roam-db-autosync-mode)
+ ;; If using org-roam-protocol
+ (require 'org-roam-protocol)
+
+;;;; Go to item text after capture
+(defun ugt-org-capture-after-finalize-hook nil
+ (org-capture-goto-last-stored)
+ (end-of-buffer)
+ (recenter-top-bottom '(4)) ;; center of window
+ )
+(add-hook 'org-capture-after-finalize-hook #'ugt-org-capture-after-finalize-hook)
+
+;;;; Hide drawers after creation
+(defun my-org-capture-hook ()
+ (when (plist-member org-capture-plist :org-roam)
+ (org-cycle-hide-drawers 'overview)))
+(add-hook 'org-capture-mode-hook #'my-org-capture-hook)
+
+;;;; Hide drawers in all cases in org-roam.
+(defun my-org-roam-hook () (org-cycle-hide-drawers 'overview))
+(add-hook 'org-roam-mode-hook #'my-org-roam-hook)
+
+;;;; Jump to the end of buffer when today's journal is opened
+(defun ugt-org-roam-dailies-find-file-hook nil (end-of-buffer))
+(add-hook 'org-roam-dailies-find-file-hook #'ugt-org-roam-dailies-find-file-hook)
+
+;;;; add inactive timestamp to journal entries in org-roam
+(add-hook 'org-roam-dailies-capture-today #'insert-created-date)
+