dotfiles/Dots.org

9 KiB

Dotfiles

now do it with orgmode!

original old configs are in archive/.

My Setup

…is a little in flux.

Over the past several months, I've been investing time into learning emacs, replacing Sublime in my workflow. As a part of this I've also considered using Guix (see: seedfile.org), but am not quite there in my journey, so they aren't included here.

zsh

zsh is my choice of shell, with some written-in-Rust replacements for a few CLI tools.

.zshrc

export ZSH="/home/gsimmer/.oh-my-zsh"

ZSH_THEME="frisk"

plugins=(git fzf zsh-autosuggestions)

source $ZSH/oh-my-zsh.sh

export GOPATH="/home/gsimmer/Projects/go"
export CARGOPATH="/home/gsimmer/.cargo/bin"
export PATH="/home/gsimmer/.local/bin:$GOPATH/bin:$CARGOPATH:$PATH"

# Starship init.
#eval "$(starship init zsh)"

# aliases for various Rust-based utils.
if [ $(which exa) != 'exa not found' ]; then
   alias ls=exa
fi
if [ $(which bat) != 'bat not found' ]; then
   alias cat=bat
fi
if [ $(which rg) != 'rg not found' ]; then
   alias grep=rg
fi

wezterm

WezTerm is my terminal of choice these days, and is configured with Lua. Most of the tweaks from the default config are around using Monokai Pro colours.

.config/wezterm/wezterm.lua

local wezterm = require 'wezterm';

return {
  automatically_reload_config = true,
  font = wezterm.font("IBM Plex Mono"),
  window_close_confirmation = "NeverPrompt",
  font_size = 12,
  initial_cols = 120,
  initial_rows = 35,
  colors = {
      foreground = "#f7f1ff",
      background = "#222222",
      cursor_bg = "#8b888f",
      cursor_fg = "#f7f1ff",
      cursor_border = "#8b888f",
      selection_fg = "#363537",
      selection_bg = "#69676c",
      scrollbar_thumb = "#222222",
      split = "#fce566",
      tab_bar = {
      background = "#222222",
      active_tab = {
        bg_color = "#f7f1ff",
        fg_color = "#69676c",
        intensity = "Normal",
        underline = "None",
        italic = false,
        strikethrough = false,
      },

      inactive_tab = {
        bg_color = "#69676c",
        fg_color = "#f7f1ff",

      },

      inactive_tab_hover = {
        bg_color = "#69676c",
        fg_color = "#f7f1ff",
        italic = true,
      }
    }
  }
}

systemd units

When I move to Guix I expect I'll need to port these to Herd, but in the meantime…

clock

This runs a small webserver that renders a date that is fetched and displayed on a Raspberry Pi with a small eink display.

You can read more about it here.

.config/systemd/user/clock.service

[Unit]
Description=eink Clock Server Daemon

[Service]
WorkingDirectory=/mnt/wd/Projects/eink-dashboard
ExecStart=python server/main.py

[Install]
WantedBy=default.target
backup

This runs the rclone command to back up my large data SSD to my NAS. Coupled with a timer.

.config/systemd/user/backup.service

[Unit]
Description=Backup Service for Projects
Wants=gsimmer.timer

[Service]
Type=oneshot
WorkingDirectory=/mnt/fhg
ExecStart=bash rclone-pi.sh

[Install]
WantedBy=default.target

.config/systemd/user/gsimmer.timer

[Unit]
Description=Runs backup script for project directories to Raspberry Pi.
Requires=backup.service

[Timer]
Unit=backup.service
OnBootSec=15min
OnUnitActive=1w

[Install]
WantedBy=timers.target

emacs

Ah, the star of the show! I'm still working on this configuration, and plan to split it into seperate files for each package. In the meantime, enjoy the monolith.

..emacs.d/init.el

(setq inhibit-startup-message t)
;; neccesary non-package related config
(setq auto-save-default nil)
(setq make-backup-files nil)
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
(set-face-attribute 'default nil :font "IBM Plex Mono" :height 120)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(set-fringe-mode 10)
(menu-bar-mode -1)

(setq org-edit-src-content-indentation 0
      org-src-tab-acts-natively t
      org-src-preserve-indentation t)

;; stupid hacks
(setenv "PATH"
	(concat "/usr/local/bin/go" "/home/gsimmer/projects/go/bin" (getenv "PATH")))

;; straight.el bootstrapping
(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 5))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

;; package list we want installed
;; first grab use-package :3
(straight-use-package 'use-package)
(use-package el-patch :straight t)
(use-package monokai-pro-theme
  :straight t
  :config (load-theme 'monokai-pro-spectrum t))
(use-package doom-modeline
  :straight t
  :init (doom-modeline-mode 1)
  :custom (doom-mode-line-height 14))
(use-package all-the-icons :straight t)
(use-package paredit
  :straight t
  :config
  (add-hook 'emacs-lisp-mode-hook #'paredit-mode)
  (add-hook 'lisp-interaction-mode-hook #'paredit-mode)
  (add-hook 'ielm-mode-hook #'paredit-mode)
  (add-hook 'lisp-mode-hook #'paredit-mode)
  (add-hook 'eval-expression-minibuffer-setup-hook #'paredit-mode))
(use-package which-key
  :straight t
  :config (which-key-mode))
(use-package projectile
  :straight t
  :init (projectile-mode +1)
  :config (setq projectile-project-search-path '("~/projects"))
  :bind (:map projectile-mode-map
	      ("s-p" . projectile-command-map)
	      ("C-c p" . projectile-command-map)))
(use-package dired-sidebar :straight t :commands (dired-sidebar-toggle-sidebar))

;; lsp-mode stuff
(use-package eglot :straight t
	     :config (add-hook 'go-mode-hook 'eglot-ensure))
(use-package company :straight t
  :config (add-hook 'after-init-hook 'global-company-mode) (setq company-idle-delay 0) (setq company-minimum-prefix-length 1))
(use-package go-mode :straight t)

sublime text

Although I've moved to emacs for what I would use Sublime for, I still keep this configuration around for quick setup in the case I need it (e.g a virtual machine).

Most of these settings are for Monokai Pro.

.config/sublime-text-3/Packages/User/Preferences.sublime-settings

{
	"auto_complete_delay": 20,
	"color_scheme": "Monokai Pro (Filter Spectrum).sublime-color-scheme",
	"font_face": "Iosevka Regular",
	"font_size": 13,
	"ignored_packages":
	[
		"Rust",
		"Vintage"
	],
	"monokai_pro_file_icons": true,
	"monokai_pro_highlight_open_folders": true,
	"monokai_pro_minimal": true,
	"monokai_pro_sidebar_headings": true,
	"monokai_pro_style_title_bar": true,
	"monokai_pro_ui_font_face": "IBM Plex Mono",
	"rulers":
	[
		80
	],
	"theme": "Monokai Pro (Filter Spectrum).sublime-theme",
	"mini_diff": "auto",
	"hardware_acceleration": "opengl",
	"themed_title_bar": true,
}

I also keep a Package Control file to auto install stuff.

.config/sublime-text-3/Packages/User/Package Control.sublime-settings

{
	"bootstrapped": true,
	"debug": true,
	"in_process_packages":
	[
	],
	"installed_packages":
	[
		"Dockerfile Syntax Highlighting",
		"Emmet",
		"GitGutter",
		"Gofmt",
		"Golang Build",
		"HexViewer",
		"LSP",
		"LSP-bash",
		"LSP-intelephense",
		"LSP-pyright",
		"LSP-SourceKit",
		"LSP-typescript",
		"LSP-yaml",
		"Package Control",
		"paredit",
		"Rust Enhanced",
		"SideBarEnhancements",
		"SublimeLinter",
		"Swift",
		"Theme - Monokai Pro",
		"TOML",
		"TypeScript",
	],
}

And a Markdown specific configuration to bring the distraction-free mode to the default windowed view.

.config/sublime-text-3/Packages/User/Markdown.sublime-settings

{
    "auto_complete": false,	
    "ignored_packages": ["Vintage", "Emmet", "SublimeCodeIntel"],
    "draw_centered": true,
    "spell_check": true,
    "tab_completion": false,
    "auto_complete_triggers": [],
    "word_wrap": true,
    "line_numbers": false,
    "gutter": false,
    "wrap_width": 80,
    "word_wrap": true,
    "scroll_past_end": true
}