Compare commits
No commits in common. "d0ba7ac54b32ac7907ba86aa36481850c779d711" and "990add4ddff0aefa406627f69f7fe6c7a7f0bd22" have entirely different histories.
d0ba7ac54b
...
990add4ddf
@ -1,3 +1,2 @@
|
||||
timezone: "America/New_York"
|
||||
install_bluetooth: true
|
||||
emacs_flavor: "full"
|
||||
|
@ -1 +0,0 @@
|
||||
emacs_flavor: "plain" # or full for systems where I do real development.
|
@ -64,10 +64,9 @@
|
||||
|
||||
(setq tramp-default-method "ssh")
|
||||
|
||||
(use-package dockerfile-mode)
|
||||
|
||||
(use-package nginx-mode
|
||||
:mode (
|
||||
("headers\\.include\\'" . nginx-mode)
|
||||
)
|
||||
:config
|
||||
(setq nginx-indent-level 4))
|
||||
|
||||
|
@ -1,10 +1,14 @@
|
||||
(package-initialize)
|
||||
(use-package use-package)
|
||||
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "https://melpa.org/packages/")
|
||||
)
|
||||
|
||||
(when (not package-archive-contents)
|
||||
(package-refresh-contents))
|
||||
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-install 'use-package))
|
||||
|
||||
(use-package auto-package-update
|
||||
:ensure t
|
||||
:config
|
||||
@ -28,7 +32,6 @@
|
||||
require-final-newline t
|
||||
visible-bell nil
|
||||
ring-bell-function 'ignore
|
||||
;; Write custom variables to an unused file so in-editor changes do not persist.
|
||||
custom-file "~/.emacs.d/.custom.el"
|
||||
;; http://ergoemacs.org/emacs/emacs_stop_cursor_enter_prompt.html
|
||||
minibuffer-prompt-properties
|
||||
@ -56,8 +59,6 @@
|
||||
use-short-answers t
|
||||
package-native-compile t
|
||||
delete-selection-mode t
|
||||
;; Don't show warnings when compiling elisp to native binaries.
|
||||
native-comp-async-report-warnings-errors 'silent
|
||||
)
|
||||
|
||||
(defun assert-directory (p)
|
||||
@ -68,6 +69,8 @@
|
||||
(setq autoload-directory (concat user-emacs-directory (file-name-as-directory "elisp") (file-name-as-directory "autoload")))
|
||||
(add-to-list 'load-path (assert-directory autoload-directory))
|
||||
|
||||
|
||||
|
||||
;; Bookmarks
|
||||
(setq
|
||||
;; persistent bookmarks
|
||||
|
@ -1,5 +1,4 @@
|
||||
(use-package eglot
|
||||
:pin gnu
|
||||
:commands (eglot eglot-ensure)
|
||||
:bind (:map eglot-mode-map
|
||||
;; M-.
|
||||
|
@ -28,6 +28,6 @@
|
||||
|
||||
(require 'lang-go)
|
||||
|
||||
(require 'lang-dockerfile)
|
||||
(require 'lang-c)
|
||||
|
||||
(load-directory autoload-directory)
|
||||
|
@ -1,12 +1,12 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package bash-ts-mode
|
||||
(use-package sh-mode
|
||||
:ensure nil
|
||||
:commands bash-ts-mode
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(sh-mode . bash-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(bash "https://github.com/tree-sitter/tree-sitter-bash"))
|
||||
(unless (treesit-ready-p 'bash) (treesit-install-language-grammar 'bash))
|
||||
:commands sh-mode
|
||||
:hook ((sh-mode . flycheck-mode)
|
||||
(sh-mode . tree-sitter-hl-mode)
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'lang-bash)
|
||||
|
32
ansible/roles/emacs/files/lang-c.el
Normal file
32
ansible/roles/emacs/files/lang-c.el
Normal file
@ -0,0 +1,32 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
;; To generate a compilation database for the language server, run:
|
||||
;; intercept-build13 --append make
|
||||
;;
|
||||
;; Output: compile_commands.json
|
||||
|
||||
(defun use-clangd ()
|
||||
"Configure eglot to use clangd."
|
||||
(eglot-ensure)
|
||||
(defclass my/eglot-c (eglot-lsp-server) ()
|
||||
:documentation
|
||||
"Own eglot server class.")
|
||||
|
||||
(add-to-list 'eglot-server-programs
|
||||
'(cc-mode . (my/eglot-c "clangd13")))
|
||||
|
||||
(tree-sitter-hl-mode)
|
||||
)
|
||||
|
||||
(use-package cc-mode
|
||||
;; c-mode c++-mode objc-mode java-mode idl-mode pike-mode awk-mode
|
||||
:commands (c-mode c++-mode)
|
||||
:pin manual
|
||||
:hook (
|
||||
(c-mode . use-clangd)
|
||||
(c++-mode . use-clangd)
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'lang-c)
|
@ -1,13 +0,0 @@
|
||||
(use-package dockerfile-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("Dockerfile\\'" . dockerfile-ts-mode)
|
||||
)
|
||||
:commands (dockerfile-mode dockerfile-ts-mode)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(dockerfile-mode . dockerfile-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile"))
|
||||
(unless (treesit-ready-p 'dockerfile) (treesit-install-language-grammar 'dockerfile))
|
||||
)
|
||||
|
||||
(provide 'lang-dockerfile)
|
@ -1,27 +1,15 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package go-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.go\\'" . go-ts-mode)
|
||||
("/go\\.mod\\'" . go-ts-mode)
|
||||
)
|
||||
:commands (go-mode go-ts-mode)
|
||||
(use-package go-mode
|
||||
:commands go-mode
|
||||
:hook (
|
||||
(go-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(go-mode . (lambda ()
|
||||
(eglot-ensure)
|
||||
)
|
||||
(tree-sitter-hl-mode +1)
|
||||
))
|
||||
;; (before-save . lsp-format-buffer)
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(go-mode . go-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
|
||||
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
|
||||
(unless (treesit-ready-p 'go) (treesit-install-language-grammar 'go))
|
||||
(unless (treesit-ready-p 'gomod) (treesit-install-language-grammar 'gomod))
|
||||
)
|
||||
|
||||
(provide 'lang-go)
|
||||
|
@ -1,113 +1,61 @@
|
||||
(require 'common-lsp)
|
||||
(require 'util-tree-sitter)
|
||||
|
||||
(use-package json-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
(use-package js
|
||||
:mode (
|
||||
("\\.json\\'" . json-ts-mode)
|
||||
("\\.js\\'" . js-mode)
|
||||
("\\.json\\'" . js-mode)
|
||||
)
|
||||
:commands (json-ts-mode)
|
||||
:commands js-mode
|
||||
:pin manual
|
||||
:hook (
|
||||
(json-ts-mode . (lambda ()
|
||||
(add-hook 'before-save-hook 'json-fmt-jq nil 'local)
|
||||
(find-file . (lambda () (when (string= (file-name-extension buffer-file-name) "json") (add-hook 'before-save-hook 'json-fmt-jq nil 'local))))
|
||||
(js-mode . (lambda ()
|
||||
(tree-sitter-hl-mode +1)
|
||||
)
|
||||
)
|
||||
)
|
||||
:config
|
||||
(setq js-indent-level 2)
|
||||
)
|
||||
|
||||
(use-package typescript-mode
|
||||
:mode (
|
||||
("\\.ts\\'" . typescript-mode)
|
||||
("\\.tsx\\'" . typescript-mode)
|
||||
)
|
||||
:hook (
|
||||
(typescript-mode . (lambda ()
|
||||
;; (lsp-register-client
|
||||
;; (make-lsp-client :new-connection (lsp-stdio-connection '("deno" "lsp" --compat --unstable --allow-read))
|
||||
;; :major-modes '(typescript-mode)
|
||||
;; :server-id 'typescript-ls))
|
||||
(eglot-ensure)
|
||||
(tree-sitter-hl-mode +1)
|
||||
))
|
||||
;; (before-save . lsp-format-buffer)
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(json "https://github.com/tree-sitter/tree-sitter-json"))
|
||||
(unless (treesit-ready-p 'json) (treesit-install-language-grammar 'json))
|
||||
)
|
||||
)
|
||||
|
||||
(defun json-fmt-jq ()
|
||||
"Run jq."
|
||||
(run-command-on-buffer "jq" "--monochrome-output" ".")
|
||||
)
|
||||
|
||||
(use-package tsx-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.tsx\\'" . tsx-ts-mode)
|
||||
(use-package web-mode
|
||||
:mode (("\\.dust\\'" . web-mode)
|
||||
)
|
||||
:commands (tsx-ts-mode)
|
||||
:hook (
|
||||
(tsx-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")))
|
||||
(unless (treesit-ready-p 'tsx) (treesit-install-language-grammar 'tsx))
|
||||
:config
|
||||
(setq web-mode-markup-indent-offset 2)
|
||||
(setq web-mode-enable-current-element-highlight t)
|
||||
)
|
||||
|
||||
|
||||
(use-package typescript-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.ts\\'" . typescript-ts-mode)
|
||||
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
||||
(define-derived-mode dust-mode web-mode "WebDust"
|
||||
"Major mode for editing dust templates in web-mode."
|
||||
(web-mode)
|
||||
(web-mode-set-engine "dust")
|
||||
;; (setq web-mode-content-type "html")
|
||||
)
|
||||
:commands (typescript-ts-mode)
|
||||
:hook (
|
||||
(typescript-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")))
|
||||
(unless (treesit-ready-p 'typescript) (treesit-install-language-grammar 'typescript))
|
||||
)
|
||||
|
||||
(use-package js-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.js\\'" . js-ts-mode)
|
||||
)
|
||||
:commands (js-ts-mode)
|
||||
:hook (
|
||||
(js-ts-mode . (lambda ()
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")))
|
||||
(unless (treesit-ready-p 'javascript) (treesit-install-language-grammar 'javascript))
|
||||
)
|
||||
|
||||
(use-package css-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.css\\'" . css-ts-mode)
|
||||
)
|
||||
:commands (css-ts-mode)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(css "https://github.com/tree-sitter/tree-sitter-css"))
|
||||
(unless (treesit-ready-p 'css) (treesit-install-language-grammar 'css))
|
||||
)
|
||||
|
||||
|
||||
;; (use-package web-mode
|
||||
;; :mode (("\\.dust\\'" . web-mode)
|
||||
;; )
|
||||
;; :config
|
||||
;; (setq web-mode-markup-indent-offset 2)
|
||||
;; (setq web-mode-enable-current-element-highlight t)
|
||||
;; )
|
||||
|
||||
;; ;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
|
||||
;; (define-derived-mode dust-mode web-mode "WebDust"
|
||||
;; "Major mode for editing dust templates in web-mode."
|
||||
;; (web-mode)
|
||||
;; (web-mode-set-engine "dust")
|
||||
;; ;; (setq web-mode-content-type "html")
|
||||
;; )
|
||||
|
||||
(provide 'lang-javascript)
|
||||
|
@ -52,11 +52,11 @@
|
||||
)
|
||||
|
||||
(use-package python
|
||||
:mode ("\\.py\\'" . python-ts-mode)
|
||||
:commands (python-mode python-ts-mode)
|
||||
:mode ("\\.py\\'" . python-mode)
|
||||
:commands python-mode
|
||||
:pin manual
|
||||
:hook (
|
||||
(python-ts-mode . (lambda ()
|
||||
(python-mode . (lambda ()
|
||||
(when (executable-find "poetry")
|
||||
(add-poetry-venv-to-path)
|
||||
(let ((venv (locate-venv-poetry))) (when venv
|
||||
@ -64,19 +64,14 @@
|
||||
(list (cons ':python (list ':venvPath venv ':pythonPath (concat venv "/bin/python")))))
|
||||
))
|
||||
)
|
||||
(when-linux
|
||||
(eglot-ensure)
|
||||
)
|
||||
|
||||
(add-hook 'before-save-hook 'python-fmt nil 'local)
|
||||
(tree-sitter-hl-mode +1)
|
||||
))
|
||||
)
|
||||
:bind ((:map python-ts-mode-map ([backspace] . python-backspace))
|
||||
:bind ((:map python-mode-map ([backspace] . python-backspace))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(python-mode . python-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(python "https://github.com/tree-sitter/tree-sitter-python"))
|
||||
(unless (treesit-ready-p 'python) (treesit-install-language-grammar 'python))
|
||||
)
|
||||
|
||||
(provide 'lang-python)
|
||||
|
@ -4,8 +4,8 @@
|
||||
(defun locate-rust-analyzer ()
|
||||
"Find rust-analyzer."
|
||||
(let ((rust-analyzer-paths (list (locate-rust-analyzer-rustup) (locate-rust-analyzer-ansible-built))))
|
||||
(let ((first-non-nil-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
||||
first-non-nil-path
|
||||
(let ((first-non-nill-path (seq-find (lambda (elt) elt) rust-analyzer-paths)))
|
||||
first-non-nill-path
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -24,43 +24,26 @@
|
||||
)
|
||||
)
|
||||
|
||||
(use-package rust-ts-mode
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.rs\\'" . rust-ts-mode)
|
||||
)
|
||||
(use-package rust-mode
|
||||
:mode "\\.rs\\'"
|
||||
:hook (
|
||||
(rust-ts-mode . (lambda ()
|
||||
(rust-mode . (lambda ()
|
||||
(eglot-ensure)
|
||||
(let ((rust-analyzer-command (locate-rust-analyzer)))
|
||||
(when rust-analyzer-command
|
||||
(add-to-list 'eglot-server-programs (cons 'rust-ts-mode (list rust-analyzer-command)))
|
||||
(add-to-list 'eglot-server-programs (cons 'rust-mode (list rust-analyzer-command)))
|
||||
)
|
||||
)
|
||||
(when-linux
|
||||
(tree-sitter-hl-mode +1)
|
||||
)
|
||||
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'rust))
|
||||
:config
|
||||
;; Add keybindings for interacting with Cargo
|
||||
(use-package cargo
|
||||
:hook (rust-ts-mode . cargo-minor-mode))
|
||||
:hook (rust-mode . cargo-minor-mode))
|
||||
)
|
||||
|
||||
(use-package toml-ts-mode
|
||||
:ensure nil
|
||||
:pin manual
|
||||
:mode (
|
||||
("\\.toml\\'" . toml-ts-mode)
|
||||
)
|
||||
:commands (toml-ts-mode)
|
||||
:init
|
||||
(add-to-list 'treesit-language-source-alist '(toml "https://github.com/tree-sitter/tree-sitter-toml"))
|
||||
(unless (treesit-ready-p 'toml) (treesit-install-language-grammar 'toml))
|
||||
)
|
||||
|
||||
|
||||
(provide 'lang-rust)
|
||||
|
@ -13,6 +13,7 @@
|
||||
:custom (hcl-indent-level 2)
|
||||
:hook (
|
||||
(hcl-mode . (lambda () (unless (derived-mode-p 'terraform-mode) (add-hook 'before-save-hook 'terraform-fmt nil 'local))))
|
||||
(hcl-mode . tree-sitter-hl-mode)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1,26 +1,35 @@
|
||||
(defun yaml-backspace (arg)
|
||||
"Special handling of yaml backspace."
|
||||
(interactive "*p")
|
||||
(if mark-active
|
||||
(backward-delete-char-untabify arg)
|
||||
(yaml-electric-backspace arg)
|
||||
)
|
||||
)
|
||||
|
||||
(defun yaml-format-buffer ()
|
||||
"Run prettier."
|
||||
(interactive)
|
||||
(run-command-on-buffer "prettier" "--stdin-filepath" buffer-file-name)
|
||||
)
|
||||
|
||||
(use-package yaml-ts-mode
|
||||
(use-package yaml-mode
|
||||
:mode
|
||||
(
|
||||
("\\.y[a]?ml\\'" . yaml-ts-mode)
|
||||
("playbook\\.tmp\\'" . yaml-ts-mode)
|
||||
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-ts-mode)
|
||||
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-ts-mode)
|
||||
(("playbook\\.tmp\\'" . yaml-mode)
|
||||
("environments/[^/]*/group_vars/[^/]*\\'" . yaml-mode)
|
||||
("environments/[^/]*/host_vars/[^/]*\\'" . yaml-mode)
|
||||
)
|
||||
:hook (
|
||||
(yaml-ts-mode . (lambda ()
|
||||
(yaml-mode . (lambda ()
|
||||
(setq eglot-workspace-configuration
|
||||
(list (cons ':yaml (list ':hover :json-false :validate :json-false :completion t))))
|
||||
(eglot-ensure)
|
||||
(add-hook 'before-save-hook 'yaml-format-buffer nil 'local)
|
||||
))
|
||||
)
|
||||
:init
|
||||
(add-to-list 'major-mode-remap-alist '(yaml-mode . yaml-ts-mode))
|
||||
(add-to-list 'treesit-language-source-alist '(yaml "https://github.com/ikatyang/tree-sitter-yaml"))
|
||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'yaml))
|
||||
:bind (
|
||||
(:map yaml-mode-map ([backspace] . yaml-backspace))
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'lang-yaml)
|
||||
|
@ -1,12 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Plainmacs
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text
|
||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||
Exec=plainmacs %F
|
||||
Icon=emacs
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=Development;TextEditor;
|
||||
StartupNotify=true
|
||||
StartupWMClass=Emacs
|
@ -1,19 +0,0 @@
|
||||
(progn
|
||||
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
|
||||
(load-theme 'tango-dark t)
|
||||
(set-face-attribute 'default nil :background "black")
|
||||
;; Bright yellow highlighting for selected region
|
||||
(set-face-attribute 'region nil :background "#ffff50" :foreground "black")
|
||||
;; Bright green cursor to distinguish from yellow region
|
||||
(set-cursor-color "#ccff66")
|
||||
;; Hightlight the current line
|
||||
(set-face-attribute 'line-number-current-line nil :foreground "white")
|
||||
;; Set default font
|
||||
(set-face-attribute 'default nil :height 100 :width 'regular :weight 'regular :family "Cascadia Mono")
|
||||
;; Set fallback font for unicode glyphs
|
||||
(set-fontset-font "fontset-default" nil (font-spec :name "Noto Color Emoji"))
|
||||
(menu-bar-mode -1)
|
||||
(when (fboundp 'tool-bar-mode)
|
||||
(tool-bar-mode -1))
|
||||
(when ( fboundp 'scroll-bar-mode)
|
||||
(scroll-bar-mode -1)))
|
@ -1,16 +1,7 @@
|
||||
(use-package treesit
|
||||
:pin manual
|
||||
:ensure nil
|
||||
:commands (treesit-install-language-grammar treesit-ready-p)
|
||||
:init
|
||||
(setq treesit-language-source-alist '())
|
||||
(use-package tree-sitter
|
||||
:commands (tree-sitter-hl-mode)
|
||||
:config
|
||||
;; Default to the max level of detail in treesitter highlighting. This
|
||||
;; can be overridden in each language's use-package call with:
|
||||
;;
|
||||
;; :custom
|
||||
;; (treesit-font-lock-level 3)
|
||||
(setq treesit-font-lock-level 4)
|
||||
(use-package tree-sitter-langs)
|
||||
)
|
||||
|
||||
(provide 'util-tree-sitter)
|
||||
|
@ -1,5 +1,5 @@
|
||||
dependencies:
|
||||
- users
|
||||
- fonts
|
||||
- role: rust
|
||||
when: 'emacs_flavor == "full"'
|
||||
- rust
|
||||
- plainmacs
|
||||
|
@ -1,21 +1,9 @@
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- aspell
|
||||
state: present
|
||||
|
||||
- name: Install scripts
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: plainmacs
|
||||
dest: /usr/local/bin/plainmacs
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
|
@ -2,12 +2,6 @@
|
||||
package:
|
||||
name:
|
||||
- emacs
|
||||
state: present
|
||||
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- py39-pygments
|
||||
- inkscape # to support SVGs in LaTeX
|
||||
# - prettier # typescript formatting
|
||||
|
@ -2,38 +2,4 @@
|
||||
package:
|
||||
name:
|
||||
- aspell-en
|
||||
- emacs
|
||||
state: present
|
||||
|
||||
- name: Install packages
|
||||
when: 'emacs_flavor == "full"'
|
||||
package:
|
||||
name:
|
||||
- prettier # typescript+yaml formatting
|
||||
- pyright
|
||||
- gopls
|
||||
- typescript-language-server
|
||||
state: present
|
||||
|
||||
- name: Create directories
|
||||
file:
|
||||
name: "{{ item }}"
|
||||
state: directory
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root # Using root group to match /usr/share/applications
|
||||
loop:
|
||||
- /usr/local/share/applications
|
||||
|
||||
- name: Install Configuration
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: wheel
|
||||
# Can't use validate because it complains about the file extension for the temporary file.
|
||||
# validate: "desktop-file-validate %s"
|
||||
loop:
|
||||
- src: plainmacs.desktop
|
||||
dest: /usr/local/share/applications/
|
||||
|
@ -12,7 +12,6 @@
|
||||
- ".emacs.d/elisp"
|
||||
|
||||
- name: Configure dotfiles
|
||||
when: 'emacs_flavor == "full"'
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
@ -23,20 +22,7 @@
|
||||
- src: init.el
|
||||
dest: .emacs.d/init.el
|
||||
|
||||
- name: Configure dotfiles
|
||||
when: 'emacs_flavor == "plain"'
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ account_homedir.stdout }}/{{ item.dest }}"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- src: plainmacs_init.el
|
||||
dest: .emacs.d/init.el
|
||||
|
||||
- name: Configure elisp files
|
||||
when: 'emacs_flavor == "full"'
|
||||
copy:
|
||||
src: "files/{{ item }}"
|
||||
dest: "{{ account_homedir.stdout }}/.emacs.d/elisp/{{ item }}"
|
||||
@ -51,7 +37,7 @@
|
||||
- base.el
|
||||
- common-lsp.el
|
||||
- lang-bash.el
|
||||
- lang-dockerfile.el
|
||||
- lang-c.el
|
||||
- lang-go.el
|
||||
- lang-javascript.el
|
||||
- lang-lua.el
|
||||
@ -72,8 +58,7 @@
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- emacs_e # Create an alias 'e' which launches emacs
|
||||
- plainmacs # Set the EDITOR to plainmacs
|
||||
- emacs_e
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
25
ansible/roles/plainmacs/tasks/common.yaml
Normal file
25
ansible/roles/plainmacs/tasks/common.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
- name: Install scripts
|
||||
copy:
|
||||
src: "files/{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: wheel
|
||||
loop:
|
||||
- src: plainmacs
|
||||
dest: /usr/local/bin/plainmacs
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
- import_tasks: tasks/linux.yaml
|
||||
when: 'os_flavor == "linux"'
|
||||
|
||||
- include_tasks:
|
||||
file: tasks/peruser.yaml
|
||||
apply:
|
||||
become: yes
|
||||
become_user: "{{ initialize_user }}"
|
||||
loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}"
|
||||
loop_control:
|
||||
loop_var: initialize_user
|
5
ansible/roles/plainmacs/tasks/freebsd.yaml
Normal file
5
ansible/roles/plainmacs/tasks/freebsd.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- emacs
|
||||
state: present
|
5
ansible/roles/plainmacs/tasks/linux.yaml
Normal file
5
ansible/roles/plainmacs/tasks/linux.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
- name: Install packages
|
||||
package:
|
||||
name:
|
||||
- emacs-nativecomp
|
||||
state: present
|
1
ansible/roles/plainmacs/tasks/main.yaml
Normal file
1
ansible/roles/plainmacs/tasks/main.yaml
Normal file
@ -0,0 +1 @@
|
||||
- import_tasks: tasks/common.yaml
|
18
ansible/roles/plainmacs/tasks/peruser.yaml
Normal file
18
ansible/roles/plainmacs/tasks/peruser.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
- include_role:
|
||||
name: per_user
|
||||
|
||||
- name: Configure zshrc additional imports
|
||||
copy:
|
||||
src: "files/zshrc_{{ item }}"
|
||||
dest: "{{ account_homedir.stdout }}/.config/ansible_deploy/zshrc/{{ item }}.zsh"
|
||||
mode: 0600
|
||||
owner: "{{ account_name.stdout }}"
|
||||
group: "{{ group_name.stdout }}"
|
||||
loop:
|
||||
- plainmacs
|
||||
|
||||
- import_tasks: tasks/peruser_freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
- import_tasks: tasks/peruser_linux.yaml
|
||||
when: 'os_flavor == "linux"'
|
0
ansible/roles/plainmacs/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/plainmacs/tasks/peruser_freebsd.yaml
Normal file
0
ansible/roles/plainmacs/tasks/peruser_linux.yaml
Normal file
0
ansible/roles/plainmacs/tasks/peruser_linux.yaml
Normal file
@ -1,44 +0,0 @@
|
||||
# This file is auto-generated by 'make config'.
|
||||
# Options for emacs-29.1,3
|
||||
_OPTIONS_READ=emacs-29.1,3
|
||||
_FILE_COMPLETE_OPTIONS_LIST=ACL DBUS GNUTLS GSETTINGS HARFBUZZ JSON LCMS2 M17N MAILUTILS MODULES NATIVECOMP OTF PGTK SCROLLBARS SOURCES SQLITE3 THREADS TREESITTER XFT XIM XML XWIDGETS GFILE KQUEUE ALSA OSS GTK2 GTK3 MOTIF XAW XAW3D CAIRO GIF JPEG MAGICK PNG SVG TIFF WEBP XPM
|
||||
OPTIONS_FILE_SET+=ACL
|
||||
OPTIONS_FILE_SET+=DBUS
|
||||
OPTIONS_FILE_SET+=GNUTLS
|
||||
OPTIONS_FILE_SET+=GSETTINGS
|
||||
OPTIONS_FILE_SET+=HARFBUZZ
|
||||
OPTIONS_FILE_SET+=JSON
|
||||
OPTIONS_FILE_SET+=LCMS2
|
||||
OPTIONS_FILE_UNSET+=M17N
|
||||
OPTIONS_FILE_SET+=MAILUTILS
|
||||
OPTIONS_FILE_SET+=MODULES
|
||||
OPTIONS_FILE_SET+=NATIVECOMP
|
||||
OPTIONS_FILE_SET+=OTF
|
||||
OPTIONS_FILE_SET+=PGTK
|
||||
OPTIONS_FILE_SET+=SCROLLBARS
|
||||
OPTIONS_FILE_SET+=SOURCES
|
||||
OPTIONS_FILE_SET+=SQLITE3
|
||||
OPTIONS_FILE_SET+=THREADS
|
||||
OPTIONS_FILE_SET+=TREESITTER
|
||||
OPTIONS_FILE_UNSET+=XFT
|
||||
OPTIONS_FILE_UNSET+=XIM
|
||||
OPTIONS_FILE_SET+=XML
|
||||
OPTIONS_FILE_UNSET+=XWIDGETS
|
||||
OPTIONS_FILE_UNSET+=GFILE
|
||||
OPTIONS_FILE_SET+=KQUEUE
|
||||
OPTIONS_FILE_UNSET+=ALSA
|
||||
OPTIONS_FILE_SET+=OSS
|
||||
OPTIONS_FILE_UNSET+=GTK2
|
||||
OPTIONS_FILE_SET+=GTK3
|
||||
OPTIONS_FILE_UNSET+=MOTIF
|
||||
OPTIONS_FILE_UNSET+=XAW
|
||||
OPTIONS_FILE_UNSET+=XAW3D
|
||||
OPTIONS_FILE_SET+=CAIRO
|
||||
OPTIONS_FILE_SET+=GIF
|
||||
OPTIONS_FILE_SET+=JPEG
|
||||
OPTIONS_FILE_UNSET+=MAGICK
|
||||
OPTIONS_FILE_SET+=PNG
|
||||
OPTIONS_FILE_SET+=SVG
|
||||
OPTIONS_FILE_SET+=TIFF
|
||||
OPTIONS_FILE_SET+=WEBP
|
||||
OPTIONS_FILE_UNSET+=XPM
|
@ -4,5 +4,4 @@
|
||||
- rustup
|
||||
- lldb # for lldb-vscode
|
||||
- musl # for building static binaries
|
||||
- rust-analyzer
|
||||
state: present
|
||||
|
@ -9,24 +9,15 @@ SLEEP_INTERVAL=${SLEEP_INTERVAL:-30}
|
||||
|
||||
while true; do
|
||||
# TODO: Why not vm.stats.vm.v_page_size ? Are these the same?
|
||||
total_pages=$(sysctl -n vm.stats.vm.v_page_count)
|
||||
page_size=$(sysctl -n hw.pagesize)
|
||||
active=$(sysctl -n vm.stats.vm.v_active_count)
|
||||
inactive=$(sysctl -n vm.stats.vm.v_inactive_count)
|
||||
in_use_pages=$((active + inactive))
|
||||
free_pages=$((total_pages - in_use_pages))
|
||||
free_pages=$(sysctl -n vm.stats.vm.v_free_count)
|
||||
free_bytes=$((page_size * free_pages))
|
||||
total_pages=$(sysctl -n vm.stats.vm.v_page_count)
|
||||
free_percent=$((100 * free_pages / total_pages))
|
||||
text=""
|
||||
|
||||
if [ $free_bytes -ge $((1024 * 1024 * 1024)) ]; then
|
||||
text="$((free_bytes / 1024 / 1024 / 1024)) GiB"
|
||||
elif [ $free_bytes -ge $((1024 * 1024)) ]; then
|
||||
text="$((free_bytes / 1024 / 1024)) MiB"
|
||||
elif [ $free_bytes -ge 1024 ]; then
|
||||
text="$((free_bytes / 1024)) KiB"
|
||||
else
|
||||
text="$(free_bytes) B"
|
||||
fi
|
||||
|
||||
tooltip="${free_percent}%"
|
||||
|
Loading…
x
Reference in New Issue
Block a user