Port to orgmode file.

This commit is contained in:
Gabriel Simmer 2021-09-26 21:12:19 +01:00
parent cd260107b5
commit 92abcb770c
39 changed files with 564 additions and 12 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.~

380
README.org Normal file
View file

@ -0,0 +1,380 @@
* Dotfiles
#+PROPERTY: header-args :mkdirp yes
/now do it with orgmode!/
original old configs are in =archive/=.
** Table of Contents
:properties:
:toc: :include all :ignore this
:end:
:contents:
- [[#my-setup][My Setup]]
- [[#wezterm][WezTerm]]
- [[#systemd-units][Systemd Units]]
- [[#sublime-text][Sublime Text]]
- [[#emacs][emacs]]
:end:
** My Setup
...is a little in flux.
Over the past several months, I've been investing time into [[https://blog.gabrielsimmer.com/posts/emacs-induction/][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.
*** 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=
#+begin_src lua :tangle .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,
}
}
}
}
#+end_src
*** 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 [[https://dev.to/gmemstr/tiny-eink-dashboard-29a4][here]].
=.config/systemd/user/clock.service=
#+begin_src :tangle .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
#+end_src
**** 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=
#+begin_src :tangle .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
#+end_src
=.config/systemd/user/gsimmer.timer=
#+begin_src :tangle .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
#+end_src
*** 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=
#+begin_src json :tangle .config/sublime-text-3/Packages/User/Preferences.sublime-setting
{
"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,
}
#+end_src
I also keep a Package Control file to auto install stuff.
=.config/sublime-text-3/Packages/User/Package Control.sublime-settings=
#+begin_src json :tangle .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",
],
}
#+end_src
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=
#+begin_src json :tangle .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
}
#+end_src
*** 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.
=.config/.emacs.d/init.el=
#+begin_src elisp :tangle .config/.emacs.d/init.el
;; Mostly following along with System Crafter's videos.
;; So this will look pretty familiar.
(setq inhibit-startup-message t)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(set-fringe-mode 10)
(menu-bar-mode -1)
(set-face-attribute 'default nil :font "IBM Plex Mono" :height 120)
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
(setq org-edit-src-content-indentation 0
org-src-tab-acts-natively t
org-src-preserve-indentation t)
;; Packages stuff.
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")
("elpa" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;; I like Monokai Pro, sue me ;)
(use-package monokai-pro-theme
:ensure t
:config
(load-theme 'monokai-pro-spectrum t))
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
:custom
(doom-mode-line-height 15))
(use-package all-the-icons :ensure t)
(use-package treemacs
:ensure t
:defer t
:init
:bind (:map global-map
("M-0" . treemacs-select-window)
("C-x t t" . treemacs)))
(use-package treemacs-projectile
:ensure t)
;; LSP config.
(use-package spinner :ensure t)
(use-package lsp-mode
:ensure t
:init
(setq lsp-keymap-prefix "C-c l")
:hook ((rust-mode . lsp)
(lsp-mode . lsp-enable-which-key-integration))
:commands lsp)
(use-package lsp-ui :commands lsp-ui-mode)
(use-package lsp-ivy :commands lsp-ivy-workspace-symbol)
(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
(use-package rust-mode)
;; Can't have lisps without paredit!
(use-package paredit
:ensure t
:config
(add-hook 'emacs-lisp-mode-hook #'paredit-mode)
;; enable in the *scratch* buffer
(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 projectile
:ensure t
:init
(projectile-mode +1)
:bind (:map projectile-mode-map
("s-p" . projectile-command-map)
("C-c p" . projectile-command-map))
:config
(setq projectile-project-search-path '("~/Projects")))
;; Ivy/Swiper/Counsel config.
(use-package swiper)
(use-package counsel)
(use-package ivy
:diminish
:bind (("C-s" . swiper)
:map ivy-minibuffer-map
("TAB" . ivy-alt-done)
("C-l" . ivy-alt-done)
("C-j" . ivy-next-line)
("C-k" . ivy-previous-line)
:map ivy-switch-buffer-map
("C-k" . ivy-previous-line)
("C-l" . ivy-done)
("C-d" . ivy-switch-buffer-kill)
:map ivy-reverse-i-search-map
("C-k" . ivy-previous-line)
("C-d" . ivy-reverse-i-search-kill))
:config
(ivy-mode 1))
(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.
'(package-selected-packages
'(treemacs-projectile projectile paredit all-the-fonts doom-modeline rust-mode swipe spinner lsp-treemacs lsp-ivy lsp-ui lsp-mode counsel swiper ivy treemacs use-package monokai-pro-theme)))
(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.
)
#+end_src

View file

@ -6,6 +6,7 @@
"ignored_packages": "ignored_packages":
[ [
"Rust", "Rust",
"Vintage"
], ],
"monokai_pro_file_icons": true, "monokai_pro_file_icons": true,
"monokai_pro_highlight_open_folders": true, "monokai_pro_highlight_open_folders": true,

View file

@ -0,0 +1,8 @@
# v3.3.2
[Unit]
Description=ProtonVPN Reconnector
[Service]
ExecStart=/usr/bin/python /usr/lib/python3.9/site-packages/protonvpn_nm_lib/daemon/dbus_daemon_reconnector.py

View file

@ -0,0 +1 @@
#s(lsp-session ("/mnt/fhg/Projects/whalepod" "/mnt/fhg/Projects/circleci-rs/src") nil #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ()) #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ()) #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ()))

View file

@ -0,0 +1 @@
("~/dotfiles/" "/mnt/fhg/Projects/hue-webapp/" "/mnt/fhg/Projects/circleci-rs/" "/mnt/fhg/Projects/youtube-dl/" "/mnt/fhg/Projects/whalepod/" "/mnt/fhg/Projects/wallpapers/" "/mnt/fhg/Projects/wallfox_site/" "/mnt/fhg/Projects/usbboot/" "/mnt/fhg/Projects/tty-clock/" "/mnt/fhg/Projects/tsukae/" "/mnt/fhg/Projects/sliproad/" "/mnt/fhg/Projects/rust-book/" "/mnt/fhg/Projects/replnote/" "/mnt/fhg/Projects/qmk_firmware/" "/mnt/fhg/Projects/psst/" "/mnt/fhg/Projects/protondb-api/" "/mnt/fhg/Projects/platypus-react/" "/mnt/fhg/Projects/oncallbot/" "/mnt/fhg/Projects/ocr/" "/mnt/fhg/Projects/nvidia-patch/" "/mnt/fhg/Projects/notdonemywebsite/" "/mnt/fhg/Projects/nodemc/" "/mnt/fhg/Projects/neff-pack/" "/mnt/fhg/Projects/mdn/" "/mnt/fhg/Projects/linux/" "/mnt/fhg/Projects/link-shorter/" "/mnt/fhg/Projects/license-server/" "/mnt/fhg/Projects/language-server-protocol-inspector/" "/mnt/fhg/Projects/guix-installer/" "/mnt/fhg/Projects/gmem.ca/" "/mnt/fhg/Projects/github-project-sync/" "/mnt/fhg/Projects/gitgalaxy.github.io/" "/mnt/fhg/Projects/gguix/" "/mnt/fhg/Projects/game-clj/" "/mnt/fhg/Projects/gabrielsimmer.com/" "/mnt/fhg/Projects/fakexrandr/" "/mnt/fhg/Projects/ereader/" "/mnt/fhg/Projects/eink-dashboard/" "/mnt/fhg/Projects/eclipse.jdt.ls/" "/mnt/fhg/Projects/e-Paper/" "/mnt/fhg/Projects/do-the-thing/" "/mnt/fhg/Projects/developer-hub-indexer/" "/mnt/fhg/Projects/datapack-clj/" "/mnt/fhg/Projects/database-janitor/" "/mnt/fhg/Projects/circleci-flutter/" "/mnt/fhg/Projects/cci-scripts/" "/mnt/fhg/Projects/caniplay/" "/mnt/fhg/Projects/brave-browser/" "/mnt/fhg/Projects/blog.gabrielsimmer.com/" "/mnt/fhg/Projects/banana-clj/" "/mnt/fhg/Projects/Xiaomi-Dafang-Hacks/" "/mnt/fhg/Projects/TicketBot/" "/mnt/fhg/Projects/TF2HUD.Editor/" "/mnt/fhg/Projects/OSX-KVM/" "/mnt/fhg/Projects/Nitrox/" "/mnt/fhg/Projects/Leafish/" "/mnt/fhg/Projects/Firefox-UI-Fix/")

View file

@ -1,7 +1,163 @@
#+title: Base Guix Configuration * What is this?
#+author: Gabriel Simmer
* Channels Welcome to the seedfile! This file contains all the code required to generate (so far) the
following:
+ Multi-device emacs configuration (WIP).
+ Base Guix configuration and per device configuration.
Other things may be added later. In the meantime, enjoy the tangle!
* Emacs Configuration
Starting in 2021, I've moved what I would use Sublime Text for over to Emacs. As such, I need a
relatively usable configuration. Attempts to use DOOMEmacs/spacemacs mostly led to frustration
as I didn't learn the underlying editor.
** The Basics & UI Tweaks
Some of the basics include turning off some of the defaults for a more focused experience, akin
to what you'd expect from ST.
#+begin_src elisp :tangle .config/emacs.d/init.el
(setq inhibit-startup-message t)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(set-fringe-mode 10)
(menu-bar-mode -1)
(set-face-attribute 'default nil :font "IBM Plex Mono" :height 120)
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
(setq org-edit-src-content-indentation 0
org-src-tab-acts-natively t
org-src-preserve-indentation t)
#+end_src
** Packages
Next is a relatively lengthy packages block. There's a few key elements here,
including my theme of choice (Monokai Pro) and the setup of several useful
UI/UX elements such as treemacs, LSP mode, ivy and projectile, among others.
Eventually this will be split into its own file.
#+begin_src elisp :tangle .config/emacs.d/init.el
;; Packages stuff.
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")
("elpa" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;; I like Monokai Pro, sue me ;)
(use-package monokai-pro-theme
:ensure t
:config
(load-theme 'monokai-pro-spectrum t))
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
:custom
(doom-mode-line-height 15))
(use-package all-the-icons :ensure t)
(use-package treemacs
:ensure t
:defer t
:init
:bind (:map global-map
("M-0" . treemacs-select-window)
("C-x t t" . treemacs)))
(use-package treemacs-projectile
:ensure t)
;; LSP config.
(use-package spinner :ensure t)
(use-package lsp-mode
:ensure t
:init
(setq lsp-keymap-prefix "C-c l")
:hook ((rust-mode . lsp)
(lsp-mode . lsp-enable-which-key-integration))
:commands lsp)
(use-package lsp-ui :commands lsp-ui-mode)
(use-package lsp-ivy :commands lsp-ivy-workspace-symbol)
(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
(use-package rust-mode)
;; Can't have lisps without paredit!
(use-package paredit
:ensure t
:config
(add-hook 'emacs-lisp-mode-hook #'paredit-mode)
;; enable in the *scratch* buffer
(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 projectile
:ensure t
:init
(projectile-mode +1)
:bind (:map projectile-mode-map
("s-p" . projectile-command-map)
("C-c p" . projectile-command-map))
:config
(setq projectile-project-search-path '("~/Projects")))
;; Ivy/Swiper/Counsel config.
(use-package swiper)
(use-package counsel)
(use-package ivy
:diminish
:bind (("C-s" . swiper)
:map ivy-minibuffer-map
("TAB" . ivy-alt-done)
("C-l" . ivy-alt-done)
("C-j" . ivy-next-line)
("C-k" . ivy-previous-line)
:map ivy-switch-buffer-map
("C-k" . ivy-previous-line)
("C-l" . ivy-done)
("C-d" . ivy-switch-buffer-kill)
:map ivy-reverse-i-search-map
("C-k" . ivy-previous-line)
("C-d" . ivy-reverse-i-search-kill))
:config
(ivy-mode 1))
(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.
'(package-selected-packages
'(treemacs-projectile projectile paredit all-the-fonts doom-modeline rust-mode swipe spinner lsp-treemacs lsp-ivy lsp-ui lsp-mode counsel swiper ivy treemacs use-package monokai-pro-theme)))
(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.
)
#+end_src
* Guix Configuration
** Channels
I don't really need any fancy channels, besides nonguix and my own repository. I don't really need any fancy channels, besides nonguix and my own repository.
@ -23,9 +179,9 @@ I don't really need any fancy channels, besides nonguix and my own repository.
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
#+end_src #+end_src
* Systems ** Systems
** Base Configuration *** Base Configuration
Just some basic importing of modules for now. I'm using the nonfree Linux kernel Just some basic importing of modules for now. I'm using the nonfree Linux kernel
from nonguix. from nonguix.
@ -65,10 +221,6 @@ from nonguix.
(use-service-modules desktop xorg) (use-service-modules desktop xorg)
(use-package-modules certs) (use-package-modules certs)
(use-package-modules shells) (use-package-modules shells)
#+end_src
#+begin_src scheme :tangle .config/guix/systems/base-system.scm
(define %xorg-libinput-config (define %xorg-libinput-config
"Section \"InputClass\" "Section \"InputClass\"
@ -161,9 +313,9 @@ in a typing install of Guix/Linux.
(name-service-switch %mdns-host-lookup-nss))) (name-service-switch %mdns-host-lookup-nss)))
#+end_src #+end_src
** Individual Systems *** Individual Systems
*** London **** London
London is my primary custom built desktop, with London is my primary custom built desktop, with
@ -190,10 +342,18 @@ London is my primary custom built desktop, with
(device "/dev/nvme0n1p2") (device "/dev/nvme0n1p2")
(mount-point "/") (mount-point "/")
(type "ext4")) (type "ext4"))
(file-system
(device "/dev/sda1")
(mount-point "/home/gsimmer/wd")
(type "ext4"))
(file-system
(device "/dev/sdb1")
(mount-point "/home/gsimmer/fhg")
(type "ext4"))
%base-file-systems))) %base-file-systems)))
#+end_src #+end_src
*** Virtual **** Virtual
This applies to any random Guix VM I spin up, usually for testing configurations. This applies to any random Guix VM I spin up, usually for testing configurations.