From a5261c1704ee5f5c6546719020b8f0543cb12b30 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 19 Oct 2022 22:52:45 -0400 Subject: [PATCH] Starting an emacs role. --- ansible/playbook.yaml | 1 + ansible/roles/emacs/files/plainmacs | 22 ++++++++++++++ ansible/roles/emacs/meta/main.yaml | 5 ++++ ansible/roles/emacs/tasks/common.yaml | 25 ++++++++++++++++ ansible/roles/emacs/tasks/freebsd.yaml | 23 +++++++++++++++ ansible/roles/emacs/tasks/linux.yaml | 6 ++++ ansible/roles/emacs/tasks/main.yaml | 1 + ansible/roles/emacs/tasks/peruser.yaml | 29 +++++++++++++++++++ .../roles/emacs/tasks/peruser_freebsd.yaml | 0 ansible/roles/emacs/tasks/peruser_linux.yaml | 0 10 files changed, 112 insertions(+) create mode 100755 ansible/roles/emacs/files/plainmacs create mode 100644 ansible/roles/emacs/meta/main.yaml create mode 100644 ansible/roles/emacs/tasks/common.yaml create mode 100644 ansible/roles/emacs/tasks/freebsd.yaml create mode 100644 ansible/roles/emacs/tasks/linux.yaml create mode 100644 ansible/roles/emacs/tasks/main.yaml create mode 100644 ansible/roles/emacs/tasks/peruser.yaml create mode 100644 ansible/roles/emacs/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/emacs/tasks/peruser_linux.yaml diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index 6e9ca02..bb975b9 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -19,3 +19,4 @@ - fonts - alacritty - sway + - emacs diff --git a/ansible/roles/emacs/files/plainmacs b/ansible/roles/emacs/files/plainmacs new file mode 100755 index 0000000..c8609a7 --- /dev/null +++ b/ansible/roles/emacs/files/plainmacs @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# + +exec emacs -q --eval "(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)))" "${@}" diff --git a/ansible/roles/emacs/meta/main.yaml b/ansible/roles/emacs/meta/main.yaml new file mode 100644 index 0000000..0725261 --- /dev/null +++ b/ansible/roles/emacs/meta/main.yaml @@ -0,0 +1,5 @@ +dependencies: + - users + - fonts + # - rust + # - plainmacs diff --git a/ansible/roles/emacs/tasks/common.yaml b/ansible/roles/emacs/tasks/common.yaml new file mode 100644 index 0000000..bdb96ee --- /dev/null +++ b/ansible/roles/emacs/tasks/common.yaml @@ -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 diff --git a/ansible/roles/emacs/tasks/freebsd.yaml b/ansible/roles/emacs/tasks/freebsd.yaml new file mode 100644 index 0000000..2c52f97 --- /dev/null +++ b/ansible/roles/emacs/tasks/freebsd.yaml @@ -0,0 +1,23 @@ +- name: Install packages + package: + name: + - emacs + - texlive-full + - py39-pygments + - inkscape # to support SVGs in LaTeX + # - prettier # typescript formatting + - aspell + - en-aspell + - unzip # for extracting mspyls + - py39-isort + - py39-black + - zip # for odt export from org-mode + - gnuplot # used for exporting graphs from org-mode + - graphviz # used for exporting graphviz dot charts from org-mode + # - pyright + - sqlite3 # for sqlite code blocks in org-mode + # - terraform-ls # Terraform language server + - py39-ptvsd + - hs-ShellCheck + # - gopls + state: present diff --git a/ansible/roles/emacs/tasks/linux.yaml b/ansible/roles/emacs/tasks/linux.yaml new file mode 100644 index 0000000..e1835f0 --- /dev/null +++ b/ansible/roles/emacs/tasks/linux.yaml @@ -0,0 +1,6 @@ +# - name: Install packages +# pacman: +# name: +# - foo +# state: present +# update_cache: true diff --git a/ansible/roles/emacs/tasks/main.yaml b/ansible/roles/emacs/tasks/main.yaml new file mode 100644 index 0000000..5c1df6c --- /dev/null +++ b/ansible/roles/emacs/tasks/main.yaml @@ -0,0 +1 @@ +- import_tasks: tasks/common.yaml diff --git a/ansible/roles/emacs/tasks/peruser.yaml b/ansible/roles/emacs/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/emacs/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +# - name: Create directories +# file: +# name: "{{ account_homedir.stdout }}/{{ item }}" +# state: directory +# mode: 0700 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - ".config/foo" + +# - name: Copy files +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ account_homedir.stdout }}/{{ item.dest }}" +# mode: 0600 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - src: foo.conf +# dest: .config/foo/foo.conf + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/emacs/tasks/peruser_freebsd.yaml b/ansible/roles/emacs/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/emacs/tasks/peruser_linux.yaml b/ansible/roles/emacs/tasks/peruser_linux.yaml new file mode 100644 index 0000000..e69de29