Compare commits

...

21 Commits

Author SHA1 Message Date
Ryan Rix 909975e4b7 fix consult-ripgrep 2023-11-29 17:05:29 -08:00
Ryan Rix 40058306d1 remove old code. 2023-11-29 17:04:04 -08:00
Ryan Rix 02570c17fb add nix-shell for feediverse 2023-11-29 17:03:52 -08:00
Ryan Rix f66a1eb855 update CCE lists 2023-11-29 17:03:42 -08:00
Ryan Rix 560a6bfa2f wobserver postgres needs more memory and workers... 2023-11-29 17:02:47 -08:00
Ryan Rix 6903bb0ad1 applications i use 2023-11-29 17:02:08 -08:00
Ryan Rix 06cdf45cfa configure htop 2023-11-29 17:01:59 -08:00
Ryan Rix e0fdc53b80 move zfs config to its own module so that the zfs+restic dont' conflict 2023-11-29 17:01:37 -08:00
Ryan Rix 8443bb7da8 literate imapfilter configuration 2023-11-29 17:01:16 -08:00
Ryan Rix f7b702e88b add paperless-ngx 2023-11-29 17:01:04 -08:00
Ryan Rix e36e47a202 cleanup a bunch of text 2023-11-29 17:00:38 -08:00
Ryan Rix 655c0b2f00 consult+exwm is nice but i don't use this right now. 2023-09-10 19:29:37 -07:00
Ryan Rix a668cd8248 make sure morph gcroots are kept in tmpfs so that my builds stop disappearing before i'm done with them 2023-09-10 19:28:00 -07:00
Ryan Rix 128a0818a7 add enable_push_create_user to let me create repos on push in [gitea] 2023-09-10 19:21:46 -07:00
Ryan Rix 1a6d7b14e1 fix call to `plz` in cce merge function 2023-09-10 19:21:12 -07:00
Ryan Rix 7b5b0039da clean up apps i use list 2023-09-10 19:20:59 -07:00
Ryan Rix 16d3d72516 enable meilisearch on akkoma, in theory it's better than postgres fte 2023-09-10 19:20:23 -07:00
Ryan Rix 4c5e75e1de bring in my old desktop backup scripts and improve it to use restic on nixos 2023-09-10 19:20:02 -07:00
Ryan Rix 628ecb4a50 fix vfio and add dump_iommu commands 2023-09-10 19:19:13 -07:00
Ryan Rix 2802546575 color org-mode todo keywords with ef-themes colors 2023-09-10 19:18:45 -07:00
Ryan Rix cd9b89595a update version pins 2023-09-10 17:48:28 -07:00
36 changed files with 1338 additions and 225 deletions

View File

@ -52,6 +52,7 @@ in{
./akkoma-pwa.nix
./akkoma-config.nix
./akkoma-mrf.nix
./akkoma-search.nix
];
services.postgresql.ensureDatabases = ["akkoma"];
@ -432,6 +433,35 @@ And this is installed, like so:
## why 404?
** Enable =meilisearch= for Full Text Search of Toots
The Postgres FTS in Pleroma seemed like it worked better than the one in Akkoma? Very strange, to me.
Anyways, this is configured based on [[https://docs.akkoma.dev/stable/configuration/search/#meilisearch][the docs]], and Akkoma's secret handling...
#+begin_src nix :tangle ~/arroyo-nix/nixos/akkoma-search.nix
{ config, pkgs, lib, ... }:
{
services.meilisearch = {
enable = true;
noAnalytics = true;
masterKeyEnvironmentFile = "/srv/meilisearch/key.txt";
environment = "production";
};
services.akkoma.config = {
":pleroma"."Pleroma.Search" = {
module = (pkgs.formats.elixirConf { }).lib.mkRaw "Pleroma.Search.Meilisearch";
};
":pleroma"."Pleroma.Search.Meilisearch" = {
url = "http://127.0.0.1:7700";
private_key._secret = "/srv/akkoma/meilisearch_key";
};
};
}
#+end_src
** NEXT Akkoma Moderation Rules
the new [[https://docs.akkoma.dev/stable-docs/configuration/mrf/][Message Rewrite Facility]] x [[https://fediblock.neocities.org/][fediblock]] dropped. I don't see a lot of this stuff and part of me thinks that having it boosted in to my TWKN or even home timeline is a great signal that I should be unfollowing whoever is bringing the filth in to my instance, but also I want to respect my own sanity.
@ -476,3 +506,27 @@ This elixirConf stuff, and the declarative config model, is pretty slick. [[file
(s-join "\n"))
#+end_src
*** Rules aren't exported for personal safety :noexport:
#+NAME: blocked-domains
| domain | reason |
|-------------------------+-------------------|
| poa.st | ugh |
| bae.st | ughh |
| coon.town | ughhh |
| kiwifarms.cc | ughhh |
| chungus.cc | unmoderated |
| cawfee.club | unmoderated |
| freespeechextremist.com | ugh |
| gab.com | ughhh |
| truthsocial.com | lol |
| 80percent.social | ugh + spam |
| rakket.app | ughh |
| 13bells.com | religious weirdos |
| pieville.net | nazis |
| yggdrasil.social | |
| glindr.org | transphobia |
| leafposter.club | racism |
| masochi.st | awful TWKN |
| pedo.school | yanno |

View File

@ -27,6 +27,13 @@ in
enable_mouse = true;
hide_threads = true;
highlight_base_name = true;
hide_kernel_threads = 1;
hide_userland_threads = 1;
column_meters_0 = "LeftCPUs2 Blank Memory Swap PressureStallCPUSome PressureStallIOSome PressureStallMemorySome";
column_meter_modes_0 = "1 2 1 1 2 2 2";
column_meters_1 = "RightCPUs2 Blank Tasks LoadAverage Uptime Systemd DiskIO NetworkIO";
column_meter_modes_1 = "1 2 2 2 2 2 2 2";
};
};
@ -48,7 +55,12 @@ in
enable= false;
source = "${discord}/share/applications/discord.desktop";
};
home.file.".config/autostart/element-desktop.desktop".source = "${element-desktop}/share/applications/element-desktop.desktop";
home.file.".config/autostart/element-desktop.desktop" = {
enable = false;
source = "${element-desktop}/share/applications/element-desktop.desktop";
};
home.file.".config/autostart/yakuake.desktop".source = "${yakuake}/share/applications/org.kde.yakuake.desktop";
home.packages = [
ktorrent
@ -65,11 +77,11 @@ in
(mkNixGLWrapper { name="xournal"; })
(mkNixGLWrapper { name="xournalpp"; })
(mkNixGLWrapper { name="element-desktop"; })
# (mkNixGLWrapper { name="element-desktop"; })
(mkNixGLWrapper { name="schildichat-desktop"; })
(mkNixGLWrapper { name="neochat"; })
(mkNixGLWrapper { name="discord"; })
(mkNixGLWrapper { name="signal-desktop"; })
(mkNixGLWrapper { name="tokodon"; })
# (mkNixGLWrapper { name="tdesktop"; }) # telegram-desktop
pavucontrol
@ -78,9 +90,10 @@ in
transmission-remote-gtk
cataclysm-dda
(mkNixGLWrapper { name="runelite"; })
(mkNixGLWrapper { name="ryujinx"; })
(mkNixGLWrapper { name="yuzu-mainline"; })
(mkNixGLWrapper { name="moonlight-qt"; })
# (mkNixGLWrapper { name="runelite"; })
# (mkNixGLWrapper { name="ryujinx"; })
# (mkNixGLWrapper { name="yuzu-mainline"; })
virt-manager
libvirt
@ -94,6 +107,7 @@ in
plasma5Packages.akonadiconsole
plasma5Packages.kdepim-runtime
plasma5Packages.kdepim-addons
yakuake
okteta
plasma5Packages.kteatime
@ -164,7 +178,6 @@ I only install these on my laptops.
programs.steam.enable = true;
programs.kdeconnect.enable = true;
environment.systemPackages = (with pkgs; [
vim # haha! yes!
home-manager
@ -173,6 +186,8 @@ I only install these on my laptops.
jq
zip
unzip
pv
tree
]);
}
#+end_src

100
backups.org Normal file
View File

@ -0,0 +1,100 @@
:PROPERTIES:
:ID: 47ff77f9-3eae-43eb-886c-7513d05f047f
:ROAM_ALIASES: "set up backups"
:END:
#+TITLE: Secure Backup Infrastructure with Restic
#+filetags: :Project:
#+AUTO_TANGLE: t
#+ARROYO_NIXOS_MODULE: nixos/restic.nix
#+ARROYO_NIXOS_ROLE: server
#+ARCOLOGY_KEY: cce/backups
#+ARCOLOGY_ALLOW_CRAWL: t
* Layer 1: [[id:cce/syncthing][Syncthing]] gives me strength in numbers
Anything that I care about flows in to [[id:20230506T010603.522707][Last Bank]] and is also persisted on my other laptops to prevent single-machine hardware failure or device loss from affecting me.
* Layer 2: Local ZFS Snapshots
ZFS snapshots let me quickly undo any mistakes I make locally, or recover if Syncthing blows away something I care about. NixOS gives me auto-snapshots every fifteen minutes and cleans up old stuff reasonably.
My [[id:20231129T105148.214325][Basic ZFS Configuration]] handles this.
* Layer 3: Remote Disaster Recovery
We're using [[id:11712730-aaf3-4a73-8c7c-6cc00e3a75c3][restic]] this time. Off-site backups are sent to Backblaze B2 which is decently affordable to store, don't charge for inbound bandwidth, and will mail you a disk with a snapshot if you ask for it.
#+begin_src nix :tangle ~/arroyo-nix/nixos/restic.nix
{ pkgs, lib, ... }:
let
reportingSpf = 300;
mkBackup = overrides: {
initialize = true;
timerConfig = {
OnCalendar = "00:00";
RandomizedDelaySec = "2h";
};
passwordFile = "/root/restic-password";
environmentFile = "/root/restic-env";
pruneOpts = [
"--keep-daily 7"
"--keep-weekly 5"
"--keep-monthly 12"
"--keep-yearly 75"
];
} // overrides;
in {
services.restic.backups.tank_media = mkBackup {
repository = "b2:restic-last-bank:media";
paths = ["/media"];
};
systemd.services.restic-backups-tank_media.environment.RESTIC_PROGRESS_FPS = toString (1.0 / reportingSpf);
services.restic.backups.tank_srv = mkBackup { #
repository = "b2:restic-last-bank:srv";
paths = ["/srv"];
timerConfig.OnCalendar = "03:00";
};
systemd.services.restic-backups-tank_srv.environment.RESTIC_PROGRESS_FPS = toString (1.0 / reportingSpf);
services.restic.backups.tank_home = mkBackup {
repository = "b2:restic-last-bank:home";
paths = ["/home"];
timerConfig.OnCalendar = "05:00";
};
systemd.services.restic-backups-tank_home.environment.RESTIC_PROGRESS_FPS = toString (1.0 / reportingSpf);
}
#+end_src
** restic · Backups done right!
:PROPERTIES:
:ID: 11712730-aaf3-4a73-8c7c-6cc00e3a75c3
:ROAM_REFS: https://restic.net/
:END:
#+BEGIN_QUOTE
Restic is a modern backup program that can back up your files:
- from Linux, BSD, Mac and Windows
- to many different storage types, including self-hosted and online services
- easily, being a single executable that you can run without a server or complex setup
- effectively, only transferring the parts that actually changed in the files you back up
- securely, by careful use of cryptography in every part of the process
- verifiably, enabling you to make sure that your files can be restored when needed
- freely - restic is entirely free to use and completely open source
#+END_QUOTE
* NEXT Layer 4: Local Offline =zpool= with snapshots sent to it
I need to buy more disks for this to work. would be nice to store them with [[id:20220920T221429.130071][Alice]] or have a pair that i swap between when I go to San Diego...
* INPROGRESS this entire project needs to be done... :Computer:
:LOGBOOK:
- State "INPROGRESS" from "NEXT" [2023-08-03 Thu 12:08]
:END:
i have enough ideas i just need to stop having tool anxiety and read about borg backup
* NEXT can this be more secure than having a password file legible by root....
the evergreen problem of backups

View File

@ -156,7 +156,7 @@ Updating the Nixpkgs checkout can be by invoking something like =cce/update-nixp
(let ((path "/home/rrix/Code/nixpkgs/"))
(with-current-buffer (find-file-noselect path)
(let* ((channel-status (split-string
(plz "GET" "https://channels.nix.gsc.io/nixos-23.05/latest")
(plz 'get "https://channels.nix.gsc.io/nixos-23.05/latest")
" "))
(nixpkgs-unstable-ts (string-to-number (second channel-status)))
(nixpkgs-unstable (first channel-status)))

231
cce.org
View File

@ -45,112 +45,119 @@ Here is the Emacs module index, [[id:arroyo/emacs][Arroyo Emacs]] generates an =
#+results:
| [[id:cce/configure_packaging][Configure Packaging]] | [[file:/home/rrix/org//cce/packaging.el][module code]] | packaging |
| [[id:20220907T235417.715959][diminish/diminish.el at master · emacsmirror/diminish]] | [[file:/home/rrix/org//cce/diminish.el][module code]] | diminish |
| [[id:cce/shared_cce_helpers][Shared CCE Helpers]] | [[file:/home/rrix/org//cce/cce-common.el][module code]] | cce-common |
| [[id:cce/super_p_runs_commands][Super-P runs commands]] | [[file:/home/rrix/org//cce/super-p.el][module code]] | super-p |
| [[id:cce/gnus][Gnus]] | [[file:/home/rrix/org//cce/gnus.el][module code]] | gnus |
| [[id:cce/disable_transient_mark][Effective Emacs Marking]] | [[file:/home/rrix/org//cce/mark.el][module code]] | mark |
| [[id:cce/selectrum_etc][Completing Read Replacement and Extension]] | [[file:/home/rrix/org//cce/selectrum.el][module code]] | selectrum |
| [[id:mastodon_in_emacs][Mastodon in Emacs]] | [[file:/home/rrix/org//cce/mastodon.el][module code]] | mastodon |
| [[id:cce/emacs_dashboard][Emacs Dashboard]] | [[file:/home/rrix/org//cce/dashboard.el][module code]] | dashboard |
| [[id:cce/use_emacs_as_a_pager][Use Emacs as a Pager]] | [[file:/home/rrix/org//cce/emacs-pager.el][module code]] | emacs-pager |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[file:/home/rrix/org//cce/gnupg.el][module code]] | gnupg |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[file:/home/rrix/org//cce/direnv.el][module code]] | direnv |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[file:/home/rrix/org//cce/vulfpeck.el][module code]] | vulfpeck |
| [[id:cce/mpd][Listening to Music with MPD]] | [[file:/home/rrix/org//cce/mpd.el][module code]] | mpd |
| [[id:cce/beets][Music Library Management with beets]] | [[file:/home/rrix/org//cce/beets.el][module code]] | beets |
| [[id:cce/doom_modeline][Doom Modeline]] | [[file:/home/rrix/org//cce/doom-modeline.el][module code]] | doom-modeline |
| [[id:20210903T141741.263846][Quickly Delete the Current File]] | [[file:/home/rrix/org//cce/delete-this-file.el][module code]] | delete-this-file |
| [[id:20210831T122511.404297][Capturing an Emacs SVG screenshot]] | [[file:/home/rrix/org//cce/svg-screenshot.el][module code]] | svg-screenshot |
| [[id:cce/midnight_mode][Clean Buffers at a Regular Interval with Midnight Mode]] | [[file:/home/rrix/org//cce/midnight-mode.el][module code]] | midnight-mode |
| [[id:cce/deadgrep][Deadgrep is a Great Grep Interface]] | [[file:/home/rrix/org//cce/deadgrep.el][module code]] | deadgrep |
| [[id:cce/undo_tree][Undo and Redo with a tree]] | [[file:/home/rrix/org//cce/undo-tree.el][module code]] | undo-tree |
| [[id:cce/emacs_shell_mode_is_good_enough][Emacs Shell-Mode is Good Enough]] | [[file:/home/rrix/org//cce/shell-mode.el][module code]] | shell-mode |
| [[id:cce/emacs_persistent_scratch][Emacs Persistent Scratch]] | [[file:/home/rrix/org//cce/persistent-scratch.el][module code]] | persistent-scratch |
| [[id:cce/evil_mode][Evil Mode -- Vim in Emacs]] | [[file:/home/rrix/org//cce/evil-mode.el][module code]] | evil-mode |
| [[id:cce/selectrum_etc][Completing Read Replacement and Extension]] | [[file:/home/rrix/org//cce/selectrum.el][module code]] | selectrum |
| [[id:cce/use_emacs_as_a_pager][Use Emacs as a Pager]] | [[file:/home/rrix/org//cce/emacs-pager.el][module code]] | emacs-pager |
| [[id:cce/mpd][Listening to Music with MPD]] | [[file:/home/rrix/org//cce/mpd.el][module code]] | mpd |
| [[id:cce/gnus][Gnus]] | [[file:/home/rrix/org//cce/gnus.el][module code]] | gnus |
| [[id:cce/beets][Music Library Management with beets]] | [[file:/home/rrix/org//cce/beets.el][module code]] | beets |
| [[id:cce/emacs_session][Emacs Session Startup]] | [[file:/home/rrix/org//cce/startup.el][module code]] | startup |
| [[id:20210903T141741.263846][Quickly Delete the Current File]] | [[file:/home/rrix/org//cce/delete-this-file.el][module code]] | delete-this-file |
| [[id:cce/ediff_configuration][Ediff Configuration]] | [[file:/home/rrix/org//cce/ediff-config.el][module code]] | ediff-config |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[file:/home/rrix/org//cce/vulfpeck.el][module code]] | vulfpeck |
| [[id:cce/sudo_edit][Editing Privileged Files with sudo-edit]] | [[file:/home/rrix/org//cce/sudo-edit.el][module code]] | sudo-edit |
| [[id:cce/disable_transient_mark][Effective Emacs Marking]] | [[file:/home/rrix/org//cce/mark.el][module code]] | mark |
| [[id:cce/text_editing_fundamental_opinions][Text Editing Fundamental Opinions]] | [[file:/home/rrix/org//cce/text-editing.el][module code]] | text-editing |
| [[id:cce/async_forever][Running Things in Emacs Forever]] | [[file:/home/rrix/org//cce/async-forever.el][module code]] | async-forever |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[file:/home/rrix/org//cce/gnupg.el][module code]] | gnupg |
| [[id:mastodon_in_emacs][Mastodon in Emacs]] | [[file:/home/rrix/org//cce/mastodon.el][module code]] | mastodon |
| [[id:cce/dired_file_manager][Dired File Manager]] | [[file:/home/rrix/org//cce/dired.el][module code]] | dired |
| [[id:cce/external_display_test_functions][External Display Test Functions]] | [[file:/home/rrix/org//cce/display-test-functions.el][module code]] | display-test-functions |
| [[id:cce/moving_through_text_with_emacs][Moving Through Text with Emacs]] | [[file:/home/rrix/org//cce/text-navigation.el][module code]] | text-navigation |
| [[id:cce/a_basic_firefox_installation][A Basic Firefox Installation]] | [[file:/home/rrix/org//cce/firefox.el][module code]] | firefox |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[file:/home/rrix/org//cce/direnv.el][module code]] | direnv |
| [[id:cce/emacs_dashboard][Emacs Dashboard]] | [[file:/home/rrix/org//cce/dashboard.el][module code]] | dashboard |
| [[id:20210831T122511.404297][Capturing an Emacs SVG screenshot]] | [[file:/home/rrix/org//cce/svg-screenshot.el][module code]] | svg-screenshot |
| [[id:cce/doom_modeline][Doom Modeline]] | [[file:/home/rrix/org//cce/doom-modeline.el][module code]] | doom-modeline |
| [[id:cce/basic_emacs_coding_config][Basic Emacs Coding Config]] | [[file:/home/rrix/org//cce/code-base.el][module code]] | code-base |
| [[id:5cbfa8e8-e392-41aa-9ce6-462b80f29049][Emacs vterm Mode]] | [[file:/home/rrix/org//cce/vterm.el][module code]] | vterm |
| [[id:cce/org_mode_installation][Org Mode Installation]] | [[file:/home/rrix/org//cce/org-mode.el][module code]] | org-mode |
| [[id:BBDB][BBDB]] | [[file:/home/rrix/org//cce/bbdb.el][module code]] | bbdb |
| [[id:cce/evil_mode][Evil Mode -- Vim in Emacs]] | [[file:/home/rrix/org//cce/evil-mode.el][module code]] | evil-mode |
| [[id:cce/text_editing_fundamental_opinions][Text Editing Fundamental Opinions]] | [[file:/home/rrix/org//cce/text-editing.el][module code]] | text-editing |
| [[id:cce/undo_tree][Emacs Undo and Redo with a tree]] | [[file:/home/rrix/org//cce/undo-tree.el][module code]] | undo-tree |
| [[id:cce/org_mode_installation][Org Mode Installation]] | [[file:/home/rrix/org//cce/org-mode.el][module code]] | org-mode |
| [[id:cce/basic_emacs_coding_config][Basic Emacs Coding Config]] | [[file:/home/rrix/org//cce/code-base.el][module code]] | code-base |
| [[id:9a844e09-faa4-42a1-8e9f-c76f476992fa][Decision Log]] | [[file:/home/rrix/org//cce/decision-log.el][module code]] | decision-log |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[file:/home/rrix/org//cce/kde-desktop.el][module code]] | kde-desktop |
| [[id:cce/sending_mail_in_gnus][Sending Mail in Gnus]] | [[file:/home/rrix/org//cce/msmtp.el][module code]] | msmtp |
| [[id:cce/gnus_adaptive_scoring][Gnus Adaptive Scoring]] | [[file:/home/rrix/org//cce/gnus-adaptive.el][module code]] | gnus-adaptive |
| [[id:cce/company_code_completion][Company Mode Code Completion]] | [[file:/home/rrix/org//cce/company.el][module code]] | company |
| [[id:9ce3cedf-7f1b-45e0-aa12-e1bd7d739cbb][Configuring Shell Variables]] | [[file:/home/rrix/org//cce/shell-vars.el][module code]] | shell-vars |
| [[id:cce/mbsync][mbsync for local mail storage]] | [[file:/home/rrix/org//cce/mbsync.el][module code]] | mbsync |
| [[id:cce/exwm][EXWM]] | [[file:/home/rrix/org//cce/exwm.el][module code]] | exwm |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[file:/home/rrix/org//cce/appearance.el][module code]] | appearance |
| [[id:cce/web_browsing][Web Browsing]] | [[file:/home/rrix/org//cce/web-browsing.el][module code]] | web-browsing |
| [[id:cce/flyspell_mode][Spell-checking with Flyspell Mode]] | [[file:/home/rrix/org//cce/flyspell.el][module code]] | flyspell |
| [[id:cce/gnus_evil_mode][Gnus Evil Mode]] | [[file:/home/rrix/org//cce/gnus-evil-mode.el][module code]] | gnus-evil-mode |
| [[id:cce/hydra][Flowing Keybindings with Hydra]] | [[file:/home/rrix/org//cce/hydra-base.el][module code]] | hydra-base |
| [[id:cce/company_code_completion][Company Code Completion]] | [[file:/home/rrix/org//cce/company.el][module code]] | company |
| [[id:cce/gnus_adaptive_scoring][Gnus Adaptive Scoring]] | [[file:/home/rrix/org//cce/gnus-adaptive.el][module code]] | gnus-adaptive |
| [[id:cce/sending_mail_in_gnus][Sending Mail in Gnus]] | [[file:/home/rrix/org//cce/msmtp.el][module code]] | msmtp |
| [[id:cce/mbsync][mbsync for local mail storage]] | [[file:/home/rrix/org//cce/mbsync.el][module code]] | mbsync |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[file:/home/rrix/org//cce/appearance.el][module code]] | appearance |
| [[id:cce/web_browsing][Web Browsing]] | [[file:/home/rrix/org//cce/web-browsing.el][module code]] | web-browsing |
| [[id:cce/basic_language_coverage][Basic Language Coverage]] | [[file:/home/rrix/org//cce/code-modes.el][module code]] | code-modes |
| [[id:cce/code_formatting_aggressively][Code Formatting, Aggressively]] | [[file:/home/rrix/org//cce/aggressive-indent.el][module code]] | aggressive-indent |
| [[id:cce/surfing_through_codebases][Surfing Through Codebases]] | [[file:/home/rrix/org//cce/code-surf.el][module code]] | code-surf |
| [[id:20230111T140523.582960][CCE and Emacs Update Feed]] | [[file:/home/rrix/org//cce/publish-snippets.el][module code]] | publish-snippets |
| [[id:cce/literate_programming][Literate Programming with Org Babel]] | [[file:/home/rrix/org//cce/literate-programming.el][module code]] | literate-programming |
| [[id:cce/ement.el][Encrypted Matrix Chat in Emacs with Ement.el]] | [[file:/home/rrix/org//cce/ement.el][module code]] | ement |
| [[id:2e31b385-a003-4369-a136-c6b78c0917e1][Spaced Repetition Study]] | [[file:/home/rrix/org//cce/org-fc.el][module code]] | org-fc |
| [[id:cce/org-roam][org-roam]] | [[file:/home/rrix/org//cce/org-roam.el][module code]] | org-roam |
| [[id:20221004T113216.759615][Dynamic Org Captures]] | [[file:/home/rrix/org//cce/dynamic-org-capture.el][module code]] | dynamic-org-capture |
| [[id:20211101T215546.006087][Emacs calendar]] | [[file:/home/rrix/org//cce/emacs-calendar.el][module code]] | emacs-calendar |
| [[id:cce/ement.el][Encrypted Matrix Chat in Emacs with Ement.el]] | [[file:/home/rrix/org//cce/ement.el][module code]] | ement |
| [[id:cce/capturing_tasks][Capturing Tasks]] | [[file:/home/rrix/org//cce/org-capture.el][module code]] | org-capture |
| [[id:cce/org_download][org-download]] | [[file:/home/rrix/org//cce/org-download.el][module code]] | org-download |
| [[id:cce/org_html_css_inclusion][Embed CSS in Org-Mode HTML Exports]] | [[file:/home/rrix/org//cce/org-html-css.el][module code]] | org-html-css |
| [[id:cce/org-roam][org-roam]] | [[file:/home/rrix/org//cce/org-roam.el][module code]] | org-roam |
| [[id:2e31b385-a003-4369-a136-c6b78c0917e1][Spaced Repetition Study]] | [[file:/home/rrix/org//cce/org-fc.el][module code]] | org-fc |
| [[id:cce/some_thoughts_on_time_tracking][Some Thoughts on Time Tracking]] | [[file:/home/rrix/org//cce/org-time-tracking.el][module code]] | org-time-tracking |
| [[id:cce/my_org_mode_agendas][My Org-mode Agendas]] | [[file:/home/rrix/org//cce/org-agenda.el][module code]] | org-agenda |
| [[id:cce/literate_programming][Literate Programming with Org Babel]] | [[file:/home/rrix/org//cce/literate-programming.el][module code]] | literate-programming |
| [[id:cce/defdaily][defdaily]] | [[file:/home/rrix/org//cce/defdaily.el][module code]] | defdaily |
| [[id:e118bfda-4bb3-4e8d-a8de-83b4860df565][org-caldav]] | [[file:/home/rrix/org//cce/org-caldav.el][module code]] | org-caldav |
| [[id:cce/project_work_with_org_mode][Project Work with Org Mode]] | [[file:/home/rrix/org//cce/org-tasks.el][module code]] | org-tasks |
| [[id:20220704T164150.482873][org-contrib strip-mined]] | [[file:/home/rrix/org//cce/org-contrib2.el][module code]] | org-contrib2 |
| [[id:eaed606f-054b-4bfa-8891-23dfbf42cf81][Japanese Text Input in Emacs]] | [[file:/home/rrix/org//cce/japanese-input.el][module code]] | japanese-input |
| [[id:cce/code_formatting_aggressively][Code Formatting, Aggressively]] | [[file:/home/rrix/org//cce/aggressive-indent.el][module code]] | aggressive-indent |
| [[id:cce/basic_language_coverage][Basic Language Coverage]] | [[file:/home/rrix/org//cce/code-modes.el][module code]] | code-modes |
| [[id:cce/surfing_through_codebases][Surfing Through Codebases]] | [[file:/home/rrix/org//cce/code-surf.el][module code]] | code-surf |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[file:/home/rrix/org//cce/my-location.el][module code]] | my-location |
| [[id:eaed606f-054b-4bfa-8891-23dfbf42cf81][Japanese Text Input in Emacs]] | [[file:/home/rrix/org//cce/japanese-input.el][module code]] | japanese-input |
| [[id:1df46b31-9130-4b57-afd5-6993ca038d4c][In Emacs Underscores should be part of words]] | [[file:/home/rrix/org//cce/underscores-syntax-table.el][module code]] | underscores-syntax-table |
| [[id:cce/window_management_in_emacs][Window Management in Emacs]] | [[file:/home/rrix/org//cce/window-management.el][module code]] | window-management |
| [[id:cce/smarter_emacs_help][Smarter Emacs Help]] | [[file:/home/rrix/org//cce/hydra-help.el][module code]] | hydra-help |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[file:/home/rrix/org//cce/nixos.el][module code]] | nixos |
| [[id:cce/yasnippets][Smart Snippet Templates with Yasnippet]] | [[file:/home/rrix/org//cce/yasnippet.el][module code]] | yasnippet |
| [[id:20210916T211401.374411][dunn/company-emoji: company-mode backend for emoji]] | [[file:/home/rrix/org//cce/company-emoji.el][module code]] | company-emoji |
| [[id:cce/picom][Picom on EXWM startup]] | [[file:/home/rrix/org//cce/exwm-xcompmgr.el][module code]] | exwm-xcompmgr |
| [[id:20230221T102917.352842][Consult Buffer Source for EXWM Windows]] | [[file:/home/rrix/org//cce/consult-exwm-buffer.el][module code]] | consult-exwm-buffer |
| [[id:cce/exwm_should_ignore_plasma_notifications][EXWM should ignore Plasma notifications]] | [[file:/home/rrix/org//cce/exwm-ignore-plasma.el][module code]] | exwm-ignore-plasma |
| [[id:cce/super_p_runs_commands][Super-P runs commands]] | [[file:/home/rrix/org//cce/super-p.el][module code]] | super-p |
| [[id:cce/exwm_input_simulation][EXWM Input Simulation]] | [[file:/home/rrix/org//cce/exwm-input-simulation.el][module code]] | exwm-input-simulation |
| [[id:cce/toggle_bright_dark_theme_in_emacs_kde_and_firefox][Toggle Bright/Dark Theme in Emacs, KDE and FireFox]] | [[file:/home/rrix/org//cce/toggle-theme.el][module code]] | toggle-theme |
| [[id:cce/project_work_with_org_mode][Project Work with Org Mode]] | [[file:/home/rrix/org//cce/org-tasks.el][module code]] | org-tasks |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[file:/home/rrix/org//cce/japanese-study.el][module code]] | japanese-study |
| [[id:cce/the_standard_unix_password_manager][Using Pass for Passwords]] | [[file:/home/rrix/org//cce/pass.el][module code]] | pass |
| [[id:cce/smarter_emacs_help][Smarter Emacs Help]] | [[file:/home/rrix/org//cce/hydra-help.el][module code]] | hydra-help |
| [[id:cce/window_management_in_emacs][Window Management in Emacs]] | [[file:/home/rrix/org//cce/window-management.el][module code]] | window-management |
| [[id:cce/emacs_and_the_language_server_protocol][Emacs and the Language Server Protocol]] | [[file:/home/rrix/org//cce/lsp-base.el][module code]] | lsp-base |
| [[id:cce/magit][Git in Emacs with Magit]] | [[file:/home/rrix/org//cce/magit.el][module code]] | magit |
| [[id:cce/hydra_dipswitches][Hydra Dipswitches]] | [[file:/home/rrix/org//cce/hydra-dipswitch.el][module code]] | hydra-dipswitch |
| [[id:cce/focused_text_editing][Focused Text Editing]] | [[file:/home/rrix/org//cce/focused-mode.el][module code]] | focused-mode |
| [[id:cce/emacs_launcher_hydra][Emacs "Launcher" Hydra]] | [[file:/home/rrix/org//cce/hydra-launcher.el][module code]] | hydra-launcher |
| [[id:cce/yasnippets][Smart Snippet Templates with Yasnippet]] | [[file:/home/rrix/org//cce/yasnippet.el][module code]] | yasnippet |
| [[id:cce/emacs_and_the_language_server_protocol][Emacs and the Language Server Protocol]] | [[file:/home/rrix/org//cce/lsp-base.el][module code]] | lsp-base |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[file:/home/rrix/org//cce/nixos.el][module code]] | nixos |
| [[id:20210916T211401.374411][dunn/company-emoji: company-mode backend for emoji]] | [[file:/home/rrix/org//cce/company-emoji.el][module code]] | company-emoji |
| [[id:cce/toggle_bright_dark_theme_in_emacs_kde_and_firefox][Toggle Bright/Dark Theme in Emacs, KDE and FireFox]] | [[file:/home/rrix/org//cce/toggle-theme.el][module code]] | toggle-theme |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[file:/home/rrix/org//cce/japanese-study.el][module code]] | japanese-study |
| [[id:cce/programming_lisp_in_emacs][Programming Lisp in Emacs]] | [[file:/home/rrix/org//cce/lisp-core.el][module code]] | lisp-core |
| [[id:000e38de-9755-4b3a-bbb0-0dae383f570b][Tea Practice]] | [[file:/home/rrix/org//cce/tea-practice.el][module code]] | tea-practice |
| [[id:Journal][Journal]] | [[file:/home/rrix/org//cce/journal.el][module code]] | journal |
| [[id:cce/mood_log][Mood Log]] | [[file:/home/rrix/org//cce/mood-log.el][module code]] | mood-log |
| [[id:cce/gnus_task_tracking][Gnus Task Tracking]] | [[file:/home/rrix/org//cce/gnus-org-integration.el][module code]] | gnus-org-integration |
| [[id:cce/dynamic_agendas][Dynamic and fast agenda]] | [[file:/home/rrix/org//cce/dynamic-fast-agenda.el][module code]] | dynamic-fast-agenda |
| [[id:cce/quickly_rename_captured_zettel_files][Quickly Rename Captured Zettel Files]] | [[file:/home/rrix/org//cce/org-roam-rename-file.el][module code]] | org-roam-rename-file |
| [[id:ba5765e9-7b30-4168-9001-f1a34787ab94][Consult-Buffer Org Roam Source]] | [[file:/home/rrix/org//cce/consult-org-roam.el][module code]] | consult-org-roam |
| [[id:20210916T194849.283036][5 Org Roam Hacks for Better Productivity in Emacs - System Crafters]] | [[file:/home/rrix/org//cce/org-roam-hacks.el][module code]] | org-roam-hacks |
| [[id:20210922T100009.660789][Capturing Notes into Clocked Task]] | [[file:/home/rrix/org//cce/org-clock-capture.el][module code]] | org-clock-capture |
| [[id:nil][nil]] | [[file:/home/rrix/org//cce/arroyo.el][module code]] | arroyo |
| [[id:20210906T171736.819354][Org Roam UI]] | [[file:/home/rrix/org//cce/org-roam-ui.el][module code]] | org-roam-ui |
| [[id:cce/extracting_org_roam_headings][Extracting Org Roam Headings]] | [[file:/home/rrix/org//cce/org-roam-extract.el][module code]] | org-roam-extract |
| [[id:cce/navigate-note][Find Org Roam notes via their relations - Where parallels cross]] | [[file:/home/rrix/org//cce/navigate-note.el][module code]] | navigate-note |
| [[id:cce/org_protocol][org-protocol to quickly annotate web pages]] | [[file:/home/rrix/org//cce/org-protocol.el][module code]] | org-protocol |
| [[id:cce/quickly_rename_captured_zettel_files][Quickly Rename Captured Zettel Files]] | [[file:/home/rrix/org//cce/org-roam-rename-file.el][module code]] | org-roam-rename-file |
| [[id:ba5765e9-7b30-4168-9001-f1a34787ab94][Consult-Buffer Org Roam Source]] | [[file:/home/rrix/org//cce/consult-buffer-org-roam.el][module code]] | consult-buffer-org-roam |
| [[id:20210922T100009.660789][Capturing Notes into Clocked Task]] | [[file:/home/rrix/org//cce/org-clock-capture.el][module code]] | org-clock-capture |
| [[id:cce/dynamic_agendas][Dynamic and fast agenda]] | [[file:/home/rrix/org//cce/dynamic-fast-agenda.el][module code]] | dynamic-fast-agenda |
| [[id:20210916T194849.283036][5 Org Roam Hacks for Better Productivity in Emacs - System Crafters]] | [[file:/home/rrix/org//cce/org-roam-hacks.el][module code]] | org-roam-hacks |
| [[id:000e38de-9755-4b3a-bbb0-0dae383f570b][Tea Practice]] | [[file:/home/rrix/org//cce/tea-practice.el][module code]] | tea-practice |
| [[id:Journal][Journal]] | [[file:/home/rrix/org//cce/journal.el][module code]] | journal |
| [[id:cce/mood_log][Mood Log]] | [[file:/home/rrix/org//cce/mood-log.el][module code]] | mood-log |
| [[id:cce/gnus_task_tracking][Gnus Task Tracking]] | [[file:/home/rrix/org//cce/gnus-org-integration.el][module code]] | gnus-org-integration |
| [[id:a24c7dc9-43bc-41b1-8214-af05075f3265][Therapy Notes and Work]] | [[file:/home/rrix/org//cce/therapy-notes.el][module code]] | therapy-notes |
| [[id:0e7562d3-799c-48bf-a7a6-a0adb7d464cf][Weekly Review]] | [[file:/home/rrix/org//cce/weekly-review.el][module code]] | weekly-review |
| [[id:cce/project_management_in_org_mode][Project Management in Org Mode]] | [[file:/home/rrix/org//cce/org-projects.el][module code]] | org-projects |
| [[id:13995d53-320a-4955-996a-4a4a25319701][Rust]] | [[file:/home/rrix/org//cce/rust.el][module code]] | rust |
| [[id:cce/programming_lisp_in_emacs][Programming Lisp in Emacs]] | [[file:/home/rrix/org//cce/lisp-core.el][module code]] | lisp-core |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[file:/home/rrix/org//cce/kde-desktop.el][module code]] | kde-desktop |
| [[id:cce/python][Python in Emacs through LSP]] | [[file:/home/rrix/org//cce/python.el][module code]] | python |
| [[id:cce/navigating_projects_with_projectile][Navigating Projects With Projectile]] | [[file:/home/rrix/org//cce/projectile.el][module code]] | projectile |
| [[id:cce/elixir][Elixir Programming Configuration]] | [[file:/home/rrix/org//cce/elixir.el][module code]] | elixir |
| [[id:cce/programming_common_lisp_in_emacs][Programming Common Lisp in Emacs]] | [[file:/home/rrix/org//cce/common-lisp.el][module code]] | common-lisp |
| [[id:426cef6a-f77d-4b2d-8acb-0793b3cef368][Monthly Review]] | [[file:/home/rrix/org//cce/monthly-review.el][module code]] | monthly-review |
| [[id:cce/navigating_projects_with_projectile][Navigating Projects With Projectile]] | [[file:/home/rrix/org//cce/projectile.el][module code]] | projectile |
| [[id:13995d53-320a-4955-996a-4a4a25319701][Rust]] | [[file:/home/rrix/org//cce/rust.el][module code]] | rust |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[file:/home/rrix/org//cce/home-manager.el][module code]] | home-manager |
| [[id:426cef6a-f77d-4b2d-8acb-0793b3cef368][Monthly Review]] | [[file:/home/rrix/org//cce/monthly-review.el][module code]] | monthly-review |
| [[id:cce/programming_common_lisp_in_emacs][Programming Common Lisp in Emacs]] | [[file:/home/rrix/org//cce/common-lisp.el][module code]] | common-lisp |
| [[id:cce/run_hooks_after_init][Run Hooks After init]] | [[file:/home/rrix/org//cce/run-hooks.el][module code]] | run-hooks |
| [[id:cce/using_yubikey_as_an_otp_key][Using Yubikey as an OTP Key]] | [[file:/home/rrix/org//cce/yubikey-otp.el][module code]] | yubikey-otp |
| [[id:20220713T141408.123508][Jump to Missing Org Roam Nodes]] | [[file:/home/rrix/org//cce/missing-org-roam.el][module code]] | missing-org-roam |
@ -158,20 +165,23 @@ Here is the Emacs module index, [[id:arroyo/emacs][Arroyo Emacs]] generates an =
| [[id:cce/plasma_browser_integration][Plasma Browser Integration]] | [[file:/home/rrix/org//cce/plasma-browser.el][module code]] | plasma-browser |
| [[id:20220506T143312.832024][Contact Management in Emacs]] | [[file:/home/rrix/org//cce/khard.el][module code]] | khard |
| [[id:cce/ruby_and_rails_in_emacs][Ruby and Rails in Emacs]] | [[file:/home/rrix/org//cce/ruby.el][module code]] | ruby |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[file:/home/rrix/org//cce/nixpkgs.el][module code]] | nixpkgs |
| [[id:20220421T100313.402598][Trying out XMonad in Home Manager]] | [[file:/home/rrix/org//cce/haskell.el][module code]] | haskell |
| [[id:cce/picom][Picom on EXWM startup]] | [[file:/home/rrix/org//cce/exwm-xcompmgr.el][module code]] | exwm-xcompmgr |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[file:/home/rrix/org//cce/syncthing.el][module code]] | syncthing |
| [[id:cce/delve][publicimageltd/delve]] | [[file:/home/rrix/org//cce/delve.el][module code]] | delve |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[file:/home/rrix/org//cce/ssh.el][module code]] | ssh |
| [[id:org_mime][Sending Rich Text with Org Mime]] | [[file:/home/rrix/org//cce/org-mime.el][module code]] | org-mime |
| [[id:cce/sitelen_pona_pona][Sitelen Pona Pona]] | [[file:/home/rrix/org//cce/sitelen-pona-pona.el][module code]] | sitelen-pona-pona |
| [[id:cce/nixops][NixOps]] | [[file:/home/rrix/org//cce/nixops.el][module code]] | nixops |
| [[id:9379ab36-70a3-48b5-9136-ee96d9dbc606][Meditation Journal]] | [[file:/home/rrix/org//cce/meditation-log.el][module code]] | meditation-log |
| [[id:80716b85-f33b-4f10-b583-de54b8b78ffb][Fennel]] | [[file:/home/rrix/org//cce/fennel.el][module code]] | fennel |
| [[id:arcology/arroyo-page][Arroyo Arcology Generator]] | [[file:/home/rrix/org//cce/arroyo-arcology.el][module code]] | arroyo-arcology |
| [[id:188c5167-4966-4a47-aaf1-9b7975192a5f][Ansible Manages my Laptop]] | [[file:/home/rrix/org//cce/ansible.el][module code]] | ansible |
| [[id:org_mime][Sending Rich Text with Org Mime]] | [[file:/home/rrix/org//cce/org-mime.el][module code]] | org-mime |
| [[id:cce/delve][publicimageltd/delve]] | [[file:/home/rrix/org//cce/delve.el][module code]] | delve |
| [[id:20230212T100136.539310][Keep Screen Awake with Systemd-Inhibit-Mode]] | [[file:/home/rrix/org//cce/systemd-inhibit.el][module code]] | systemd-inhibit |
| [[id:20220913T104837.013589][jwiegley/nix-update-el]] | [[file:/home/rrix/org//cce/nix-update.el][module code]] | nix-update |
| [[id:09fa0674-ad3b-43c5-8d7c-6b532346a772][open threads]] | [[file:/home/rrix/org//cce/open-threads.el][module code]] | open-threads |
| [[id:9379ab36-70a3-48b5-9136-ee96d9dbc606][Meditation Journal]] | [[file:/home/rrix/org//cce/meditation-log.el][module code]] | meditation-log |
| [[id:20220421T100313.402598][Trying out XMonad in Home Manager]] | [[file:/home/rrix/org//cce/haskell.el][module code]] | haskell |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[file:/home/rrix/org//cce/syncthing.el][module code]] | syncthing |
| [[id:arcology/arroyo-page][Arroyo Arcology Generator]] | [[file:/home/rrix/org//cce/arroyo-arcology.el][module code]] | arroyo-arcology |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[file:/home/rrix/org//cce/nixpkgs.el][module code]] | nixpkgs |
| [[id:20230310T155744.804329][Tiny-Tiny RSS]] | [[file:/home/rrix/org//cce/ttrss.el][module code]] | ttrss |
| [[id:20230201T121135.988658][Bitwarden on NixOS/Home Manager]] | [[file:/home/rrix/org//cce/bitwarden.el][module code]] | bitwarden |
* NixOS Module Index
:PROPERTIES:
@ -193,42 +203,57 @@ Here are the NixOS modules which go in to [[id:cce/my_nixos_configuration][My Ni
#+end_src
#+results:
| [[id:nil][nil]] | [[nixos/nixos-builder.nix][nix module source]] |
| [[id:6975a285-eb1b-4531-bcfd-584de3ba8859][Exporting highlights/notes from KOReader]] | [[nixos/koreader-binds.nix][nix module source]] |
| [[id:20220103T140030.904122][Plant Camera]] | [[nixos/raspi.nix][nix module source]] |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[nixos/kde.nix][nix module source]] |
| [[id:20211030T172526.854851][NixOS on Framework laptop]] | [[nixos/framework-laptop.nix][nix module source]] |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[nixos/direnv.nix][nix module source]] |
| [[id:cce/applications_i_use][Applications I Use]] | [[nixos/applications.nix][nix module source]] |
| [[id:cce/using_yubikey_as_a_gpg_key][Using Yubikey as a GPG Key]] | [[nixos/yubikey.nix][nix module source]] |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[nixos/nix-path.nix][nix module source]] |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[nixos/gnupg-pam.nix][nix module source]] |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[nixos/nixpkgs.nix][nix module source]] |
| [[id:20210814224010-my_custom_keyboard_layout][My Custom Keyboard Layout]] | [[nixos/xmodmap.nix][nix module source]] |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[nixos/syncthing.nix][nix module source]] |
| [[id:cce/public_keys][My Public Keys and NixOS user]] | [[nixos/rrix.nix][nix module source]] |
| [[id:20220101T180015.306163][Nextcloud on Wobserver]] | [[nixos/nextcloud.nix][nix module source]] |
| [[id:cce/nixos-laptop][NixOS Hardware Support for Laptops]] | [[nixos/laptop.nix][nix module source]] |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[nixos/ssh_client.nix][nix module source]] |
| [[id:20220131T152041.472624][NixOS Set Top Box]] | [[nixos/settop.nix][nix module source]] |
| [[id:cce/nixos-boot][NixOS boot configuration]] | [[nixos/boot.nix][nix module source]] |
| [[id:cce/warm_computing_with_clight][Clight]] | [[nixos/clight.nix][nix module source]] |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[nixos/vulfpeck.nix][nix module source]] |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[nixos/home-manager.nix][nix module source]] |
| [[id:cce/wobserver/postgres][PostgreSQL on the Wobserver]] | [[nixos/postgresql.nix][nix module source]] |
| [[id:cce/printing][Printing Configuration in NixOS]] | [[nixos/printing.nix][nix module source]] |
| [[id:cce/mpd][Listening to Music with MPD]] | [[nixos/mopidy.nix][nix module source]] |
| [[id:cce/nixos-audio][NixOS Audio]] | [[nixos/audio.nix][nix module source]] |
| [[id:20221106T113721.266425][CCE in Nix On Droid]] | [[nixos/nixos-builder.nix][nix module source]] |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[nixos/fonts.nix][nix module source]] |
| [[id:cce/nix_community_cachix][Nix Community Cachix]] | [[nixos/cachix.nix][nix module source]] |
| [[id:e4998eda-d14a-48ee-9661-3d7d1bead53c][Wobserver Nginx Frontends]] | [[nixos/nginx.nix][nix module source]] |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[nixos/location.nix][nix module source]] |
| [[id:47ff77f9-3eae-43eb-886c-7513d05f047f][Secure Backup Infrastructure]] | [[nixos/zfs.nix][nix module source]] |
| [[id:20221021T115008.329657][Arroyo Nix Support]] | [[nixos/rixpkgs.nix][nix module source]] |
| [[id:arroyo/emacs][Arroyo Emacs Generator]] | [[nixos/emacs.nix][nix module source]] |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[nixos/japanese.nix][nix module source]] |
| [[id:20220518T111013.068566][NetworkManager's `nm-online -s` hanging]] | [[nixos/nm-online.nix][nix module source]] |
| [[id:20220210T155158.671084][From Wireguard to Tailscale]] | [[nixos/tailscale.nix][nix module source]] |
| [[id:20220103T140030.904122][Plant Camera]] | [[nixos/raspi.nix][nix module source]] |
| [[id:cce/using_yubikey_as_a_gpg_key][Using Yubikey as a GPG Key]] | [[nixos/yubikey.nix][nix module source]] |
| [[id:20210814224010-my_custom_keyboard_layout][My Custom Keyboard Layout]] | [[nixos/xmodmap.nix][nix module source]] |
| [[id:cce/public_keys][My Public Keys and NixOS user]] | [[nixos/rrix.nix][nix module source]] |
| [[id:cce/ssh_configuration][SSH Configuration]] | [[nixos/ssh_client.nix][nix module source]] |
| [[id:cce/warm_computing_with_clight][Clight]] | [[nixos/clight.nix][nix module source]] |
| [[id:cce/printing][Printing Configuration in NixOS]] | [[nixos/printing.nix][nix module source]] |
| [[id:cce/nix_community_cachix][Nix Community Cachix]] | [[nixos/cachix.nix][nix module source]] |
| [[id:20220518T111013.068566][NetworkManager's `nm-online -s` hanging]] | [[nixos/nm-online.nix][nix module source]] |
| [[id:20220210T155158.671084][From Wireguard to Tailscale]] | [[nixos/tailscale.nix][nix module source]] |
| [[id:20220101T180015.306163][Nextcloud on Wobserver]] | [[nixos/nextcloud.nix][nix module source]] |
| [[id:20220101T190353.843667][Wobserver Observability]] | [[nixos/wobservability.nix][nix module source]] |
| [[id:cce/kde_is_a_base_for_my_emacs_desktop][KDE is a Base for my Emacs Desktop]] | [[nixos/kde.nix][nix module source]] |
| [[id:c4c2d068-c5b7-4cbc-b34a-297a68fb7c26][Where I Am At]] | [[nixos/location.nix][nix module source]] |
| [[id:20230201T121604.003311][Storing passwords securely with vaultwarden]] | [[nixos/vaultwarden.nix][nix module source]] |
| [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] | [[nixos/japanese.nix][nix module source]] |
| [[id:cce/appearance][Themeing my Emacs and Desktop]] | [[nixos/fonts.nix][nix module source]] |
| [[id:cce/nixos-boot][NixOS boot configuration]] | [[nixos/boot.nix][nix module source]] |
| [[id:20221021T115008.329657][Arroyo Nix Support]] | [[nixos/rixpkgs.nix][nix module source]] |
| [[id:e4998eda-d14a-48ee-9661-3d7d1bead53c][Wobserver Nginx Frontends]] | [[nixos/nginx.nix][nix module source]] |
| [[id:cce/mpd][Listening to Music with MPD]] | [[nixos/mopidy.nix][nix module source]] |
| [[id:20230220T204453.685476][Jellyfin on the Wobserver]] | [[nixos/jellyfin.nix][nix module source]] |
| [[id:20230331T181418.903306][RSS Feed Bot Posting to Matrix.org]] | [[nixos/feedbot.nix][nix module source]] |
| [[id:cce/vulfpeck_fonts_are_fun][Vulfpeck Fonts are Fun]] | [[nixos/vulfpeck.nix][nix module source]] |
| [[id:cce/home-manager][Generate a Dynamic Home Manager Configuration]] | [[nixos/home-manager.nix][nix module source]] |
| [[id:20230526T152316.126977][Waydroid on NixOS is pretty simple]] | [[nixos/waydroid.nix][nix module source]] |
| [[id:45fc2a02-fcd0-40c6-a29e-897c0ee7b1c7][direnv]] | [[nixos/direnv.nix][nix module source]] |
| [[id:cce/gnupg_configuration][GnuPG Configuration]] | [[nixos/gnupg-pam.nix][nix module source]] |
| [[id:cce/nixos-laptop][NixOS Hardware Support for Laptops]] | [[nixos/laptop.nix][nix module source]] |
| [[id:20230508T211114.617538][Reading Books on Linux and Android with KOReader]] | [[nixos/koreader-binds.nix][nix module source]] |
| [[id:cce/nixos-audio][NixOS Audio]] | [[nixos/audio.nix][nix module source]] |
| [[id:20221106T113721.266425][CCE in Nix On Droid]] | [[nixos/nixos-builder.nix][nix module source]] |
| [[id:cce/syncthing][Nearly Stateless Computing Using Syncthing]] | [[nixos/syncthing.nix][nix module source]] |
| [[id:20221130T103851.207871][Gitea on NixOS]] | [[nixos/gitea.nix][nix module source]] |
| [[id:20230530T120958.265094][Wrapping Morph commands for more ergonomic deployment]] | [[nixos/morph-wrapper.nix][nix module source]] |
| [[id:20220526T143555.660133]["The manual appears to depend on the location of Nixpkgs"]] | [[nixos/nix-path.nix][nix module source]] |
| [[id:cce/wobserver/matrix][Matrix Synapse]] | [[nixos/matrix.nix][nix module source]] |
| [[id:cce/wobserver/postgres][PostgreSQL on the Wobserver]] | [[nixos/postgresql.nix][nix module source]] |
| [[id:20221202T122017.620403][Self-Hosting on the Fediverse with Akkoma]] | [[nixos/akkoma.nix][nix module source]] |
| [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][CCE Nixos Core]] | [[nixos/nixpkgs.nix][nix module source]] |
| [[id:20230310T155744.804329][Tiny-Tiny RSS]] | [[nixos/ttrss.nix][nix module source]] |
| [[id:20220131T152041.472624][NixOS Set Top Box]] | [[nixos/settop.nix][nix module source]] |
| [[id:arcology/poetry][Arcology Poetry Pyproject]] | [[nixos/arcology-config.nix][nix module source]] |
| [[id:20230321T143139.441973][My Brother Printer and CUPS Setup]] | [[nixos/cups.nix][nix module source]] |
| [[id:20231101T191434.003759][Paperless-ngx is an open source document management system]] | [[nixos/paperless.nix][nix module source]] |
| [[id:arroyo/emacs][Arroyo Emacs Generator]] | [[nixos/emacs.nix][nix module source]] |
| [[id:20221202T124113.404212][Docker Containers on the Wobserver]] | [[nixos/wobserver-docker.nix][nix module source]] |
| [[id:3e8475ef-ff3a-4093-99f1-ef45b7e53707][Wallabag]] | [[nixos/wallabag.nix][nix module source]] |
| [[id:20230125T143144.011175][Posting Arcology Feeds to the Fediverse Automatically with Feediverse]] | [[nixos/feediverse.nix][nix module source]] |
| [[id:cce/applications_i_use][Applications I Use]] | [[nixos/applications.nix][nix module source]] |
| [[id:20231129T105148.214325][Basic ZFS Configuration]] | [[nixos/zfs.nix][nix module source]] |
| [[id:47ff77f9-3eae-43eb-886c-7513d05f047f][Secure Backup Infrastructure with Restic]] | [[nixos/restic.nix][nix module source]] |
These modules go in to [[id:cce/morph-laptops][My Laptops]], [[id:cce/morph-meadow-crush][Meadow Crush]] and [[id:cce/morph-tres-ebow][Tres Ebow]] and are deployed with [[id:cce/morph][Morph]].

62
consult-buffer-exwm.org Normal file
View File

@ -0,0 +1,62 @@
:PROPERTIES:
:ID: 20230221T102917.352842
:END:
#+TITLE: Consult Buffer Source for EXWM Windows
#+ARROYO_EMACS_MODULE: consult-exwm-buffer
#+ARROYO_MODULE_WANTS: cce/exwm.org
#+ARROYO_MODULE_WANTS: cce/selectrum_etc.org
This lets me select windows in [[id:cce/exwm][EXWM]] using [[id:consult][Consult]]; hitting, uhmm, =C-x b e <SPC>= will show me all the EXWM windows and =C-x b E <SPC>= will show me windows in the current workspace.
#+begin_src emacs-lisp :tangle ~/org/cce/consult-exwm-buffer.el
(defun consult-exwm--state ()
(lexical-let ((preview (consult--buffer-preview)))
(lambda (action cand)
(when cand
(funcall preview action (get-buffer cand))
(when
(and cand (eq action 'return))
(consult--buffer-action
(get-buffer cand)))))))
(defvar exwm-buffer-source-this-workspace
`(:name "EXWM Windows (in this workspace)"
:hidden nil
:narrow ?E
:category exwm-window
:annotate ,(lambda (cand) (with-current-buffer cand
exwm-class-name))
:state ,#'consult-exwm--state
:items ,(lambda ()
(consult--buffer-query
:sort 'visibility
:filter t
:as #'buffer-name
:predicate (lambda (buf)
(with-current-buffer buf
(and
(eq major-mode 'exwm-mode)
(eq exwm-workspace--current
exwm--frame))))))))
(defvar exwm-buffer-source
`(:name "EXWM Windows"
:hidden nil
:narrow ?e
:category exwm-window
:annotate ,(lambda (cand) (with-current-buffer cand
exwm-class-name))
:state ,#'consult-exwm--state
:items ,(lambda ()
(consult--buffer-query
:sort 'visibility
:filter t
:as #'buffer-name
:predicate (lambda (buf)
(with-current-buffer buf
(eq major-mode 'exwm-mode)))))))
(with-eval-after-load 'consult
(add-to-list 'consult-buffer-sources 'exwm-buffer-source t)
(add-to-list 'consult-buffer-sources 'exwm-buffer-source-this-workspace t))
#+end_src

View File

@ -1,5 +1,7 @@
:PROPERTIES:
:ID: 20230321T143139.441973
:ROAM_ALIASES: "Brother DCP-L2550DW"
:ROAM_REFS: https://www.pcmag.com/reviews/brother-dcp-l2550dw
:END:
#+TITLE: My Brother Printer and CUPS Setup
#+filetags: :Project:
@ -8,6 +10,9 @@
#+ARROYO_NIXOS_EXCLUDE: droid
#+AUTO_TANGLE: t
#+ARCOLOGY_KEY: cce/cups-setup-dcp-l2550dw
#+ARCOLOGY_ALLOW_CRAWL: t
#+begin_src nix :tangle ~/arroyo-nix/nixos/cups.nix
{ pkgs, ... }:

View File

@ -5,6 +5,8 @@
#+TITLE: Declarative KDE Configuration with Home Manager
#+filetags: :Project:CCE:KDE:Development:
#+ARCOLOGY_KEY: cce/declarative-kwriteconfig5
[[https://userbase.kde.org/KDE_System_Administration/Configuration_Files][KDE configuration files]] are "INI-like" with some extra "magic" stuff built in like default values, environment dynamism, immutability... All of this is driven by a command called =kwriteconfig5=.
* Generating =kwriteconfig5= commands for [[id:cce/home-manager][home-manager]] to execute

View File

@ -11,7 +11,6 @@
#+ARROYO_EMACS_MODULE: mark
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+begin_src emacs-lisp
(provide 'cce/mark)

View File

@ -21,12 +21,20 @@
(provide 'cce/dynamic-fast-agenda)
#+end_src
[[id:d17a9ccf-0bfe-426e-85b3-d15771d3ee03][Archive]]
[[id:d17a9ccf-0bfe-426e-85b3-d15771d3ee03][Archive]] of [[ https://d12frosted.io/posts/2021-01-16-task-management-with-roam-vol5.html][this]] blog post about keeping the size of the =org-agenda-files= list as light as it can be
#+begin_quote
In my experience, once I reached 1200 note files, org-agenda constantly took more than 50 seconds to build, rendering this tool completely useless. But then I realised that only 3% of those files actually contain any TODO entries, so there is no need to traverse whole org-roam-directory!
#+end_quote
#+SUMMARY:
This is a clever use of the [[id:cce/org-roam][org-roam]] APIs and database to automatically populate the [[id:cce/my_org_mode_agendas][Org-mode Agendas]] file list, and has some really neat ideas which I'll integrate in to the [[id:cce/cce][CCE]] I think. I have been thinking that my [[id:47a31dca-d077-4cd8-ab3b-f98427696302][Projects]] file isn't scaling so well since I can't represent project hierarchies or relationships very cleanly in the limited hierarchy I've limited myself to. This will have to be part of larger thinking, but I can implement most of this right now.
This is a clever use of the [[id:cce/org-roam][org-roam]] APIs and database to automatically populate the [[id:cce/my_org_mode_agendas][Org-mode Agendas]] file list, and has some really neat ideas which I'll integrate in to the [[id:cce/cce][CCE]] I think.
Without migrating out of [[id:47a31dca-d077-4cd8-ab3b-f98427696302][Projects]], I have src_elisp{(length org-agenda-files)} {{{results(=22=)}}} files which are Project and Agendize tagged.
Without migrating out of [[id:47a31dca-d077-4cd8-ab3b-f98427696302][Projects]], I have src_elisp{(length org-agenda-files)} {{{results(=22=)}}} files which are Project and Agendize tagged. I also want to integrate my [[id:Journal][Journal]] in to this to capture the carryover tasks and probably leave me embarrassed. Can't wait!
I use this to keep track of todo items in my org day-journal, to split out work that needs to be done in my Agendas, and not to lose track of long-term or low priority projects
It works by having a save-hook that adds or removes a =Project= filetag if there are any TODO items on the page, and then there is a hook in the =org-agenda= functionality to use the org-roam database
* =org-element= search and update

View File

@ -110,8 +110,14 @@ All the feed-parsing stuff is more or less lifted directly from the original =fe
def get_feed(feed_url, last_update):
feed = feedparser.parse(feed_url)
if last_update:
entries = [e for e in feed.entries
if dateutil.parser.parse(e['updated']) > last_update]
entries = [
e for e in feed.entries
if dateutil.parser.parse(e['updated']) > last_update
]
# entries = []
# for e in feed.entries:
# if dateutil.parser.parse(e['updated']) > last_update:
# entries.append(e)
else:
entries = feed.entries
entries.sort(key=lambda e: e.updated_parsed)
@ -296,6 +302,25 @@ buildPythonPackage rec {
}
#+end_src
* =nix-shell= for developing feediverse
Simple enough to get a dev environment running rather than using =venv=...
#+begin_src nix :tangle ~/Code/feediverse/shell.nix
{ pkgs ? import <nixpkgs> {} }:
let
myPy = pkgs.python3.withPackages (ps: with ps; [
beautifulsoup4
feedparser
python-dateutil
requests
pyyaml
mastodon-py
]);
in myPy.env
#+end_src
* Running =feediverse= on [[id:20211120T220054.226284][The Wobserver]]
Okay, with the configuration file generated and then copied on to the server (since it's mutated by the script...), I shove it in to the [[id:20221021T150631.404359][Arroyo Nix]] index and then set up an [[id:arroyo/nixos][Arroyo NixOS]] module to set up a service account and run it with a SystemD timer. This will be pretty straightforward if you've seen NixOS before.

View File

@ -42,6 +42,7 @@ in {
server.SSH_PORT = 2222;
server.START_SSH_SERVER = true;
service.DISABLE_REGISTRATION = true;
repository.ENABLE_PUSH_CREATE_USER = true;
federation.ENABLED = true;
metrics.ENABLED = true;
packages.ENABLED = false;

View File

@ -6,8 +6,8 @@
#+PROPERTY: header-args:emacs-lisp :tangle gnus.el
#+PROPERTY: header-args:yaml :tangle roles/endpoint/tasks/gnus.yml
#+ROAM_REF: https://www.gnus.org/
#+ARROYO_EMACS_MODULE: gnus
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+ARCOLOGY_KEY: cce/gnus
#+CCE_ANSIBLE: gnus
#+CCE_PRIORITY: 70

View File

@ -147,38 +147,6 @@ I also should define program modules for a lot of these over the long term so th
}
#+end_src
** Regenerating on command: =M-x cce/dynamic-home-manager=
To apply this quickly, I have a small helper function which will make it all the way in to my [[id:cce/cce][CCE]] init file. With [[elisp:(cce/dynamic-home-manager)]], available in =M-x= slash =execute-extended-command=, which will tangle and apply the =home.nix= file.
#+begin_src emacs-lisp
(cce/tangle-home-manager-inputs)
#+end_src
#+begin_src emacs-lisp :results none :tangle home-manager.el
(setq cce/home-manager-org-name "~/org/cce/home-manager.org")
(setq cce/home-manager-nix-name "~/org/cce/nixlib/home-manager.nix")
(defun cce/dynamic-home-manager (&optional prefix)
(interactive "p")
(when (eq major-mode 'org-mode)
(org-babel-tangle-file (buffer-file-name)))
(when (org-babel-tangle-file cce/home-manager-org-name)
(async-shell-command (concat "home-manager switch -f "
cce/home-manager-nix-name
(unless (eq 1 prefix) " --show-trace"))
"*home-manager*")))
(defun cce/tangle-home-manager-inputs ()
(dolist (path (org-roam-db-query
[:select file
:from keywords
:where (= keyword "CCE_HOME_MODULE")
:or (= keyword "CCE_HOME_EPKGS")
:or (= keyword "CCE_HOME_DERIVATIONS")
:group-by file]))
(org-babel-tangle-file (car path)))
(org-babel-tangle-file cce/home-manager-org-name))
#+end_src
** [[id:cce/literate_programming][Literate Programming]] helpers
:PROPERTIES:
:ID: f32b616e-ede6-461e-8bae-b5f1c717a05e
@ -196,6 +164,7 @@ This uses [[id:arroyo/home-manager][Arroyo Home Manager]].
hm/3d-printing.nix
hm/applications.nix
hm/atuin.nix
hm/audio.nix
hm/axidraw.nix
hm/bandcamp-dl.nix
hm/beets.nix

664
imapfilter.org Normal file
View File

@ -0,0 +1,664 @@
:PROPERTIES:
:ID: 20230928T181741.252739
:ROAM_ALIASES: "Literate imapfilter Configuration" imapfilter
:ROAM_REFS: https://github.com/lefcha/imapfilter
:END:
#+TITLE: imapfilter filters my imap
#+filetags: :Project:
#+ARCOLOGY_KEY: cce/imapfilter
#+ARCOLOGY_ALLOW_CRAWL: nil
#+OPTIONS: ^:nil
[[https://github.com/lefcha/imapfilter][=imapfilter=]] is a [[id:a7420bb9-395f-4afa-92fb-8eaa0b8a4cd8][Tool]] that can filter mail from =imap= mail servers and is configured and programmed using [[roam:Lua]]. I use it as the primary/only mail filtering on my [[id:26c9e4fd-4501-4b8b-95ce-a2a5230d7c1e][Email and News and Information Pipeline]] management, but until recently it was just a stale file in an old version of the [[id:cce/cce][CCE]] that I edited by hand. I extend it here, to generate the configuration file from [[id:1fb8fb45-fac5-4449-a347-d55118bb377e][org-mode]] tables using [[id:cce/literate_programming][Org Babel]].
* Lua Functions and Top Matter
These are the scaffolding that makes this work. Some simple little Lua functions that do the mailbox sub-searches and move them around to its destination.
I store an =fastmail= app password in my =.authinfo=... If I decide to move this on to my endpoint it should be more-properly secured in [[id:20230201T121604.003311][vaultwarden]] and pulled with =rbw=. this =pipe_from= stuff is a mess lul.
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua
function authinfo_user(server)
status, user = pipe_from("cat ~/.authinfo | perl -pe \"$/ = ''; " ..
"s/\\n/ /g\" | perl -ne 'm/" .. server ..
"\\s+login\\s+(\\S+)/; print $1;'")
return user
end
function authinfo_pass(server)
status, passwd = pipe_from("cat ~/.authinfo | perl -pe \"$/ = ''; " ..
"s/\\n/ /g\" | perl -ne 'm/" .. server ..
"\\s+login\\s+\\S+\\s+password\\s+(\\S+)/; print $1;'")
return passwd
end
#+end_src
Some minutiae..
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua
options.timeout = 10;
options.create = false;
options.expunge = true;
options.namespace = false;
options.subscribe = true;
#+end_src
=print_results_info= just counts the number of mails in a mailbox/search for status output.
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua
function print_results_info(mb)
local total = 0
for key, value in pairs(mb) do
total = total + 1
end
print("Filtering " .. total .. " mails")
end
#+end_src
And these are the functions which do the work.
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua
function file_by_list_id(mb, name, dest)
results = mb:contain_field("List-Id", name)
results:move_messages(fastmail[dest])
return mb - results
end
function file_by_destination(mb, name, dest)
results = mb:contain_to(name) +
mb:contain_cc(name) +
mb:contain_bcc(name)
results:move_messages(fastmail[dest])
return mb - results
end
function file_by_sender(mb, name, dest)
results = mb:contain_from(name)
results:move_messages(fastmail[dest])
return mb - results
end
function file_by_subject(mb, subject, dest)
results = mb:contain_subject(subject)
results:move_messages(fastmail[dest])
return mb - results
end
#+end_src
** Picking the Mail to filter
And here is how I pick the mail, this is the "root" of the search: By default it just grabs unreads in the inbox, but I have some other common searches commented out in case I want to do something else... I would love to have a better way to change target other than to swap some comments around...
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua
fastmail = IMAP {
server = 'mail.messagingengine.com',
username = 'rrix@fastmail.com',
password = authinfo_pass("mail.messagingengine.com"),
ssl = "auto",
}
-- mb = fastmail.INBOX:select_all()
-- mb = fastmail.newsletters:select_all()
mb = fastmail.INBOX:is_unseen()
print_results_info(mb)
#+end_src
** Literate Programming Soup
This function takes a [[id:1fb8fb45-fac5-4449-a347-d55118bb377e][org-mode]] table, iterates over it, and turns it in to a set of Lua statements which will run the filter rule when evaluated by =imapfilter=.
#+NAME: imapfilter-from-table
#+begin_src emacs-lisp
(defun cce-literate-imapfilter-from-table (tbl)
(thread-last
tbl
(seq-map
(lambda (row)
(format "mb = file_by_%s(mb, \"%s\", \"%s\")"
(first row)
(second row)
(third row))))
(s-join "\n")))
#+end_src
The code below is =call-imapfilter-from-table= in the functions under the filter tables. It embeds and ensures the function defined above is evaluated, and then calls it with the table that is passed in as a variable called =tbl=.
Chaining the functions like this allows me to =C-c C-c= in the code above to run it in my local session, and then below to =<<call()>>= that code inline below.
#+NAME: call-imapfilter-from-table
#+begin_src emacs-lisp :var tbl=fedora-lists :noweb yes
<<imapfilter-from-table>>
(cce-literate-imapfilter-from-table tbl)
#+end_src
* NEXT running this on [[id:20211120T220054.226284][The Wobserver]]
How do I run this before [[id:cce/mbsync][mbsync]]? =imapnotify=? move away from [[id:cce/async_forever][async-forever]]...?
* Filter Tables
These use the [[id:cce/literate_programming][Org Babel]] helpers above to turn the tables in to lua statements that get tangled in to the final =imapfilter= configuration file.
Most of the stuff that is interesting doesn't get exported to the web for publishing, but some common public lists are kept here for "usage information", i guess.
** [[id:20230109T134352.760473][Blue Cliff Zen Board]] :NOEXPORT:noexport:
#+NAME: zendo-contacts
| Predicate | Value | Destination | Comment |
|-----------+----------------------------------+-------------+---------|
| sender | reneewip@gmail.com | 1ml/bcz | |
| sender | dcfrans@yahoo.com | 1ml/bcz | |
| sender | bluecliffzen@gmail.com | 1ml/bcz | |
| sender | registrar.bluecliffzen@gmail.com | 1ml/bcz | |
| sender | carolyngsell@comcast.net | 1ml/bcz | |
| sender | giese0923@comcast.net | 1ml/bcz | |
| sender | blueclifftreas@gmail.com | 1ml/bcz | |
| sender | junelovebug@gmail.com | 1ml/bcz | |
| sender | mkane345@gmail.com | 1ml/bcz | |
| sender | highroadtaxes@gmail.com | 1ml/bcz | |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(zendo-contacts)>>
#+end_src
** INPROGRESS Social Crap
There's probably more of these than this.
#+NAME: social-lists
| Predicate | Value | Destination |
|-------------+------------------------------------------+--------------------|
| sender | @angel.co | social |
| sender | @digg.com | social |
| sender | @e.linkedin.com | social |
| sender | @email.app.net | social |
| sender | @eventbritemail.com | social |
| sender | @facebookmail.com | social |
| sender | goodreads.com | social |
| sender | google-plus@google.com | social |
| sender | h4x@cybre.space | social |
| sender | @hs.email.nextdoor.com | social |
| sender | info@meetup.com | social |
| sender | @instagram.com | social |
| sender | @linkedin.com | social |
| sender | @meetup.com | social |
| sender | @nextdoor.com | social |
| sender | oknotify2.com | social |
| sender | @pinterest.com | social |
| sender | @redditmail.com | social |
| sender | @rs.email.nextdoor.com | social |
| sender | thegibson@hackers.town | social |
| sender | @tripit.com | social |
| sender | @twitter.com | social |
| sender | @useqwitter.com | social |
| destination | fedora-project-3157@pages.plusgoogle.com | fedora/ambassadors |
| sender | @youtube.com | social |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(social-lists)>>
#+end_src
** Newsletters and Marketing :NOEXPORT:noexport:
I want to filter this in to "marketing i was tricked in to subscribing to" and "things I actually care about"...
#+NAME: newsletters-lists
| Predicate | Value | Destination | Comment |
|-----------+-----------------------------------+-------------+---------------------|
| subject | account statement is available | newsletters | |
| sender | aclunc.org | newsletters | |
| sender | aclu.org | newsletters | |
| sender | @acm.org | newsletters | |
| sender | @ACM.ORG | newsletters | |
| sender | action@eff.org | newsletters | |
| sender | ajatt.com | newsletters | |
| sender | b2contact@backblaze.com | newsletters | |
| sender | bandcamp.com | newsletters | |
| sender | @bandsintown.com | newsletters | |
| sender | @basicrights.org | newsletters | |
| sender | @blockpartyapp.com | newsletters | |
| sender | ciida@arboretumfoundation.org | newsletters | |
| sender | comp.compilers@googlegroups.com | newsletters | |
| sender | contact@oregonfoodbank.org | newsletters | |
| sender | corey@lastweekinaws.com | newsletters | |
| sender | crowdsupply.com | newsletters | |
| sender | dataairlines.net | newsletters | |
| sender | dbweekly@cooperpress.com | newsletters | |
| sender | dieselsweeties.com | newsletters | |
| sender | @discogs.com | newsletters | |
| sender | discourse.nixos.org | newsletters | |
| sender | dnalounge.com | newsletters | |
| sender | donate@wikimedia.org | newsletters | |
| sender | dsz@dasharez0ne.com | newsletters | |
| sender | @dustri.al | newsletters | |
| sender | ebay@ebay.com | newsletters | |
| sender | e.chase.com | newsletters | |
| sender | editor@eff.org | newsletters | |
| sender | @e.lego.com | newsletters | |
| sender | email.patagonia.com | newsletters | |
| sender | email.seattletimes.com | newsletters | |
| sender | @e.peakdesign.com | newsletters | |
| sender | eric@lispcast.com | newsletters | |
| sender | ericriveracooks@gmail.com | newsletters | |
| sender | @eugenearthouse.com | newsletters | |
| sender | evening-edition@muledesign.com | newsletters | |
| sender | @extrafoc.us | newsletters | |
| sender | ezine@apogeerockets.com | newsletters | |
| sender | floatingleaves.com | newsletters | |
| sender | @fortelabs.co | newsletters | |
| sender | @friendsoffamilyfarmers.org | newsletters | |
| sender | @gaffta.org | newsletters | |
| sender | gareth@morethanseven.net | newsletters | |
| sender | @geekli.st | newsletters | |
| sender | getpocket.com | newsletters | |
| sender | gridsagegames@gmail.com | newsletters | |
| sender | groupsupdates@yahoo.com | newsletters | |
| sender | hello@sqlfordevs.com | newsletters | |
| sender | @heroku.com | newsletters | |
| sender | @humblebundle.com | newsletters | |
| sender | humblebundle.com | newsletters | |
| sender | iam8bit | newsletters | |
| sender | i.drop.com | newsletters | |
| sender | @ilovewasting.ink | newsletters | |
| sender | info@ridewithgps.com | newsletters | |
| sender | instacartemail.com | newsletters | |
| subject | is now available on Steam! | newsletters | |
| sender | jason@eff.org | newsletters | |
| sender | @katmaiconservancy.org | newsletters | |
| sender | kitsch-bent.com | newsletters | |
| sender | lex@sreweekly.com | newsletters | |
| sender | livingcomputers.org | newsletters | |
| sender | @longnow.org | newsletters | |
| sender | @lwn.net | newsletters | |
| sender | @mail.frame.work | newsletters | |
| sender | @mail.rally.tv | newsletters | |
| sender | mail.zillow.com | newsletters | |
| sender | marketplace.amazon.com | newsletters | |
| sender | marketplace-messages@amazon.com | newsletters | |
| sender | messages.squareup.com | newsletters | |
| sender | @monasticacademy.org | newsletters | |
| sender | motortrend.com | newsletters | |
| sender | Mozilla@e.mozilla.org | newsletters | |
| sender | nature.org | newsletters | |
| sender | nepalteasllc.com | newsletters | |
| sender | @newegg.com | newsletters | |
| sender | news@citylight.seattle.gov | newsletters | |
| sender | newscomms.squareup.com | newsletters | |
| sender | news-googleplay@google.com | newsletters | |
| sender | newsletters.vice.com | newsletters | |
| sender | news@sender.abebooks.com | newsletters | |
| sender | news@wrcplus.sportmailer.com | newsletters | |
| sender | noreply-googleplay@google.com | newsletters | |
| sender | noreply@hirefrederick.com | newsletters | |
| sender | no-reply@kickstarter.com | newsletters | |
| sender | noreply@messaging.squareup.com | newsletters | |
| sender | noreply@musicbrainz.org | newsletters | |
| sender | no-reply@sellfymail.com | newsletters | |
| sender | @notices.rei.com | newsletters | |
| sender | office@stillsitting.com | newsletters | |
| sender | organizing@eff.org | newsletters | |
| sender | @patreon.com | newsletters | |
| sender | peacevans.com | newsletters | |
| sender | pebble.com | newsletters | |
| sender | peterc.org | newsletters | |
| sender | peter@webopsweekly.com | newsletters | |
| sender | phxart.org | newsletters | |
| sender | picks@eventbrite.com | newsletters | |
| sender | pono@sfconservancy.org | newsletters | |
| sender | @portlandgp.com | newsletters | |
| sender | postmaster@itch.io | newsletters | |
| sender | postmaster@updates.itch.io | newsletters | |
| sender | press@newsletter.fastmailteam.com | newsletters | |
| sender | privacyxfn@transcend.io | newsletters | |
| sender | purelyfunctional.tv | newsletters | |
| sender | pythonweekly.com | newsletters | |
| sender | response.hcn.org | newsletters | |
| sender | retromodding.com | newsletters | |
| sender | riseofprivacytech.com | newsletters | |
| sender | rumi.tsuchihashi | newsletters | |
| sender | sfmarketing.twitch.tv | newsletters | |
| sender | shop.kobo.com | newsletters | |
| sender | simplelooseleaf.com | newsletters | |
| subject | Steam wishlist are on sale | newsletters | |
| subject | Steam wishlist is for sale | newsletters | |
| subject | Steam wishlist is on sale | newsletters | |
| sender | store-news@amazon.com | newsletters | |
| sender | Storesteampowered.com | newsletters | |
| sender | substack.com | newsletters | |
| sender | support@linode.com | newsletters | |
| sender | theinformation.com | newsletters | |
| sender | thisweek@indiewebcamp.com | newsletters | |
| sender | this-week-in-rust@webstream.io | newsletters | |
| sender | ticketmaster.com | newsletters | |
| sender | tindie.com | newsletters | |
| sender | @tokyoflash.com | newsletters | |
| sender | transitriders.org | newsletters | |
| sender | translifeline.org | newsletters | |
| sender | twir@rust-lang.org | newsletters | |
| sender | Uber Eats | newsletters | |
| subject | 📢 Update | newsletters | indiegogo campaigns |
| sender | @update.strava.com | newsletters | |
| sender | visakanv@creators.gumroad.com | newsletters | |
| sender | @warprecords.com | newsletters | |
| sender | @white2tea.com | newsletters | |
| sender | workingwa.org | newsletters | |
| sender | youngmountaintea.com | newsletters | |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(newsletters-lists)>>
#+end_src
** INPROGRESS Marketing shit :noexport:NOEXPORT:
Marketing shit I would prefer to never see again. I would like to add some Lua to mark these read after like 30 or 60 days.
#+NAME: round-file-lists
| Predicate | Value | Destination | Comment |
|-------------+-----------------------------------------+------------------------+-----------------|
| sender | 1015.com | newsletters/round-file | |
| sender | ahoyahoy@nextthing.co | newsletters/round-file | |
| sender | amazon-@amazon.com | newsletters/round-file | |
| sender | andrea@phxfilm.com | newsletters/round-file | |
| sender | answers@amazon.com | Junk Mail | |
| sender | auntritas.org | Junk Mail | |
| sender | aws-marketing-email-replies@amazon.com | newsletters/round-file | |
| sender | @ballardfoodbank.org | newsletters/round-file | |
| sender | barnesandnoble@m.bn.com | newsletters/round-file | |
| sender | betabrand.com | newsletters/round-file | |
| sender | blackberrymobile.com | newsletters/round-file | |
| sender | bluebottlecoffee.com | newsletters/round-file | |
| sender | bose.com | newsletters/round-file | |
| sender | @brainstormer.com | newsletters/round-file | |
| sender | browserstack.com | newsletters/round-file | |
| destination | capitalteas@rix.si | newsletters/round-file | |
| sender | cardsagainsthumanity.com | newsletters/round-file | |
| sender | @coderwall.com | newsletters/round-file | |
| sender | codeword-sf.com | newsletters/round-file | |
| sender | comixology@e.comixology.com | newsletters/round-file | |
| sender | community@lyft.com | newsletters/round-file | |
| sender | Coursera@email.coursera.org | newsletters/round-file | |
| sender | customer-reviews-messages@amazon.com | newsletters/round-file | |
| sender | customerservice@play-asia.com | newsletters/round-file | |
| sender | @davincivaporizer.com | newsletters/round-file | |
| sender | digest-noreply@quora.com | newsletters/round-file | |
| sender | discountcab.com | Junk Mail | |
| sender | discover@airbnb.com | newsletters/round-file | |
| sender | @drdiabolicshow.com | newsletters/round-file | |
| sender | drippler.com | newsletters/round-file | |
| sender | e.asu.edu | newsletters/round-file | |
| sender | @eaze.com | newsletters/round-file | |
| sender | eazeup.com | newsletters/round-file | |
| sender | @e.bevmo.com | newsletters/round-file | |
| sender | e.blueapron.com | newsletters/round-file | |
| sender | @e.com.bankofamerica.com | newsletters/round-file | |
| sender | e.grubhub.com | newsletters/round-file | |
| sender | @elastic.co | newsletters/round-file | |
| sender | emailmarketing@rackspace.com | newsletters/round-file | |
| sender | email.opentable.com | newsletters/round-file | |
| sender | @email.overnightprints.com | newsletters/round-file | |
| sender | @email.vzwshop.com | newsletters/round-file | |
| sender | @email.zazzle.com | newsletters/round-file | |
| sender | fh.org | Junk Mail | |
| sender | filabot.com | newsletters/round-file | |
| sender | flippfly.com | Junk Mail | |
| sender | footcardigan.com | Junk Mail | |
| sender | fortnite@epicgames.com | newsletters/round-file | |
| sender | @glasanimation.com | newsletters/round-file | |
| sender | @glassdoor.com | newsletters/round-file | |
| sender | goldenvoice.com | newsletters/round-file | |
| sender | hello@gigcarshare.com | newsletters/round-file | |
| sender | hello@gofundme.com | newsletters/round-file | |
| sender | heroforge.com | newsletters/round-file | |
| sender | hobbico.com | newsletters/round-file | |
| sender | hulumail.com | newsletters/round-file | |
| sender | ifly.alaskaair.com | newsletters/round-file | |
| sender | info@cascadiajs.com | newsletters/round-file | |
| sender | info.headspace.com | newsletters/round-file | |
| sender | info@liveheroes.com | newsletters/round-file | |
| sender | info@outsidercomics.com | newsletters/round-file | |
| sender | info@silkroadteas.com | newsletters/round-file | |
| sender | info@spectrumboutique.com | newsletters/round-file | |
| sender | info@victorlove.com | newsletters/round-file | |
| sender | ingress-support@google.com | newsletters/round-file | |
| sender | insymmetry | newsletters/round-file | |
| sender | jill.htaplin@gmail.com | newsletters/round-file | outsider comics |
| sender | @klm-email.com | newsletters/round-file | |
| sender | laffairemusicale.com | newsletters/round-file | |
| sender | launch@rackspace.com | newsletters/round-file | |
| sender | @leapmotion.com | newsletters/round-file | |
| sender | lifx.co | newsletters/round-file | |
| sender | lulu.com | newsletters/round-file | |
| sender | mail2.ncaa.com | newsletters/round-file | |
| sender | mail.barnesandnoble.com | newsletters/round-file | |
| subject | mailing list membership reminder | Junk Mail | |
| sender | @marketing.gofundme.com | newsletters/round-file | |
| sender | marketing@ultimaker.com | newsletters/round-file | |
| sender | massdrop.com | newsletters/round-file | |
| sender | matadorcoffee@gmail.com | newsletters/round-file | |
| sender | materiacollective.com | newsletters/round-file | |
| sender | maximumfun.org | newsletters/round-file | |
| sender | member@outbound.research.net | newsletters/round-file | |
| sender | @mesaartscenter.com | newsletters/round-file | |
| sender | mezzaninesf.com | newsletters/round-file | |
| sender | misfit.com | newsletters/round-file | |
| sender | mystrength.com | newsletters/round-file | |
| sender | @news.hpwebosnewsletters.com | newsletters/round-file | |
| sender | newsletter@bad-dragon.com | newsletters/round-file | |
| sender | @newsletters.sourceforge.net | newsletters/round-file | |
| sender | nianticlabs.com | newsletters/round-file | |
| sender | noreply@bandainamcoent.com | newsletters/round-file | |
| sender | noreply@blizzard.com | newsletters/round-file | |
| sender | noreply@ultimaker.com | newsletters/round-file | |
| sender | notification@mention.com | newsletters/round-file | |
| sender | peter@threyda.com | newsletters/round-file | |
| sender | podcon.com | Junk Mail | |
| sender | ponoko.com | newsletters/round-file | |
| sender | postmates.com | newsletters/round-file | |
| sender | rackspace-feedback@noreply.jobs2web.com | newsletters/round-file | |
| sender | @raggedwing.org | newsletters/round-file | |
| sender | redbubble.com | newsletters/round-file | |
| sender | reply@oreilly.com | newsletters/round-file | |
| sender | @rickshawstop.com | newsletters/round-file | |
| sender | @roku.com | newsletters/round-file | |
| sender | roxie.com | newsletters/round-file | |
| sender | rye51.com | newsletters/round-file | |
| sender | sales@xheli.com | newsletters/round-file | |
| sender | savings2.creditkarma.com | newsletters/round-file | |
| sender | scottevest.com | newsletters/round-file | |
| sender | sfmta@public.govdelivery.com | newsletters/round-file | |
| sender | @sosh.com | newsletters/round-file | |
| sender | SouthwestAirlines@iluv.southwest.com | newsletters/round-file | |
| sender | @sparkfun.com | newsletters/round-file | |
| sender | spl.org | newsletters/round-file | |
| sender | stackexchange.com | newsletters/round-file | |
| sender | stackoverflow.email | newsletters/round-file | |
| sender | @stacksocial.com | newsletters/round-file | |
| sender | @statebicycle.com | newsletters/round-file | |
| sender | statesidepresentsinaz@yahoo.com | newsletters/round-file | |
| sender | @statusnetondemand.org | newsletters/round-file | |
| sender | @storquest.com | newsletters/round-file | |
| sender | @subscriptions.kingcounty.gov | newsletters/round-file | |
| sender | supportspl.org | newsletters/round-file | |
| sender | teespring.com | newsletters/round-file | |
| sender | @theaterleague.org | newsletters/round-file | |
| sender | thefilmbarphx.com | Junk Mail | |
| sender | themooltipass.com | newsletters/round-file | |
| sender | @theroyaleaz.com | newsletters/round-file | |
| sender | tinycircuits.com | newsletters/round-file | |
| sender | trycaviar.com | newsletters/round-file | |
| sender | typeamachines.com | newsletters/round-file | |
| sender | updates@trulia.com | newsletters/round-file | |
| sender | usagundam@gmail.com | newsletters/round-file | |
| sender | usagundamstore.com | newsletters/round-file | |
| sender | vectr.com | newsletters/round-file | |
| sender | @verizonwireless.com | newsletters/round-file | |
| sender | vfe-campaign-response@amazon.com | newsletters/round-file | |
| sender | videogamedj@gmail.com | newsletters/round-file | |
| sender | westbrook2018.com | newsletters/round-file | |
| sender | @wolfram.com | newsletters/round-file | |
| sender | xheli.com | newsletters/round-file | |
| sender | zipcar.com | newsletters/round-file | |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(round-file-lists)>>
#+end_src
** Fedora Lists
I used to be more active than I am in Fedora.
#+NAME: fedora-lists
| Predicate | Value | Destination |
|-------------+-----------------------------------------------+------------------------|
| destination | gitbeefymiracle-members@fedoraproject.org | fedora |
| list_id | advisory-board.lists.fedoraproject.org | fedora/advisory-board |
| list_id | council.lists.fedoraproject.org | fedora/advisory-board |
| list_id | ambassadors.lists.fedoraproject.org | fedora/ambassadors |
| list_id | famna-regionals.lists.fedoraproject.org | fedora/ambassadors |
| destination | fedora-socialmedia-members@fedoraproject.org | fedora/ambassadors |
| list_id | announce.lists.fedoraproject.org | fedora/announce |
| list_id | bugzilla.redhat.com | fedora/bugs |
| list_id | pkgs.fedoraproject.org | fedora/bugs |
| sender | bugzilla@redhat.com | fedora/bugs |
| sender | buildsys@fedoraproject.org | fedora/buildsys |
| sender | scm-commits@lists.fedoraproject.org | fedora/buildsys |
| sender | updates@fedoraproject.org | fedora/buildsys |
| list_id | cloud.lists.fedoraproject.org | fedora/cloud |
| list_id | design-team.lists.fedoraproject.org | fedora/design-team |
| list_id | devel.lists.fedoraproject.org | fedora/devel |
| list_id | docs.lists.fedoraproject.org | fedora/docs |
| list_id | freemedia.lists.fedoraproject.org | fedora/freemedia |
| list_id | fudcon-planning.lists.fedoraproject.org | fedora/fudcon-planning |
| list_id | kde.lists.fedoraproject.org | fedora/kde |
| list_id | marketing.lists.fedoraproject.org | fedora/marketing |
| list_id | news.lists.fedoraproject.org | fedora/news |
| list_id | packaging.lists.fedoraproject.org | fedora/packaging |
| list_id | .rpmfusion.org | fedora/rpmfusion |
| sender | @rpmfusion.org | fedora/rpmfusion |
| list_id | summer-coding-discuss.lists.fedoraproject.org | fedora/summer-coding |
| list_id | summer-coding.lists.fedoraproject.org | fedora/summer-coding |
| list_id | tos.teachingopensource.org | fedora/tos |
| list_id | metrics-wg.theopensourceway.org | fedora/tosw |
| list_id | tosw.lists.fedorahosted.org | fedora/tosw |
| list_id | web-members | fedora/websites |
| list_id | websites.lists.fedoraproject.org | fedora/websites |
| destination | web-members@fedoraproject.org | fedora/websites |
| sender | root@fedoraproject.org | fedora/websites |
This line-noise exports the table as =lua= to the imapfilter configuration using the helpers defined above.
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(fedora-lists)>>
#+end_src
** Hackerspace Lists
I used to be subscribed to a bunch of these, I'm pretty sure half of these are inactive now, but I keep the filters around Just In Case
#+NAME: hackerspace-lists
| Predicate | Value | Destination |
|-------------+-------------------------------------------+-----------------------------------|
| list_id | c.h.i.p..bbs.nextthing.cofastmail. | CHIP |
| list_id | discuss.lists.acemonstertoys.org | hackerspaces/amt |
| list_id | lists.acemonstertoys.org | hackerspaces/amt |
| destination | acemonstertoys.org | hackerspaces/amt |
| list_id | board.lists.acemonstertoys.org | hackerspaces/amt-board |
| list_id | bay-area-reprap.googlegroups.com | hackerspaces/bay-area-reprap |
| list_id | dn42 | hackerspaces/dn42 |
| list_id | discuss.lists.hackerspaces.org | hackerspaces/hackerspaces-discuss |
| list_id | heatsynclabs+owner.googlegroups.com | hackerspaces/heatsynclabs |
| list_id | heatsynclabs.googlegroups.com | hackerspaces/heatsynclabs |
| destination | heatsynclabs+msgappr@googlegroups.com | hackerspaces/heatsynclabs |
| list_id | makerbot.googlegroups.com | hackerspaces/makerbot |
| list_id | noisebridge-discuss.lists.noisebridge.net | hackerspaces/noisebridge |
| list_id | open-access-control.googlegroups.com | hackerspaces/oac |
| list_id | phxdata.googlegroups.com | hackerspaces/phxdata |
| list_id | sfhackerspace.googlegroups.com | hackerspaces/sfhackerspace |
| list_id | nortonimperiallabs.github.com | hackerspaces/sfhackerspace |
| destination | Norton Imperial Laboratories | hackerspaces/sfhackerspace |
| list_id | spaceapi-devel.lists.hackerspaces.org | hackerspaces/spaceapi |
| list_id | sudoroom.org | hackerspaces/sudo |
| destination | newsletter@peoplesopen.net | hackerspaces/sudo |
| list_id | discuss.synhak.org | hackerspaces/synhak |
| list_id | synshop.googlegroups.com | hackerspaces/synshop |
| list_id | ultimaker.googlegroups.com | hackerspaces/ultimaker |
| list_id | vhs-general.lists.hackspace.ca | hackerspaces/vhs |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(hackerspace-lists)>>
#+end_src
** KDE Lists
I am mostly idle in KDE land but still have some bugzillas or projects I track
#+NAME: kde-lists
| Predicate | Value | Destination |
|-----------+-----------------------------+-------------------|
| list_id | android-qt.googlegroups.com | kde/android-qt |
| list_id | kde-announce.kde.org | kde/announce |
| list_id | kde-cvs-announce.kde.org | kde/announce |
| list_id | bugsquad.kde.org | kde/bugs |
| sender | bugzilla_noreply@kde.org | kde/bugs |
| list_id | kde-community.kde.org | kde/community |
| list_id | kde-core-devel.kde.org | kde/core-devel |
| list_id | kde-devel.kde.org | kde/devel |
| list_id | kde-ev-membership.kde.org | kde/ev-membership |
| list_id | kde-games-devel.kde.org | kde/games |
| list_id | kde-linux.kde.org | kde/linux |
| list_id | owncloud.kde.org | kde/owncloud |
| list_id | kde-pim.kde.org | kde/pim |
| list_id | kdepim-users.kde.org | kde/pim-users |
| list_id | plasma-devel.kde.org | kde/plasma |
| list_id | kde-promo.kde.org | kde/promo |
| list_id | kde-scm-interest.kde.org | kde/scm |
| list_id | kde-soc.kde.org | kde/soc |
| list_id | kde.mail.kde.org | kde/support |
| list_id | kde-usability.kde.org | kde/usability |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(kde-lists)>>
#+end_src
** Other Communities
Most of these are idle/unmonitored communities but we keep the filtering around.
#+NAME: communities-lists
| Predicate | Value | Destination | Comment |
|-------------+------------------------------------------------------+------------------------------+---------|
| list_id | ansible-project.googlegroups.com | ansible | |
| destination | ASULUG@ASU.EDU | asu | |
| list_id | emacsconf | emacsconf | |
| list_id | emacsconf | emacsconf | |
| list_id | enyo-development.googlegroups.com | webos | |
| list_id | friendsofsecurityplanner.groups.io | 1ml/friendsofsecurityplanner | |
| destination | google-summer-of-code-mentors-list@googlegroups.com | gsoc | |
| list_id | google-summer-of-code-students-list.googlegroups.com | gsoc | |
| sender | @greenseattle.org | 1ml/greenways | |
| list_id | greenways | 1ml/greenways | |
| sender | info@extremefliers.co.uk | Junk Mail | |
| list_id | kriskowal.googlegroups.com | 1ml/kris | |
| list_id | lsdj.yahoogroups.com | lsdj | |
| list_id | lunar-general.googlegroups.com | rocketry_lunar | |
| destination | lunar-general@googlegroups.com | rocketry_lunar | |
| sender | nextthing@discoursemail.com | CHIP | |
| list_id | orgzly-android-beta.googlegroups.com | org-mode | |
| list_id | phoenix-gdg.googlegroups.com | phoenix-gdg | |
| list_id | plug-discuss.lists.phxlinux.org | phoenix-lug | |
| sender | root@hypervisor01.pss9.kickass.systems | Junk Mail | |
| destination | SeaGL2021@seagl.org | 1ml/seagl | |
| sender | @seattlegreenways.org | 1ml/greenways | |
| destination | seattlegreenways.org | 1ml/greenways | |
| destination | spritely@rix.si | 1ml/spritely | |
| list_id | sssmembers.yahoogroups.com | rocketry/sss | |
| destination | sssmembers@yahoogroups.com | rocketry_sss | |
| sender | waypoint@discoursemail.com | WaypointForums | |
| sender | @github.com | github | |
#+begin_src lua :tangle ~/arroyo-nix/files/imapfilter.lua :noweb yes
<<call-imapfilter-from-table(communities-lists)>>
#+end_src

View File

@ -16,7 +16,7 @@
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
#+ARROYO_MODULE_WANTS: cce/diminish.org
=org-tempo=[fn:1] provides easy templating in org-mode buffers and I use them to make it easier to write code for the [[id:cce/cce][CCE]]. I can tab across =<s= and =<q= to expand to source and quote blocks, along with many others (and it's customisable of course through =org-tempo-keywords-alist=.)
=org-tempo=[fn:1: https://orgmode.org/org.html#Structure-Templates ] provides easy templating in org-mode buffers and I use them to make it easier to write code for the [[id:cce/cce][CCE]]. I can tab across =<s= and =<q= to expand to source and quote blocks, along with many others (and it's customisable of course through =org-tempo-keywords-alist=.)
#+begin_src emacs-lisp
(provide 'cce/literate-programming)
@ -97,6 +97,3 @@ Finally, =org-edit-src= simply cannot steal my window configuration from me.
(setq org-plantuml-executable-path "/nix/store/gyznjv622jqc8d1x56r7c4wp2rq8md7m-plantuml-1.2023.1/bin/plantuml")
#+end_src
* Footnotes
[fn:1] https://orgmode.org/org.html#Structure-Templates

View File

@ -7,8 +7,6 @@
#+filetags: :Emacs:Tool:Communication:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle mbsync.el
#+PROPERTY: header-args:yaml :tangle roles/endpoint/tasks/mbsync.yml
#+ARCOLOGY_KEY: cce/mbsync
#+ARCOLOGY_ALLOW_CRAWL: t

View File

@ -14,7 +14,7 @@ After [[id:20230529T205533.092875][I tried setting up deploy-rs and it (and flak
#+ATTR_HTML: :width 40em
#+CAPTION: a dogshit vince mcmahon meme i made showing the progression from morph, to flake experiments, and back to morph
[[https://files.fontkeming.fail/s/74KK77RDgfHQyLD/download/terrible-meme-morph-wrapper.png]]
[[https://files.fontkeming.fail/s/6NfrMZ66MPtJpit/download/terrible-meme-morph-wrapper.png]]
I landed on a solution inspired by [[roam:Xe Iaso]]'s [[https://github.com/Xe/nixos-configs/blob/master/ops/metadata/hosts.toml][hosts.toml]] setup. See [[id:20230530T120902.994787][Deploying from my =hosts.toml= ]] for how this file is created, structured, and used in the =morph= commands themselves.
@ -117,12 +117,12 @@ def wrap(hosts_file, deploy_all, hosts, do_deploy, deploy_action, confirm, force
if do_deploy:
if force or host_available(host):
cmd = f"morph deploy --on={host} --passwd ~/arroyo-nix/networks/{network}.nix {deploy_action}"
cmd = f"morph deploy --on={host} --passwd ~/arroyo-nix/networks/{network}.nix {deploy_action} --keep-result"
else:
click.echo(f"{host} is unavailable, skipping...")
continue
else:
cmd = f"morph build --on={host} ~/arroyo-nix/networks/{network}.nix"
cmd = f"morph build --on={host} ~/arroyo-nix/networks/{network}.nix --keep-result"
click.echo(f"Prepared to run '{cmd}'")
if confirm:

View File

@ -4,6 +4,7 @@
:ROAM_ALIASES: MPD
:END:
#+TITLE: Listening to Music with MPD
#+filetags: :Project:
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+AUTO_TANGLE: t
#+ARCOLOGY_KEY: cce/mpd

View File

@ -29,7 +29,7 @@ rec {
}
#+end_src
Here the strings are basically just taken out of [[id:arroyo/nixos][Arroyo NixOS Generator]], formatted to point to the relative-root of the CCE =nixlib= directory, sorted alphabetically, and concatenated.
Here the strings are basically just taken out of [[id:arroyo/nixos][Arroyo NixOS Generator]], formatted to point to the relative-root of the CCE =nixlib= directory, sorted alphabetically, and concatenated. Links to published versions of these modules can be found on the [[id:cce/cce][CCE]] index page.
#+NAME: arroyo_nixos_imports
#+begin_src emacs-lisp

View File

@ -32,13 +32,13 @@ Basically all I want to work on it is KODI and Firefox
- Official Ubuntu image didn't work well:
#+begin_quote
- No EGL/GPU Acceleration on X11 (You have to use Minimal image to have a HW GPU acceleration on the framebuffer)
- Chromium web rendering performance is quite slow while FireFox can play YouTube 1080p videos.[fn:1]
- Chromium web rendering performance is quite slow while FireFox can play YouTube 1080p videos.[fn:1:this was not true, actually]
#+end_quote
- DietPi was X11 based, same issue.
- [[https://forum.odroid.com/viewtopic.php?f=179&t=39696][these guys]] funroll their loops
- [[https://forum.odroid.com/viewtopic.php?f=52&t=42300][Ubuntu 21.04 for ODROID-N2/C4/HC4]]
- =apt install kubuntu-desktop kwin-wayland=
- from the forum post:[fn:2]
- from the forum post:[fn:2:love to install random software builds lol. it's a settop box for ublock'd youtube and lichess, idc.]
#+begin_src shell
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E6A17451DC058F40
sudo add-apt-repository -S deb http://ppa.launchpad.net/saiarcot895/chromium-beta/ubuntu/ groovy main
@ -109,7 +109,7 @@ rec {
../../nixos/rrix.nix
#+end_example
- I am providing a stub =hardware-configuration.nix= and =generated.nix=. I don't like this at all, it makes me nervous, I know some day I'll accidentally clobber these settings on my remote and end up without a bootloader or some hilarious nonsense. sigh. here we go![fn:3]
- I am providing a stub =hardware-configuration.nix= and =generated.nix=. I don't like this at all, it makes me nervous, I know some day I'll accidentally clobber these settings on my remote and end up without a bootloader or some hilarious nonsense. sigh. here we go![fn:3: this is taken verbatim from [[id:cce/my_nixos_configuration][My NixOS configuration]]]
#+begin_src nix :tangle ~/arroyo-nix/roles/settop/hardware-configuration.nix :noweb yes
{}
#+end_src
@ -172,11 +172,3 @@ rec {
programs.kdeconnect.enable = true;
}
#+end_src
* Footnotes
[fn:1]this was not true.
[fn:2]love to install random software builds lol. it's a settop box for ublock'd youtube and lichess, idc.
[fn:3]this is taken verbatim from [[id:cce/my_nixos_configuration][My NixOS configuration]]

View File

@ -25,7 +25,7 @@ My desktop setup is very much inspired by my good friend [[id:ff7b41c0-3bab-47f3
How much farther could I take it though?
The last time I visited kalessin he showed me something that I thought was quite remarkable: his desktop would virtualize Windows 10 with his graphics card directly forwarded to the VM so that his entire Steam library would run without having to consider any Proton shenanigans[fn:1]. I thought that was pretty impressive and it's got my brain going in this direction. His machine is an AMD threadripper and AMD GPU and the host runs Arch, but in theory this should work well enough with Intel, Nvidia, and NixOS, right? And if it is good, maybe I'll finally get around to refreshing my desktop with a bit more ram and a bit better GPU... As long as I don't have to deal with the Nvidia X11 drivers or Nouveau ever again.
The last time I visited kalessin he showed me something that I thought was quite remarkable: his desktop would virtualize Windows 10 with his graphics card directly forwarded to the VM so that his entire Steam library would run without having to consider any Proton shenanigans[fn:1:That said, since I have been using the [[id:20220810T163745.293071][SteamDeck]] I am much less concerned with Proton compatibility in general... Worth not having to consider it all the time though and having a Windows machine at my finger tips.]. I thought that was pretty impressive and it's got my brain going in this direction. His machine is an AMD threadripper and AMD GPU and the host runs Arch, but in theory this should work well enough with Intel, Nvidia, and NixOS, right? And if it is good, maybe I'll finally get around to refreshing my desktop with a bit more ram and a bit better GPU... As long as I don't have to deal with the Nvidia X11 drivers or Nouveau ever again.
#+begin_src plantuml :file data/20/230225T150449.622645/desktop-diagram.png
skinparam linetype polyline
@ -97,7 +97,7 @@ The four cables between the Tower and Desk are cable-tied together with a power
I started by reading the [[https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Setting_up_IOMMU][Arch Linux docs]] as well as [[https://wiki.gentoo.org/wiki/GPU_passthrough_with_libvirt_qemu_kvm][Gentoo's]] on setting this up.
Most of the work here came in enabling =VT-d= and =VT-x= in the BIOS, and collating the devices properly. =VT-x= is the general "Intel hardware virtualization" support which lets =qemu-kvm= work, a bunch of CPU instructions and support for entering in to code that thinks it is in *ring 0* when it is not, it's really clear in whether this works or not, and whether it's enabled or not. =VT-d= is the Intel-specific technical name for an virtualization-aware "IOMMU", basically allowing the OS to re-map hardware memory to main-memory addresses and in to the VMs' space. Your motherboard has to support it too, but if they do your VM can have PCI devices attached to it. My Intel i7-7700k and Asus 270AR motherboard both claimed to support VT-d but it was a bear to find that it was under a different firmware configuration menu than the VT-x feature was.[fn:2] I spent quite some time trying to debug this after mistaking the generic "intel virtualization" option to only by =VT-x=, looking in ARK whether my motherboard chipset and CPU supported VT-d, spelunking the menu, eating dinner, getting lost in the woods, etc etc.
Most of the work here came in enabling =VT-d= and =VT-x= in the BIOS, and collating the devices properly. =VT-x= is the general "Intel hardware virtualization" support which lets =qemu-kvm= work, a bunch of CPU instructions and support for entering in to code that thinks it is in *ring 0* when it is not, it's really clear in whether this works or not, and whether it's enabled or not. =VT-d= is the Intel-specific technical name for an virtualization-aware "IOMMU", basically allowing the OS to re-map hardware memory to main-memory addresses and in to the VMs' space. Your motherboard has to support it too, but if they do your VM can have PCI devices attached to it. My Intel i7-7700k and Asus 270AR motherboard both claimed to support VT-d but it was a bear to find that it was under a different firmware configuration menu than the VT-x feature was.[fn:2:I should write down which menu since it was a PITA to find but woops i'm typing on this machine right now!] I spent quite some time trying to debug this after mistaking the generic "intel virtualization" option to only by =VT-x=, looking in ARK whether my motherboard chipset and CPU supported VT-d, spelunking the menu, eating dinner, getting lost in the woods, etc etc.
but with that enabled, it should be possible to see which *IOMMU groups* your hardware is set in to, hopefully the groupings make sense. =qemu-kvm= can only forward an entire IOMMU group, so maybe move some stuff around in the chassis if they group oddly. Here we see IOMMU group 1 has my Nvidia card in it, and the PCIe Controller it's plugged in to.
@ -148,15 +148,14 @@ With this terminal output, the following NixOS configuration can be created. It
#+begin_src nix :noweb-ref vfio
boot.kernelParams = [
"intel_iommu=on"
# nvidia gtx 1060, realtek pcie ethernet controller
"vfio-pci.ids=10de:1c03,10de:10f1,10ec:8168,1b73:1100"
# "efifb=off"
# nvidia gtx 1060, realtek pcie ethernet controller, USB
"vfio-pci.ids=10de:1c03,10de:10f1,10ec:8168,1b21:2142"
];
boot.initrd.availableKernelModules = [ "vfio-pci" ];
boot.initrd.preDeviceCommands = ''
echo "Enabling vfio-pci"
# USB controller, GPU, GPU audio, Eth
DEVS="0000:02:00.0 0000:01:00.0 0000:01:00.1 0000:06:00.0"
DEVS="0000:82:00.0 0000:83:00.0 0000:83:00.1 0000:02:00.0"
for DEV in $DEVS; do
echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
done
@ -172,6 +171,19 @@ I make the VFIO stuff optional, and then configure =libvirtd= in a pretty bog-st
#+begin_src nix :tangle ~/arroyo-nix/roles/desktop/default.nix :mkdirp yes :noweb yes
{ config, lib, pkgs, ... }:
let
dump_iommu =
(pkgs.writeScriptBin "dump_iommu" ''
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V);
do
echo "IOMMU Group ''${g##*/}:";
for d in $g/devices/*;
do
echo -e "\t$(${pkgs.pciutils}/bin/lspci -k -nns ''${d##*/})";
done;
done
'');
in
{
options = {
boot.enableVFIO = lib.mkEnableOption {
@ -186,7 +198,10 @@ I make the VFIO stuff optional, and then configure =libvirtd= in a pretty bog-st
onBoot = "start";
onShutdown = "shutdown";
};
environment.systemPackages = with pkgs; [ virt-manager ];
environment.systemPackages = with pkgs; [
virt-manager
dump_iommu
];
<<vfio>>
};
}
@ -257,8 +272,3 @@ Forwarding USB devices one by one is fine during setup and fiddling around, but
- CUDA toolkit
- kind of want to play with stable diffusion on local GPU
* Footnotes
[fn:1] That said, since I have been using the [[id:20220810T163745.293071][SteamDeck]] I am much less concerned with Proton compatibility in general... Worth not having to consider it all the time though and having a Windows machine at my finger tips.
[fn:2] I should write down which menu since it was a PITA to find but woops i'm typing on this machine right now!

View File

@ -90,12 +90,14 @@ rec {
../../nixos/home-manager.nix
../../nixos/jellyfin.nix
../../nixos/location.nix
../../nixos/matrix.nix
../../nixos/morph-wrapper.nix
../../nixos/nextcloud.nix
../../nixos/nginx.nix
../../nixos/nix-path.nix
../../nixos/nixos-builder.nix
../../nixos/nixpkgs.nix
../../nixos/paperless.nix
../../nixos/postgresql.nix
../../nixos/restic.nix
../../nixos/rixpkgs.nix
@ -105,8 +107,10 @@ rec {
../../nixos/tailscale.nix
../../nixos/ttrss.nix
../../nixos/vaultwarden.nix
../../nixos/wallabag.nix
../../nixos/wobservability.nix
../../nixos/wobserver-docker.nix
../../nixos/zfs.nix
#+end_example
#+NAME: arroyo_home-manager_imports

View File

@ -10,7 +10,7 @@
#+ARCOLOGY_KEY: cce/nixos-installer
#+ARCOLOGY_ALLOW_CRAWL: t
There are a few "Supported" methods for installing NixOS: you can use the [[https://nixos.org/manual/nixos/stable/index.html#sec-installation][installer image]] to manually partition and prepare a system, you can [[https://nixos.org/manual/nixos/stable/index.html#sec-installing-from-other-distro][LUSTRATE]] an existing Linux installation with Nix installed on it, or you can use a [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec script]] generally referred to as =justdoit= which is distributed as a script which boots the system in to a NixOS system with a partitioning script which blindly partitions the =rootDevice= and installs NixOS on to that partition. I spent some time this month trying to get the [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec method]] working and it was pretty frustrating. The auto-partitioner and the easy setup through =kexec.justdoit= is nice, but getting the =kexec= working out of the box was frustrating[fn:1], so for now I'll stick with ISO and ISO-as-SD with the =justdoit= work included.
There are a few "Supported" methods for installing NixOS: you can use the [[https://nixos.org/manual/nixos/stable/index.html#sec-installation][installer image]] to manually partition and prepare a system, you can [[https://nixos.org/manual/nixos/stable/index.html#sec-installing-from-other-distro][LUSTRATE]] an existing Linux installation with Nix installed on it, or you can use a [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec script]] generally referred to as =justdoit= which is distributed as a script which boots the system in to a NixOS system with a partitioning script which blindly partitions the =rootDevice= and installs NixOS on to that partition. I spent some time this month trying to get the [[https://github.com/cleverca22/nix-tests/tree/master/kexec][kexec method]] working and it was pretty frustrating. The auto-partitioner and the easy setup through =kexec.justdoit= is nice, but getting the =kexec= working out of the box was frustrating[fn:1:nothing worth complaining about: fedora couldn't kexec the images, fedora couldn't expand the images without doing =TMPDIR=/var/tmp= because tmp is a ramdisk... my mongrel [[id:fedora_linux][Fedora Linux]] plus [[id:cce/home-manager][home-manager]] environment struggled to get virtualization running, and the testing cycle was pretty painful. The [[https://github.com/cleverca22/nix-tests/tree/master/kexec][repository]] I based this around was broken OOTB and even the testing scripts included in it didn't work reliably. The =justdoit= itself took a fair bit of tweaking to get to booting, too. I'll reintegrate kexec some day.], so for now I'll stick with ISO and ISO-as-SD with the =justdoit= work included.
To build an ISO image: [[shell:pushd ~/arroyo-nix/kexec && nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=configuration.nix &]] The file will get symlinked to [[file:~/arroyo-nix/kexec/result/iso]].

107
paperless.org Normal file
View File

@ -0,0 +1,107 @@
:PROPERTIES:
:ID: 20231101T191434.003759
:ROAM_REFS: https://docs.paperless-ngx.com/
:ROAM_ALIASES: Paperless-ngx
:END:
#+TITLE: Paperless-ngx is an open source document management system
#+FILETAGS: :CCE:
#+ARCOLOGY_KEY: cce/paperless-ngx
#+ARCOLOGY_ALLOW_CRAWL: t
#+AUTO_TANGLE: t
This makes it easy to scan, manage, index, and search physical documents. It's available on NixOS, we'll install it here. Paperless was forked in to =paperless-ng= which was forked in to =paperless-ngx=.
It does a lot of heavy-lifting to automatically extract dates and tags from scanned documents, and hopefully gets better to use over time as it learns more and more categorization.
#+ATTR_HTML: :width 40em
[[https://files.fontkeming.fail/s/A5WzEdb8PocLQoQ/download/Screenshot%202023-11-03%20at%2011-45-47%20Documents%20-%20Paperless-ngx.png]]
#+ATTR_HTML: :width 40em
[[https://files.fontkeming.fail/s/YmZE3JLoeDzSrLW/download/Screenshot%202023-11-03%20at%2011-46-02%20Documents%20-%20Paperless-ngx.png]]
* Paperless-ngx on [[id:20211120T220054.226284][The Wobserver]]
I wanted to run this on [[id:cce/wobserver/postgres][PostgreSQL]] but the =SystemD= hardening in the [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][nixpkgs]] [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][NixOS]] module locks it down so much that I couldn't get a =[::1]:5432= connection from the task queues since it thinks they should operate offline. We could eventually munge that but [[id:af26243e-3551-4eeb-8377-2caa56166d24][SQLite is not a toy database]] and this is a borderline toy app, as long as I'm the only one using it.
#+ARROYO_NIXOS_MODULE: nixos/paperless.nix
#+ARROYO_NIXOS_ROLE: server
#+begin_src nix :tangle ~/arroyo-nix/nixos/paperless.nix
{ pkgs, lib, config, ... }:
{
services.nginx.virtualHosts."scanner.fontkeming.fail" = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.paperless.port}";
};
};
services.paperless = {
enable = true;
dataDir = "/srv/paperless";
consumptionDir = "/srv/paperless/consume";
mediaDir = "/srv/paperless/media";
passwordFile = "/srv/paperless/superuser";
extraConfig = {
PAPERLESS_URL = "https://scanner.fontkeming.fail";
PAPERLESS_USE_X_FORWARD_HOST = true;
PAPERLESS_TIME_ZONE="America/Los_Angeles";
PAPERLESS_OCR_LANGUAGE = "eng";
PAPERLESS_OCR_IMAGE_DPI= 600;
};
};
users.users.brother = {
extraGroups = [ "paperless" ];
group = "paperless";
isNormalUser = true;
};
services.vsftpd = {
enable = true;
writeEnable = true;
localUsers = true;
userlistEnable = true;
userlist = ["rrix" "brother"];
extraConfig = ''
local_umask=007
'';
};
networking.firewall.allowedTCPPorts = [ 21 ];
}
#+end_src
After deploying this, SSH in and run =passwd brother= to set the FTP account's password; I could stick an initial hashed password in here or use a local DB file instead of UNIX users but didn't bother, maybe when i have to rebuild [[id:20211120T220054.226284][The Wobserver]] I will improve this a bit.
* Enabling Scan to FTP on My Brother DCP-L2550DW
:PROPERTIES:
:ID: 20231103T115355.388492
:END:
lol lmao:
https://old.reddit.com/r/printers/comments/r1isf8/dcpl2550dw_unable_to_configure_scan_to_ftp/k4vc54p/
#+begin_quote
I know this was posted a while ago but I found a solution for my L2550DW. I noticed that Scan to FTP and other features were enabled for this model in other regions but not for the US model. I found that if I changed the region I was able to scan to FTP.
The first step is to enable maintenance mode, which for this model is done by pressing Menu -> Start -> Up arrow 4 times.
It should display "MAINTENANCE MODE" on the screen now.
Press up or down to get to code 74 and press OK.
For me I changed my region code to 0440 (Asia) and it worked fine. There are sites that list all of the available region codes online as well.
After setting the region, navigate to code 99 to exit maintenance mode. The printer will reboot and apply the new settings. Everything will be reset so you'll need to reconfigure your network settings again, but you should have the option to scan to FTP now.
#+end_quote
I had to manually reconnect it to my WiFi afterwards, too...
Also when you go in to setup the [[https://support.brother.com/g/b/faqend.aspx?c=us&lang=en&prod=mfc9340cdw_all&faqid=faq00002978_001][Scan to FTP]] feature, make sure you disable Passive Mode, =vsftpd= in my configuration doesn't like that.

View File

@ -26,7 +26,7 @@ First commit to xcompmgr was in 2003 and there are still people running non-comp
* Starting =picom= in Emacs
i use picom, a simple X11 compositor that works with [[id:cce/exwm][EXWM]] or [[id:20211206T133651.674012][i3wm]] or [[id:20220421T100313.402598][XMonad]], and have it start after EXWM does, rather than through [[id:cce/home-manager][home-manager]] because KDE's kwin doesn't like to compete for the compositor. I provide a custom backend to prevent =mpv= from tearing.[fn:1]
i use picom, a simple X11 compositor that works with [[id:cce/exwm][EXWM]] or [[id:20211206T133651.674012][i3wm]] or [[id:20220421T100313.402598][XMonad]], and have it start after EXWM does, rather than through [[id:cce/home-manager][home-manager]] because KDE's kwin doesn't like to compete for the compositor. I provide a custom backend to prevent =mpv= from tearing.[fn:1:https://github.com/mpv-player/mpv/wiki/FAQ#X11Intel ]
#+begin_src emacs-lisp
(defun cce/run-picom ()
@ -60,6 +60,3 @@ in
}
#+end_src
* Footnotes
[fn:1] https://github.com/mpv-player/mpv/wiki/FAQ#X11Intel

View File

@ -25,7 +25,22 @@ My go-to multi-write database server is postgres. I like how it has JSON columns
archive_mode = "on";
archive_command = "test ! -f /srv/pgsql/archive/wal/%f && cp %p /srv/pgsql/archive/wal/%f";
statement_timeout = 60*1000;
shared_preload_libraries = "pg_stat_statements";
# log_min_duration_statement = 10000;
# statement_timeout = 60*1000;
shared_buffers = "4GB";
effective_cache_size = "12GB";
maintenance_work_mem = "1GB";
work_mem = "4GB";
default_statistics_target = 250;
max_worker_processes = "40";
max_parallel_workers_per_gather = "10";
max_parallel_workers = "20";
autovacuum = true;
track_counts = true;
};
};
# backup weekly

View File

@ -1,14 +1,17 @@
:PROPERTIES:
:ID: cce/project_work_with_org_mode
:ROAM_ALIASES: "Org-Mode Task Management Configuration"
:END:
#+TITLE: Project Work with Org Mode
#+filetags: :Emacs:CCE:Org:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle org-tasks.el
#+ARROYO_EMACS_MODULE: org-tasks
#+ARCOLOGY_KEY: cce/org-tasks
#+CCE_PRIORITY: 41
#+ARROYO_MODULE_WANTS: cce/org_mode_installation.org
#+ARROYO_MODULE_WANTS: cce/appearance.org
#+ARROYO_EMACS_MODULE: org-tasks
#+ARCOLOGY_KEY: cce/org-tasks
#+ARCOLOGY_ALLOW_CRAWL: t
#+begin_src emacs-lisp
@ -44,10 +47,19 @@ Tasks can be in five states, and flow between them works largely based on intuit
#+end_src
#+begin_src emacs-lisp
(setq org-todo-keyword-faces
'(("NEXT" :foreground "blue" :weight bold)
("INPROGRESS" :foreground "burlywood" :weight bold)
("DONE" :foreground "forest green" :weight bold)
("WAITING" :foreground "orange" :weight bold)
("CANCELLED" :foreground "red" :weight bold)))
(defun cce-get-ef-themes-color (face)
(thread-last
(ef-themes--current-theme-palette)
(alist-get face)
(car)))
(defun cce-update-org-todo-keyword-faces ()
(setq org-todo-keyword-faces
`(("NEXT" :foreground ,(cce-get-ef-themes-color 'blue-warmer) :weight bold)
("INPROGRESS" :foreground ,(cce-get-ef-themes-color 'yellow) :weight bold)
("DONE" :foreground ,(cce-get-ef-themes-color 'green-cooler) :weight bold)
("WAITING" :foreground ,(cce-get-ef-themes-color 'magenta-cooler) :weight bold)
("CANCELLED" :foreground ,(cce-get-ef-themes-color 'red) :weight bold))))
(cce-update-org-todo-keyword-faces)
#+end_src

View File

@ -1,6 +1,6 @@
:PROPERTIES:
:ID: cce/python
:ROAM_REFS: https://en.wikipedia.org/wiki/Python_(programming_language)
:ROAM_REFS: https://python.org "https://en.wikipedia.org/wiki/Python_(programming_language)"
:ROAM_ALIASES: Python
:END:
#+TITLE: Python in Emacs through LSP

View File

@ -74,7 +74,7 @@ Consult contains a bunch of nice builtin-replacements which utilize these other
(setq consult-project-root-function #'projectile-project-root)
(unless (s-contains? "--glob" consult-ripgrep-args)
(setq consult-ripgrep-args (s-concat consult-ripgrep-args
"--glob \"!*~\" .")))
" --glob \"!*~\" .")))
:bind
("C-x b" . consult-buffer)
("C-x 4 b" . consult-buffer-other-window)

View File

@ -23,9 +23,9 @@
I go to great lengths to talk about receiving messages in [[id:26c9e4fd-4501-4b8b-95ce-a2a5230d7c1e][Email and News and Information Pipelines]], but I do not spend a lot of energy in that document discussing out-bound communication. This is because I don't often use email for outbound communication these days, at least as the sole medium. I believe email and similar tools can be effective communication medium for multi-person technical projects, but I am not participating in any of those right now. Off in my own little Cathedral as I am, I find myself mostly sending emails about bills, to my landlord, with my financial advisers and my mentors -- there are few people for whome email is my primary form of communication.
But it's a fine form of communication, especially for those of us who do not actively participate in the Facebook news feed ecosystem, and Story Culture, we're often found without ways to communicate with our kin and our tribe. Email is still universal because of those bill collectors, landlords, and other institutions, and I intend to take advantage of that as a way to communicate with those kin. I find that even though I no longer absorb family updates through newsfeed osmosis, I do hear from folks in response to my emails, so I intend to continue working that in to the design of my websites and the [[id:1d917282-ecf4-4d4c-ba49-628cbb4bb8cc][Arcology]]: Every page on this wiki should be shareable via email[fn:1]. I should be able to curate groups of interest and contact them about my work directly.
But it's a fine form of communication, especially for those of us who do not actively participate in the Facebook news feed ecosystem, and Story Culture, we're often found without ways to communicate with our kin and our tribe. Email is still universal because of those bill collectors, landlords, and other institutions, and I intend to take advantage of that as a way to communicate with those kin. I find that even though I no longer absorb family updates through newsfeed osmosis, I do hear from folks in response to my emails, so I intend to continue working that in to the design of my websites and the [[id:1d917282-ecf4-4d4c-ba49-628cbb4bb8cc][Arcology]]: Every page on this wiki should be shareable via email[fn:1:this is a [[id:knowledge_base][Knowledge Management]] principle]. I should be able to curate groups of interest and contact them about my work directly.
I am uninterested in running the plumbing required to communicate over email. I am currently an ambivalent user of Fastmail.com. It's a fine service, upstanding folks, and they provide good open standards support for things like Calendaring, a contact book, and file hosting, so that it'd absolutely function as a suitable set of services to replace a Google or iCloud account for many people, with a much healthier financial model to boot. But I don't really use a lot of that stuff, instead I host a [[id:20220101T180015.306163][Nextcloud]] server on my [[roam:Fontkeming]] host. And so I use them as an Email provider, and they do provide email quite well enough. But something about my spam filters went sicko a while ago, and I've struggled to reign it in, i think Fastmail's filtering isn't at all prepared to deal with my wildcard inboxes[fn:2]. I continue to use it because it works well enough, but a very light mail-only service would be quite nice. Something with a command line client preconfigured would be very desirable, too, for some reason.
I am uninterested in running the plumbing required to communicate over email. I am currently an ambivalent user of Fastmail.com. It's a fine service, upstanding folks, and they provide good open standards support for things like Calendaring, a contact book, and file hosting, so that it'd absolutely function as a suitable set of services to replace a Google or iCloud account for many people, with a much healthier financial model to boot. But I don't really use a lot of that stuff, instead I host a [[id:20220101T180015.306163][Nextcloud]] server on my [[roam:Fontkeming]] host. And so I use them as an Email provider, and they do provide email quite well enough. But something about my spam filters went sicko a while ago, and I've struggled to reign it in, i think Fastmail's filtering isn't at all prepared to deal with my wildcard inboxes[fn:2:any mail to @rix.si or @whatthefuck.computer accounts all go to the same inbox... this kills the bayesian filter.]. I continue to use it because it works well enough, but a very light mail-only service would be quite nice. Something with a command line client preconfigured would be very desirable, too, for some reason.
I use =msmtp= in the meantime, it is a forwarding mail agent which can be configured to route email to different accounts, so I could have it send mail to fastmail for any of my personal accounts, and trivially reintroduce configuration for an email account tied to an employer's domain or of a nonprofit that I join. My =msmtprc= file is kept out of source-control until such a time as I can document it without leaking my password. Real casual shit, here. This [[id:cce/home-manager][home-manager]] snippet doesn't work since I use SSH tunnels for connection and I can't specify that in the home-manager module.
@ -124,8 +124,3 @@ The second way is with this function =cg-feed-msmtp= which I found on the intern
Only the tallest Rube Goldberg machines, my friends.
* Footnotes
[fn:1] this is a [[id:knowledge_base][Knowledge Management]] principle
[fn:2] any mail to @rix.si or @whatthefuck.computer accounts all go to the same inbox... this kills the bayesian filter.

View File

@ -1,6 +1,7 @@
:PROPERTIES:
:ID: 2e31b385-a003-4369-a136-c6b78c0917e1
:ROAM_ALIASES: SRS org-fc
:ROAM_REFS: https://github.com/l3kn/org-fc
:END:
#+TITLE: Spaced Repetition Study
#+ARCOLOGY_KEY: cce/org-fc
@ -22,7 +23,9 @@ flashcard based learning, a [[id:knowledge_base][Knowledge Management]] system d
Spaced repetition is an evidence-based learning technique that is usually performed with flashcards. Newly introduced and more difficult flashcards are shown more frequently while older and less difficult flashcards are shown less frequently in order to exploit the psychological spacing effect. The use of spaced repetition has been shown to increase rate of learning.
#+end_quote
Anki is the go-to digital solution for general study these days, I use org-drill as it works best with my [[id:knowledge_base][Knowledge Management]] system, see [[id:toki_pona_the_language_of_good][Toki Pona: The Language of Good]] for example. Wani Kani is what I use for [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] and it is also spaced repetition.
Anki is the go-to digital solution for general study these days, but I'd have to extract cards from my notes, and I would rather not. I used org-contrib's =org-drill= for a while but it didn't scale to many files in the [[id:cce/org-roam][org-roam]] paradigm very well. I used Wani Kani for a bit too but syncing my score between local cards and what is in Wani Kani; once I started making cards from my own readings things kind of went off course and even though I have a lifetime subscription to it. It's a good tool, but without making custom cards for it it sort of falls short.
So these days I use a piece of software called [[https://github.com/l3kn/org-fc][org-fc]] which uses =awk= and =find= to generate an index across all files and stores the scores in a drawer alongside each heading. It's not MELPA so it's a bit of a "sleeper hit", but I use it across my [[id:knowledge_base][Knowledge Base]] and [[id:e7f18233-1138-4ff8-bc06-36e8f04c0558][Japanese Study]] but also in things like [[id:tokipona][Tokipona]].
#+begin_src emacs-lisp :noweb yes
(provide 'cce/org-fc)
@ -54,7 +57,7 @@ Anki is the go-to digital solution for general study these days, I use org-drill
(kbd "q") 'org-fc-review-quit))
#+end_src
This gets crammed in =overrides= to be in the =epkgs= "index" in [[id:arroyo/emacs][Arroyo Emacs]] definition:
Since it's not in MELPA, I have to package it myself. This gets crammed in =overrides= to be in the =epkgs= "index" in [[id:arroyo/emacs][Arroyo Emacs]] definition:
#+ARROYO_HOME_EPKGS: overrides/org-fc.nix
#+begin_src nix :tangle ~/arroyo-nix/overrides/org-fc.nix
@ -83,7 +86,7 @@ in epkgs.melpaBuild {
};
#+end_src
This probably doesn't need to be here...
This probably doesn't need to be here..., but why not
#+ARROYO_HOME_MODULE: hm/org-fc.nix
#+begin_src nix :tangle ~/arroyo-nix/hm/org-fc.nix

View File

@ -8,6 +8,7 @@
#+ARCOLOGY_KEY: cce/toggle-theme
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_MODULE_WANTS: cce/appearance.org
#+ARROYO_MODULE_WANTS: cce/project_work_with_org_mode.org
,#+ARROYO_MODULE_WANTS: cce/exwm.org
Make my computer match my working environment, [[id:cce/appearance][Themeing my Emacs]] depending on whether I am working in our basement at night or out in the park, or even just sitting in front of my sun-side window. Eventually want to integrate this with [[id:700af72c-4d23-498e-8cda-2481b19d92de][Code Surfing Mode]], they seem related... This should be one of my [[id:cce/hydra_dipswitches][Dipswitches]], bound to =<SPC>tn=

View File

@ -2,7 +2,6 @@
:ID: cce/universal_aggregator
:END:
#+TITLE: Universal Aggregator
#+filetags: :Project:
#+ARCOLOGY_KEY: cce/universal-aggregator
#+ARCOLOGY_ALLOW_CRAWL: t

View File

@ -67,11 +67,13 @@ homeManager = _: builtins.fetchGit {
By structuring these invocations like this it is possible to write a function contained in my [[id:20220913T104837.013589][nix-update]] page which will iterate over all the call sections and update the =builtins.fetchGit= entities, and then update the revisions and =sha256= of the rest of the document, and safely tangle the new values out on save. This is probably a useful pattern in developing [[id:128ab0e8-a1c7-48bf-9efe-0c23ce906a48][Hypermedia]] in org-mode.
* NEXT update my [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][NixOS]] version pins and deploy
SCHEDULED: <2023-08-10 Thu .+2w>
SCHEDULED: <2023-09-22 Fri .+2w>
:PROPERTIES:
:LAST_REPEAT: [2023-07-27 Thu 15:37]
:LAST_REPEAT: [2023-09-08 Fri 18:42]
:END:
:LOGBOOK:
- State "DONE" from "NEXT" [2023-09-08 Fri 18:42]
- State "DONE" from "NEXT" [2023-08-17 Thu 19:00]
- State "DONE" from "NEXT" [2023-07-27 Thu 15:37]
- State "DONE" from "INPROGRESS" [2023-06-20 Tue 08:07]
- State "INPROGRESS" from "NEXT" [2023-06-19 Mon 15:42]
@ -130,7 +132,7 @@ Right now I am running off a branch of [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711
#+NAME: prefetch-hm
#+results:
: "07c347bb50994691d7b0095f45ebd8838cf6bc38"
: "5bac4a1c06cd77cf8fc35a658ccb035a6c50cd2c"
#+begin_src nix :noweb-ref homeManager :noweb yes
homeManager = _: builtins.fetchGit {
@ -148,7 +150,7 @@ homeManager = _: builtins.fetchGit {
#+NAME: prefetch-em
#+results:
: "01c076bb6f9fd34630f4c87cfab18ea4e85ef819"
: "badf38fcef05e02764781847ffe498016401e5a5"
#+NAME: emacsOverlay
#+begin_src nix :noweb yes
@ -173,9 +175,9 @@ builds from https://codeberg.org/martianh/mastodon.el/commits/branch/main
#+begin_src nix :noweb-ref mastodon
mastodon = { pkgs, ... }: pkgs.fetchgit {
url = "https://codeberg.org/martianh/mastodon.el";
rev = "20dec8871c9bb5f5e418bfc197e7533b5e3065e3";
sha256 = "15cfjny99yw5frdp8nlyazlwgscvfvbinsj0fbdfprxf50k2zjs6";
# date = "2023-07-25T14:17:18+02:00";
rev = "d4c105cc39315de3c9f3f29b97de0c0dec718770";
sha256 = "0jzgkbr7dmpv66cabmf8lnz3223m5vs25v06v27s1dfpy3grcxwf";
# date = "2023-08-31T12:12:05+02:00";
};
#+end_src
@ -248,6 +250,19 @@ org-fc = rec {
};
#+end_src
** [[id:cce/ement.el][Ement.el]]
#+begin_src nix :noweb-ref org-fc
ement = rec {
rev = "8aea26acefd9e3eafa24db240e41aa9d41603586";
src = { pkgs, ... }: pkgs.fetchurl {
url = "https://github.com/alphapapa/ement.el/archive/8aea26acefd9e3eafa24db240e41aa9d41603586.tar.gz";
sha256 = "1zs8j9zvwda029ld2lnqkw03i7zsibrdy68fpsz5ylw7czd6qfzi";
# date = "2023-09-08T18:39:41-0700";
};
};
#+end_src
** [[id:20221216T003951.778630][=cpmtools=]]
#+begin_src nix :noweb-ref cpmtools
@ -272,9 +287,9 @@ beetcamp = {
src = { pkgs, ... }: pkgs.fetchFromGitHub {
repo = "beetcamp";
owner = "snejus";
rev = "a3b6e7417982a8e68cba8e3e9323924bb8f0bc82";
sha256 = "03s7iffrvgmdnrbvb403hnfky13i0ia3phh08c8bqn84y4lq065q";
# date = "2023-05-20T12:35:13+01:00";
rev = "f09dfed68e74ee99474a7e414c9bcf4cf056ee5c";
sha256 = "1217gqd9jv4ip0rcmpq5q84gia891hwgpmdn2ywkcy4dvniwvxxa";
# date = "2023-08-09T10:09:27+01:00";
};
};
#+end_src
@ -318,9 +333,9 @@ jisho-api = {
src = { pkgs, ... }: pkgs.fetchFromGitHub {
owner = "pedroallenrevez";
repo = "jisho-api";
rev = "9d52dcd8a3fab23d1fadd2c9305008705b3bdb7f";
sha256 = "1sdjs640dxwxxxrg76pkrq8gvk5nf220dl39r7ljk6rkc9w64ljz";
# date = "2022-01-12T00:31:34+00:00";
rev = "d6dc85ca686e6f80b90fdf5ff5d2e76754abbdf2";
sha256 = "0lkkilab5g4mbd8d8cr4wbig4cm2sr9nwpdjv90f3bwpw6klizlf";
# date = "2023-09-05T13:53:44+01:00";
};
};
#+end_src
@ -408,8 +423,9 @@ homestuck = rec {
version = "2.0.7";
src = { ... }: builtins.fetchurl {
url = "https://github.com/Bambosh/unofficial-homestuck-collection/releases/download/v${version}/The-Unofficial-Homestuck-Collection-${version}.AppImage";
sha256 = "sha256:00xcc020wn25fw4r2pdr4llljbckm52nv2hw3ihf1kx2fvrqc7y9";
sha256 = "error: unable to download 'https://github.com/Bambosh/unofficial-homestuck-collection/releases/download/v${version}/The-Unofficial-Homestuck-Collection-${version}.AppImage': HTTP error 404";
name = "${pname}-${version}.AppImage";
# date = "2023-09-08T18:40:49-0700";
};
};
#+end_src

37
zfs-config.org Normal file
View File

@ -0,0 +1,37 @@
:PROPERTIES:
:ID: 20231129T105148.214325
:END:
#+TITLE: Basic ZFS Configuration
#+AUTO_TANGLE: t
#+ARCOLOGY_KEY: cce/zfs
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_NIXOS_MODULE: nixos/zfs.nix
#+ARROYO_NIXOS_EXCLUDE: waterboy
#+ARROYO_NIXOS_EXCLUDE: droid
This stuff is pretty straightforward. I set up automatic snapshots, and SSD TRIM and scrubbing:
#+begin_src nix :tangle ~/arroyo-nix/nixos/zfs.nix
{ pkgs, lib, ... }:
{
boot.zfs.devNodes = "/dev/mapper"; # (ref:devNodes)
boot.zfs.forceImportRoot = false;
boot.zfs.forceImportAll = false;
# i wonder how much disk this will eat up
services.zfs.autoSnapshot = {
enable = true;
daily = 2;
weekly = 2;
monthly = 3;
};
services.zfs.trim.enable = true;
services.zfs.autoScrub.enable = true;
}
#+end_src
everyone I've seen talk about this sort of just says "oh =boot.zfs.devNodes= is a thing you do to make virtualization disks work" or whatever, but [[(devNodes)]] instructs ZFS to load the underlying physical devices out of =/dev/mapper= which is where LUKS volumes unvaulted with =cryptsetup luksOpen= will end up.