Skip to content

Latest commit

 

History

History
956 lines (822 loc) · 32.1 KB

dots.org

File metadata and controls

956 lines (822 loc) · 32.1 KB

Literate Dotfile Configuration

Literate Dotfile Configuration

Purpose:

This document serves as a means to create a centralized location for all my system depedent configurations.

System Installation

Setup export file on org-babel for configs (i.e: tmux, screen, systemd, etc)

Emacs

Systemd

Install Emacs via package manager and create an Emaclient service with Systemd like so:

  • Create systemd service file at this location. /.config/systemd/user/default.target.wants/emacs.service
  • Add these configurations
[Unit]
Description=Emacs: the extensible, self-documenting text editor

[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=always

[Install]
WantedBy=default.target
  • To enable and start systemd service: systemctl --user enable emacs && systemctl --user start emacs
  • To restart and quickly stop emacs service: systemctl --user restart emacs
  • Launch Emacs with: emacsclient -t or emacsclient -c -a

Emacs Client Desktop Entry

[Desktop Entry]
Name=Emacs Client
GenericName=Text Editor
Comment=A flexible platform for end-user applications
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -create-frame --alternate-editor="" --no-wait %F
Icon=/home/erobles/Pictures/tacosandlinux.png
Type=Application
Terminal=false
Categories=TextEditor;Utility;
StartupWMClass=Emacs
Keywords=Text;Editor;
X-KDE-StartupNotify=false

SSH Agent

Systemd

Screen

startup_message off
caption always "%{= ..}%-w%{= gW}%n %t%{-}%+w %-= @%H - %D %M %d - %C%a"
backtick 2 300 0 whoami
hardstatus on
hardstatus string '%2`@%H<%t>'
shell bash

vbell off
bell_msg "Bell in %n-%t at <%c> ^G"

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I"
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo rxvt*|xterm*    'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

# erase background with current bg color
defbce "on"

# huge scrollback buffer
defscrollback 5000
noblock 5

# mouse tracking allows to switch region focus by clicking
mousetrack on

# navigating regions with Ctrl-arrows
bindkey "^[[1;5D" focus left
bindkey "^[[1;5C" focus right
bindkey "^[[1;5A" focus up
bindkey "^[[1;5B" focus down


screen -t Home 1 bash
screen -t emt 2 emacsclient -t -c
bind R screen -t '% |rpi:' 3 ssh rpi-dev-srv
bind P screen -t '% |proxmox:' 4 ssh proxmox
#screen -t Downloads 5 cd /home/erobles/Downloads/
select 1
bind c screen 1 # window numbering starts at 1 not 0
bind 0 select 10

Tmux

# Set crtl-t to Modify Key
unbind C-b
set -g prefix C-t

# Force 256 Colors
set -g default-terminal "screen-256color"

# Move between panes withs t and +
unbind ^T
bind ^T select-pane -t :.+

# emacs key bindings in tmux command prompt (prefix + :) are better than
# vi keys, even for vim users
set -g status-keys emacs

# System Clipboard
set -g set-clipboard on

# Split panes with V and H
bind h split-window -v
bind v split-window -h

# Pane Navigation
bind l select-pane -L
bind k select-pane -D
bind i select-pane -U
bind j select-pane -R


# More scroll back
set-option -g history-limit 10000

# Turn on Mouse Mode
set -g mouse on

# Positon Status at Top
set -g status-position top

# - - - - - - - - - - - - - - - - - - - - - - - -
#TMUX Plugins https://github.com/tmux-plugins/tpm
# - - - - - - - - - - - - - - - - - - - - - - - -

set -g @plugin 'tmux-plugins/tpm'
# Sensible plugins
set -g @plguin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'tmux-plugins/tmux-yank'


run '~/.tmux/plugins/tpm/tpm'

Git Config

[user]
	email = [email protected]
	name = Eduardo Robles
	signingkey = ENTERKEYHERE

Bash Aliases

alias emt="emacsclient -t"
alias emc="emacsclient -c -a emacs"
alias semacs="systemctl status --user emacs.service"
alias remacs="systemctl restart --user emacs.service"

bashrc additions

# Editor settings
export ALTERNATE_EDITOR="emacs -nw"
export EDITOR="emacsclient -t" #$EDITOR opens in terminal
export VISUAL="emacsclient -c -a emacs" #$VISUAL opens in GUI mode

# Unified Bash History
shopt -s histappend
PROMPT_COMMAND="$PROMPT_COMMAND; history -a; history -n"


# Start SSH Agent unless already running
#if [ -z "$SSH_AUTH_SOCK" ] ; then
#    eval `ssh-agent`
#    ssh-add
#fi

Emacs

Init

Borrowed/Inspired by: https://github.com/dieggsy/dotfiles/blob/master/emacs/.emacs.d/init.org

  ;;; -*- lexical-binding: t -*-

  (require 'package)
  (setq byte-compile-warnings '(cl-functions))
  ;; Set package archives
  ;;(setq package-check-signature nil)  ; because GNU ELPA keeps choking on the sigs
  (add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/"))
  (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
  ;;(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
  (with-eval-after-load 'package (add-to-list 'package-archives '("nongnu" . "https://elpa.nongnu.org/nongnu/")))
  (setq package-enable-at-startup nil)

  (package-initialize)
  (unless package-archive-contents
    (package-refresh-contents))

  ;;Use-package
  (unless (package-installed-p 'use-package)
    (package-install 'use-package))

  (setq use-package-verbose t)
  (setq use-package-always-ensure t)
  (eval-when-compile (require 'use-package))
  (use-package auto-compile
    :config (auto-compile-on-load-mode))
  (setq load-prefer-newer t)
  (unless (package-installed-p 'quelpa)
    (with-temp-buffer
      (url-insert-file-contents "https://raw.githubusercontent.com/quelpa/quelpa/master/quelpa.el")
      (eval-buffer)
      (quelpa-self-upgrade)))

  (quelpa
   '(quelpa-use-package
     :fetcher git
     :url "https://github.com/quelpa/quelpa-use-package.git"))
  (require 'quelpa-use-package)


;;From lambda.cx blog
;;https://blog.lambda.cx/posts/eamacs-improved-frame-title/
(setq frame-title-format '("%b@" (:eval (or (file-remote-p default-directory 'host) system-name)) " — Emacs"))

  (scroll-bar-mode -1)
  (tool-bar-mode -1)
  (show-paren-mode t)

  (set-charset-priority 'unicode)
  (setq locale-coding-system   'utf-8)
  (set-terminal-coding-system  'utf-8)
  (set-keyboard-coding-system  'utf-8)
  (set-selection-coding-system 'utf-8)
  (prefer-coding-system        'utf-8)
  (setq default-process-coding-system '(utf-8-unix . utf-8-unix))

  (global-auto-revert-mode t)

  (add-hook 'before-save-hook 'delete-trailing-whitespace)

  (global-visual-line-mode t)
  (global-prettify-symbols-mode t)

  (require 'org)
  (org-babel-load-file (expand-file-name "~/.emacs.d/emacs.org"))
  (custom-set-variables
   ;; custom-set-variables was added by Custom.
   ;; If you edit it by hand, you could mess it up, so be careful.
   ;; Your init file should contain only one such instance.
   ;; If there is more than one, they won't work right.
   )
  (custom-set-faces
   ;; custom-set-faces was added by Custom.
   ;; If you edit it by hand, you could mess it up, so be careful.
   ;; Your init file should contain only one such instance.
   ;; If there is more than one, they won't work right.
   )

Emacs Customization

Startup Config

(setq confirm-kill-emacs                  'y-or-n-p
      confirm-nonexistent-file-or-buffer  t
      require-final-newline               t
      visible-bell                        nil
      ring-bell-function                  'ignore
      minibuffer-prompt-properties
      '(read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt)

      ;; Disable non selected window highlight
      cursor-in-non-selected-windows     nil
      highlight-nonselected-windows      nil
      ;; PATH
      exec-path                          (append exec-path '("/usr/local/bin/"))
      indent-tabs-mode                   nil
      inhibit-startup-message            t
      fringes-outside-margins            t
      x-select-enable-clipboard          t
      create-lockfiles                   nil

)

Environment Variables

To find environment variables simply:

  • M-x: $SHELL for shell
  • M-x: $GPG_AGENT_INFO for gpg
  • M-x: $SSH_AUTH_SOCK for ssh
(setenv "SHELL" "/bin/bash")
;;(setenv "GPG_AGENT_INFO" "/run/user/1000/gnupg/S.gpg-agent:0:1")
(setenv "SSH_AUTH_SOCK" "/run/user/1000/keyring/.ssh")

Backup Settings

Disable backups. Creates ugly junk on filesystem.

(setq backup-inhibited t
      make-backup-files nil
      auto-save-default nil)

User Details

(setq user-full-name "Eduardo Robles"
      user-mail-address "[email protected]")

Auth sources

(setq epg-gpg-program "gpg2")
(require 'auth-source)
(setq
epa-file-encrypt-to user-mail-address
auth-sources (list (expand-file-name "~/.authinfo.gpg")))

GUI Settings

Window Settings

;; Enlarge/Shrink Window
(global-set-key (kbd "C-x J") 'shrink-window-horizontally)
(global-set-key (kbd "C-x K") 'enlarge-window-horizontally)

Fonts

;; if gui do something in whatver type of emacs instance we are using
(defun apply-if-gui (&rest action)
  "Do specified ACTION if we're in a gui regardless of daemon or not."
  (if (daemonp)
      (add-hook 'after-make-frame-functions
                (lambda (frame)
                  (select-frame frame)
                  (if (display-graphic-p frame)
                      (apply action))))
    (if (display-graphic-p)
        (apply action))))

;; Default font (cant be font with hyphen in the name like Inconsolata-g)
(setq initial-frame-alist '((font . "IBM Plex Mono")))
(setq default-frame-alist '((font . "IBM Plex Mono")))

All The Icons

(use-package all-the-icons)

(use-package all-the-icons-dired
:config
:hook (dired-mode . (lambda ()
		     (interactive)
		     (unless (file-remote-p default-directory)
		       (all-the-icons-dired-mode)))))

Doom Modeline

(use-package doom-modeline
  :ensure t
  :init (doom-modeline-mode 1))
;; If non-nil, cause imenu to see `doom-modeline' declarations.
;; This is done by adjusting `lisp-imenu-generic-expression' to
;; include support for finding `doom-modeline-def-*' forms.
;; Must be set before loading doom-modeline.
(setq doom-modeline-support-imenu t)

;; How tall the mode-line should be. It's only respected in GUI.
;; If the actual char height is larger, it respects the actual height.
(setq doom-modeline-height 25)

;; How wide the mode-line bar should be. It's only respected in GUI.
(setq doom-modeline-bar-width 4)

;; Whether to use hud instead of default bar. It's only respected in GUI.
(setq doom-modeline-hud nil)

;; The limit of the window width.
;; If `window-width' is smaller than the limit, some information won't be
;; displayed. It can be an integer or a float number. `nil' means no limit."
(setq doom-modeline-window-width-limit 85)

;; How to detect the project root.
;; nil means to use `default-directory'.
;; The project management packages have some issues on detecting project root.
;; e.g. `projectile' doesn't handle symlink folders well, while `project' is unable
;; to hanle sub-projects.
;; You can specify one if you encounter the issue.
(setq doom-modeline-project-detection 'auto)

;; Determines the style used by `doom-modeline-buffer-file-name'.
;;
;; Given ~/Projects/FOSS/emacs/lisp/comint.el
;;   auto => emacs/l/comint.el (in a project) or comint.el
;;   truncate-upto-project => ~/P/F/emacs/lisp/comint.el
;;   truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el
;;   truncate-with-project => emacs/l/comint.el
;;   truncate-except-project => ~/P/F/emacs/l/comint.el
;;   truncate-upto-root => ~/P/F/e/lisp/comint.el
;;   truncate-all => ~/P/F/e/l/comint.el
;;   truncate-nil => ~/Projects/FOSS/emacs/lisp/comint.el
;;   relative-from-project => emacs/lisp/comint.el
;;   relative-to-project => lisp/comint.el
;;   file-name => comint.el
;;   buffer-name => comint.el<2> (uniquify buffer name)
;;
;; If you are experiencing the laggy issue, especially while editing remote files
;; with tramp, please try `file-name' style.
;; Please refer to https://github.com/bbatsov/projectile/issues/657.
(setq doom-modeline-buffer-file-name-style 'auto)

;; Whether display icons in the mode-line.
;; While using the server mode in GUI, should set the value explicitly.
(setq doom-modeline-icon t)

;; Whether display the icon for `major-mode'. It respects `doom-modeline-icon'.
(setq doom-modeline-major-mode-icon t)

;; Whether display the colorful icon for `major-mode'.
;; It respects `all-the-icons-color-icons'.
(setq doom-modeline-major-mode-color-icon t)

;; Whether display the icon for the buffer state. It respects `doom-modeline-icon'.
(setq doom-modeline-buffer-state-icon t)

;; Whether display the modification icon for the buffer.
;; It respects `doom-modeline-icon' and `doom-modeline-buffer-state-icon'.
(setq doom-modeline-buffer-modification-icon t)

;; Whether display the time icon. It respects variable `doom-modeline-icon'.
(setq doom-modeline-time-icon t)

;; Whether to use unicode as a fallback (instead of ASCII) when not using icons.
(setq doom-modeline-unicode-fallback nil)

;; Whether display the buffer name.
(setq doom-modeline-buffer-name t)

;; Whether display the minor modes in the mode-line.
(setq doom-modeline-minor-modes nil)

;; If non-nil, a word count will be added to the selection-info modeline segment.
(setq doom-modeline-enable-word-count nil)

;; Major modes in which to display word count continuously.
;; Also applies to any derived modes. Respects `doom-modeline-enable-word-count'.
;; If it brings the sluggish issue, disable `doom-modeline-enable-word-count' or
;; remove the modes from `doom-modeline-continuous-word-count-modes'.
(setq doom-modeline-continuous-word-count-modes '(markdown-mode gfm-mode org-mode))

;; Whether display the buffer encoding.
(setq doom-modeline-buffer-encoding t)

;; Whether display the indentation information.
(setq doom-modeline-indent-info nil)

;; If non-nil, only display one number for checker information if applicable.
(setq doom-modeline-checker-simple-format t)

;; The maximum number displayed for notifications.
(setq doom-modeline-number-limit 99)

;; The maximum displayed length of the branch name of version control.
(setq doom-modeline-vcs-max-length 12)

;; Whether display the workspace name. Non-nil to display in the mode-line.
(setq doom-modeline-workspace-name t)

;; Whether display the perspective name. Non-nil to display in the mode-line.
(setq doom-modeline-persp-name t)

;; If non nil the default perspective name is displayed in the mode-line.
(setq doom-modeline-display-default-persp-name nil)

;; If non nil the perspective name is displayed alongside a folder icon.
(setq doom-modeline-persp-icon t)

;; Whether display the `lsp' state. Non-nil to display in the mode-line.
(setq doom-modeline-lsp t)

;; Whether display the GitHub notifications. It requires `ghub' package.
(setq doom-modeline-github nil)

;; The interval of checking GitHub.
(setq doom-modeline-github-interval (* 30 60))

;; Whether display the modal state icon.
;; Including `evil', `overwrite', `god', `ryo' and `xah-fly-keys', etc.
(setq doom-modeline-modal-icon t)

;; Whether display the mu4e notifications. It requires `mu4e-alert' package.
;;(setq doom-modeline-mu4e nil)
;; also enable the start of mu4e-alert
;;(mu4e-alert-enable-mode-line-display)

;; Whether display the gnus notifications.
;;(setq doom-modeline-gnus t)

;; Whether gnus should automatically be updated and how often (set to 0 or smaller than 0 to disable)
;;(setq doom-modeline-gnus-timer 2)

;; Wheter groups should be excludede when gnus automatically being updated.
;;(setq doom-modeline-gnus-excluded-groups '("dummy.group"))

;; Whether display the IRC notifications. It requires `circe' or `erc' package.
;;(setq doom-modeline-irc t)

;; Function to stylize the irc buffer names.
;;(setq doom-modeline-irc-stylize 'identity)

;; Whether display the time. It respects `display-time-mode'.
(setq doom-modeline-time t)

;; Whether display the misc segment on all mode lines.
;; If nil, display only if the mode line is active.
(setq doom-modeline-display-misc-in-all-mode-lines t)

;; Whether display the environment version.
;;(setq doom-modeline-env-version t)
;; Or for individual languages
;;(setq doom-modeline-env-enable-python t)
;;(setq doom-modeline-env-enable-ruby t)
;;(setq doom-modeline-env-enable-perl t)
;;(setq doom-modeline-env-enable-go t)
;;(setq doom-modeline-env-enable-elixir t)
;;(setq doom-modeline-env-enable-rust t)

;; Change the executables to use for the language version string
;;(setq doom-modeline-env-python-executable "python") ; or `python-shell-interpreter'
;;(setq doom-modeline-env-ruby-executable "ruby")
;;(setq doom-modeline-env-perl-executable "perl")
;;(setq doom-modeline-env-go-executable "go")
;;(setq doom-modeline-env-elixir-executable "iex")
;;(setq doom-modeline-env-rust-executable "rustc")

;; What to display as the version while a new one is being loaded
(setq doom-modeline-env-load-string "...")

;; Hooks that run before/after the modeline version string is updated
(setq doom-modeline-before-update-env-hook nil)
(setq doom-modeline-after-update-env-hook nil)

Modeline Tweaks

Primarily for when using Emacs on a laptop.

(display-time-mode 1)
(unless (string-match-p "^Power N/A" (battery))
  (display-battery-mode 1))

Packages Setup

Vertico

(use-package vertico
  :ensure t
  :init
  (vertico-mode))

(use-package vertico-directory
  :after vertico
  :ensure nil
  :bind (:map vertico-map
              ("RET" . vertico-directory-enter)
              ("DEL" . vertico-directory-delete-char)
              ("M-DEL" . vertico-directory-delete-word))
  :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))

Vterm

(use-package vterm
     :ensure t)

Flycheck

(use-package flycheck
  :hook ((prog-mode . flycheck-mode)
         (markdown-mode . flycheck-mode)
         (org-mode . flycheck-mode))
  :config
  (setq flycheck-check-syntax-automatically '(save mode-enabled newline))
  (setq flycheck-display-errors-delay 0.1)
    (setq flycheck-checker-error-threshold 1000)
  (setq flycheck-indication-mode nil)
  (define-key flycheck-mode-map (kbd "<f8>") #'flycheck-next-error)
  (define-key flycheck-mode-map (kbd "S-<f8>") #'flycheck-previous-error))

Flyspell

(use-package flyspell
  :ensure nil
  :hook ((markdown-mode . flyspell-mode)
         (org-mode      . flyspell-mode))
  :config
  (setq ispell-program-name "/usr/bin/aspell"))

Magit

(use-package magit
  :bind
  ;; Magic
  ("C-x g s" . magit-status)
  ("C-x g x" . magit-checkout)
  ("C-x g c" . magit-commit)
  ("C-x g p" . magit-push)
  ("C-x g u" . magit-pull)
  ("C-x g e" . magit-ediff-resolve)
  ("C-x g r" . magit-rebase-interactive))

(use-package magit-popup)

Org

Org-mode

(use-package org
   :bind
        ("C-c l" . org-store-link)
        ("C-c a" . org-agenda)
        ("C-c c" . org-capture))
(require 'ox-html)
(require 'ox-latex)
(require 'ox-md)
(require 'ox-hugo)

Org-bullets

(use-package org-bullets
  :config
  (setq org-hide-leading-stars t)
  (add-hook 'org-mode-hook
            (lambda ()
              (org-bullets-mode t))))

Org-babel

(define-advice org-babel-execute-src-block (:before (&rest _) d/load-lang)
 "Load src language on demand.

This removes the need to add every language manually to
`org-babel-load-languages'. This also implies that any language
that supports execution can be executed. Executing src blocks is
an active enough action that I'm ok with this."
 (let ((language (intern
		  (org-element-property :language (org-element-at-point)))))
   (message "LANG: %s" language)
   (pcase language
     ('sh (setq language 'shell))
     ('C++ (setq language 'C)))
   (message "LANG: %s" language)
   (unless (alist-get language org-babel-load-languages)
     (add-to-list 'org-babel-load-languages (cons language t))
     (org-babel-do-load-languages
      'org-babel-load-languages
      org-babel-load-languages))))

Org-agenda

Consolidate templates for capture templates

Org-mode settings

(setq org-confirm-babel-evaluate nil
  org-startup-indented t
  org-insert-heading-respect-content t
  org-src-window-setup 'current-window
  org-export-in-background t
  org-export-with-author nil
  org-export-babel-evaluate nil
  org-html-validation-link nil
  org-confirm-babel-evaluate nil
  org-src-tab-acts-natively t
  org-log-into-drawer t
  org-confirm-elisp-link-function 'y-or-n-p)

Demo-it

(use-package demo-it)

Org Tree Slide

(use-package org-tree-slide)

Elfeed

  ;; Load elfeed
  (use-package elfeed
    :ensure t
    :config
(setq elfeed-use-curl t)
(elfeed-set-timeout 36000))

  ;; Load elfeed-org
  (use-package elfeed-org
    :ensure t
    :config
    (elfeed-org)
    (setq rmh-elfeed-org-files (list "~/.emacs.d/elfeed.org"))
    )

  ;; Load elfeed-goodies
  (use-package elfeed-goodies
    :ensure t
    )

  (require 'elfeed)
  (require 'elfeed-goodies)

  (elfeed-goodies/setup)

Page Break Lines

(use-package page-break-lines)

Smartparens

(use-package smartparens)

Which Key

(use-package which-key
  :config
  (which-key-mode))

Yasnippet

(use-package yasnippet
  :config
  (setq yas-snippet-dirs '("~/.emacs.d/snippets"))
  (yas-global-mode 1))

HTMLIZE

(use-package htmlize)

Tramp

(setq tramp-default-method "ssh")

Emoji

(use-package emojify)

JSON mode

(use-package json-mode
  :mode "\\.json\\'")

Markdown mode

(use-package markdown-mode
:ensure t
:commands (markdown-mode gfm-mode)
:mode (("README\\.md\\'" . gfm-mode)
       ("\\.md\\'" . markdown-mode)
       ("\\.markdown\\'" . markdown-mode)))

PDF tools

(use-package pdf-tools
  :mode (("\\.pdf\\'" . pdf-view-mode))
  :config
  (pdf-loader-install))

YAML mode

(use-package yaml-mode
  :mode "\\.yml\\'")

Touch typing

(use-package speed-type)

Streaming

Play online streams including Youtube Shamelessy stolen function from: https://github.com/howardabrams/dot-files/blob/master/emacs-emms.org

(defun play-freecodecamp-radio ()
   "Play Freecodecamp Radio"
   (interactive)
   (emms-play-streamlist "https://coderadio-admin.freecodecamp.org/public/coderadio/playlist/pls"))

(defun play-chilledcow ()
"Play Chilledcow on YT"
 (interactive)
 (emms-play-url "https://www.youtube.com/watch?v=hHW1oY26kxQ"))

Add following to mpv.conf file to play without window in MPV to play youtube streams --no-video

Hugo

  (use-package ox-hugo
    :ensure t   ;Auto-install the package from Melpa
    :pin melpa  ;`package-archives' should already have ("melpa" . "https://melpa.org/packages/")
    :after ox)
(with-eval-after-load 'ox
  (require 'ox-hugo))

Capture Templates for Ox-Hugo

See https://ox-hugo.scripter.co/doc/org-capture-setup/

  ;; Populates only the EXPORT_FILE_NAME property in the inserted heading.
(with-eval-after-load 'org-capture
  (defun org-hugo-new-subtree-post-capture-template ()
    "Returns `org-capture' template string for new Hugo post.
See `org-capture-templates' for more information."
    (let* ((title (read-from-minibuffer "Post Title: ")) ;Prompt to enter the post title
           (fname (org-hugo-slug title)))
      (mapconcat #'identity
                 `(
                   ,(concat "* TODO " title)
                   ":PROPERTIES:"
                   ,(concat ":EXPORT_FILE_NAME: " fname)
                   ":END:"
                   "%?\n")          ;Place the cursor here finally
                 "\n")))

  (add-to-list 'org-capture-templates
               '("h"                ;`org-capture' binding + h
                 "Hugo post"
                 entry
                 ;; It is assumed that below file is present in `org-directory'
                 ;; and that it has a "Blog Ideas" heading. It can even be a
                 ;; symlink pointing to the actual location of all-posts.org!
                 (file+olp "~/Projects/eduardorobles_blog/content/blog.org" "Drafts")
                 (function org-hugo-new-subtree-post-capture-template))))

SSH Config

(use-package ox-ssh
:ensure t
:after ox)

somafm.el

(use-package somafm
:ensure t)

Mastodon

(use-package mastodon
  :ensure t
  :config
  (mastodon-discover))

  (setq mastodon-instance-url "https://emacs.ch"
        mastodon-active-user "tacosandlinux")

Other

Quotes

“Waste no more time arguing what a good man should be. Be One.” – Marcus Aurelius “Think of the life you have lived until now as over and, as a dead man, see what’s left as a bonus and live it according to Nature. Love the hand that fate deals you and play it as your own, for what could be more fitting?” – Marcus Aurelius “It never ceases to amaze me: we all love ourselves more than other people, but care more about their opinion than our own.” – Marcus Aurelius “In your actions, don’t procrastinate. In your conversations, don’t confuse. In your thoughts, don’t wander. In your soul, don’t be passive or aggressive. In your life, don’t be all about business.” – Marcus Aurelius “If it is not right, do not do it, if it is not true, do not say it.” – Marcus Aurelius “He who fears death will never do anything worth of a man who is alive.” – Seneca “Life is very short and anxious for those who forget the past, neglect the present, and fear the future.” – Seneca

Elfeed RSS Feeds

Blogs

Banners

1

░▀█▀░█▀█░█▀▀░█▀█░█▀▀░▄▀░░█░░░▀█▀░█▀█░█░█░█░█ ░░█░░█▀█░█░░░█░█░▀▀█░▄█▀░█░░░░█░░█░█░█░█░▄▀▄ ░░▀░░▀░▀░▀▀▀░▀▀▀░▀▀▀░░▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░▀

2

______ ____ __ \__ _\ /| _ \ /\ \ __ \/_\ \/ __ ___ ___ ____ |/\ | \ \ \ \_\ ___ __ __ __ _ \ \ \ /’__`\ /’___\ / __`\ /’,__\ \/ __`\/\ \ \ __\/\ \ ’ _ `\\ \/\ \/\ \/’\ \ \ \/\ \L.\_/\ \__//\ \L\ \/\__, `\/| \L> <_\ \ \L\ \ \ \/\ \/\ \ \ \_\ \/> </ \ \_\ \__/.\_\ \____\ \____/\/\____/| \_____/\/ \ \____/ \ \_\ \_\ \_\ \____//\_/\_\ \/_/\/__/\/_/\/____/\/___/ \/___/ \/____/\/ \/___/ \/_/\/_/\/_/\/___/ \//\/_/

3

______ ____ __ _ _ __/__ ________ ___ / __/___ / / (_)__ __ ____ __ / / / _ ` __/ _ \(-< > _/ / / /__/ / _ \/ // /\ \ / /_/ \,_/\__/\___/___/ |_____/ ____/_/_//_\_,_//_\_\

4

████████╗ █████╗ ██████╗ ██████╗ ███████╗ █████╗ ███╗ ██╗██████╗ ██╗ ██╗███╗ ██╗██╗ ██╗██╗ ██╗ ╚══██╔══╝██╔══██╗██╔════╝██╔═══██╗██╔════╝ ██╔══██╗████╗ ██║██╔══██╗ ██║ ██║████╗ ██║██║ ██║╚██╗██╔╝ ██║ ███████║██║ ██║ ██║███████╗ ███████║██╔██╗ ██║██║ ██║ ██║ ██║██╔██╗ ██║██║ ██║ ╚███╔╝ ██║ ██╔══██║██║ ██║ ██║╚════██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██║██║╚██╗██║██║ ██║ ██╔██╗ ██║ ██║ ██║╚██████╗╚██████╔╝███████║ ██║ ██║██║ ╚████║██████╔╝ ███████╗██║██║ ╚████║╚██████╔╝██╔╝ ██╗ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝

tacosandlinux.png

Add png to config