diff --git a/files/.config/eww/eww.xml b/files/.config/eww/eww.xml index 6d64c67..9c7c2be 100644 --- a/files/.config/eww/eww.xml +++ b/files/.config/eww/eww.xml @@ -81,8 +81,15 @@ false - + + + + + while true; do + sleep 1; + notify-send 'hi' 'ho' date + done @@ -101,6 +108,12 @@ + + + + + + diff --git a/files/.emacs.d/config.org b/files/.emacs.d/config.org new file mode 100644 index 0000000..87457a2 --- /dev/null +++ b/files/.emacs.d/config.org @@ -0,0 +1,312 @@ +#+TITLE: Emacs Config + +* General Settings + +Typing =:ensure t= everywhere is very bothersome so I'd rather *not* do that. + +#+BEGIN_SRC emacs-lisp + (require 'use-package-ensure) + (setq use-package-always-ensure t) +#+END_SRC + +Don't create all the custom things. + +#+BEGIN_SRC emacs-lisp + (defconst custom-file "/dev/null") +#+END_SRC + +I don't want my Emacs to create loads of backup files, swap files, etc. + +#+BEGIN_SRC emacs-lisp + (setq make-backup-files nil) + (setq auto-save-default nil) +#+END_SRC + +Nor do I need all the (Windows 2000-esque) UI. + +#+BEGIN_SRC emacs-lisp + (scroll-bar-mode -1) + (tool-bar-mode -1) + (tooltip-mode -1) + (menu-bar-mode -1) +#+END_SRC + +When I fire up Emacs I want to be greeted with an empty =*scratch*= buffer, not the weird GNU screen. + +#+BEGIN_SRC emacs-lisp + (setq inhibit-splash-screen t + initial-scratch-message "") +#+END_SRC + +The whole yes or no prompt takes too much time to type out. y and n is much better. + +#+BEGIN_SRC emacs-lisp + (defalias 'yes-or-no-p 'y-or-n-p) +#+END_SRC + +UTF-8 is good and should be the default for everything. + +#+BEGIN_SRC emacs-lisp + (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) +#+END_SRC + +Which key makes Emacs self documenting. + +#+BEGIN_SRC emacs-lisp + (use-package which-key + :config + (setq which-key-idle-delay 0.25) + (which-key-mode 1)) +#+END_SRC + +Tramp is awesome for editing remote files. +By default it's slow as fuck though. + +#+BEGIN_SRC emacs-lisp + (setq tramp-default-method "ssh") +#+END_SRC + +Avoid typing stupid code block thingys all the time. + +#+BEGIN_SRC emacs-lisp + (add-to-list 'org-structure-template-alist + '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC")) +#+END_SRC + + +* Looks + +** tab width + +#+BEGIN_SRC emacs-lisp + (setq-default tab-width 4) +#+END_SRC + +** =nyan-mode= + +Nya-nya-nya-nya-nya... + +#+BEGIN_SRC emacs-lisp + (use-package nyan-mode + :config + (nyan-mode)) +#+END_SRC + + +** Font + +I prefer Source Code Pro for now. + +#+BEGIN_SRC emacs-lisp + (add-to-list 'default-frame-alist + '(font . "xos4 Terminus")) +#+END_SRC + +** COMMENT Line numbers + +#+BEGIN_SRC emacs-lisp + (use-package linum-relative + :config + (setq linum-relative-backend 'display-line-numbers-mode) + (linum-relative-global-mode 1)) +#+END_SRC + + +** Color Theme + +#+BEGIN_SRC emacs-lisp + (use-package gruvbox-theme + :config + (load-theme 'gruvbox t)) +#+END_SRC + +** Beacon + +Highlights the cursor each time I switch windows. + +#+BEGIN_SRC emacs-lisp + (use-package beacon + :config + (beacon-mode 1)) +#+END_SRC + +** Fringe + +Ugly. + +#+BEGIN_SRC emacs-lisp + (fringe-mode '(10 . 10)) +#+END_SRC + + +* TODO NAME THIS + +** Ivy + + Ivy for completing stuff, etc. is huge. + + #+BEGIN_SRC emacs-lisp + (use-package counsel + :config + (ivy-mode) + (setq ivy-re-builders-alist '((t . ivy--regex-fuzzy))) + (setq ivy-initial-inputs-alist nil) + + :bind + ("C-s" . swiper) + ("M-x". counsel-M-x)) + #+END_SRC + +** flx + +Flx does fancy fuzzy matching with good sorting + + + #+BEGIN_SRC emacs-lisp + (use-package flx + :config + ) + #+END_SRC + + +* general.el + +#+BEGIN_SRC emacs-lisp + (use-package general + :config + (general-evil-setup) + (general-def + :states '(normal motion) + "SPC" nil) + + (general-create-definer elk-leader-def + :prefix "SPC" + :states '(normal motion) + :keymaps 'override) + (general-create-definer elk-local-leader-def + :prefix "SPC m" + :states '(normal motion) + :keymaps 'local) + + (elk-leader-def + "a" 'org-agenda + "s" 'org-store-link + "c" 'org-capture + "t" '((lambda () (interactive) (org-capture nil "t")) :which-key "org-capture whatever") + "f" '(counsel-find-file :which-key "open a file") + "1" 'delete-other-windows + "0" 'delete-window + ) + + (which-key-add-key-based-replacements "SPC y" "Emacs stuff") + (elk-leader-def + :prefix "SPC y" + "c" '((lambda () (interactive) (find-file "~/.emacs.d/config.org")) :which-key "open config.org") + "r" '((lambda () (interactive) (load-file "~/.emacs.d/init.el")) :which-key "reload config.org"))) +#+END_SRC + + + +* Window management + +#+BEGIN_SRC emacs-lisp + (which-key-add-key-based-replacements "SPC b" "Window management") + (elk-leader-def + :prefix "SPC b" + "c" '(delete-window :which-key "close window") + "b" '(counsel-switch-buffer :which-key "Switch buffer") + "d" '(kill-buffer :which-key "close buffer") + "s" '(split-window-below :which-key "h-split") + "v" '(split-window-right :which-key "v-split")) +#+END_SRC + + +* Editing + +** =evil-mode= + +Emacs is lacks a good editor. + +#+BEGIN_SRC emacs-lisp + (use-package evil + :init + (setq evil-want-keybinding nil) + (setq evil-want-C-u-scroll t) + (setq evil-want-fine-undo 'fine) + (setq evil-undo-system 'undo-tree) + :config + (evil-mode 1)) +#+END_SRC + + +*** evil-org-mode + + #+BEGIN_SRC emacs-lisp + (use-package evil-org + :after org + :config + (add-hook 'org-mode-hook 'evil-org-mode) + (add-hook 'evil-org-mode-hook + (lambda () + (evil-org-set-key-theme))) + (require 'evil-org-agenda) + (evil-org-agenda-set-keys)) + #+END_SRC + + +*** evil-collection + + Keybinds for common modes. + Makes evil work everywhere. + + #+BEGIN_SRC emacs-lisp + (use-package evil-collection + :after evil + :config + (evil-collection-init)) + #+END_SRC + +** Undo-tree + +Undo tree is based. + +#+BEGIN_SRC emacs-lisp + (use-package undo-tree + :init + :config + (global-undo-tree-mode t)) +#+END_SRC + + +** ace-jump + +#+BEGIN_SRC emacs-lisp + (use-package ace-jump-mode) + (elk-leader-def "x" 'ace-jump-mode) +#+END_SRC + + +* Code stuff + +** Rainbow everything! + +because rainbows are fancy! + +#+BEGIN_SRC emacs-lisp + (use-package rainbow-delimiters + :init + :config + (rainbow-delimiters-mode t)) + + (use-package rainbow-blocks + :init + :config + (rainbow-blocks-mode t)) +#+END_SRC + + + diff --git a/files/.emacs.d/init.el b/files/.emacs.d/init.el new file mode 100644 index 0000000..a06a9c5 --- /dev/null +++ b/files/.emacs.d/init.el @@ -0,0 +1,19 @@ +;; Add repositories +(require 'package) +(setq package-enable-at-startup nil) + +(setq package-archives '(("ELPA" . "http://tromey.com/elpa/") + ("gnu" . "http://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("org" . "https://orgmode.org/elpa/"))) +(package-initialize) + +;; Bootstrapping use-package +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +;; This is the actual config file. It is omitted if it doesn't exist so emacs won't refuse to launch. +(let ((config-file (expand-file-name "config.org" user-emacs-directory))) + (when (file-readable-p config-file) + (org-babel-load-file config-file))) diff --git a/files/nix-stuff/nixpkgs/modules/desktop/gtk.nix b/files/nix-stuff/nixpkgs/modules/desktop/gtk.nix index 7470731..5ee6178 100644 --- a/files/nix-stuff/nixpkgs/modules/desktop/gtk.nix +++ b/files/nix-stuff/nixpkgs/modules/desktop/gtk.nix @@ -40,6 +40,9 @@ in vte-terminal { padding: 10px; } + #Emacs > box { + padding: 20px; + } ''; }; };