diff options
| author | bd <bdunahu@gmail.com> | 2023-12-25 22:22:24 -0700 | 
|---|---|---|
| committer | bd <bdunahu@gmail.com> | 2023-12-25 22:22:24 -0700 | 
| commit | a7af6aa11b3980eae5ddfcc46c74347534c343dd (patch) | |
| tree | 11331fc6c19261e74bdf4196a63238316b941f1d /.config | |
Initial dotfiles commit.
Diffstat (limited to '.config')
| -rw-r--r-- | .config/emacs/bd-development.el | 93 | ||||
| -rw-r--r-- | .config/emacs/bd-emms.el | 46 | ||||
| -rw-r--r-- | .config/emacs/bd-mode-and-themes.el | 151 | ||||
| -rw-r--r-- | .config/emacs/bd-org.el | 98 | ||||
| -rw-r--r-- | .config/emacs/bd-wm.el | 75 | ||||
| -rw-r--r-- | .config/emacs/bookmarks | 17 | ||||
| -rw-r--r-- | .config/emacs/init.el | 170 | ||||
| -rw-r--r-- | .config/emacs/slock/config.def.h | 12 | ||||
| l--------- | .config/emacs/slock/config.h | 1 | ||||
| -rw-r--r-- | .config/mpd/mpd.conf | 419 | ||||
| -rw-r--r-- | .config/st/config.def.h | 513 | ||||
| l--------- | .config/st/config.h | 1 | ||||
| -rw-r--r-- | .config/system_config.scm | 81 | 
13 files changed, 1677 insertions, 0 deletions
| diff --git a/.config/emacs/bd-development.el b/.config/emacs/bd-development.el new file mode 100644 index 0000000..18bc6d5 --- /dev/null +++ b/.config/emacs/bd-development.el @@ -0,0 +1,93 @@ +;; -*- lexical-binding: t; -*- + +(defun cleanup-buffer () +  (interactive) +  (delete-trailing-whitespace) +  (untabify (point-min) (point-max)) +  (indent-region (point-min) (point-max))) + +(require 'display-line-numbers) + +(defcustom display-line-numbers-exempt-modes +  '(vterm-mode eshell-mode shell-mode term-mode ansi-term-mode image-mode doc-view-mode newsticker-treeview-mode newsticker-treeview-item-mode dired-mode org-agenda-mode) +  "Major modes on which to disable line numbers." +  :group 'display-line-numbers +  :type 'list +  :version "green") + +(defun display-line-numbers--turn-on () +  "Turn on line numbers except for certain major modes. +Exempt major modes are defined in `display-line-numbers-exempt-modes'." +  (unless (or (minibufferp) +              (member major-mode display-line-numbers-exempt-modes)) +    (display-line-numbers-mode))) + +(use-package tex +  :ensure auctex +  :hook +  ((latex-mode) +   (text-mode . (lambda() (setq ispell-parser 'tex)))) ; improves ispell in LaTeX +  :custom +  (TeX-auto-save t) +  ;; better support for latex packages +  (TeX-parse-self t) +  (TeX-view-program-selection '(((output-dvi has-no-display-manager) +                                 "dvi2tty") +                                ((output-dvi style-pstricks) +                                 "dvips and gv") +                                (output-dvi "xdvi") +                                (output-pdf "Zathura") +                                (output-html "xdg-open")))) + +(use-package company +  :hook (prog-mode text-mode) +  :config +  (global-company-mode) +  :custom +  (company-global-modes '(bash-ts-mode emacs-lisp-mode +                                       slime-mode js-ts-mode +                                       json-ts-mode css-ts-mode +                                       python-ts-mode java-ts-mode)) +  (company-set-idle-delay (lambda () (if (company-in-string-or-comment) nil 0.3))) +  (company-minimum-prefix-length 1) +  (company-tooltip-flip-when-above t) +  (company-show-numbers t) +  (company-tooltip-align-annotations t) +  (company-tooltip-limit 15) +  (company-selection-wrap-around t)) + +(use-package slime +  :commands slime +  :config +  (add-hook 'slime-mode-hook +            (lambda () +              (local-set-key (kdb "C-c C-k") 'slime-eval-buffer))) +  :custom +  ;; more memory for ml libraries +  (inferior-lisp-program "sbcl --dynamic-space-size 4096")) + +(use-package magit +  :commands magit-status +  :custom +  (magit-define-global-key-bindings 'recommended)) + +(use-package whole-line-or-region +  :defer 15 +  :config +  (whole-line-or-region-global-mode 1)) + +(use-package python +  :mode (("\\.py\\'" . python-ts-mode))) + +(use-package conda +  :after python +  :config +  (conda-env-initialize-interactive-shells) +  (custom-set-variables '(conda-anaconda-home "/home/bdunahu/miniforge3/")) +  ;; kind of bad +  (when (executable-find "ipython") +    (setq python-shell-interpreter "ipython" +          python-shell-interpreter-args "--simple-prompt"))) + +;; compilation mode +(setq compilation-always-kill t) diff --git a/.config/emacs/bd-emms.el b/.config/emacs/bd-emms.el new file mode 100644 index 0000000..cf39f94 --- /dev/null +++ b/.config/emacs/bd-emms.el @@ -0,0 +1,46 @@ +;; -*- lexical-binding: t; -*- + +(defun emms-open-playlist-buffer () +  "Opens the current playlist in the +side window." +  (interactive) +  ;; if playlist open, open playlist view. Else, if browser open, open browser view. Else, print failure +  (cond ((match-buffer-name "*Playlist*") +         (display-buffer-in-side-window (get-buffer "*Playlist*") '((side . right))) +         (select-window (get-buffer-window "*Playlist*"))) +        ((match-buffer-name "Browsing by: artist") +         (display-buffer-in-side-window (get-buffer "Browsing by: artist") '((side . right))) +         (select-window (get-buffer-window "Browsing by: artist"))) +        (t (message "No EMMS buffers open!")))) + +(defun emms-quickstart () +  "Queues a shuffled playlist and starts +playback." +  (interactive) +  (emms-stop) +  (when (bufferp emms-playlist-buffer-name) +    (kill-buffer emms-playlist-buffer-name)) +  (emms-play-directory-tree (expand-file-name "~/Personal/mpd/music/")) +  (emms-shuffle) +  (emms-next)) + +(use-package emms +  ;; need to load immediately for mode line +  :bind (("C-z C-m" . 'emms-open-playlist-buffer)) +  :config +  (emms-all) +  (add-to-list 'emms-info-functions 'emms-info-functions 'emms-info-mpd) +  (add-to-list 'emms-player-list 'emms-player-mpd) +  ;; refresh database +  (emms-player-mpd-update-all-reset-cache) +  :custom +  ;; make sure mpd is configured similarly +  (emms-player-mpd-server-name "localhost") +  (emms-player-mod-server-port "6600") +  ;; set dir and volume keys +  (emms-player-mpd-music-directory "/home/bdunahu/Personal/mpd/music/") +  (emms-source-file-default-directory "/home/bdunahu/Personal/mpd/playlists/") +  (emms-volume-change-function 'emms-volume-mpd-change) +  ;; misc +  (emms-mode-line-format "%s ") +  (emms-playlist-buffer-name "*Playlist*")) diff --git a/.config/emacs/bd-mode-and-themes.el b/.config/emacs/bd-mode-and-themes.el new file mode 100644 index 0000000..7f4104b --- /dev/null +++ b/.config/emacs/bd-mode-and-themes.el @@ -0,0 +1,151 @@ +;; -*- lexical-binding: t; -*- + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; excellent resources : https://gitlab.com/mark.feller/emacs.d/-/blob/master/modules/module-solarized.el ;; +;;                       https://protesilaos.com/codelog/2023-07-29-emacs-custom-modeline-tutorial/       ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;;; icon components for filename and git status +(use-package all-the-icons +  :init +  (progn (progn (defun modeline-buffer-name () +                  "Return 'buffer-name' with proper spacing and icon." +                  (format " %s %s" (all-the-icons-icon-for-file (buffer-name)) (buffer-name))) +                (defvar-local bd/buffer-identification-mode-line +                    '(:eval (format "%s" (modeline-buffer-name))) +                  "Formats the modeline-buffer-name.")) + +         (progn (defun git-vc-modeline () +                  (let ((branch (mapconcat 'concat (cdr (split-string vc-mode "[:-]")) "-"))) +                    (concat +                     (propertize (format " %s" (all-the-icons-octicon "git-branch")) +                                 'face `(:height 1 :family ,(all-the-icons-octicon-family)) +                                 'display '(raise 0)) +                     (propertize (format " %s" branch)) +                     (propertize "  ")))) +                (defvar-local bd/vc-mode-line +                    '(:eval (when (and vc-mode (not (eq major-mode 'magit-status-mode))) ; temp fix to avoid bug which occurs in magit buffer +                              (format "%s" +                                      (propertize (git-vc-modeline) 'face 'shadow)))) +                  "Formats the checked out git repository."))) +  :config +  (setq emms-mode-line-icon-before-format (format "%s" (all-the-icons-fileicon "owl")) +        emms-mode-line-icon-enabled-p t)) + +;;;; time and date +(setq display-time-format "%m/%d/%y %H:%M (%a)" +      display-time-default-load-average nil) +(display-time) +(display-battery-mode 1) + +(defvar-local bd/misc-mode-line +    '(:eval +      (when (mode-line-window-selected-p) +        global-mode-string)) +  "Displays misc mode line content (emms, time, etc.) +only in the selected buffer.") + +(defun mode-line-fill (reserve) +  "Return empty space, leaving RESERVE space on the right." +  (unless reserve +    (setq reserve 20)) +  (when (and window-system (eq 'right (get-scroll-bar-mode))) +    (setq reserve (- reserve 3))) +  (propertize " " +              'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve))))) + +;;;; pad out space for time (this method is probably horrendous) +(insert-into-list global-mode-string (mode-line-fill 21) (cl-position 'display-time-string global-mode-string)) + +(dolist (construct '(bd/buffer-identification-mode-line +                     bd/vc-mode-line +                     bd/misc-mode-line)) +  (put construct 'risky-local-variable t)) + +(setq-default mode-line-format +              (list +               mode-line-front-space +               ;; mode-line-mule-info +               ;; mode-line-frame-identification +               bd/buffer-identification-mode-line +               " " +               mode-line-modes +               " " +               ;; mode-line-position +               mode-line-modified +               bd/vc-mode-line +               "      " +               bd/misc-mode-line +               (mode-line-fill 3))) + +;;;; remove mode-line-clutter +(define-minor-mode minor-mode-blackout-mode +  "Hides minor modes from the mode line." +  t) + +(catch 'done +  (mapc (lambda (x) +          (when (and (consp x) +                     (equal (cadr x) '("" minor-mode-alist))) +            (let ((original (copy-sequence x))) +              (setcar x 'minor-mode-blackout-mode) +              (setcdr x (list "" original))) +            (throw 'done t))) +        mode-line-modes)) + +(global-set-key (kbd "C-c m") 'minor-mode-blackout-mode) + +(defun disable_mode_line () +  (setq mode-line-format nil)) + +;; custom function to remove mode line from images +(add-hook 'image-mode-hook 'disable_mode_line) + +(global-display-line-numbers-mode) +(global-visual-line-mode t) +(setq display-line-numbers-type 'relative) +;; required for other customizations later in themes. +(global-hl-line-mode 1) + +;;;; true transparency +(when (>= emacs-major-version 29) +  (add-to-list 'default-frame-alist '(alpha-background . 60))) + +(defun set-frame-alpha (value) +  "Sets the transparency of the frame background. 0=transparent/100=opaque" +  (interactive "nTransparency Value 0 - 100 opaque:") +  (setq value (clamp 0 100 value)) +  (set-frame-parameter (selected-frame) 'alpha-background value) +  (message "Alpha set to %d" value)) + +;;;; modus themes +(defun modus-themes-custom-faces () +  (modus-themes-with-colors +    (custom-set-faces +     `(mode-line-inactive ((,class :background ,bg-main +                                   :foreground ,fg-active))) +     `(mode-line-active ((,class :background ,bg-main +                                 :foreground ,fg-active))) + +     `(hl-line ((,class :background ,magenta-nuanced-bg))) + +     `(emms-playlist-track-face ((,class :foreground ,blue-nuanced-fg))) +     `(emms-playlist-selected-face ((,class :foreground ,fg-special-cold))) +     `(emms-browser-track-face ((,class :foreground ,blue-nuanced-fg)))))) + +(add-hook 'modus-themes-after-load-theme-hook #'modus-themes-custom-faces) + +(setq modus-themes-italic-constructs t +      modus-themes-hl-line '(accented) +      modus-themes-subtle-line-numbers t +      modus-themes-paren-match '(intense) +      modus-themes-region '(bg-only) +      modus-themes-syntax '(faint) +      modus-themes-mode-line '(borderless) +      modus-themes-org-blocks 'gray-background +      modus-themes-headings '( +                              (1 . (rainbow overline)))) + +(load-theme 'modus-vivendi t) + +(modus-themes-custom-faces) diff --git a/.config/emacs/bd-org.el b/.config/emacs/bd-org.el new file mode 100644 index 0000000..7f3919f --- /dev/null +++ b/.config/emacs/bd-org.el @@ -0,0 +1,98 @@ +;; -*- lexical-binding: t; -*- + +(defvar-local agenda-file "/home/bdunahu/Personal/roam/agenda/agenda_tasks.org") + +(defun bd/org-mode-setup-hook () +  "Sets up improved org-mode defaults upon +each org file open." +  (org-indent-mode) +  (org-toggle-inline-images) +  (org-toggle-pretty-entities)) + +(use-package org +  :hook +  (org-mode . bd/org-mode-setup-hook) +  :commands (org-capture org-agenda) +  :bind (("C-c n a" . 'org-agenda) +         ("C-c n c" . 'org-capture) +         ("C-c n s" . 'org-schedule) +         ("C-c n d" . 'org-deadline) +         ("C-c n r" . 'org-refile)) +  :config +  (advice-add 'org-refile :after 'org-save-all-org-buffers) ; after refiling tasks, save all buffers +  (org-babel-do-load-languages +   'org-babel-load-languages +   '((emacs-lisp . t) +     (python . t) +     (shell . t) +     (lisp . t))) +  :custom +  (org-startup-folded 'show2levels) +  (org-ellipsis " ▾") +  (org-agenda-files +   `(,agenda-file +     "/home/bdunahu/Personal/roam/agenda/archived_tasks.org")) +  (org-deadline-warning-days 7) +  (org-log-done 'time) +  (org-log-into-drawer "history") +  (org-todo-keywords +   '((sequence "TODO(t)" "NEXT(n!)" "|" "DONE(d)" "CANC(c)"))) +  (org-refile-targets ; refile into the headings of these files, not tags +   '(("archived_tasks.org" :maxlevel . 1) +     ("agenda_tasks.org" :maxlevel . 1))) +  (org-capture-templates +   `(("t" " Tasks") +     ("tt" "Task" entry (file+olp ,agenda-file "Unsorted") +      "* TODO %?\n %U\n %a" :empty-lines 1))) +  (org-agenda-custom-commands +   '(("S" "Standard Block Agenda" +      ((tags-todo "*" +                  ((org-agenda-skip-function '(org-agenda-skip-if nil '(timestamp))) +                   (org-agenda-block-separator nil) +                   (org-agenda-overriding-header "Undated Tasks\n"))) +       (agenda "" ((org-agenda-span 5) +                   (org-deadline-warning-days 0) +                   (org-agenda-block-separator nil) +                   (org-scheduled-past-days 4) +                   (org-agenda-overriding-header "\nUpcoming Tasks\n"))) +       (agenda "" ((org-agenda-time-grid nil) +                   (org-agenda-show-all-dates nil) +                   (org-agenda-span 21) +                   (org-deadline-warning-days 0) +                   (org-agenda-block-separator nil) +                   (org-agenda-entry-types '(:deadline)) +                   (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) +                   (org-agenda-overriding-header "\nFuture Deadlines (+21d)\n")))))))) + +(defun org-roam-node-insert-immediate (arg &rest args) +  "Insert a new org mode link, but do not open the +file." +  (interactive "P") +  (let ((args (cons arg args)) +        (org-roam-capture-templates (list (append (car org-roam-capture-templates) +                                                  '(:immediate-finish t))))) +    (apply #'org-roam-node-insert args))) + +(use-package org-roam +  :after org +  :bind (("C-c n l" . 'org-roam-buffer-toggle) +         ("C-c n f" . 'org-roam-node-find) +         ("C-c n i" . 'org-roam-node-insert) +         ("C-c n g" . 'org-roam-graph) +         ("C-c n I" . 'org-roam-node-insert-immediate) +         ("C-c n j" . 'org-roam-dailies-capture-today) +	 :map org-mode-map +	 ("C-M-i" . 'completion-at-point)) +  :config +  (org-roam-db-autosync-mode) +  :custom +  (org-roam-directory "/home/bdunahu/Personal/roam/") +  (org-roam-dailies-directory "logs/") +  (org-roam-complete-everywhere t) +  (org-roam-capture-templates '(("e" "extend" plain +                                 "#+AUTHOR: bdunahu\n#+DESCRIPTION: %^{Description}\n#+STARTUP: show3levels\n" :target +                                 (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+TITLE: ${title}") +                                 :unnarrowed t) +                                ("d" "default" plain "%?" :target +                                 (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}") +                                 :unnarrowed t)))) diff --git a/.config/emacs/bd-wm.el b/.config/emacs/bd-wm.el new file mode 100644 index 0000000..515f9c8 --- /dev/null +++ b/.config/emacs/bd-wm.el @@ -0,0 +1,75 @@ +;; -*- lexical-binding: t; -*- + +(defun bd/exwm-update-class () +  "Changes the buffer name to reflect the class name for +that buffer." +  (exwm-workspace-rename-buffer exwm-class-name)) + +(winner-mode 1) + +(use-package exwm +  :config +  (add-hook 'exwm-update-class-hook #'bd/exwm-update-class) +  ;; order is important +  (require 'exwm-randr) +  (exwm-randr-enable) +  ;; (start-process-shell-command "xrandr" nil "/home/bdunahu/.config/emacs/exwm_xrandr.sh") +  (start-process-shell-command "picom" nil "picom") +  (start-process-shell-command "bg" nil "set-bg") +  (start-process-shell-command "xmodmap" nil "xmodmap ~/.config/xmodmap.config") +  (start-process-shell-command "xrate" nil "xset r rate 250 70") + +  (dolist (k '(("s-L" "slock") +               ("s-B" "icecat") +               ("s-<return>" "st") +               ("s-O" "xdotool type $(grep -v '^#' /home/bdunahu/Personal/scripts/bookmarks.txt | dmenu -i -l 12 | awk '{print $NF}')") +               ("s-P" "passmenu --type") +               ("s-<f2>" "brightnessctl set 1%-") +               ("s-<f3>" "brightnessctl set 1%+") +               ("s-<f6>" "pactl set-sink-mute @DEFAULT_SINK@ toggle") +               ("s-<f7>" "pactl set-sink-volume @DEFAULT_SINK@ -10%") +               ("s-<f8>" "pactl set-sink-volume @DEFAULT_SINK@ +5%") +               ("s-<f9>" "mpc prev") +               ("s-<f11>" "mpc next") +               ("<print>" "flameshot launcher"))) +    (let ((f (lambda () (interactive) +               (save-window-excursion +                 (start-process-shell-command (cadr k) nil (cadr k)))))) +      (exwm-input-set-key (kbd (car k)) f) +      (define-key exwm-mode-map (kbd (car k)) f))) + +  (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) +  (exwm-enable) +  (server-start) +  :custom +  (exwm-workspace-number 10) +  (exwm-input-prefix-keys +   '(?\C-x +     ?\C-u +     ?\C-g +     ?\C-h +     ?\C-z +     ?\M-x +     ?\M-` +     ?\M-& +     ?\M-: )) +  (exwm-input-global-keys +   `(([?\s-n] . other-window) +     ([?\s-p] . (lambda () +		  (interactive) +		  (other-window -1))) +     ([?\s-r] . exwm-reset) +     ([?\s-q] . kill-current-buffer) +     ;; ([?\s-<f10>] . emms-pause) ; see rest of mpc commands above--mpc pause performed poorly +     ([?\s-x] . (lambda (command) +                  (interactive (list (read-shell-command "s-x "))) +                  (start-process-shell-command command nil command))) + +     ,@(mapcar (lambda (i) +                 `(,(kbd (format "s-%s" (car i))) . +                   (lambda () +                     (interactive +                      (exwm-workspace-switch-create ,(car (cdr i))))))) +               '((! 0) (@ 1) (\# 2) ($ 3) (% 4) (^ 5) (& 6) (* 7) (\( 8) (\) 9))))) + +  (exwm-randr-workspace-monitor-plist '(0 "DVI-D-1" 2 "DVI-D-1" 4 "DVI-D-1" 6 "DVI-D-1" 8 "DVI-D-1"))) diff --git a/.config/emacs/bookmarks b/.config/emacs/bookmarks new file mode 100644 index 0000000..9a905cb --- /dev/null +++ b/.config/emacs/bookmarks @@ -0,0 +1,17 @@ +;;;; Emacs Bookmark Format Version 1;;;; -*- coding: utf-8-emacs; mode: lisp-data -*- +;;; This format is meant to be slightly human-readable; +;;; nevertheless, you probably don't want to edit it. +;;; -*- End Of Bookmark File Format Version Stamp -*- +(("emacs-dired" + (filename . "~/.config/emacs/") + (front-context-string . "auto-save-list\n ") + (rear-context-string . "0K Dec 22 22:30 ") + (position . 187) + (last-modified 25991 13342 785210 917000)) +("agenda" + (filename . "~/Personal/roam/agenda/agenda_tasks.org") + (front-context-string . ":PROPERTIES:\n:ID") + (rear-context-string) + (position . 1) + (last-modified 25991 16926 960521 263000)) +) diff --git a/.config/emacs/init.el b/.config/emacs/init.el new file mode 100644 index 0000000..71d6cdf --- /dev/null +++ b/.config/emacs/init.el @@ -0,0 +1,170 @@ +;; -*- lexical-binding: t; -*- + +;; reduce the frequency of garbage collection by making it happen on +;; each 50MB of allocated data (the default is on every 0.76MB) +(setq gc-cons-threshold 50000000) + +(setenv "PATH" (format "%s:%s" "/home/bdunahu/Personal/scripts/" (getenv "PATH"))) + +;;; do not store customized setting (automatic) here +(setq custom-file "/home/bdunahu/.config/emacs/custom.el") +(load custom-file t) + +(defun bd/display-startup-time () +  (message "Emacs loaded in %s with %d garbage collections." +           (format "%.2f seconds" +                   (float-time +                    (time-subtract after-init-time before-init-time))) +           gcs-done)) + +(add-hook 'emacs-startup-hook #'bd/display-startup-time) + +(defun request-sudo () +  "Uses TRAMP to edit currently opened file as root." +  (interactive) +  (when buffer-file-name +    (find-alternate-file +     (concat "/sudo:root@localhost:" +             buffer-file-name)))) + +(defun match-buffer-name (name) +  "Returns non-nil if NAME matches the name of an existing buffer" +  (try-completion name (mapcar #'buffer-name (buffer-list)))) + +(defun toggle-current-window-dedication () +  "Adds or revokes dedicated window status from a buffer. A +dedicated buffer will never be automatically orphaned." +  (interactive) +  (let* ((window    (selected-window)) +         (dedicated (window-dedicated-p window))) +    (set-window-dedicated-p window (not dedicated)) +    (message "Window %sdedicated to %s" +             (if dedicated "no longer " "") +             (buffer-name)))) + +(defun rip-video () +  "If region, open SEARCH with mpv in --full-screen. Else, +open URL at point." +  (interactive) +  (let ((URL-OR-SEARCH +         (if (use-region-p) +             (buffer-substring (mark) (point)) +           (shr-url-at-point nil)))) +    (message "Ludu %s" URL-OR-SEARCH) +    (start-process-shell-command "rip-video" nil (concat "rip-video " URL-OR-SEARCH)))) + +(defun clamp (lower-bound upper-bound value) +  (max lower-bound (min value upper-bound))) + +(defun insert-into-list (list el n) +  "Insert into list LIST an element EL at index N. + +If N is 0, EL is inserted before the first element. + +The resulting list is returned.  As the list contents is mutated +in-place, the old list reference does not remain valid." +  (let* ((padded-list (cons nil list)) +         (c (nthcdr n padded-list))) +    (setcdr c (cons el (cdr c))) +    (cdr padded-list))) + +(defun remote-shell () +  (interactive) +  (let ((default-directory "/ssh:bdunahu@perch.cs.colostate.edu:")) +    (shell))) + +(global-unset-key (kbd "C-z")) + +(require 'package) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) +(package-initialize) +(package-refresh-contents) +;; (setq use-package-verbose t) ; for debugging + +(require 'use-package-ensure) +(setq use-package-always-ensure t) + +(load "/home/bdunahu/.config/emacs/bd-org.el") +(load "/home/bdunahu/.config/emacs/bd-emms.el") +(load "/home/bdunahu/.config/emacs/bd-development.el") + +(use-package newsticker +  :demand t +  :bind (("C-z C-g" . newsticker-show-news) +         :map newsticker-treeview-item-mode-map +         ("C-j" . rip-video)) +  :custom +  (newsticker-url-list-defaults nil) +  (newsticker-automatically-mark-items-as-old nil) +  (newsticker-url-list '(("Ambrose and Elsewhere" "https://jamesenge.com/engeblog/feed" nil nil nil) +                         ("James Enge Mastodon" "https://mastodon.sdf.org/@jamesenge.rss" nil nil nil) +                         ("Book Reviews | Tales From the Magician's Skull" "https://goodman-games.com/tftms/category/book-reviews/feed" nil nil nil) +                         ("Arch Linux: Recent news updates" "https://archlinux.org/feeds/news/" nil nil nil) +                         ("Parabola GNU/Linux-libre: Recent news updates" "https://www.parabola.nu/feeds/news/" nil nil nil) +                         ("suckless.org news" "https://suckless.org/atom.xml" nil nil nil) +                         ("Richard Stallman's Political News" "https://stallman.org/rss/rss.xml" nil nil nil) +                         ("Mental Outlaw" "https://vid.puffyan.us/feed/channel/UC7YOGHUfC1Tb6E4pudI9STA" nil nil nil) +                         ("Luke Smith" "https://vid.puffyan.us/feed/channel/UC2eYFnH61tmytImy1mTYvhA" nil nil nil) +                         ("Brent Westbrook" "https://yewtu.be/feed/channel/UC0PBefyEK7qQ7HN325nUamQ" nil nil nil) +                         ("Bugswriter" "https://yewtu.be/feed/channel/UCngn7SVujlvskHRvRKc1cTw" nil nil nil) +			 ("Protesilaos Stravrou" "https://yewtu.be/feed/playlist/PL8Bwba5vnQK14z96Gil86pLMDO2GnOhQ6" nil nil nil))) +  ;; may require ./newsticker/groups to be cleared +  (newsticker-groups '("Feeds" +                       ("READING" "Ambrose and Elsewhere" "James Enge Mastodon" "Book Reviews | Tales From the Magician's Skull") +                       ("TECH" ("GNU/Linux" "Arch Linux: Recent news updates" "Parabola GNU/Linux-libre: Recent news updates") "suckless.org news") +                       ("POLITICAL" "Richard Stallman's Political News") +                       ("VIDEO" "Mental Outlaw" "Luke Smith" "Brent Westbrook" "Bugswriter" "Protesilaos Stravrou")))) + +(setq erc-server "irc.libera.chat" +      erc-nick "Isaz" +      erc-user-full-name "bd" +      erc-kill-buffer-on-part t +      erc-autojoin-channels-alist '(("irc.libera.char" "#parabola" "#emacs"))) +(defalias 'erc 'erc-tls) + +;; dired +(setq dired-listing-switches "-alh") + +(setq inhibit-startup-message t) +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) + +;; move backups to tmp folder +(setq backup-directory-alist `(("." . ,(expand-file-name "tmp/backups/" user-emacs-directory)))) +(make-directory (expand-file-name "tmp/auto_saves/" user-emacs-directory) t) +;; move auto-saves to tmp folder +(setq auto-save-list-file-prefix (expand-file-name "tmp/auto_saves/sessions/" user-emacs-directory) +      auto-save-file-transforms `((".*" ,(expand-file-name "tmp/auto_saves/" user-emacs-directory) t))) + +(setq scroll-up-aggressively '0.0 +      scroll-down-aggressively '0.0) + +(global-auto-revert-mode 1) + +(setq fit-window-to-buffer-horizontally t) + +(ido-mode 1) +;; allow same buffer on multiple frames +(setq ido-default-buffer-method 'selected-window) + +;; allow one side window per side of frame +(setq window-sides-slots '(1 1 1 1)) + +(global-unset-key (kbd "C-x C-z")) ; unbind suspend-frame--terrible spot for binding + +;; dired +(global-set-key (kbd "C-z d") 'dired-jump) + +;; text-scale +(global-set-key (kbd "C-z =") 'text-scale-increase) +(global-set-key (kbd "C-z -") 'text-scale-decrease) + +(load "/home/bdunahu/.config/emacs/bd-wm.el") +(load "/home/bdunahu/.config/emacs/bd-mode-and-themes.el") + +(setq gc-cons-threshold 800000) + +;; packages to consider: +;;; pydocs +;;; yasnippit diff --git a/.config/emacs/slock/config.def.h b/.config/emacs/slock/config.def.h new file mode 100644 index 0000000..41133a8 --- /dev/null +++ b/.config/emacs/slock/config.def.h @@ -0,0 +1,12 @@ +/* user and group to drop privileges to */ +static const char *user  = "nobody"; +static const char *group = "nobody"; + +static const char *colorname[NUMCOLS] = { +	[INIT] =   "black",     /* after initialization */ +	[INPUT] =  "#404040",   /* during input */ +	[FAILED] = "#4d0000",   /* wrong password */ +}; + +/* treat a cleared input like a wrong password (color) */ +static const int failonclear = 1; diff --git a/.config/emacs/slock/config.h b/.config/emacs/slock/config.h new file mode 120000 index 0000000..c6d6219 --- /dev/null +++ b/.config/emacs/slock/config.h @@ -0,0 +1 @@ +config.def.h
\ No newline at end of file diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf new file mode 100644 index 0000000..1347361 --- /dev/null +++ b/.config/mpd/mpd.conf @@ -0,0 +1,419 @@ +# An example configuration file for MPD. +# Read the user manual for documentation: http://www.musicpd.org/doc/user/ + + +# Files and directories ####################################################### +# +# This setting controls the top directory which MPD will search to discover the +# available audio files and add them to the daemon's online database. This +# setting defaults to the XDG directory, otherwise the music directory will be +# be disabled and audio files will only be accepted over ipc socket (using +# file:// protocol) or streaming files over an accepted protocol. +# +music_directory		"/home/bdunahu/Personal/mpd/music" +# +# This setting sets the MPD internal playlist directory. The purpose of this +# directory is storage for playlists created by MPD. The server will use +# playlist files not created by the server but only if they are in the MPD +# format. This setting defaults to playlist saving being disabled. +# +playlist_directory		"/home/bdunahu/Personal/mpd/playlists" +# +# This setting sets the location of the MPD database. This file is used to +# load the database at server start up and store the database while the +# server is not up. This setting defaults to disabled which will allow +# MPD to accept files over ipc socket (using file:// protocol) or streaming +# files over an accepted protocol. +# +#db_file			"~/.mpd/database" + +# These settings are the locations for the daemon log files for the daemon. +# +# The special value "syslog" makes MPD use the local syslog daemon. This +# setting defaults to logging to syslog. +# +# If you use systemd, do not configure a log_file.  With systemd, MPD +# defaults to the systemd journal, which is fine. +# +#log_file			"~/.mpd/log" + +# This setting sets the location of the file which stores the process ID +# for use of mpd --kill and some init scripts. This setting is disabled by +# default and the pid file will not be stored. +# +# If you use systemd, do not configure a pid_file. +# +#pid_file			"~/.mpd/pid" + +# This setting sets the location of the file which contains information about +# most variables to get MPD back into the same general shape it was in before +# it was brought down. This setting is disabled by default and the server +# state will be reset on server start up. +# +#state_file			"~/.mpd/state" +# +# The location of the sticker database.  This is a database which +# manages dynamic information attached to songs. +# +#sticker_file			"~/.mpd/sticker.sql" +# +############################################################################### + + +# General music daemon options ################################################ +# +# This setting specifies the user that MPD will run as. MPD should never run as +# root and you may use this setting to make MPD change its user ID after +# initialization. This setting is disabled by default and MPD is run as the +# current user. +# +#user				"nobody" +# +# This setting specifies the group that MPD will run as. If not specified +# primary group of user specified with "user" setting will be used (if set). +# This is useful if MPD needs to be a member of group such as "audio" to +# have permission to use sound card. +# +#group				"nogroup" +# +# This setting sets the address for the daemon to listen on. Careful attention +# should be paid if this is assigned to anything other than the default, any. +# This setting can deny access to control of the daemon. Not effective if +# systemd socket activation is in use. +# +# For network +#bind_to_address		"any" +# +# And for Unix Socket +#bind_to_address		"~/.mpd/socket" +# +# This setting is the TCP port that is desired for the daemon to get assigned +# to. +# +#port				"6600" +# +# Suppress all messages below the given threshold.  Use "verbose" for +# troubleshooting. Available setting arguments are "notice", "info", "verbose", +# "warning" and "error". +# +#log_level			"notice" +# +# Setting "restore_paused" to "yes" puts MPD into pause mode instead +# of starting playback after startup. +# +#restore_paused "no" +# +# This setting enables MPD to create playlists in a format usable by other +# music players. +# +#save_absolute_paths_in_playlists	"no" +# +# This setting defines a list of tag types that will be extracted during the +# audio file discovery process. The complete list of possible values can be +# found in the user manual. +#metadata_to_use	"artist,album,title,track,name,genre,date,composer,performer,disc" +metadata_to_use	"artist,album,title,date" +# +# This example just enables the "comment" tag without disabling all +# the other supported tags: +#metadata_to_use "+comment" +# +# This setting enables automatic update of MPD's database when files in +# music_directory are changed. +# +auto_update	"yes" +# +# Limit the depth of the directories being watched, 0 means only watch +# the music directory itself.  There is no limit by default. +# +#auto_update_depth "3" +# +############################################################################### + + +# Symbolic link behavior ###################################################### +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links outside of the configured music_directory. +# +#follow_outside_symlinks	"yes" +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links inside of the configured music_directory. +# +#follow_inside_symlinks		"yes" +# +############################################################################### + + +# Zeroconf / Avahi Service Discovery ########################################## +# +# If this setting is set to "yes", service information will be published with +# Zeroconf / Avahi. +# +#zeroconf_enabled		"yes" +# +# The argument to this setting will be the Zeroconf / Avahi unique name for +# this MPD server on the network. %h will be replaced with the hostname. +# +#zeroconf_name			"Music Player @ %h" +# +############################################################################### + + +# Permissions ################################################################# +# +# If this setting is set, MPD will require password authorization. The password +# setting can be specified multiple times for different password profiles. +# +#password                        "password@read,add,control,admin" +# +# This setting specifies the permissions a user has who has not yet logged in. +# +#default_permissions             "read,add,control,admin" +# +############################################################################### + + +# Database ####################################################################### +# +# An example of a database section instead of the old 'db_file' setting. +# It enables mounting other storages into the music directory. +# +#database { +#       plugin "simple" +#       path "~/.local/share/mpd/db" +#       cache_directory "~/.local/share/mpd/cache" +#} +# +# An example of database config for a satellite setup +# +#music_directory "nfs://fileserver.local/srv/mp3" +#database { +#       plugin "proxy" +#       host "other.mpd.host" +#       port "6600" +#} + +# Input ####################################################################### +# +input { +        plugin "curl" +#       proxy "proxy.isp.com:8080" +#       proxy_user "user" +#       proxy_password "password" +} + +# +############################################################################### + +# Audio Output ################################################################ +# +# MPD supports various audio output types, as well as playing through multiple +# audio outputs at the same time, through multiple audio_output settings +# blocks. Setting this block is optional, though the server will only attempt +# autodetection for one sound card. +# +# An example of an ALSA output: +# +#audio_output { +#	type		"alsa" +#	name		"My ALSA Device" +##	device		"hw:0,0"	# optional +##	mixer_type      "hardware"	# optional +##	mixer_device	"default"	# optional +##	mixer_control	"PCM"		# optional +##	mixer_index	"0"		# optional +#} +# +# An example of an OSS output: +# +#audio_output { +#	type		"oss" +#	name		"My OSS Device" +##	device		"/dev/dsp"	# optional +##	mixer_type      "hardware"	# optional +##	mixer_device	"/dev/mixer"	# optional +##	mixer_control	"PCM"		# optional +#} +# +# An example of a shout output (for streaming to Icecast): +# +#audio_output { +#	type		"shout" +#	encoder		"vorbis"		# optional +#	name		"My Shout Stream" +#	host		"localhost" +#	port		"8000" +#	mount		"/mpd.ogg" +#	password	"hackme" +#	quality		"5.0" +#	bitrate		"128" +#	format		"44100:16:1" +##	protocol	"icecast2"		# optional +##	user		"source"		# optional +##	description	"My Stream Description"	# optional +##	url		"http://example.com"	# optional +##	genre		"jazz"			# optional +##	public		"no"			# optional +##	timeout		"2"			# optional +##	mixer_type      "software"		# optional +#} +# +# An example of a recorder output: +# +#audio_output { +#	type		"recorder" +#	name		"My recorder" +#	encoder		"vorbis"		# optional, vorbis or lame +#	path		"/var/lib/mpd/recorder/mpd.ogg" +##	quality		"5.0"			# do not define if bitrate is defined +#	bitrate		"128"			# do not define if quality is defined +#	format		"44100:16:1" +#} +# +# An example of a httpd output (built-in HTTP streaming server): +# +#audio_output { +#	type		"httpd" +#	name		"My HTTP Stream" +#	encoder		"vorbis"		# optional, vorbis or lame +#	port		"8000" +#	bind_to_address	"127.0.0.1"		# optional, IPv4 or IPv6 +##	quality		"5.0"			# do not define if bitrate is defined +#	bitrate		"128"			# do not define if quality is defined +#	format		"44100:16:1" +#	max_clients	"0"			# optional 0=no limit +#} +# +# An example of a pulseaudio output (streaming to a remote pulseaudio server) +# +audio_output { +	type		"pulse" +	name		"MPD" +##	server		"remote_server"		# optional +##	sink		"remote_server_sink"	# optional +##	media_role	"media_role"		#optional +} +# +# An example of a winmm output (Windows multimedia API). +# +#audio_output { +#	type		"winmm" +#	name		"My WinMM output" +##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#		or +##	device		"0"		# optional +##	mixer_type	"hardware"	# optional +#} +# +# An example of a wasapi output (Windows multimedia API). +# +#audio_output { +#	type		"wasapi" +#	name		"My WASAPI output" +##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#		or +##	device		"0"		# optional +## Exclusive mode blocks all other audio source, and get best audio quality without resampling. +##	exclusive	"no"		# optional +## Enumerate all devices in log. +##	enumerate	"no"		# optional +#} +# +# An example of an openal output. +# +#audio_output { +#	type		"openal" +#	name		"My OpenAL output" +##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#} +# +# An example of an sndio output. +# +#audio_output { +#	type		"sndio" +#	name		"sndio output" +#	mixer_type	"hardware" +#} +# +# An example of an OS X output: +# +#audio_output { +#	type		"osx" +#	name		"My OS X Device" +##	device		"Built-in Output"	# optional +##	channel_map      "-1,-1,0,1"	# optional +#} +# +## Example "pipe" output: +# +#audio_output { +#	type		"pipe" +#	name		"my pipe" +#	command		"aplay -f cd 2>/dev/null" +## Or if you're want to use AudioCompress +#	command		"AudioCompress -m | aplay -f cd 2>/dev/null" +## Or to send raw PCM stream through PCM: +#	command		"nc example.org 8765" +#	format		"44100:16:2" +#} +# +## An example of a null output (for no audio output): +# +#audio_output { +#	type		"null" +#	name		"My Null Output" +#	mixer_type      "none"			# optional +#} +# +############################################################################### + + +# Normalization automatic volume adjustments ################################## +# +# This setting specifies the type of ReplayGain to use. This setting can have +# the argument "off", "album", "track" or "auto". "auto" is a special mode that +# chooses between "track" and "album" depending on the current state of +# random playback. If random playback is enabled then "track" mode is used. +# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for +# more details about ReplayGain. +# This setting is off by default. +# +#replaygain			"album" +# +# This setting sets the pre-amp used for files that have ReplayGain tags. By +# default this setting is disabled. +# +#replaygain_preamp		"0" +# +# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. +# By default this setting is disabled. +# +#replaygain_missing_preamp	"0" +# +# This setting enables or disables ReplayGain limiting. +# MPD calculates actual amplification based on the ReplayGain tags +# and replaygain_preamp / replaygain_missing_preamp setting. +# If replaygain_limit is enabled MPD will never amplify audio signal +# above its original level. If replaygain_limit is disabled such amplification +# might occur. By default this setting is enabled. +# +#replaygain_limit		"yes" +# +# This setting enables on-the-fly normalization volume adjustment. This will +# result in the volume of all playing audio to be adjusted so the output has +# equal "loudness". This setting is disabled by default. +# +#volume_normalization		"no" +# +############################################################################### + +# Character Encoding ########################################################## +# +# If file or directory names do not display correctly for your locale then you +# may need to modify this setting. +# +#filesystem_charset		"UTF-8" +# +############################################################################### diff --git a/.config/st/config.def.h b/.config/st/config.def.h new file mode 100644 index 0000000..8ee0434 --- /dev/null +++ b/.config/st/config.def.h @@ -0,0 +1,513 @@ +/* See LICENSE file for copyright and license details. */ + +/* + * appearance + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; +static int borderpx = 2; + +/* + * What program is execed by st depends of these precedence rules: + * 1: program passed with -e + * 2: scroll and/or utmp + * 3: SHELL environment variable + * 4: value of shell in /etc/passwd + * 5: value of shell in config.h + */ +static char *shell = "/bin/sh"; +char *utmp = NULL; +/* scroll program: to enable use a string like "scroll" */ +char *scroll = NULL; +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + +/* identification sequence returned in DA and DECID */ +char *vtiden = "\033[?6c"; + +/* Kerning / character bounding-box multipliers */ +static float cwscale = 1.0; +static float chscale = 1.0; + +/* + * word delimiter string + * + * More advanced example: L" `'\"()[]{}" + */ +wchar_t *worddelimiters = L" "; + +/* selection timeouts (in milliseconds) */ +static unsigned int doubleclicktimeout = 300; +static unsigned int tripleclicktimeout = 600; + +/* alt screens */ +int allowaltscreen = 1; + +/* allow certain non-interactive (insecure) window operations such as: +   setting the clipboard text */ +int allowwindowops = 0; + +/* + * draw latency range in ms - from new content/keypress/etc until drawing. + * within this range, st draws when content stops arriving (idle). mostly it's + * near minlatency, but it waits longer for slow updates to avoid partial draw. + * low minlatency will tear/flicker more, as it can "detect" idle too early. + */ +static double minlatency = 8; +static double maxlatency = 33; + +/* + * blinking timeout (set to 0 to disable blinking) for the terminal blinking + * attribute. + */ +static unsigned int blinktimeout = 800; + +/* + * thickness of underline and bar cursors + */ +static unsigned int cursorthickness = 2; + +/* + * bell volume. It must be a value between -100 and 100. Use 0 for disabling + * it + */ +static int bellvolume = 0; + +/* default TERM value */ +char *termname = "st-256color"; + +/* + * spaces per tab + * + * When you are changing this value, don't forget to adapt the »it« value in + * the st.info and appropriately install the st.info in the environment where + * you use this st version. + * + *	it#$tabspaces, + * + * Secondly make sure your kernel is not expanding tabs. When running `stty + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by + *  running following command: + * + *	stty tabs + */ +unsigned int tabspaces = 8; + +/* bg opacity */ +float alpha = 0.8; + +/* Terminal colors (16 first used in escape sequence) */ +static const char *colorname[] = { +	/* 8 normal colors */ +	"black", +	"red3", +	"green3", +	"yellow3", +	"blue2", +	"magenta3", +	"cyan3", +	"gray90", + +	/* 8 bright colors */ +	"gray50", +	"red", +	"green", +	"yellow", +	"#5c5cff", +	"magenta", +	"cyan", +	"white", + +	[255] = 0, + +	/* more colors can be added after 255 to use with DefaultXX */ +	"#cccccc", /* 256 -> cursor */ +	"#555555", /* 257 -> rev cursor */ +	"gray90", /* 258 -> default foreground colour */ +	"black", /* 259 -> default background colour */ +}; + + +/* + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +unsigned int defaultfg = 259; +unsigned int defaultbg = 258; +unsigned int defaultcs = 256; +static unsigned int defaultrcs = 257; + +/* + * Default shape of cursor + * 2: Block ("█") + * 4: Underline ("_") + * 6: Bar ("|") + * 7: Snowman ("☃") + */ +static unsigned int cursorshape = 2; + +/* + * Default columns and rows numbers + */ +static unsigned int cols = 80; +static unsigned int rows = 24; + +/* + * Default colour and shape of the mouse cursor + */ +static unsigned int mouseshape = XC_xterm; +static unsigned int mousefg = 7; +static unsigned int mousebg = 0; + +/* + * Color used to display font attributes when fontconfig selected a font which + * doesn't match the ones requested. + */ +static unsigned int defaultattr = 11; + +/* + * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). + * Note that if you want to use ShiftMask with selmasks, set this to an other + * modifier, set to 0 to not use it. + */ +static uint forcemousemod = ShiftMask; + +/* + * Xresources preferences to load at startup + */ +ResourcePref resources[] = { +		{ "font",         STRING,  &font }, +		{ "color0",       STRING,  &colorname[0] }, +		{ "color1",       STRING,  &colorname[1] }, +		{ "color2",       STRING,  &colorname[2] }, +		{ "color3",       STRING,  &colorname[3] }, +		{ "color4",       STRING,  &colorname[4] }, +		{ "color5",       STRING,  &colorname[5] }, +		{ "color6",       STRING,  &colorname[6] }, +		{ "color7",       STRING,  &colorname[7] }, +		{ "color8",       STRING,  &colorname[8] }, +		{ "color9",       STRING,  &colorname[9] }, +		{ "color10",      STRING,  &colorname[10] }, +		{ "color11",      STRING,  &colorname[11] }, +		{ "color12",      STRING,  &colorname[12] }, +		{ "color13",      STRING,  &colorname[13] }, +		{ "color14",      STRING,  &colorname[14] }, +		{ "color15",      STRING,  &colorname[15] }, +		{ "background",   STRING,  &colorname[258] }, +		{ "foreground",   STRING,  &colorname[259] }, +		{ "cursorColor",  STRING,  &colorname[256] }, +		{ "termname",     STRING,  &termname }, +		{ "shell",        STRING,  &shell }, +		{ "minlatency",   INTEGER, &minlatency }, +		{ "maxlatency",   INTEGER, &maxlatency }, +		{ "blinktimeout", INTEGER, &blinktimeout }, +		{ "bellvolume",   INTEGER, &bellvolume }, +		{ "tabspaces",    INTEGER, &tabspaces }, +		{ "borderpx",     INTEGER, &borderpx }, +		{ "cwscale",      FLOAT,   &cwscale }, +		{ "chscale",      FLOAT,   &chscale }, +		{ "alpha",        FLOAT,   &alpha }, +}; + +/* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. + */ +static MouseShortcut mshortcuts[] = { +	/* mask                 button   function        argument       release */ +	{ XK_ANY_MOD,           Button2, selpaste,       {.i = 0},      1 }, +	{ ShiftMask,            Button4, ttysend,        {.s = "\033[5;2~"} }, +	{ XK_ANY_MOD,           Button4, ttysend,        {.s = "\031"} }, +	{ ShiftMask,            Button5, ttysend,        {.s = "\033[6;2~"} }, +	{ XK_ANY_MOD,           Button5, ttysend,        {.s = "\005"} }, +}; + +/* Internal keyboard shortcuts. */ +#define MODKEY Mod1Mask +#define TERMMOD (ControlMask|ShiftMask) + +static Shortcut shortcuts[] = { +	/* mask                 keysym          function        argument */ +	{ XK_ANY_MOD,           XK_Break,       sendbreak,      {.i =  0} }, +	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} }, +	{ ShiftMask,            XK_Print,       printscreen,    {.i =  0} }, +	{ XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} }, +	{ TERMMOD,              XK_Prior,       zoom,           {.f = +1} }, +	{ TERMMOD,              XK_Next,        zoom,           {.f = -1} }, +	{ TERMMOD,              XK_Home,        zoomreset,      {.f =  0} }, +	{ TERMMOD,              XK_C,           clipcopy,       {.i =  0} }, +	{ TERMMOD,              XK_V,           clippaste,      {.i =  0} }, +	{ TERMMOD,              XK_Y,           selpaste,       {.i =  0} }, +	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} }, +	{ TERMMOD,              XK_Num_Lock,    numlock,        {.i =  0} }, +}; + +/* + * Special keys (change & recompile st.info accordingly) + * + * Mask value: + * * Use XK_ANY_MOD to match the key no matter modifiers state + * * Use XK_NO_MOD to match the key alone (no modifiers) + * appkey value: + * * 0: no value + * * > 0: keypad application mode enabled + * *   = 2: term.numlock = 1 + * * < 0: keypad application mode disabled + * appcursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * + * Be careful with the order of the definitions because st searches in + * this table sequentially, so any XK_ANY_MOD must be in the last + * position for a key. + */ + +/* + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +static KeySym mappedkeys[] = { -1 }; + +/* + * State bits to ignore when matching key or button events.  By default, + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. + */ +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + +/* + * This is the huge key array which defines all compatibility to the Linux + * world. Please decide about changes wisely. + */ +static Key key[] = { +	/* keysym           mask            string      appkey appcursor */ +	{ XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1}, +	{ XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,   +1}, +	{ XK_KP_Home,       XK_ANY_MOD,     "\033[H",        0,   -1}, +	{ XK_KP_Home,       XK_ANY_MOD,     "\033[1~",       0,   +1}, +	{ XK_KP_Up,         XK_ANY_MOD,     "\033Ox",       +1,    0}, +	{ XK_KP_Up,         XK_ANY_MOD,     "\033[A",        0,   -1}, +	{ XK_KP_Up,         XK_ANY_MOD,     "\033OA",        0,   +1}, +	{ XK_KP_Down,       XK_ANY_MOD,     "\033Or",       +1,    0}, +	{ XK_KP_Down,       XK_ANY_MOD,     "\033[B",        0,   -1}, +	{ XK_KP_Down,       XK_ANY_MOD,     "\033OB",        0,   +1}, +	{ XK_KP_Left,       XK_ANY_MOD,     "\033Ot",       +1,    0}, +	{ XK_KP_Left,       XK_ANY_MOD,     "\033[D",        0,   -1}, +	{ XK_KP_Left,       XK_ANY_MOD,     "\033OD",        0,   +1}, +	{ XK_KP_Right,      XK_ANY_MOD,     "\033Ov",       +1,    0}, +	{ XK_KP_Right,      XK_ANY_MOD,     "\033[C",        0,   -1}, +	{ XK_KP_Right,      XK_ANY_MOD,     "\033OC",        0,   +1}, +	{ XK_KP_Prior,      ShiftMask,      "\033[5;2~",     0,    0}, +	{ XK_KP_Prior,      XK_ANY_MOD,     "\033[5~",       0,    0}, +	{ XK_KP_Begin,      XK_ANY_MOD,     "\033[E",        0,    0}, +	{ XK_KP_End,        ControlMask,    "\033[J",       -1,    0}, +	{ XK_KP_End,        ControlMask,    "\033[1;5F",    +1,    0}, +	{ XK_KP_End,        ShiftMask,      "\033[K",       -1,    0}, +	{ XK_KP_End,        ShiftMask,      "\033[1;2F",    +1,    0}, +	{ XK_KP_End,        XK_ANY_MOD,     "\033[4~",       0,    0}, +	{ XK_KP_Next,       ShiftMask,      "\033[6;2~",     0,    0}, +	{ XK_KP_Next,       XK_ANY_MOD,     "\033[6~",       0,    0}, +	{ XK_KP_Insert,     ShiftMask,      "\033[2;2~",    +1,    0}, +	{ XK_KP_Insert,     ShiftMask,      "\033[4l",      -1,    0}, +	{ XK_KP_Insert,     ControlMask,    "\033[L",       -1,    0}, +	{ XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0}, +	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0}, +	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0}, +	{ XK_KP_Delete,     ControlMask,    "\033[M",       -1,    0}, +	{ XK_KP_Delete,     ControlMask,    "\033[3;5~",    +1,    0}, +	{ XK_KP_Delete,     ShiftMask,      "\033[2K",      -1,    0}, +	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",    +1,    0}, +	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[P",       -1,    0}, +	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",      +1,    0}, +	{ XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +2,    0}, +	{ XK_KP_Add,        XK_ANY_MOD,     "\033Ok",       +2,    0}, +	{ XK_KP_Enter,      XK_ANY_MOD,     "\033OM",       +2,    0}, +	{ XK_KP_Enter,      XK_ANY_MOD,     "\r",           -1,    0}, +	{ XK_KP_Subtract,   XK_ANY_MOD,     "\033Om",       +2,    0}, +	{ XK_KP_Decimal,    XK_ANY_MOD,     "\033On",       +2,    0}, +	{ XK_KP_Divide,     XK_ANY_MOD,     "\033Oo",       +2,    0}, +	{ XK_KP_0,          XK_ANY_MOD,     "\033Op",       +2,    0}, +	{ XK_KP_1,          XK_ANY_MOD,     "\033Oq",       +2,    0}, +	{ XK_KP_2,          XK_ANY_MOD,     "\033Or",       +2,    0}, +	{ XK_KP_3,          XK_ANY_MOD,     "\033Os",       +2,    0}, +	{ XK_KP_4,          XK_ANY_MOD,     "\033Ot",       +2,    0}, +	{ XK_KP_5,          XK_ANY_MOD,     "\033Ou",       +2,    0}, +	{ XK_KP_6,          XK_ANY_MOD,     "\033Ov",       +2,    0}, +	{ XK_KP_7,          XK_ANY_MOD,     "\033Ow",       +2,    0}, +	{ XK_KP_8,          XK_ANY_MOD,     "\033Ox",       +2,    0}, +	{ XK_KP_9,          XK_ANY_MOD,     "\033Oy",       +2,    0}, +	{ XK_Up,            ShiftMask,      "\033[1;2A",     0,    0}, +	{ XK_Up,            Mod1Mask,       "\033[1;3A",     0,    0}, +	{ XK_Up,         ShiftMask|Mod1Mask,"\033[1;4A",     0,    0}, +	{ XK_Up,            ControlMask,    "\033[1;5A",     0,    0}, +	{ XK_Up,      ShiftMask|ControlMask,"\033[1;6A",     0,    0}, +	{ XK_Up,       ControlMask|Mod1Mask,"\033[1;7A",     0,    0}, +	{ XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A",  0,    0}, +	{ XK_Up,            XK_ANY_MOD,     "\033[A",        0,   -1}, +	{ XK_Up,            XK_ANY_MOD,     "\033OA",        0,   +1}, +	{ XK_Down,          ShiftMask,      "\033[1;2B",     0,    0}, +	{ XK_Down,          Mod1Mask,       "\033[1;3B",     0,    0}, +	{ XK_Down,       ShiftMask|Mod1Mask,"\033[1;4B",     0,    0}, +	{ XK_Down,          ControlMask,    "\033[1;5B",     0,    0}, +	{ XK_Down,    ShiftMask|ControlMask,"\033[1;6B",     0,    0}, +	{ XK_Down,     ControlMask|Mod1Mask,"\033[1;7B",     0,    0}, +	{ XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0,    0}, +	{ XK_Down,          XK_ANY_MOD,     "\033[B",        0,   -1}, +	{ XK_Down,          XK_ANY_MOD,     "\033OB",        0,   +1}, +	{ XK_Left,          ShiftMask,      "\033[1;2D",     0,    0}, +	{ XK_Left,          Mod1Mask,       "\033[1;3D",     0,    0}, +	{ XK_Left,       ShiftMask|Mod1Mask,"\033[1;4D",     0,    0}, +	{ XK_Left,          ControlMask,    "\033[1;5D",     0,    0}, +	{ XK_Left,    ShiftMask|ControlMask,"\033[1;6D",     0,    0}, +	{ XK_Left,     ControlMask|Mod1Mask,"\033[1;7D",     0,    0}, +	{ XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0,    0}, +	{ XK_Left,          XK_ANY_MOD,     "\033[D",        0,   -1}, +	{ XK_Left,          XK_ANY_MOD,     "\033OD",        0,   +1}, +	{ XK_Right,         ShiftMask,      "\033[1;2C",     0,    0}, +	{ XK_Right,         Mod1Mask,       "\033[1;3C",     0,    0}, +	{ XK_Right,      ShiftMask|Mod1Mask,"\033[1;4C",     0,    0}, +	{ XK_Right,         ControlMask,    "\033[1;5C",     0,    0}, +	{ XK_Right,   ShiftMask|ControlMask,"\033[1;6C",     0,    0}, +	{ XK_Right,    ControlMask|Mod1Mask,"\033[1;7C",     0,    0}, +	{ XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0,   0}, +	{ XK_Right,         XK_ANY_MOD,     "\033[C",        0,   -1}, +	{ XK_Right,         XK_ANY_MOD,     "\033OC",        0,   +1}, +	{ XK_ISO_Left_Tab,  ShiftMask,      "\033[Z",        0,    0}, +	{ XK_Return,        Mod1Mask,       "\033\r",        0,    0}, +	{ XK_Return,        XK_ANY_MOD,     "\r",            0,    0}, +	{ XK_Insert,        ShiftMask,      "\033[4l",      -1,    0}, +	{ XK_Insert,        ShiftMask,      "\033[2;2~",    +1,    0}, +	{ XK_Insert,        ControlMask,    "\033[L",       -1,    0}, +	{ XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0}, +	{ XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0}, +	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0}, +	{ XK_Delete,        ControlMask,    "\033[M",       -1,    0}, +	{ XK_Delete,        ControlMask,    "\033[3;5~",    +1,    0}, +	{ XK_Delete,        ShiftMask,      "\033[2K",      -1,    0}, +	{ XK_Delete,        ShiftMask,      "\033[3;2~",    +1,    0}, +	{ XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0}, +	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0}, +	{ XK_BackSpace,     XK_NO_MOD,      "\177",          0,    0}, +	{ XK_BackSpace,     Mod1Mask,       "\033\177",      0,    0}, +	{ XK_Home,          ShiftMask,      "\033[2J",       0,   -1}, +	{ XK_Home,          ShiftMask,      "\033[1;2H",     0,   +1}, +	{ XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1}, +	{ XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1}, +	{ XK_End,           ControlMask,    "\033[J",       -1,    0}, +	{ XK_End,           ControlMask,    "\033[1;5F",    +1,    0}, +	{ XK_End,           ShiftMask,      "\033[K",       -1,    0}, +	{ XK_End,           ShiftMask,      "\033[1;2F",    +1,    0}, +	{ XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0}, +	{ XK_Prior,         ControlMask,    "\033[5;5~",     0,    0}, +	{ XK_Prior,         ShiftMask,      "\033[5;2~",     0,    0}, +	{ XK_Prior,         XK_ANY_MOD,     "\033[5~",       0,    0}, +	{ XK_Next,          ControlMask,    "\033[6;5~",     0,    0}, +	{ XK_Next,          ShiftMask,      "\033[6;2~",     0,    0}, +	{ XK_Next,          XK_ANY_MOD,     "\033[6~",       0,    0}, +	{ XK_F1,            XK_NO_MOD,      "\033OP" ,       0,    0}, +	{ XK_F1, /* F13 */  ShiftMask,      "\033[1;2P",     0,    0}, +	{ XK_F1, /* F25 */  ControlMask,    "\033[1;5P",     0,    0}, +	{ XK_F1, /* F37 */  Mod4Mask,       "\033[1;6P",     0,    0}, +	{ XK_F1, /* F49 */  Mod1Mask,       "\033[1;3P",     0,    0}, +	{ XK_F1, /* F61 */  Mod3Mask,       "\033[1;4P",     0,    0}, +	{ XK_F2,            XK_NO_MOD,      "\033OQ" ,       0,    0}, +	{ XK_F2, /* F14 */  ShiftMask,      "\033[1;2Q",     0,    0}, +	{ XK_F2, /* F26 */  ControlMask,    "\033[1;5Q",     0,    0}, +	{ XK_F2, /* F38 */  Mod4Mask,       "\033[1;6Q",     0,    0}, +	{ XK_F2, /* F50 */  Mod1Mask,       "\033[1;3Q",     0,    0}, +	{ XK_F2, /* F62 */  Mod3Mask,       "\033[1;4Q",     0,    0}, +	{ XK_F3,            XK_NO_MOD,      "\033OR" ,       0,    0}, +	{ XK_F3, /* F15 */  ShiftMask,      "\033[1;2R",     0,    0}, +	{ XK_F3, /* F27 */  ControlMask,    "\033[1;5R",     0,    0}, +	{ XK_F3, /* F39 */  Mod4Mask,       "\033[1;6R",     0,    0}, +	{ XK_F3, /* F51 */  Mod1Mask,       "\033[1;3R",     0,    0}, +	{ XK_F3, /* F63 */  Mod3Mask,       "\033[1;4R",     0,    0}, +	{ XK_F4,            XK_NO_MOD,      "\033OS" ,       0,    0}, +	{ XK_F4, /* F16 */  ShiftMask,      "\033[1;2S",     0,    0}, +	{ XK_F4, /* F28 */  ControlMask,    "\033[1;5S",     0,    0}, +	{ XK_F4, /* F40 */  Mod4Mask,       "\033[1;6S",     0,    0}, +	{ XK_F4, /* F52 */  Mod1Mask,       "\033[1;3S",     0,    0}, +	{ XK_F5,            XK_NO_MOD,      "\033[15~",      0,    0}, +	{ XK_F5, /* F17 */  ShiftMask,      "\033[15;2~",    0,    0}, +	{ XK_F5, /* F29 */  ControlMask,    "\033[15;5~",    0,    0}, +	{ XK_F5, /* F41 */  Mod4Mask,       "\033[15;6~",    0,    0}, +	{ XK_F5, /* F53 */  Mod1Mask,       "\033[15;3~",    0,    0}, +	{ XK_F6,            XK_NO_MOD,      "\033[17~",      0,    0}, +	{ XK_F6, /* F18 */  ShiftMask,      "\033[17;2~",    0,    0}, +	{ XK_F6, /* F30 */  ControlMask,    "\033[17;5~",    0,    0}, +	{ XK_F6, /* F42 */  Mod4Mask,       "\033[17;6~",    0,    0}, +	{ XK_F6, /* F54 */  Mod1Mask,       "\033[17;3~",    0,    0}, +	{ XK_F7,            XK_NO_MOD,      "\033[18~",      0,    0}, +	{ XK_F7, /* F19 */  ShiftMask,      "\033[18;2~",    0,    0}, +	{ XK_F7, /* F31 */  ControlMask,    "\033[18;5~",    0,    0}, +	{ XK_F7, /* F43 */  Mod4Mask,       "\033[18;6~",    0,    0}, +	{ XK_F7, /* F55 */  Mod1Mask,       "\033[18;3~",    0,    0}, +	{ XK_F8,            XK_NO_MOD,      "\033[19~",      0,    0}, +	{ XK_F8, /* F20 */  ShiftMask,      "\033[19;2~",    0,    0}, +	{ XK_F8, /* F32 */  ControlMask,    "\033[19;5~",    0,    0}, +	{ XK_F8, /* F44 */  Mod4Mask,       "\033[19;6~",    0,    0}, +	{ XK_F8, /* F56 */  Mod1Mask,       "\033[19;3~",    0,    0}, +	{ XK_F9,            XK_NO_MOD,      "\033[20~",      0,    0}, +	{ XK_F9, /* F21 */  ShiftMask,      "\033[20;2~",    0,    0}, +	{ XK_F9, /* F33 */  ControlMask,    "\033[20;5~",    0,    0}, +	{ XK_F9, /* F45 */  Mod4Mask,       "\033[20;6~",    0,    0}, +	{ XK_F9, /* F57 */  Mod1Mask,       "\033[20;3~",    0,    0}, +	{ XK_F10,           XK_NO_MOD,      "\033[21~",      0,    0}, +	{ XK_F10, /* F22 */ ShiftMask,      "\033[21;2~",    0,    0}, +	{ XK_F10, /* F34 */ ControlMask,    "\033[21;5~",    0,    0}, +	{ XK_F10, /* F46 */ Mod4Mask,       "\033[21;6~",    0,    0}, +	{ XK_F10, /* F58 */ Mod1Mask,       "\033[21;3~",    0,    0}, +	{ XK_F11,           XK_NO_MOD,      "\033[23~",      0,    0}, +	{ XK_F11, /* F23 */ ShiftMask,      "\033[23;2~",    0,    0}, +	{ XK_F11, /* F35 */ ControlMask,    "\033[23;5~",    0,    0}, +	{ XK_F11, /* F47 */ Mod4Mask,       "\033[23;6~",    0,    0}, +	{ XK_F11, /* F59 */ Mod1Mask,       "\033[23;3~",    0,    0}, +	{ XK_F12,           XK_NO_MOD,      "\033[24~",      0,    0}, +	{ XK_F12, /* F24 */ ShiftMask,      "\033[24;2~",    0,    0}, +	{ XK_F12, /* F36 */ ControlMask,    "\033[24;5~",    0,    0}, +	{ XK_F12, /* F48 */ Mod4Mask,       "\033[24;6~",    0,    0}, +	{ XK_F12, /* F60 */ Mod1Mask,       "\033[24;3~",    0,    0}, +	{ XK_F13,           XK_NO_MOD,      "\033[1;2P",     0,    0}, +	{ XK_F14,           XK_NO_MOD,      "\033[1;2Q",     0,    0}, +	{ XK_F15,           XK_NO_MOD,      "\033[1;2R",     0,    0}, +	{ XK_F16,           XK_NO_MOD,      "\033[1;2S",     0,    0}, +	{ XK_F17,           XK_NO_MOD,      "\033[15;2~",    0,    0}, +	{ XK_F18,           XK_NO_MOD,      "\033[17;2~",    0,    0}, +	{ XK_F19,           XK_NO_MOD,      "\033[18;2~",    0,    0}, +	{ XK_F20,           XK_NO_MOD,      "\033[19;2~",    0,    0}, +	{ XK_F21,           XK_NO_MOD,      "\033[20;2~",    0,    0}, +	{ XK_F22,           XK_NO_MOD,      "\033[21;2~",    0,    0}, +	{ XK_F23,           XK_NO_MOD,      "\033[23;2~",    0,    0}, +	{ XK_F24,           XK_NO_MOD,      "\033[24;2~",    0,    0}, +	{ XK_F25,           XK_NO_MOD,      "\033[1;5P",     0,    0}, +	{ XK_F26,           XK_NO_MOD,      "\033[1;5Q",     0,    0}, +	{ XK_F27,           XK_NO_MOD,      "\033[1;5R",     0,    0}, +	{ XK_F28,           XK_NO_MOD,      "\033[1;5S",     0,    0}, +	{ XK_F29,           XK_NO_MOD,      "\033[15;5~",    0,    0}, +	{ XK_F30,           XK_NO_MOD,      "\033[17;5~",    0,    0}, +	{ XK_F31,           XK_NO_MOD,      "\033[18;5~",    0,    0}, +	{ XK_F32,           XK_NO_MOD,      "\033[19;5~",    0,    0}, +	{ XK_F33,           XK_NO_MOD,      "\033[20;5~",    0,    0}, +	{ XK_F34,           XK_NO_MOD,      "\033[21;5~",    0,    0}, +	{ XK_F35,           XK_NO_MOD,      "\033[23;5~",    0,    0}, +}; + +/* + * Selection types' masks. + * Use the same masks as usual. + * Button1Mask is always unset, to make masks match between ButtonPress. + * ButtonRelease and MotionNotify. + * If no match is found, regular selection is used. + */ +static uint selmasks[] = { +	[SEL_RECTANGULAR] = Mod1Mask, +}; + +/* + * Printable characters in ASCII, used to estimate the advance width + * of single wide characters. + */ +static char ascii_printable[] = +	" !\"#$%&'()*+,-./0123456789:;<=>?" +	"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" +	"`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/.config/st/config.h b/.config/st/config.h new file mode 120000 index 0000000..c6d6219 --- /dev/null +++ b/.config/st/config.h @@ -0,0 +1 @@ +config.def.h
\ No newline at end of file diff --git a/.config/system_config.scm b/.config/system_config.scm new file mode 100644 index 0000000..d9179d7 --- /dev/null +++ b/.config/system_config.scm @@ -0,0 +1,81 @@ +;; This is an operating system configuration generated +;; by the graphical installer. +;; +;; Once installation is complete, you can learn and modify +;; this file to tweak the system configuration, and pass it +;; to the 'guix system reconfigure' command to effect your +;; changes. + + +;; Indicate which modules to import to access the variables +;; used in this configuration. +(use-modules (gnu)) +(use-service-modules cups desktop networking ssh xorg) + +(operating-system + (locale "en_US.utf8") + (timezone "America/Denver") + (keyboard-layout (keyboard-layout "us")) + (host-name "vali") + + ;; The list of user accounts ('root' is implicit). + (users (cons* (user-account +                (name "bdunahu") +                (comment "bdunahu") +                (group "users") +                (home-directory "/home/bdunahu") +                (supplementary-groups '("wheel" "netdev" "audio" "video"))) +               %base-user-accounts)) + + ;; Packages installed system-wide.  Users can also install packages + ;; under their own account: use 'guix search KEYWORD' to search + ;; for packages and 'guix install PACKAGE' to install a package. + (packages (append (list (specification->package "emacs") +                         (specification->package "emacs-exwm") +                         (specification->package +                          "emacs-desktop-environment") +                         (specification->package "nss-certs")) +                   %base-packages)) + + ;; Below is the list of system services.  To search for available + ;; services, run 'guix system search KEYWORD' in a terminal. + (services +  (append (list + +           ;; To configure OpenSSH, pass an 'openssh-configuration' +           ;; record as a second argument to 'service' below. +           (service openssh-service-type) +           (service tor-service-type) +           (set-xorg-configuration +            (xorg-configuration (keyboard-layout keyboard-layout)))) + +          ;; This is the default list of services we +          ;; are appending to. +          %desktop-services)) + (bootloader (bootloader-configuration +              (bootloader grub-efi-bootloader) +              (targets (list "/boot/efi")) +              (keyboard-layout keyboard-layout))) + (mapped-devices (list (mapped-device +                        (source (uuid +                                 "b9ca1e17-4c3e-4f82-a15c-4bb442c042b9")) +                        (target "A") +                        (type luks-device-mapping)))) + + ;; The list of file systems that get "mounted".  The unique + ;; file system identifiers there ("UUIDs") can be obtained + ;; by running 'blkid' in a terminal. + (file-systems (cons* (file-system +                       (mount-point "/boot/efi") +                       (device (uuid "4D74-E5F8" +                                     'fat32)) +                       (type "vfat")) +		      (file-system +                       (mount-point "/home/bdunahu/Personal") +                       (device (uuid "020b73df-3991-4271-9d3f-dba00ad260ec")) +		       (type "ext4")) +                      (file-system +                       (mount-point "/") +                       (device "/dev/mapper/A") +                       (type "ext4") +                      (dependencies mapped-devices)) %base-file-systems))) | 
