Better chess, cuda maintainers fix, elfeed update

This commit is contained in:
2026-09-29 10:45:24 +03:00
parent e5455f35f9
commit 1d9784877b
7 changed files with 110 additions and 7 deletions
+9 -3
View File
@@ -4,13 +4,19 @@
in in
epkgs.trivialBuild { epkgs.trivialBuild {
pname = "lichess"; pname = "lichess";
version = "0.8"; version = "1.0";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "tmythicator"; owner = "tmythicator";
repo = "lichess.el"; repo = "lichess.el";
rev = "1dd8a25ede7144c5d6be1f45f4ae3d07903783cd"; rev = "572a6a353e2113c8a95564b9bea1f2896e6d3dab";
sha256 = "157l4crbz37x367m69sxwvnd1pd8cqa6w0lcvyyvs27cm021d2gr"; sha256 = "1d87qjmdpizggkrzq39i9vqgvbpjf5mv97vm7zy28ksbqxmfasqa";
}; };
# trivialBuild's installPhase only installs *.el/*.elc; the piece SVGs
# under assets/ must be copied alongside so the default
# lichess-board-gui-asset-path (relative to the installed .el file) resolves.
postInstall = ''
cp -r assets $out/share/emacs/site-lisp/
'';
}; };
config.flake.modules.homeManager.chess = { config.flake.modules.homeManager.chess = {
+9
View File
@@ -39,6 +39,15 @@
home.file.".ssh/config".source = ./ssh-config; home.file.".ssh/config".source = ./ssh-config;
home.file.".ssh/gpg-as-ssh.pub".source = ./gpg-as-ssh.pub; home.file.".ssh/gpg-as-ssh.pub".source = ./gpg-as-ssh.pub;
home.file.".gnupg/sshcontrol".source = ./sshcontrol; home.file.".gnupg/sshcontrol".source = ./sshcontrol;
# home-manager creates ~/.gnupg (via the files above) with the default
# umask, which can leave it group/other-readable. gpg refuses to trust
# a homedir like that and prints an "unsafe permissions" warning on
# every invocation, which pollutes anything that captures gpg/pass
# output (e.g. shell-command-to-string). Enforce 700 on every switch.
home.activation.gnupgPerms = lib.hm.dag.entryAfter ["writeBoundary"] ''
$DRY_RUN_CMD chmod 700 "$HOME/.gnupg"
'';
}; };
}; };
} }
+1
View File
@@ -15,6 +15,7 @@ orgTrivialBuild {
pkgs.azos-emacs-station pkgs.azos-emacs-station
agent-shell agent-shell
elfeed-protocol
org-caldav org-caldav
pinentry pinentry
]; ];
+88
View File
@@ -190,6 +190,94 @@ With prefix ARG, prompts to choose from all configured devices."
(kbd "C") 'azos/caldav-sync) (kbd "C") 'azos/caldav-sync)
#+end_src #+end_src
** Elfeed Nextcloud News Sync
[[https://github.com/fasheng/elfeed-protocol][elfeed-protocol]] adds an =owncloud+= protocol that speaks the
ownCloud News API, which the Nextcloud News app also implements, so
it syncs elfeed's feed list and read/unread state with the Nextcloud
News app instead of just reading a local feed list one-way.
Reuses the same =zakobar.com= pass entry as the CalDAV sync above,
since it's the same Nextcloud account. =shell-command-to-string=
merges stderr into its return value, so stderr is redirected away to
keep a stray gpg/pass warning from getting concatenated onto the
password.
As of elfeed-protocol 1.0.0 (paired with elfeed >= 4.0.0), the
credentials go directly on =elfeed-feeds= — the older
=elfeed-protocol-feeds= variable is dead: setting it only logs a
deprecation warning, and =elfeed-feeds= ends up with the bare URL
and no =:password=, so requests silently authenticate with an empty
password and nothing ever lands in the db.
#+begin_src emacs-lisp
(use-package elfeed-protocol
:after elfeed
:config
(setq elfeed-feeds
`(("owncloud+https://aner@nextcloud.zakobar.com"
:password ,(string-trim
(shell-command-to-string
"pass zakobar.com 2>/dev/null | head -1")))))
(setq elfeed-protocol-enabled-protocols '(owncloud))
(elfeed-protocol-enable))
#+end_src
** Elfeed Full Article Fetch
Many feeds only publish a short excerpt. elfeed >= 4.0 has built-in
commands for this — =f= (=elfeed-show-fetch-link=) fetches the
linked page and appends it to the show buffer, =R=
(=elfeed-show-readable=) strips the fetched page down to
article text via eww's readability scorer — and both can run
automatically via =elfeed-show-update-hook=, gated on a feed's
=:fetch-link=/=:readable= metadata.
That gating keys off an exact match on the feed's URL/id in
=elfeed-feeds=, which breaks for ownCloud/Nextcloud subfeeds:
elfeed-protocol synthesizes a per-subfeed id of the form
=<host-url>::<subfeed-url>= that never appears in =elfeed-feeds=
(only the bare host URL does), so the metadata lookup always misses
and the stock hooks never fire. Replacing them with unconditional
versions makes full-text + readable-mode the default for every
entry instead.
#+begin_src emacs-lisp
(defun azos/elfeed-show-auto-readable ()
"Like `elfeed-show-auto-readable', but unconditional."
(unless (local-variable-p 'elfeed-transform-html-functions)
(let ((inhibit-message t))
(elfeed-show-readable))))
(defun azos/elfeed-show-auto-fetch-link ()
"Like `elfeed-show-auto-fetch-link', but unconditional."
(elfeed-show-fetch-link))
(setq elfeed-show-update-hook
(list #'azos/elfeed-show-auto-readable #'azos/elfeed-show-auto-fetch-link))
#+end_src
** Lichess
=lichess.org= in pass already holds the website login password, and
lichess.el's =auth-source-pass= lookup resolves by bare hostname, so
the API token can't live under that same entry without colliding.
Store it separately under =lichess.org/token= (=pass insert
lichess.org/token=) and set the =lichess-token= variable directly —
=lichess-token= (the function) checks this variable before falling
back to =auth-source=, so this takes precedence without disturbing
the existing =lichess.org= entry or its consumers (e.g. browserpass).
=shell-command-to-string= merges stderr into its return value, so any
gpg/pass warning on stderr (e.g. an unsafe-permissions notice) would
otherwise get concatenated onto the token and break auth silently.
Redirect stderr away so only the token itself is ever captured.
#+begin_src emacs-lisp
(setq lichess-token
(string-trim (shell-command-to-string "pass lichess.org/token 2>/dev/null | head -1")))
#+end_src
** Beacon Remote Jobs ** Beacon Remote Jobs
#+begin_src emacs-lisp #+begin_src emacs-lisp
+2 -1
View File
@@ -11,6 +11,7 @@
enable = true; enable = true;
create = "maildir"; create = "maildir";
}; };
msmtp.enable = true;
}; };
default_gmail_params = default_gmail_params =
default_account_params default_account_params
@@ -20,6 +21,7 @@
default_smtp = { default_smtp = {
tls = { tls = {
enable = true; enable = true;
useStartTls = true;
certificatesFile = "/etc/ssl/certs/ca-certificates.crt"; certificatesFile = "/etc/ssl/certs/ca-certificates.crt";
}; };
}; };
@@ -64,7 +66,6 @@
default_account_params default_account_params
// { // {
address = "aner@zakobar.com"; address = "aner@zakobar.com";
msmtp.enable = true;
primary = true; primary = true;
userName = "aner@zakobar.com"; userName = "aner@zakobar.com";
imap = {host = "mail.privateemail.com";}; imap = {host = "mail.privateemail.com";};
-2
View File
@@ -86,11 +86,9 @@
auto-optimise-store = true; auto-optimise-store = true;
substituters = [ substituters = [
"https://cache.nixos.org" "https://cache.nixos.org"
"https://cuda-maintainers.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
]; ];
}; };