From 54631074daacab91dbf925c9d870582b21e1c25e Mon Sep 17 00:00:00 2001 From: Swarsel Date: Fri, 9 Feb 2024 20:17:12 +0100 Subject: [PATCH] reorganize Org file structure (emacs) --- Emacs.org | 234 ++++++++++++++++++----------------- Nix.org | 54 +++++--- profiles/TEMPLATE/nixos.nix | 15 ++- profiles/common/home.nix | 6 +- profiles/fourside/home.nix | 27 ++-- programs/emacs/custom.el | 1 + programs/emacs/init.el | 46 +++---- secrets/general/secrets.yaml | 104 +++++++++------- 8 files changed, 274 insertions(+), 213 deletions(-) diff --git a/Emacs.org b/Emacs.org index 94fb388..4d9410a 100644 --- a/Emacs.org +++ b/Emacs.org @@ -52,7 +52,7 @@ swarsel-anki-org-file "Anki.org" swarsel-tasks-org-file "Tasks.org" swarsel-archive-org-file "Archive.org" - swarsel-org-folder-name "org" + swarsel-org-folder-name "Org" swarsel-obsidian-daily-folder-name "⭐ Personal/Journal" swarsel-obsidian-folder-name "Obsidian" swarsel-obsidian-vault-name "Main") @@ -356,8 +356,9 @@ Base emacs undo logic is very useful, but not easy to understand. I prefer undo- "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mp" '(popper-toggle :which-key "popper") "md" '(dirvish :which-key "dirvish") - ;; "c" '(:ignore c :which-key "capture") + "c" '(:ignore c :which-key "capture") ;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal") + "ct" '((lambda () (interactive) (org-capture nil "tt")) :which-key "tasks") ;; "cs" '(markdown-download-screenshot :which-key "screenshot") "l" '(:ignore l :which-key "links") "le" '((lambda () (interactive) (find-file swarsel-emacs-org-filepath)) :which-key "Emacs.org") @@ -807,135 +808,138 @@ Soon I want to try out this new hot stuff - just at the moment there is too much #+begin_src emacs-lisp - (defun swarsel/org-mode-setup () - (org-indent-mode) - (variable-pitch-mode 1) - ;;(auto-fill-mode 0) - (setq display-line-numbers-type 'relative - display-line-numbers-current-absolute 1 - display-line-numbers-width-start nil - display-line-numbers-width 6 - display-line-numbers-grow-only 1) - (add-hook 'org-tab-first-hook 'org-end-of-line) - (visual-line-mode 1)) - ;; (setq evil-auto-indent nil) - ;;(diminish org-indent-mode) + (defun swarsel/org-mode-setup () + (org-indent-mode) + (variable-pitch-mode 1) + ;;(auto-fill-mode 0) + (setq display-line-numbers-type 'relative + display-line-numbers-current-absolute 1 + display-line-numbers-width-start nil + display-line-numbers-width 6 + display-line-numbers-grow-only 1) + (add-hook 'org-tab-first-hook 'org-end-of-line) + (visual-line-mode 1)) + ;; (setq evil-auto-indent nil) + ;;(diminish org-indent-mode) - ;; (defun swarsel/org-font-setup () - ;; ;; Replace list hyphen with dot - ;; (font-lock-add-keywords 'org-mode - ;; '(("^ *\\([-]\\) " - ;; (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))) + ;; (defun swarsel/org-font-setup () + ;; ;; Replace list hyphen with dot + ;; (font-lock-add-keywords 'org-mode + ;; '(("^ *\\([-]\\) " + ;; (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))) - (use-package org - ;;:diminish (org-indent-mode) - :hook (org-mode . swarsel/org-mode-setup) - :bind ("C-" . org-fold-outer) - :config - (setq org-ellipsis " ⤵" - org-hide-emphasis-markers t) - (setq org-startup-folded t) - (setq org-support-shift-select t) - ;; (setq org-agenda-start-with-log-mode t) - ;; (setq org-log-done 'time) - ;; (setq org-log-into-drawer t) - (setq org-startup-with-inline-images t) - (setq org-image-actual-width nil) - (setq org-format-latex-options '(:foreground "White" :background default :scale 2.0 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) + (use-package org + ;;:diminish (org-indent-mode) + :hook (org-mode . swarsel/org-mode-setup) + :bind ("C-" . org-fold-outer) + :config + (setq org-ellipsis " ⤵" + org-hide-emphasis-markers t) + (setq org-startup-folded t) + (setq org-support-shift-select t) + ;; (setq org-agenda-start-with-log-mode t) + ;; (setq org-log-done 'time) + ;; (setq org-log-into-drawer t) + (setq org-startup-with-inline-images t) + (setq org-image-actual-width nil) + (setq org-format-latex-options '(:foreground "White" :background default :scale 2.0 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) - ;; (setq org-agenda-files - ;; '(swarsel-org-tasks-filepath - ;; swarsel-org-archive-filepath - ;; swarsel-org-anki-filepath)) - (setq org-agenda-files '("/home/swarsel/Calendars/leon_cal.org")) + (setq org-agenda-files + '("/home/swarsel/Nextcloud/Org/Tasks.org" + "/home/swarsel/Nextcloud/Org/Archive.org" + "/home/swarsel/Calendars/leon_cal.org")) + ;; swarsel-org-anki-filepath)) + ;; (setq org-agenda-files '("/home/swarsel/Calendars/leon_cal.org")) - ;; (require 'org-habit) - ;; (add-to-list 'org-modules 'org-habit) - ;; (setq org-habit-graph-column 60) + ;; (require 'org-habit) + ;; (add-to-list 'org-modules 'org-habit) + ;; (setq org-habit-graph-column 60) - ;; (setq org-todo-keywords - ;; '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)") - ;; (sequence "BACKLOG(b)" "PLAN(p)" "READY(r)" "ACTIVE(a)" "REVIEW(v)" "WAIT(w@/!)" "HOLD(h)" "|" "COMPLETED(c)" "CANC(k@)"))) + ;; (setq org-todo-keywords + ;; '((sequence "TODO(t)" "NEXT(n)" "|" "X1DONE(d!)") + ;; (sequence "BACKLOG(b)" "PLAN(p)" "READY(r)" "ACTIVE(a)" "REVIEW(v)" "WAIT(w@/!)" "HOLD(h)" "|" "COMPLETED(c)" "CANC(k@)"))) - ;; (setq org-refile-targets - ;; '((swarsel-archive-org-file :maxlevel . 1) - ;; (swarsel-anki-org-file :maxlevel . 1) - ;; (swarsel-tasks-org-file :maxlevel . 1))) + (setq org-refile-targets + '((swarsel-archive-org-file :maxlevel . 1) + ;; (swarsel-anki-org-file :maxlevel . 1) + (swarsel-tasks-org-file :maxlevel . 1))) - ;; ;; Configure custom agenda views - ;; (setq org-agenda-custom-commands - ;; '(("d" "Dashboard" - ;; ((agenda "" ((org-deadline-warning-days 7))) - ;; (todo "NEXT" - ;; ((org-agenda-overriding-header "Next Tasks"))) - ;; (tags-todo "agenda/ACTIVE" ((org-agenda-overriding-header "Active Projects"))))) + ;; ;; Configure custom agenda views + ;; (setq org-agenda-custom-commands + ;; '(("d" "Dashboard" + ;; ((agenda "" ((org-deadline-warning-days 7))) + ;; (todo "NEXT" + ;; ((org-agenda-overriding-header "Next Tasks"))) + ;; (tags-todo "agenda/ACTIVE" ((org-agenda-overriding-header "Active Projects"))))) - ;; ("n" "Next Tasks" - ;; ((todo "NEXT" - ;; ((org-agenda-overriding-header "Next Tasks"))))) + ;; ("n" "Next Tasks" + ;; ((todo "NEXT" + ;; ((org-agenda-overriding-header "Next Tasks"))))) - ;; ("W" "Work Tasks" tags-todo "+work-email") + ;; ("W" "Work Tasks" tags-todo "+work-email") - ;; ;; Low-effort next actions - ;; ("e" tags-todo "+TODO=\"NEXT\"+Effort<15&+Effort>0" - ;; ((org-agenda-overriding-header "Low Effort Tasks") - ;; (org-agenda-max-todos 20) - ;; (org-agenda-files org-agenda-files))) + ;; ;; Low-effort next actions + ;; ("e" tags-todo "+TODO=\"NEXT\"+Effort<15&+Effort>0" + ;; ((org-agenda-overriding-header "Low Effort Tasks") + ;; (org-agenda-max-todos 20) + ;; (org-agenda-files org-agenda-files))) - ;; ("w" "Workflow Status" - ;; ((todo "WAIT" - ;; ((org-agenda-overriding-header "Waiting on External") - ;; (org-agenda-files org-agenda-files))) - ;; (todo "REVIEW" - ;; ((org-agenda-overriding-header "In Review") - ;; (org-agenda-files org-agenda-files))) - ;; (todo "PLAN" - ;; ((org-agenda-overriding-header "In Planning") - ;; (org-agenda-todo-list-sublevels nil) - ;; (org-agenda-files org-agenda-files))) - ;; (todo "BACKLOG" - ;; ((org-agenda-overriding-header "Project Backlog") - ;; (org-agenda-todo-list-sublevels nil) - ;; (org-agenda-files org-agenda-files))) - ;; (todo "READY" - ;; ((org-agenda-overriding-header "Ready for Work") - ;; (org-agenda-files org-agenda-files))) - ;; (todo "ACTIVE" - ;; ((org-agenda-overriding-header "Active Projects") - ;; (org-agenda-files org-agenda-files))) - ;; (todo "COMPLETED" - ;; ((org-agenda-overriding-header "Completed Projects") - ;; (org-agenda-files org-agenda-files))) - ;; (todo "CANC" - ;; ((org-agenda-overriding-header "Cancelled Projects") - ;; (org-agenda-files org-agenda-files))))))) + ;; ("w" "Workflow Status" + ;; ((todo "WAIT" + ;; ((org-agenda-overriding-header "Waiting on External") + ;; (org-agenda-files org-agenda-files))) + ;; (todo "REVIEW" + ;; ((org-agenda-overriding-header "In Review") + ;; (org-agenda-files org-agenda-files))) + ;; (todo "PLAN" + ;; ((org-agenda-overriding-header "In Planning") + ;; (org-agenda-todo-list-sublevels nil) + ;; (org-agenda-files org-agenda-files))) + ;; (todo "BACKLOG" + ;; ((org-agenda-overriding-header "Project Backlog") + ;; (org-agenda-todo-list-sublevels nil) + ;; (org-agenda-files org-agenda-files))) + ;; (todo "READY" + ;; ((org-agenda-overriding-header "Ready for Work") + ;; (org-agenda-files org-agenda-files))) + ;; (todo "ACTIVE" + ;; ((org-agenda-overriding-header "Active Projects") + ;; (org-agenda-files org-agenda-files))) + ;; (todo "COMPLETED" + ;; ((org-agenda-overriding-header "Completed Projects") + ;; (org-agenda-files org-agenda-files))) + ;; (todo "CANC" + ;; ((org-agenda-overriding-header "Cancelled Projects") + ;; (org-agenda-files org-agenda-files))))))) - ;; (setq org-capture-templates - ;; `( - ;; ("a" "Anki basic" - ;; entry - ;; (file+headline swarsel-org-anki-filepath "Dispatch") - ;; (function swarsel-anki-make-template-string)) + (setq org-capture-templates + `( + ;; ("a" "Anki basic" + ;; entry + ;; (file+headline swarsel-org-anki-filepath "Dispatch") + ;; (function swarsel-anki-make-template-string)) - ;; ("A" "Anki cloze" - ;; entry - ;; (file+headline org-swarsel-anki-file "Dispatch") - ;; "* %<%H:%M>\n:PROPERTIES:\n:ANKI_NOTE_TYPE: Cloze\n:ANKI_DECK: 🦁 All::01 ❤️ Various::00 ✨ Allgemein\n:END:\n** Text\n%?\n** Extra\n") - ;; ("t" "Tasks / Projects") - ;; ("tt" "Task" entry (file+olp swarsel-org-tasks-filepath "Inbox") - ;; "* TODO %?\n %U\n %a\n %i" :empty-lines 1) + ;; ("A" "Anki cloze" + ;; entry + ;; (file+headline org-swarsel-anki-file "Dispatch") + ;; "* %<%H:%M>\n:PROPERTIES:\n:ANKI_NOTE_TYPE: Cloze\n:ANKI_DECK: 🦁 All::01 ❤️ Various::00 ✨ Allgemein\n:END:\n** Text\n%?\n** Extra\n") - ;; ("j" "Journal Entries") - ;; ("jj" "Journal" entry - ;; (file+olp+datetree swarsel-org-journal-filepath) - ;; "\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n" - ;; ;; ,(dw/read-file-as-string "~/Notes/Templates/Daily.org") - ;; :clock-in :clock-resume - ;; :empty-lines 1))) + ("t" "Tasks / Projects") + ("tt" "Task" entry (file+olp swarsel-org-tasks-filepath "Inbox") + "* TODO %?\n %U\n %i" :empty-lines 1) - ;; (swarsel/org-font-setup) - ) + ;; ("j" "Journal Entries") + ;; ("jj" "Journal" entry + ;; (file+olp+datetree swarsel-org-journal-filepath) + ;; "\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n" + ;; ;; ,(dw/read-file-as-string "~/Notes/Templates/Daily.org") + ;; :clock-in :clock-resume + ;; :empty-lines 1) + )) + + ;; (swarsel/org-font-setup) + ) #+end_src ** Font Faces diff --git a/Nix.org b/Nix.org index 0a2f837..c951f01 100644 --- a/Nix.org +++ b/Nix.org @@ -523,6 +523,8 @@ If a non-NixOS host must be used, check the Surface configuration for pointers. No matter what you do, check the initial /etc/nixos/configuration.nix for notable changes that might emerge in future versions of nix. +Also, you will most likely need to update the version and hashsum for the firefox extension `bypass-paywalls-clean`. + *** NixOS #+begin_src nix :noweb yes :tangle profiles/TEMPLATE/nixos.nix @@ -539,9 +541,18 @@ No matter what you do, check the initial /etc/nixos/configuration.nix for notabl }; # Bootloader - boot.loader.grub.enable = true; - boot.loader.grub.device = "/dev/sda"; # TEMPLATE - if only one disk, this will work - boot.loader.grub.useOSProber = true; + # use this for single partition boot + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + }; + + # ------------------------------------- + # alternate setup using grub + # boot.loader.grub.enable = true; + # boot.loader.grub.device = "/dev/sda"; # TEMPLATE - if only one disk, this will work + # boot.loader.grub.useOSProber = true; + # ------------------------------------- # -------------------------------------- # you might need a configuration like this instead: @@ -1348,7 +1359,7 @@ New setup for the SP3, this time using NixOS - another machine will take over th # waybar config - TEMPLATE - update for cores and temp programs.waybar.settings.mainBar = { cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}"; - temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input"; + temperature.hwmon-path = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon4/temp1_input"; }; <> @@ -1361,12 +1372,12 @@ New setup for the SP3, this time using NixOS - another machine will take over th xkb_layout = "us"; xkb_variant = "altgr-intl"; }; - # "1:1:AT_Translated_Set_2_keyboard" = { # TEMPLATE - # xkb_layout = "us"; - # xkb_options = "grp:win_space_toggle"; + "1:1:AT_Translated_Set_2_keyboard" = { # TEMPLATE + xkb_layout = "us"; + xkb_options = "grp:win_space_toggle"; # # xkb_options = "ctrl:nocaps,grp:win_space_toggle"; - # xkb_variant = "altgr-intl"; - # }; + xkb_variant = "altgr-intl"; + }; "type:touchpad" = { dwt = "enabled"; tap = "enabled"; @@ -1377,8 +1388,8 @@ New setup for the SP3, this time using NixOS - another machine will take over th }; output = { - DP-1 = { - mode = "2560x1440"; # TEMPLATE + eDP-1 = { + mode = "1920x1080"; # TEMPLATE scale = "1"; bg = "~/.dotfiles/wallpaper/lenovowp.png fill"; }; @@ -1388,6 +1399,17 @@ New setup for the SP3, this time using NixOS - another machine will take over th modifier = config.wayland.windowManager.sway.config.modifier; in { "${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\""; + "XF86MonBrightnessUp" = "exec brightnessctl set +5%"; + "XF86MonBrightnessDown"= "exec brightnessctl set 5%-"; + "XF86Display" = "exec wl-mirror eDP-1"; + # "XF86WLAN" = "exec wl-mirror eDP-1"; + # "XF86Messenger" = "exec wl-mirror eDP-1"; + # "XF86Go" = "exec wl-mirror eDP-1"; + # "XF86Favorites" = "exec wl-mirror eDP-1"; + # "XF86HomePage" = "exec wtype -P Escape -p Escape"; + # "XF86AudioLowerVolume" = "pactl set-sink-volume alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink -5%"; + # "XF86AudioRaiseVolume" = "pactl set-sink-volume alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink +5% "; + "XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle"; }; startup = [ @@ -3387,7 +3409,7 @@ Also, I define some useful shell scripts here. # games lutris - wine + #wine # firefox related tridactyl-native @@ -3581,6 +3603,8 @@ I use sops-nix to handle secrets that I want to have available on my machines at - cp ~/.ssh/sops.pub ~/.dotfiles/secrets/keys/NAME.pub - update entry for sops.age.sshKeyPaths +*Changes are only visible after reboot.* + #+begin_src nix :tangle profiles/common/home.nix sops.defaultSopsFile = "${config.home.homeDirectory}/.dotfiles/secrets/general/secrets.yaml"; @@ -4792,14 +4816,14 @@ Again I am just using the first bar option here that I was able to find good und # the rest of the information is also found in the manifest.json, but might not be # needed - (let version = "3.4.5.0"; + (let version = "3.5.4.0"; in buildFirefoxXpiAddon { pname = "bypass-paywalls-clean"; inherit version; addonId = "magnolia@12.34"; url = - "https://gitlab.com/magnolia1234/bpc-uploads/-/raw/master/bypass_paywalls_clean-3.4.5.0.xpi"; - sha256 = "703d30c15b88291bd0305cc59013693aea5f75a40ea98fb8e252d1c7bfb43514"; + "https://gitlab.com/magnolia1234/bpc-uploads/-/raw/master/bypass_paywalls_clean-3.5.4.0.xpi"; + sha256 = "ab81f711c30c4f7a010d69bd964bdfaf0179802c0b27d0a88c73c0aa6b044803"; meta = with lib; { homepage = "https://gitlab.com/magnolia1234/bypass-paywalls-firefox-clean"; diff --git a/profiles/TEMPLATE/nixos.nix b/profiles/TEMPLATE/nixos.nix index c9c02fd..6ca659b 100644 --- a/profiles/TEMPLATE/nixos.nix +++ b/profiles/TEMPLATE/nixos.nix @@ -15,9 +15,18 @@ }; # Bootloader - boot.loader.grub.enable = true; - boot.loader.grub.device = "/dev/sda"; # TEMPLATE - if only one disk, this will work - boot.loader.grub.useOSProber = true; + # use this for single partition boot + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + }; + + # ------------------------------------- + # alternate setup using grub + # boot.loader.grub.enable = true; + # boot.loader.grub.device = "/dev/sda"; # TEMPLATE - if only one disk, this will work + # boot.loader.grub.useOSProber = true; + # ------------------------------------- # -------------------------------------- # you might need a configuration like this instead: diff --git a/profiles/common/home.nix b/profiles/common/home.nix index 68148ff..dba8df5 100644 --- a/profiles/common/home.nix +++ b/profiles/common/home.nix @@ -1321,14 +1321,14 @@ programs.firefox = { # the rest of the information is also found in the manifest.json, but might not be # needed - (let version = "3.4.5.0"; + (let version = "3.5.4.0"; in buildFirefoxXpiAddon { pname = "bypass-paywalls-clean"; inherit version; addonId = "magnolia@12.34"; url = - "https://gitlab.com/magnolia1234/bpc-uploads/-/raw/master/bypass_paywalls_clean-3.4.5.0.xpi"; - sha256 = "703d30c15b88291bd0305cc59013693aea5f75a40ea98fb8e252d1c7bfb43514"; + "https://gitlab.com/magnolia1234/bpc-uploads/-/raw/master/bypass_paywalls_clean-3.5.4.0.xpi"; + sha256 = "ab81f711c30c4f7a010d69bd964bdfaf0179802c0b27d0a88c73c0aa6b044803"; meta = with lib; { homepage = "https://gitlab.com/magnolia1234/bypass-paywalls-firefox-clean"; diff --git a/profiles/fourside/home.nix b/profiles/fourside/home.nix index 1aabe30..16d1eb0 100644 --- a/profiles/fourside/home.nix +++ b/profiles/fourside/home.nix @@ -21,7 +21,7 @@ # waybar config - TEMPLATE - update for cores and temp programs.waybar.settings.mainBar = { cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}"; - temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input"; + temperature.hwmon-path = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon4/temp1_input"; }; @@ -51,12 +51,12 @@ xkb_layout = "us"; xkb_variant = "altgr-intl"; }; - # "1:1:AT_Translated_Set_2_keyboard" = { # TEMPLATE - # xkb_layout = "us"; - # xkb_options = "grp:win_space_toggle"; + "1:1:AT_Translated_Set_2_keyboard" = { # TEMPLATE + xkb_layout = "us"; + xkb_options = "grp:win_space_toggle"; # # xkb_options = "ctrl:nocaps,grp:win_space_toggle"; - # xkb_variant = "altgr-intl"; - # }; + xkb_variant = "altgr-intl"; + }; "type:touchpad" = { dwt = "enabled"; tap = "enabled"; @@ -67,8 +67,8 @@ }; output = { - DP-1 = { - mode = "2560x1440"; # TEMPLATE + eDP-1 = { + mode = "1920x1080"; # TEMPLATE scale = "1"; bg = "~/.dotfiles/wallpaper/lenovowp.png fill"; }; @@ -78,6 +78,17 @@ modifier = config.wayland.windowManager.sway.config.modifier; in { "${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\""; + "XF86MonBrightnessUp" = "exec brightnessctl set +5%"; + "XF86MonBrightnessDown"= "exec brightnessctl set 5%-"; + "XF86Display" = "exec wl-mirror eDP-1"; + # "XF86WLAN" = "exec wl-mirror eDP-1"; + # "XF86Messenger" = "exec wl-mirror eDP-1"; + # "XF86Go" = "exec wl-mirror eDP-1"; + # "XF86Favorites" = "exec wl-mirror eDP-1"; + # "XF86HomePage" = "exec wtype -P Escape -p Escape"; + # "XF86AudioLowerVolume" = "pactl set-sink-volume alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink -5%"; + # "XF86AudioRaiseVolume" = "pactl set-sink-volume alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink +5% "; + "XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle"; }; startup = [ diff --git a/programs/emacs/custom.el b/programs/emacs/custom.el index fa10b22..93650b4 100644 --- a/programs/emacs/custom.el +++ b/programs/emacs/custom.el @@ -8,6 +8,7 @@ "badd1a5e20bd0c29f4fe863f3b480992c65ef1fa63951f59aa5d6b129a3f9c4c" "2e05569868dc11a52b08926b4c1a27da77580daa9321773d92822f7a639956ce" default)) + '(org-agenda-files nil) '(send-mail-function 'sendmail-send-it)) ;; (custom-set-faces ;; ;; custom-set-faces was added by Custom. diff --git a/programs/emacs/init.el b/programs/emacs/init.el index cf1e608..4dc0b78 100644 --- a/programs/emacs/init.el +++ b/programs/emacs/init.el @@ -23,7 +23,7 @@ swarsel-anki-org-file "Anki.org" swarsel-tasks-org-file "Tasks.org" swarsel-archive-org-file "Archive.org" - swarsel-org-folder-name "org" + swarsel-org-folder-name "Org" swarsel-obsidian-daily-folder-name "⭐ Personal/Journal" swarsel-obsidian-folder-name "Obsidian" swarsel-obsidian-vault-name "Main") @@ -249,8 +249,9 @@ "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mp" '(popper-toggle :which-key "popper") "md" '(dirvish :which-key "dirvish") - ;; "c" '(:ignore c :which-key "capture") + "c" '(:ignore c :which-key "capture") ;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal") + "ct" '((lambda () (interactive) (org-capture nil "tt")) :which-key "tasks") ;; "cs" '(markdown-download-screenshot :which-key "screenshot") "l" '(:ignore l :which-key "links") "le" '((lambda () (interactive) (find-file swarsel-emacs-org-filepath)) :which-key "Emacs.org") @@ -606,10 +607,10 @@ (variable-pitch-mode 1) ;;(auto-fill-mode 0) (setq display-line-numbers-type 'relative - display-line-numbers-current-absolute 1 - display-line-numbers-width-start nil - display-line-numbers-width 6 - display-line-numbers-grow-only 1) + display-line-numbers-current-absolute 1 + display-line-numbers-width-start nil + display-line-numbers-width 6 + display-line-numbers-grow-only 1) (add-hook 'org-tab-first-hook 'org-end-of-line) (visual-line-mode 1)) ;; (setq evil-auto-indent nil) @@ -627,7 +628,7 @@ :bind ("C-" . org-fold-outer) :config (setq org-ellipsis " ⤵" - org-hide-emphasis-markers t) + org-hide-emphasis-markers t) (setq org-startup-folded t) (setq org-support-shift-select t) ;; (setq org-agenda-start-with-log-mode t) @@ -637,11 +638,12 @@ (setq org-image-actual-width nil) (setq org-format-latex-options '(:foreground "White" :background default :scale 2.0 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) - ;; (setq org-agenda-files - ;; '(swarsel-org-tasks-filepath - ;; swarsel-org-archive-filepath + (setq org-agenda-files + '("/home/swarsel/Nextcloud/Org/Tasks.org" + "/home/swarsel/Nextcloud/Org/Archive.org" + "/home/swarsel/Calendars/leon_cal.org")) ;; swarsel-org-anki-filepath)) - (setq org-agenda-files '("/home/swarsel/Calendars/leon_cal.org")) + ;; (setq org-agenda-files '("/home/swarsel/Calendars/leon_cal.org")) ;; (require 'org-habit) @@ -649,13 +651,13 @@ ;; (setq org-habit-graph-column 60) ;; (setq org-todo-keywords - ;; '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)") + ;; '((sequence "TODO(t)" "NEXT(n)" "|" "X1DONE(d!)") ;; (sequence "BACKLOG(b)" "PLAN(p)" "READY(r)" "ACTIVE(a)" "REVIEW(v)" "WAIT(w@/!)" "HOLD(h)" "|" "COMPLETED(c)" "CANC(k@)"))) - ;; (setq org-refile-targets - ;; '((swarsel-archive-org-file :maxlevel . 1) + (setq org-refile-targets + '((swarsel-archive-org-file :maxlevel . 1) ;; (swarsel-anki-org-file :maxlevel . 1) - ;; (swarsel-tasks-org-file :maxlevel . 1))) + (swarsel-tasks-org-file :maxlevel . 1))) ;; ;; Configure custom agenda views ;; (setq org-agenda-custom-commands @@ -705,8 +707,8 @@ ;; ((org-agenda-overriding-header "Cancelled Projects") ;; (org-agenda-files org-agenda-files))))))) - ;; (setq org-capture-templates - ;; `( + (setq org-capture-templates + `( ;; ("a" "Anki basic" ;; entry ;; (file+headline swarsel-org-anki-filepath "Dispatch") @@ -716,9 +718,10 @@ ;; entry ;; (file+headline org-swarsel-anki-file "Dispatch") ;; "* %<%H:%M>\n:PROPERTIES:\n:ANKI_NOTE_TYPE: Cloze\n:ANKI_DECK: 🦁 All::01 ❤️ Various::00 ✨ Allgemein\n:END:\n** Text\n%?\n** Extra\n") - ;; ("t" "Tasks / Projects") - ;; ("tt" "Task" entry (file+olp swarsel-org-tasks-filepath "Inbox") - ;; "* TODO %?\n %U\n %a\n %i" :empty-lines 1) + + ("t" "Tasks / Projects") + ("tt" "Task" entry (file+olp swarsel-org-tasks-filepath "Inbox") + "* TODO %?\n %U\n %i" :empty-lines 1) ;; ("j" "Journal Entries") ;; ("jj" "Journal" entry @@ -726,7 +729,8 @@ ;; "\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n" ;; ;; ,(dw/read-file-as-string "~/Notes/Templates/Daily.org") ;; :clock-in :clock-resume - ;; :empty-lines 1))) + ;; :empty-lines 1) + )) ;; (swarsel/org-font-setup) ) diff --git a/secrets/general/secrets.yaml b/secrets/general/secrets.yaml index 3dd8fd4..4220005 100644 --- a/secrets/general/secrets.yaml +++ b/secrets/general/secrets.yaml @@ -1,8 +1,7 @@ -mrswarsel: ENC[AES256_GCM,data:3gOMVqp4mTGsbPPJwlEnZhjtZg==,iv:ZP+iS13CvVZ7VuGzBd7Or0kkuVKqepOBH8MViugkNzk=,tag:yF+CO+McQ6aEY1z8nsnJXQ==,type:str] -nautilus: ENC[AES256_GCM,data:pOhMQ8tq7g4HgGLeEgBVWZS3gQ==,iv:BYKjp1+EcbY3kfGthvETIxFJT/WMl3dwUkFHEnGZjPQ=,tag:VHSm8xgmxeUVxnOPqqQr1g==,type:str] -leon: ENC[AES256_GCM,data:n7Xt9zBj7BQnwNMWg1/2xOUJgQ==,iv:SI27QnW4CD2oOWq8sSrDg7I0xhW6GQ5vWSKq/pIrNTI=,tag:KUpTXFgrJwtqFAK/z49cig==,type:str] -caldav: ENC[AES256_GCM,data:ZYLNxPQTrc0xFSkMWN4HzduFz0GVcCCJVbmlissVN4oTgAbPEqp/sD0ONXSyQb7teCm3vMZNWXJGtLqBHqlxOpQEO9RI8f9ZiyfTGw==,iv:A3CZp/lSBQSAgzdcBx9RSjsoPh4Hj9Hteo4kHpYQ5/w=,tag:lvRba31njS8E0GS5o8jLUg==,type:str] -blub: ENC[AES256_GCM,data:APKMMw==,iv:ayPFgPyAJB9yJ3437e9CvxvpT6B3YNWmA/vLVDPXBmo=,tag:657hhELqmATY510KpzLdsA==,type:str] +mrswarsel: ENC[AES256_GCM,data:KorCRr6QGzwXXXVcuox5lhSQrg==,iv:rdAlpEYnQaeLH/cXDLixVOZj0mmkynewNlp53L/U4lo=,tag:gE19U/CPl2hU38VYgdLlGQ==,type:str] +nautilus: ENC[AES256_GCM,data:KTBIwO/m/O3RfYBf0kTdgM83mQ==,iv:fCVfS3eYE0F9Jhju+uT0rHcFPBMLYtsJURILMATvjYA=,tag:pzpVeK8YYYl6NgC0FRnCoQ==,type:str] +leon: ENC[AES256_GCM,data:5OAaO/8XiOJEUicx+otLoUUG9w==,iv:cxoNYOQCFIjX53ZgaL/Pu4ZDeL2EByClCIWG2JcRHMw=,tag:954bA4bjcLZsv2hFbtykSQ==,type:str] +caldav: ENC[AES256_GCM,data:CfWibtX+/BJcpXJNlpO8dpYJsdORzQZX5pEXX82CB2z+ZpIhIF66+x1GsXFFgP+MnQOS6O7hSUgckxtJBh7Bmy9jLmcdf3VMwnaAcg==,iv:bcahyj8MXSxvFOveFnXbEWHG03yHURb2zWelT5MiDo0=,tag:EguaYYuYNZUQlrKE8zjjrQ==,type:str] sops: kms: [] gcp_kms: [] @@ -12,62 +11,71 @@ sops: - recipient: age1zdjm8qa5t25mca0xxhhkpuh85mgg4l267mqjj2pdttksq7zg4unqdmqyp4 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhZE1MRHhFV0FUckxicGw1 - czU1VVd6SmxOcUorc3BTUFlkRTZVS3ZNdVZBCnBRUjkyL2tTTWh4Vkg1TTIwL1pP - YUwvRmpNck51UG1XTm43dko2VVcyRU0KLS0tIHcrcXBOQjA3dzRBdnB1OFNmTjBj - M2tEdVh3LzdPUXpJRW5kU2FLMFV1cXcKalszCBeFHQF5TltqvSPyY28z3AP2/Bqa - LN1lRHfhOlGx1zgKf0ZcSvF9VS9pKpBG2plLAPlICYNuhiz21wSVLA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmN3pCM0l5VEQ4ZERDRVBx + MllTOXQwSEtjeDNSM1JqVFU2YmlzTmYrekFvClp2eG51VXlnb3dQTzJDbmw2czVv + NEM0OHBCNDJmbnIwWkxsYzg0Z3ZteVUKLS0tIDZLTW1GVUtPcUVKNmpvd0swREZF + ZEF0SCtWNEE4b2FJaVZBdGZLWXJMNGMKAcZCLU47OB8n3RhZOxMqUPxrjp2lXfuX + kG4MITOw/lw067YP1REpTqwPj4Ylleqx7KBafEsfzXPuuUh9gPgKKg== -----END AGE ENCRYPTED FILE----- - recipient: age1zlnxraee6tddr07xn59mx5rdexw8qxryd53eqlsajasfhfy78fkq705dfg enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQeENaMjlINVNtYkFJUmJn - QWhvRjhuSlYrTFlHQ3hlWDdCcXhhMGd0S1VRClRjYXVIMEhBWUlhWXBoRXppU1RD - ekx3SFlWWllQTkxSRk9JVHFOUFk4TkEKLS0tIEtmdmhVMDdXZ2crZHNGVG1ZK2Jp - d3NRdW9SMTNaL21XK1dxcURFNXhxVWcKB8GLlzi4a+9yLc/sZ/W5adJxalwDTNtC - p4BvANHSyXyXjUXb8yrlp201PbWrrU7wVv0+rjzUgDz5X5w9GFtmGA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBMVFoQTFGYmRreVhqQ2Zl + aTZlb3VrZjJzZUp5OUM4SEhGcjg0YlBWdWhBCk1ISzhCZ1FsVjdYaUpKOXlVMkxU + b0doSlVKN0hmSTRtTWFnL0JNR0JWSTQKLS0tIFVWZGNqVWVZa3dkSllqZ2Z2emdt + M3VYZW4yd2hza1pBUGhnSTlsRWJOd0kKebxg9WhWN4PI7GUNZJrKF9z5KWU6ZCS/ + UpnaXNQJVGihJ5QaO+WxyCG5ivAwyToHA2aJEgLrHTF9eK1Rd4Wb6w== -----END AGE ENCRYPTED FILE----- - recipient: age1hkajkcje5xvg8jd4zj2e0s9tndpv36hwhn7p38x9lyq2z8g7v45q2nhlej enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkbThaUUNKV0o2cm0xZlV1 - VS82bDBFR09pSVNGRnA3OEZ2VVR4V0FEckVNCk9QWUhCODZQcU9nbTNhMnlMSUxy - Nkk2Z2lMT3N1REIzaDI4bmZmbUJCUWMKLS0tIDVsZXRJV0lTMHcyYnRicUVaVTV5 - TGF4USs2YVNlZnZhM3lZNlpHbm80SzgKxwh4DS1DnV3KFVfPw/8+zGWo/YVnhSYd - Yi1hpRD8yD0eglGVGaWCItniPLRFDPpHL2B6kkHsYRx3Rl7daSJUVA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMdEtIWnJnY0JYMHlRUjZ4 + OGx4MlE3N3JnaURnUU1NTyt0Sm82T3N6ZldBCjRkMkxSRG0rajNQczlOUXdFOVcx + VGRhVDJOUW8wN0IvL1lSa3ZSeGlCODQKLS0tIFp3STl1amR5MGd1UDBaRXU4N3J4 + YzhlVnJRU1VFQkxwQmJQaHAwZy8rK1EKlQCB+gtblDchGxZeMgzRLWzpINXHTo6L + UAAHdlvUd3yql5W1RzFvfyepuyG9JzzgP0q5geMoMaQdS4ADUfZ6Ww== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-02-07T16:44:27Z" - mac: ENC[AES256_GCM,data:Xb4aw7kte69Yh3Fvn1PDWZHquqbhXp/CBtfbXqdqknx/uWJ+PtbiM+sYa3qtWcGwbQ2L+M/eoPpl7Iy6o7Odh+mEaVCvarsDzpUXRy2/tXLnYw5fvj4sZeErukObhvWnc4Rm11hKvUGaEpWll/Yvpu5d50PgPFoP2mFV0mZMZQo=,iv:5RJAn+/iWZIytITWqPE1p5d1NHOjMFCNauSZT0/uXfg=,tag:5huUulGRgrBvU9B1rjiTWw==,type:str] + - recipient: age1s3faa0due0fvp9qu2rd8ex0upg4mcms8wl936yazylv72r6nn3rq2xv5g0 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyT2xMc2lYWCtHTHU0ZjAz + NUNHRVlnOThJbmFxN1liSTVvVXNMb2lsVVFJCjdES2dES3grVGI1bStrNHltbHFj + M0QwaXhZUEExYUJtVHRLVllIVDc2aDAKLS0tIFcrZkRjckJXc1N6Q3VweFJJYWo2 + Q0NTRzR0cFVPT2phTlUyL0phU25TdncKD/4ZFw/oR2FEm0U8hUkF6ts5AkxfdXrS + 2KdJTSXqy+UmbMHSoapcMQoeaOkfpIpmHZZzwhHzOBd3YPtBYMc91Q== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-02-07T21:18:21Z" + mac: ENC[AES256_GCM,data:E1mSvKn585SBxhaG/1S8zsRrQx9SiudxqREuyFwURQqnXMLSmiEzzBVg12HzO0JVkl+5FU0JNUR0E/h3oe7ykgbhFx8yk6NkbSJeWbT8YUbnYC6rzkHx6joAAb7zHpOBDyI700dlxCUzDJyEZ+TO1ZlG0qjhzKhGp/apO7wMmVw=,iv:cEXxikWT/Pr9MioELV5SCUg2Es1vy4iHdyozXNQ4aN8=,tag:f9vJFeUdhV9L62RT4FDEDA==,type:str] pgp: - - created_at: "2023-12-13T19:27:54Z" + - created_at: "2024-02-07T21:17:55Z" enc: |- -----BEGIN PGP MESSAGE----- - hQIMAwDh3VI7VctTAQ/9Fua91OmVYzcIVVSmf6fg+ei3XhhTXNg+c81cG36WS2/v - KR6aazDj2soDgV59zHY8QOXArL0vZSF/GHKW0rBv/cFPog1s81+8vGaPfRJ27+EQ - FUFYB89Y/mIa1j04AA5hPEDH4diQa/puOcwB8JpWR+6DFttQWKVwnMjVuuXhy7no - hgDeKalTzupvqneBSgS0mRDOuO3MBjXN2yLXeMBmDfElBzTAlQvEjsorfxKlKj9g - UpGuiSVH1yRrTZzVCFNiQKViNTqEpBwtdlXJ7b3u7cL1cbI3UzGQATDpaMGU7aUf - hYLKsDjq8toROhPjNJM8Npc7zdfbXqEfpTZFbnqMjLkc5d5Ktm/9kUFL/N5BeVw1 - zQmuZyy1itLyifh5I/48+ZScK1bhdZqRi9LICJZuYxmGdWHR9bFmACNAnpIQOneQ - +JQab133RHI+85ayjnpF3HgZoSmkDxCs0zKxaox5Urv0BBRnh2V5rKof46eQdpoN - p830CvisUka7AbZrJUA/tZHMFCf74CTCOIaiV/BA7c7WP0PGs55Nq7Zy/mdkU1GI - EzEEqgygmw+Uwev0NcWrhbjH3BmyKHMpFK2OjY+fHCblbxZ+nQ+DB5MOkxzhNFJN - 7A4z7b4InDGCUWhdMfrdLYy/5FjMkL8cDpJmKiizA+tfYG5n7jh4wwyt7kcvz6eF - AgwDC9FRLmchgYQBD/9Q6BftJrra6FtZDdl3YcSnDcOE2Ma1v4HXc3DTAIWJmTmU - yZJCb3fMFfvhxNU3xskCw8K7hFgeK16jTtC9xZw4eCVfVtMddV234wmziZoE8cwT - S4gW/R+G0BG57H3uhtyTDl9kOlYB5sP8xgWYwKLaoi8pY/1uhMRNuJlDjkb1Flqk - vVX70jfydb9nVMbfZ6mQxyNIJXqnhf0RHc6XfMEerQfUpneA/QEE9F5XUIfFX3c9 - pSQ9EfAoKPdcf3umrqCRhOqYaomNxqSI0XminP/inyDi7Q9pTjEmuxlW8WwUw4zp - 51XK3rXyzogQVz4b+I42zSlKAP3pHAQDkIOycvDE/YAdpWYOdeUDwbzbUzxeK0uy - h7LRF5s0ge+gEUHqVVDcBbJLUc42mDRPLp4+tq4rK7u5vfC9ngaW27XldXT9mc7q - IrqaMB30Yc9X2rkdQOs0Iyh1GQ+OKjjgk12aDgNwI/S13oP5r/Z9tgBh83hCVX5/ - OX1wNCk/161IgTZVwtkwmY5waA5qjKJhu8iwGSys1NXZ4WTil1cOf9YCQ6BaXbjC - y+0b+KHznGOfgbbv98SpfcU6eRSd1zFcUFwkilxW5SRjuudX41DhBj86CUCg7KrJ - bqQN/uNYENsP2MPGgF0/UkF5dpiXUfM5UJQROrBtuNl61PXNP+s4AR9NBJwMh9Je - AV+1Vs9AYA3rSjZ1pPWyG451DQ3dxyosYEIC7/HQz2ps3bggtUucUZnhGyb06OLS - wuxEcpF/5UHq56YTRqR2rae4VWxK6QW69ok19dBnJ5K9ZS3vhmLqBeO8t6TOLQ== - =sMxt + hQIMAwDh3VI7VctTAQ//QHYJAlJUacTFHu7iIK2q3mPdE3Zrn7AFK/JmhSIjyiS1 + fJ8EzsPdgydlDiwGPoQqpyWZRccblek1PEVyxjQSjnGSU5hmAfYQCnT3zvBGgljS + UY2pnaFeXO7Tvo0rGgrUEAkkFD9WTC3UFcb1ZDo/OmybA3eVLMbvMsPXDGXln2Pg + KkxoblQIE7OAOMWg+YaS60J1DFGIY2Zj6BQ5K8LkA4lfgYWkmpvmwU8CzE/rlv2s + hsRL7pa1WMYAgdYsCemk2egohJA3kOmdlsGiIguY22AeeVadsJJEHOEucsIs36El + 7u9b/TxusncNa2eQvnVak18zr4LPOr/1fmMxzmQWwDhRZeKhK1Y6LBU1XqvOggaL + rcAx42oCR16MEiMFty2iFyRvBSCCXOur45L/TsCDUTkKLdgunU8HFyyE0NIJ+Qig + Ffum+hfZ6UYv/nkz6Agfeu5ZSikok97+Lagh1GF0VawCSi5xq49Ky0i9NLFlPq3G + cFcI2qaei3EtY9CKeYmU1OdT4RX2aO8XwXH4LyC6TPQ4hgjV/DlLMSQIUd6RDLyT + 2Aw3HkeKm2CfEkxTLlCvGjcYGB/b0tH5Y6n2dJUcFocUlxQem8xf+FFbyeR8CBDK + b9LXbBC0ywO9WHFXFIcjYU+Pb+O0MAK6nxTVDLoTmZXn61v041Nfonz9q1M2K72F + AgwDC9FRLmchgYQBEAC9IUmTrFZowCCWg18VWPr5sH7wV1QqMLkCIFsT+mAdZ2dC + 96DzY2Y+8wSOnQVIlqWU8168v0qYtjN2J/wBTjlAWX6e7Yeg6mhulqiMLG6VrGyh + +M3u6Tfyp5LHIJbGkHTrlVrfdfU7J3pk3yercWyd2GW6Rq/W5bwvmvebseHiC6VS + N3NrH/MggW1g/V92ARIuNylK96mrVq7BuCB7VNlCIDEmmoI5G/AN822UXauvXZ1K + my/F6W+QOZFCtzgIAe7qM8MGsA2SYWb+yAfhxQJdlwT3V0lIX1q8brv/VPd+kL/1 + ABP3NyU3zZ/x1q9Ur3HZGd3MdvumHZd4pCZuMHiYJMfXpmnYKrk6Fmw9sMw6ztfx + VRI6ZoiRiK/R391WPrF14PuN9ji0tALPAZ1SubKYSI7FwSSEFyVTTCAsS/EkXUo/ + 5SI+edynod8UtYSMqLfMEDqwXYnH2YHol4yhdiaa54CoOz9bc+O8PuYYyZGhzmrb + nfEItWOuHEf4VNZSjj93Rrg/7rhJLScK+Sx8ylSMoT6nNE9k3Hw3G4TeEgbR3lTn + v55xILKqN2BjeVab3KSvEac+yooz3xFmkCmB6wzSu5wMfz5HhO1ASUHs7TSey6B4 + o/oRxR9uIUg/vXfR49750krKrs6V2u6x7DCLwpyNcQUyprltJfoxPvz4viA9kdJc + AUEOAMtiSSudTdKEH9Xx4x2ioMKRRcPgB1FuvDz/+Bl8VBj7db7zs5v0qPHg1/p7 + 4LRZ04XghV3qSmwI8va1RFPMOnQbOCkz0wWZsprCQMYAAktc6VrCj6rhJHQ= + =FV09 -----END PGP MESSAGE----- fp: 4BE7925262289B476DBBC17B76FD3810215AE097 unencrypted_suffix: _unencrypted