diff --git a/SwarselSystems.org b/SwarselSystems.org index 60c058d..9125b1c 100644 --- a/SwarselSystems.org +++ b/SwarselSystems.org @@ -5935,6 +5935,40 @@ Also, the system state version is set here. No need to touch it. } #+end_src +**** Emacs (RSS Server) + +#+begin_src nix :tangle profiles/server/common/nixos/emacs.nix + { lib, config, ... }: + { + config = lib.mkIf config.swarselsystems.server.emacs { + + services.emacs = { + enable = true; + startWithGraphical = false; + }; + + services.nginx = { + virtualHosts = { + "signpost.swarsel.win" = { + enableACME = true; + forceSSL = true; + acmeRoot = null; + locations = { + "/" = { + proxyPass = "http://localhost:54169"; + extraConfig = '' + client_max_body_size 0; + ''; + }; + }; + }; + }; + }; + }; + + } +#+end_src + *** Optional :PROPERTIES: @@ -9603,6 +9637,7 @@ I also define some keybinds to some combinations directly. Those are used mostly "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mp" '(popper-toggle :which-key "popper") "md" '(dirvish :which-key "dirvish") + "mr" '(elfeed :which-key "elfeed") "o" '(:ignore o :which-key "org") "op" '((lambda () (interactive) (org-present)) :which-key "org-present") "oa" '((lambda () (interactive) (org-agenda)) :which-key "org-agenda") @@ -11139,6 +11174,77 @@ This mode is not automatically activated anywhere because I only rarely need it. #+end_src +*** elfeed + +#+begin_src emacs-lisp + + ;; (setq elfeed-feeds + ;; '("https://www.coindesk.com/arc/outboundfeeds/rss/" + ;; "https://feed.phenx.de/lootscraper_gog_game.xml" + ;; "https://feed.phenx.de/lootscraper_ubisoft_game.xml" + ;; "https://hnrss.org/frontpage" + ;; "https://www.derstandard.at/rss/inland" + ;; "https://www.derstandard.at/rss/international" + ;; "https://www.derstandard.at/rss/kultur" + ;; "https://www.derstandard.at/rss/wissenschaft" + ;; "https://www.rfc-editor.org/rfcrss.xml" + ;; "https://waitbutwhy.com/feed" + ;; "https://steamcommunity.com/groups/freegamesfinders/rss/")) + + (use-package elfeed + :ensure t + :bind (:map elfeed-search-mode-map + ; ("A" . bjm/elfeed-show-all) + ; ("E" . bjm/elfeed-show-emacs) + ; ("D" . bjm/elfeed-show-daily) + ("q" . bjm/elfeed-save-db-and-bury))) + + + (require 'elfeed) + + ;; Load elfeed-org + (use-package elfeed-org + :config + (elfeed-org) + (setq rmh-elfeed-org-files (list "~/.elfeed/elfeed.org")) + ) + + (use-package elfeed-goodies) + (elfeed-goodies/setup) + + (use-package elfeed-web) + + ;;functions to support syncing .elfeed between machines + ;;makes sure elfeed reads index from disk before launching + (defun bjm/elfeed-load-db-and-open () + "Wrapper to load the elfeed db from disk before opening" + (interactive) + (elfeed-db-load) + (elfeed) + (elfeed-search-update--force) + (elfeed-update)) + + ;;write to disk when quiting + (defun bjm/elfeed-save-db-and-bury () + "Wrapper to save the elfeed db to disk before burying buffer" + (interactive) + (elfeed-db-save) + (quit-window)) + + + (global-set-key (kbd "C-c w") 'bjm/elfeed-load-db-and-open) + + + (define-key elfeed-show-mode-map (kbd ";") 'visual-fill-column-mode) + (define-key elfeed-show-mode-map (kbd "j") 'elfeed-goodies/split-show-next) + (define-key elfeed-show-mode-map (kbd "k") 'elfeed-goodies/split-show-prev) + (define-key elfeed-search-mode-map (kbd "j") 'next-line) + (define-key elfeed-search-mode-map (kbd "k") 'previous-line) + (define-key elfeed-show-mode-map (kbd "S-SPC") 'scroll-down-command) + +#+end_src + + *** darkroom :PROPERTIES: :CUSTOM_ID: h:94d4a0dc-b0d7-4702-b760-beeaa6da2b8f diff --git a/programs/emacs/init.el b/programs/emacs/init.el index 6381f20..55a69e2 100644 --- a/programs/emacs/init.el +++ b/programs/emacs/init.el @@ -330,6 +330,7 @@ create a new one." "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mp" '(popper-toggle :which-key "popper") "md" '(dirvish :which-key "dirvish") + "mr" '(elfeed :which-key "elfeed") "o" '(:ignore o :which-key "org") "op" '((lambda () (interactive) (org-present)) :which-key "org-present") "oa" '((lambda () (interactive) (org-agenda)) :which-key "org-agenda") @@ -1208,6 +1209,70 @@ create a new one." (setq olivetti-body-width 100) (setq olivetti-recall-visual-line-mode-entry-state t)) +;; (setq elfeed-feeds +;; '("https://www.coindesk.com/arc/outboundfeeds/rss/" +;; "https://feed.phenx.de/lootscraper_gog_game.xml" +;; "https://feed.phenx.de/lootscraper_ubisoft_game.xml" +;; "https://hnrss.org/frontpage" +;; "https://www.derstandard.at/rss/inland" +;; "https://www.derstandard.at/rss/international" +;; "https://www.derstandard.at/rss/kultur" +;; "https://www.derstandard.at/rss/wissenschaft" +;; "https://www.rfc-editor.org/rfcrss.xml" +;; "https://waitbutwhy.com/feed" +;; "https://steamcommunity.com/groups/freegamesfinders/rss/")) + +(use-package elfeed + :ensure t + :bind (:map elfeed-search-mode-map + ; ("A" . bjm/elfeed-show-all) + ; ("E" . bjm/elfeed-show-emacs) + ; ("D" . bjm/elfeed-show-daily) + ("q" . bjm/elfeed-save-db-and-bury))) + + +(require 'elfeed) + +;; Load elfeed-org +(use-package elfeed-org + :config + (elfeed-org) + (setq rmh-elfeed-org-files (list "~/.elfeed/elfeed.org")) + ) + +(use-package elfeed-goodies) +(elfeed-goodies/setup) + +(use-package elfeed-web) + +;;functions to support syncing .elfeed between machines +;;makes sure elfeed reads index from disk before launching +(defun bjm/elfeed-load-db-and-open () + "Wrapper to load the elfeed db from disk before opening" + (interactive) + (elfeed-db-load) + (elfeed) + (elfeed-search-update--force) + (elfeed-update)) + +;;write to disk when quiting +(defun bjm/elfeed-save-db-and-bury () + "Wrapper to save the elfeed db to disk before burying buffer" + (interactive) + (elfeed-db-save) + (quit-window)) + + +(global-set-key (kbd "C-c w") 'bjm/elfeed-load-db-and-open) + + +(define-key elfeed-show-mode-map (kbd ";") 'visual-fill-column-mode) +(define-key elfeed-show-mode-map (kbd "j") 'elfeed-goodies/split-show-next) +(define-key elfeed-show-mode-map (kbd "k") 'elfeed-goodies/split-show-prev) +(define-key elfeed-search-mode-map (kbd "j") 'next-line) +(define-key elfeed-search-mode-map (kbd "k") 'previous-line) +(define-key elfeed-show-mode-map (kbd "S-SPC") 'scroll-down-command) + (use-package darkroom :init (setq darkroom-text-scale-increase 3)) diff --git a/programs/emacs/server.el b/programs/emacs/server.el new file mode 100644 index 0000000..ab00877 --- /dev/null +++ b/programs/emacs/server.el @@ -0,0 +1,102 @@ +;; package setup here +(require 'package) + +(package-initialize nil) +(setq package-enable-at-startup nil) + +(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) + +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/") t) + +(add-to-list 'package-archives + '("marmalade" . + "http://marmalade-repo.org/packages/")) + +(package-initialize) + +;; general add packages to list +(let ((default-directory "~/.emacs.d/elpa/")) + (normal-top-level-add-subdirs-to-load-path)) + +;; make sure 'use-package is installed +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +;;; use-package +(require 'use-package) + +;; Load elfeed +(use-package elfeed + :ensure t + :bind (:map elfeed-search-mode-map + ; ("A" . bjm/elfeed-show-all) + ; ("E" . bjm/elfeed-show-emacs) + ; ("D" . bjm/elfeed-show-daily) + ("q" . bjm/elfeed-save-db-and-bury))) + +(require 'elfeed) + +;; Load elfeed-org +(use-package elfeed-org + :ensure t + :config + (elfeed-org) + (setq rmh-elfeed-org-files (list "~/.elfeed/elfeed.org")) + ) + +;; Laod elfeed-goodies +(use-package elfeed-goodies + :ensure t + ) + +(elfeed-goodies/setup) + +;; Load elfeed-web +(use-package elfeed-web + :ensure t + ) + +;;; Elfeed +(global-set-key (kbd "C-x w") 'bjm/elfeed-load-db-and-open) + +(define-key elfeed-show-mode-map (kbd "j") 'elfeed-goodies/split-show-next) +(define-key elfeed-show-mode-map (kbd "k") 'elfeed-goodies/split-show-prev) +(define-key elfeed-search-mode-map (kbd "j") 'next-line) +(define-key elfeed-search-mode-map (kbd "k") 'previous-line) +(define-key elfeed-show-mode-map (kbd "S-SPC") 'scroll-down-command) + + +;;write to disk when quiting +(defun bjm/elfeed-save-db-and-bury () + "Wrapper to save the elfeed db to disk before burying buffer" + (interactive) + (elfeed-db-save) + (quit-window)) + +;;functions to support syncing .elfeed between machines +;;makes sure elfeed reads index from disk before launching +(defun bjm/elfeed-load-db-and-open () + "Wrapper to load the elfeed db from disk before opening" + (interactive) + (elfeed-db-load) + (elfeed) + (elfeed-search-update--force) + (elfeed-update)) + +(defun bjm/elfeed-updater () + "Wrapper to load the elfeed db from disk before opening" + (interactive) + (elfeed-db-save) + (quit-window) + (elfeed-db-load) + (elfeed) + (elfeed-search-update--force) + (elfeed-update)) + +(run-with-timer 0 (* 30 60) 'bjm/elfeed-updater) + +(setq httpd-port 54169) ; replace NNNNN with a port equalling your start port + 10 (or whatever) + +(elfeed-web-start)