diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb64e39 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.~ diff --git a/README.org b/README.org new file mode 100644 index 0000000..4ccb959 --- /dev/null +++ b/README.org @@ -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 "") '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 diff --git a/README.md b/README.org~ similarity index 100% rename from README.md rename to README.org~ diff --git a/london/.config/alacritty/alacritty.yml b/archive/london/.config/alacritty/alacritty.yml similarity index 100% rename from london/.config/alacritty/alacritty.yml rename to archive/london/.config/alacritty/alacritty.yml diff --git a/london/.config/starship.toml b/archive/london/.config/starship.toml similarity index 100% rename from london/.config/starship.toml rename to archive/london/.config/starship.toml diff --git a/london/.config/sublime-text-3/Packages/User/LSP.sublime-settings b/archive/london/.config/sublime-text-3/Packages/User/LSP.sublime-settings similarity index 100% rename from london/.config/sublime-text-3/Packages/User/LSP.sublime-settings rename to archive/london/.config/sublime-text-3/Packages/User/LSP.sublime-settings diff --git a/london/.config/sublime-text-3/Packages/User/Markdown.sublime-settings b/archive/london/.config/sublime-text-3/Packages/User/Markdown.sublime-settings similarity index 100% rename from london/.config/sublime-text-3/Packages/User/Markdown.sublime-settings rename to archive/london/.config/sublime-text-3/Packages/User/Markdown.sublime-settings diff --git a/london/.config/sublime-text-3/Packages/User/Package Control.sublime-settings b/archive/london/.config/sublime-text-3/Packages/User/Package Control.sublime-settings similarity index 100% rename from london/.config/sublime-text-3/Packages/User/Package Control.sublime-settings rename to archive/london/.config/sublime-text-3/Packages/User/Package Control.sublime-settings diff --git a/london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings b/archive/london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings similarity index 98% rename from london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings rename to archive/london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings index e990dad..cdd166f 100644 --- a/london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings +++ b/archive/london/.config/sublime-text-3/Packages/User/Preferences.sublime-settings @@ -6,6 +6,7 @@ "ignored_packages": [ "Rust", + "Vintage" ], "monokai_pro_file_icons": true, "monokai_pro_highlight_open_folders": true, diff --git a/london/.config/systemd/user/backup.service b/archive/london/.config/systemd/user/backup.service similarity index 100% rename from london/.config/systemd/user/backup.service rename to archive/london/.config/systemd/user/backup.service diff --git a/london/.config/systemd/user/clock.service b/archive/london/.config/systemd/user/clock.service similarity index 100% rename from london/.config/systemd/user/clock.service rename to archive/london/.config/systemd/user/clock.service diff --git a/london/.config/systemd/user/default.target.wants/clock.service b/archive/london/.config/systemd/user/default.target.wants/clock.service similarity index 100% rename from london/.config/systemd/user/default.target.wants/clock.service rename to archive/london/.config/systemd/user/default.target.wants/clock.service diff --git a/london/.config/systemd/user/default.target.wants/ssh-agent.service b/archive/london/.config/systemd/user/default.target.wants/ssh-agent.service similarity index 100% rename from london/.config/systemd/user/default.target.wants/ssh-agent.service rename to archive/london/.config/systemd/user/default.target.wants/ssh-agent.service diff --git a/london/.config/systemd/user/gsimmer.timer b/archive/london/.config/systemd/user/gsimmer.timer similarity index 100% rename from london/.config/systemd/user/gsimmer.timer rename to archive/london/.config/systemd/user/gsimmer.timer diff --git a/archive/london/.config/systemd/user/protonvpn_reconnect.service b/archive/london/.config/systemd/user/protonvpn_reconnect.service new file mode 100644 index 0000000..1f92b96 --- /dev/null +++ b/archive/london/.config/systemd/user/protonvpn_reconnect.service @@ -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 diff --git a/london/.config/systemd/user/ssh-agent.service b/archive/london/.config/systemd/user/ssh-agent.service similarity index 100% rename from london/.config/systemd/user/ssh-agent.service rename to archive/london/.config/systemd/user/ssh-agent.service diff --git a/london/.config/systemd/user/timers.target.wants/gsimmer.timer b/archive/london/.config/systemd/user/timers.target.wants/gsimmer.timer similarity index 100% rename from london/.config/systemd/user/timers.target.wants/gsimmer.timer rename to archive/london/.config/systemd/user/timers.target.wants/gsimmer.timer diff --git a/london/.config/wezterm/wezterm.lua b/archive/london/.config/wezterm/wezterm.lua similarity index 100% rename from london/.config/wezterm/wezterm.lua rename to archive/london/.config/wezterm/wezterm.lua diff --git a/london/.emacs.d/.gitignore b/archive/london/.emacs.d/.gitignore similarity index 100% rename from london/.emacs.d/.gitignore rename to archive/london/.emacs.d/.gitignore diff --git a/archive/london/.emacs.d/.lsp-session-v1 b/archive/london/.emacs.d/.lsp-session-v1 new file mode 100644 index 0000000..b8be1ad --- /dev/null +++ b/archive/london/.emacs.d/.lsp-session-v1 @@ -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 ())) \ No newline at end of file diff --git a/london/.emacs.d/init.el b/archive/london/.emacs.d/init.el similarity index 100% rename from london/.emacs.d/init.el rename to archive/london/.emacs.d/init.el diff --git a/archive/london/.emacs.d/projectile-bookmarks.eld b/archive/london/.emacs.d/projectile-bookmarks.eld new file mode 100644 index 0000000..48cac3f --- /dev/null +++ b/archive/london/.emacs.d/projectile-bookmarks.eld @@ -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/") \ No newline at end of file diff --git a/london/.zshrc b/archive/london/.zshrc similarity index 100% rename from london/.zshrc rename to archive/london/.zshrc diff --git a/toronto/.config/alacritty/alacritty.yml b/archive/toronto/.config/alacritty/alacritty.yml similarity index 100% rename from toronto/.config/alacritty/alacritty.yml rename to archive/toronto/.config/alacritty/alacritty.yml diff --git a/toronto/.config/i3/config b/archive/toronto/.config/i3/config similarity index 100% rename from toronto/.config/i3/config rename to archive/toronto/.config/i3/config diff --git a/toronto/.config/i3/display.sh b/archive/toronto/.config/i3/display.sh similarity index 100% rename from toronto/.config/i3/display.sh rename to archive/toronto/.config/i3/display.sh diff --git a/toronto/.config/kanshi/config b/archive/toronto/.config/kanshi/config similarity index 100% rename from toronto/.config/kanshi/config rename to archive/toronto/.config/kanshi/config diff --git a/toronto/.config/picom/picom.conf b/archive/toronto/.config/picom/picom.conf similarity index 100% rename from toronto/.config/picom/picom.conf rename to archive/toronto/.config/picom/picom.conf diff --git a/toronto/.config/starship.toml b/archive/toronto/.config/starship.toml similarity index 100% rename from toronto/.config/starship.toml rename to archive/toronto/.config/starship.toml diff --git a/toronto/.config/sublime-text-3/Packages/User/Markdown.sublime-settings b/archive/toronto/.config/sublime-text-3/Packages/User/Markdown.sublime-settings similarity index 100% rename from toronto/.config/sublime-text-3/Packages/User/Markdown.sublime-settings rename to archive/toronto/.config/sublime-text-3/Packages/User/Markdown.sublime-settings diff --git a/toronto/.config/sublime-text-3/Packages/User/Package Control.sublime-settings b/archive/toronto/.config/sublime-text-3/Packages/User/Package Control.sublime-settings similarity index 100% rename from toronto/.config/sublime-text-3/Packages/User/Package Control.sublime-settings rename to archive/toronto/.config/sublime-text-3/Packages/User/Package Control.sublime-settings diff --git a/toronto/.config/sublime-text-3/Packages/User/Preferences.sublime-settings b/archive/toronto/.config/sublime-text-3/Packages/User/Preferences.sublime-settings similarity index 100% rename from toronto/.config/sublime-text-3/Packages/User/Preferences.sublime-settings rename to archive/toronto/.config/sublime-text-3/Packages/User/Preferences.sublime-settings diff --git a/toronto/.config/sway/config b/archive/toronto/.config/sway/config similarity index 100% rename from toronto/.config/sway/config rename to archive/toronto/.config/sway/config diff --git a/toronto/.config/sway/swaybar.sh b/archive/toronto/.config/sway/swaybar.sh similarity index 100% rename from toronto/.config/sway/swaybar.sh rename to archive/toronto/.config/sway/swaybar.sh diff --git a/toronto/.config/swaylock/config b/archive/toronto/.config/swaylock/config similarity index 100% rename from toronto/.config/swaylock/config rename to archive/toronto/.config/swaylock/config diff --git a/toronto/.config/wofi/config b/archive/toronto/.config/wofi/config similarity index 100% rename from toronto/.config/wofi/config rename to archive/toronto/.config/wofi/config diff --git a/toronto/.config/wofi/styles.css b/archive/toronto/.config/wofi/styles.css similarity index 100% rename from toronto/.config/wofi/styles.css rename to archive/toronto/.config/wofi/styles.css diff --git a/toronto/.zshrc b/archive/toronto/.zshrc similarity index 100% rename from toronto/.zshrc rename to archive/toronto/.zshrc diff --git a/base.org b/seedfile.org similarity index 52% rename from base.org rename to seedfile.org index 536263e..debf9af 100644 --- a/base.org +++ b/seedfile.org @@ -1,7 +1,163 @@ -#+title: Base Guix Configuration -#+author: Gabriel Simmer +* What is this? -* 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 "") '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. @@ -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"))))) #+end_src -* Systems +** Systems -** Base Configuration +*** Base Configuration Just some basic importing of modules for now. I'm using the nonfree Linux kernel from nonguix. @@ -65,10 +221,6 @@ from nonguix. (use-service-modules desktop xorg) (use-package-modules certs) (use-package-modules shells) -#+end_src - - -#+begin_src scheme :tangle .config/guix/systems/base-system.scm (define %xorg-libinput-config "Section \"InputClass\" @@ -161,9 +313,9 @@ in a typing install of Guix/Linux. (name-service-switch %mdns-host-lookup-nss))) #+end_src -** Individual Systems +*** Individual Systems -*** London +**** London London is my primary custom built desktop, with @@ -190,10 +342,18 @@ London is my primary custom built desktop, with (device "/dev/nvme0n1p2") (mount-point "/") (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))) #+end_src -*** Virtual +**** Virtual This applies to any random Guix VM I spin up, usually for testing configurations.