feat[client]: add anki module
Some checks failed
Flake check / Check flake (push) Has been cancelled

This commit is contained in:
Leon Schwarzäugl 2025-10-09 02:39:26 +02:00
parent dbe12c8d5e
commit 0287e9d582
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
8 changed files with 310 additions and 75 deletions

View file

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-10-09 Do 00:17 -->
<!-- 2025-10-09 Do 02:38 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SwarselSystems: NixOS + Emacs Configurationo</title>
@ -443,8 +443,8 @@
<li><a href="#h:15b581ab-09fe-4f84-af26-2f1fbf7d726b">3.2.5.8. Hibernation</a></li>
<li><a href="#h:86fb3236-9e18-43f0-8a08-3a2acd61cc98">3.2.5.9. BTRFS</a></li>
<li><a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf">3.2.5.10. work</a></li>
<li><a href="#org5ceed86">3.2.5.11. microvm-host</a></li>
<li><a href="#orgfc70047">3.2.5.12. microvm-guest</a></li>
<li><a href="#org9c71125">3.2.5.11. microvm-host</a></li>
<li><a href="#org67f229f">3.2.5.12. microvm-guest</a></li>
</ul>
</li>
</ul>
@ -494,12 +494,12 @@
<li><a href="#h:99d05729-df35-4958-9940-3319d6a41359">3.3.1.30.3. Mako</a></li>
<li><a href="#h:388e71be-f00a-4d45-ade1-218ce942057d">3.3.1.30.4. SwayOSD</a></li>
<li><a href="#h:1598c90b-f195-41a0-9132-94612edf3586">3.3.1.30.5. yubikey-touch-detector</a></li>
<li><a href="#org511d2cd">3.3.1.30.6. blueman-applet</a></li>
<li><a href="#org539ee89">3.3.1.30.7. network-manager-applet</a></li>
<li><a href="#orge9824cd">3.3.1.30.8. obsidian service for tray</a></li>
<li><a href="#orgd30eeb2">3.3.1.30.9. anki service for tray</a></li>
<li><a href="#org6611018">3.3.1.30.10. element service for tr</a></li>
<li><a href="#org7e5177f">3.3.1.30.11. vesktop service for tray</a></li>
<li><a href="#orgc5993f7">3.3.1.30.6. blueman-applet</a></li>
<li><a href="#org723e643">3.3.1.30.7. network-manager-applet</a></li>
<li><a href="#orgbaac666">3.3.1.30.8. obsidian service for tray</a></li>
<li><a href="#orgde8469c">3.3.1.30.9. anki service for tray</a></li>
<li><a href="#orgc08401b">3.3.1.30.10. element service for tray</a></li>
<li><a href="#orgaefa149">3.3.1.30.11. vesktop service for tray</a></li>
</ul>
</li>
<li><a href="#h:02df9dfc-d1af-4a37-a7a0-d8da0af96a20">3.3.1.31. Sway</a></li>
@ -508,7 +508,8 @@
<li><a href="#h:7d384e3b-1be7-4644-b304-ada4af0b692b">3.3.1.34. gpg-agent</a></li>
<li><a href="#h:74e236be-a977-4d38-b8c5-0b9feef8af91">3.3.1.35. gammastep</a></li>
<li><a href="#h:d1fb3075-ad52-4c1b-ba45-5ddbd0d3b708">3.3.1.36. Spicetify</a></li>
<li><a href="#orgfe3cf96">3.3.1.37. Obsidian</a></li>
<li><a href="#org7e8000d">3.3.1.37. Obsidian</a></li>
<li><a href="#org9efd839">3.3.1.38. Anki</a></li>
</ul>
</li>
<li><a href="#h:b1a00339-6e9b-4ae4-b5dc-6fd5669a2ddb">3.3.2. Server</a>
@ -573,7 +574,7 @@
<li><a href="#h:c3362d4e-d3a8-43e8-9ef7-272b6de0572e">3.5.31. swarsel-build</a></li>
<li><a href="#h:95ebfd13-1f6b-427f-950d-e30c1ed6f9fa">3.5.32. swarsel-instantiate</a></li>
<li><a href="#h:02842543-caca-4d4c-a4d2-7ac749b5c136">3.5.33. sshrm</a></li>
<li><a href="#orgcf33c04">3.5.34. endme</a></li>
<li><a href="#org7608fec">3.5.34. endme</a></li>
</ul>
</li>
<li><a href="#h:f0f1c961-3e7a-47b8-99ab-1654bb45dffc">3.6. Profiles</a>
@ -582,7 +583,7 @@
<ul>
<li><a href="#h:32d654de-8db2-403a-9a27-4c46d7b9172d">3.6.1.1. Personal</a></li>
<li><a href="#h:b926f0c8-7968-4079-924c-a5d0ae4d3a45">3.6.1.2. Minimal</a></li>
<li><a href="#org16ac549">3.6.1.3. Optionals</a></li>
<li><a href="#org62904d9">3.6.1.3. Optionals</a></li>
<li><a href="#h:b79fbb59-9cf2-48eb-b469-2589223dda95">3.6.1.4. Chaostheatre</a></li>
<li><a href="#h:cb3631a8-9c1b-42f2-ab01-502c7b4c273d">3.6.1.5. Work</a></li>
<li><a href="#h:87a83b10-3c2f-407c-89aa-922ad77748a4">3.6.1.6. Uni</a></li>
@ -825,7 +826,7 @@
</div>
</div>
<p>
<b>This file has 94403 words spanning 24261 lines and was last revised on 2025-10-09 00:17:29 +0200.</b>
<b>This file has 94619 words spanning 24340 lines and was last revised on 2025-10-09 02:38:15 +0200.</b>
</p>
<p>
@ -894,7 +895,7 @@ This section defines my Emacs configuration. For a while, I considered to use ry
</p>
<p>
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-10-09 00:17:29 +0200)
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-10-09 02:38:15 +0200)
</p></li>
</ul>
@ -2592,7 +2593,7 @@ in
};
};
swarsel-nix = final: prev: {
swarsel-nix = _: prev: {
swarsel-nix = import inputs.swarsel-nix {
pkgs = prev;
};
@ -5153,6 +5154,9 @@ in
github-nixpkgs-review-token = { owner = mainUser; };
}) // (lib.optionalAttrs modules.emacs {
emacs-radicale-pw = { owner = mainUser; };
}) // (lib.optionalAttrs modules.anki {
anki-user = { owner = mainUser; };
anki-pw = { owner = mainUser; };
});
templates = {
authinfo = lib.mkIf modules.emacs {
@ -12099,8 +12103,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org5ceed86" class="outline-5">
<h5 id="org5ceed86"><span class="section-number-5">3.2.5.11.</span> microvm-host</h5>
<div id="outline-container-org9c71125" class="outline-5">
<h5 id="org9c71125"><span class="section-number-5">3.2.5.11.</span> microvm-host</h5>
<div class="outline-text-5" id="text-3-2-5-11">
<p>
Some standard options that should be set for every microvm host.
@ -12126,8 +12130,8 @@ Some standard options that should be set for every microvm host.
</div>
</div>
</div>
<div id="outline-container-orgfc70047" class="outline-5">
<h5 id="orgfc70047"><span class="section-number-5">3.2.5.12.</span> microvm-guest</h5>
<div id="outline-container-org67f229f" class="outline-5">
<h5 id="org67f229f"><span class="section-number-5">3.2.5.12.</span> microvm-guest</h5>
<div class="outline-text-5" id="text-3-2-5-12">
<p>
Some standard options that should be set vor every microvm guest. We set the default
@ -12534,7 +12538,7 @@ This holds packages that I can use as provided, or with small modifications (as
# specifically needed for anki
# mpv
anki-bin
# anki-bin
# dirvish file previews
fd
@ -14824,8 +14828,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-org511d2cd" class="outline-6">
<h6 id="org511d2cd"><span class="section-number-6">3.3.1.30.6.</span> blueman-applet</h6>
<div id="outline-container-orgc5993f7" class="outline-6">
<h6 id="orgc5993f7"><span class="section-number-6">3.3.1.30.6.</span> blueman-applet</h6>
<div class="outline-text-6" id="text-3-3-1-30-6">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }:
@ -14839,8 +14843,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-org539ee89" class="outline-6">
<h6 id="org539ee89"><span class="section-number-6">3.3.1.30.7.</span> network-manager-applet</h6>
<div id="outline-container-org723e643" class="outline-6">
<h6 id="org723e643"><span class="section-number-6">3.3.1.30.7.</span> network-manager-applet</h6>
<div class="outline-text-6" id="text-3-3-1-30-7">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }:
@ -14855,11 +14859,11 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-orge9824cd" class="outline-6">
<h6 id="orge9824cd"><span class="section-number-6">3.3.1.30.8.</span> obsidian service for tray</h6>
<div id="outline-container-orgbaac666" class="outline-6">
<h6 id="orgbaac666"><span class="section-number-6">3.3.1.30.8.</span> obsidian service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-30-8">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
<pre class="src src-nix-ts">{ lib, config, ... }:
{
options.swarselmodules.obsidian-tray = lib.mkEnableOption "enable obsidian applet for tray";
config = lib.mkIf config.swarselmodules.obsidian-tray {
@ -14880,7 +14884,7 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
};
Service = {
ExecStart = "${pkgs.obsidian}/bin/obsidian";
ExecStart = "${lib.getExe config.programs.obsidian.package}";
};
};
};
@ -14890,11 +14894,11 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-orgd30eeb2" class="outline-6">
<h6 id="orgd30eeb2"><span class="section-number-6">3.3.1.30.9.</span> anki service for tray</h6>
<div id="outline-container-orgde8469c" class="outline-6">
<h6 id="orgde8469c"><span class="section-number-6">3.3.1.30.9.</span> anki service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-30-9">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
<pre class="src src-nix-ts">{ lib, config, ... }:
{
options.swarselmodules.anki-tray = lib.mkEnableOption "enable anki applet for tray";
config = lib.mkIf config.swarselmodules.anki-tray {
@ -14915,7 +14919,11 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
};
Service = {
ExecStart = "${pkgs.anki-bin}/bin/anki-bin";
# ExecStart = "${lib.getExe config.programs.anki.package}";
ExecStart = "/etc/profiles/per-user/swarsel/bin/anki";
Environment = [
"QT_QPA_PLATFORM=xcb"
];
};
};
@ -14925,8 +14933,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-org6611018" class="outline-6">
<h6 id="org6611018"><span class="section-number-6">3.3.1.30.10.</span> element service for tr</h6>
<div id="outline-container-orgc08401b" class="outline-6">
<h6 id="orgc08401b"><span class="section-number-6">3.3.1.30.10.</span> element service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-30-10">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -14960,8 +14968,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-org7e5177f" class="outline-6">
<h6 id="org7e5177f"><span class="section-number-6">3.3.1.30.11.</span> vesktop service for tray</h6>
<div id="outline-container-orgaefa149" class="outline-6">
<h6 id="orgaefa149"><span class="section-number-6">3.3.1.30.11.</span> vesktop service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-30-11">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -15871,11 +15879,11 @@ in
</div>
</div>
</div>
<div id="outline-container-orgfe3cf96" class="outline-5">
<h5 id="orgfe3cf96"><span class="section-number-5">3.3.1.37.</span> Obsidian</h5>
<div id="outline-container-org7e8000d" class="outline-5">
<h5 id="org7e8000d"><span class="section-number-5">3.3.1.37.</span> Obsidian</h5>
<div class="outline-text-5" id="text-3-3-1-37">
<div class="org-src-container">
<pre class="src src-nix-ts">{ inputs, lib, config, pkgs, nixosConfig ? config, ... }:
<pre class="src src-nix-ts">{ lib, config, pkgs, nixosConfig ? config, ... }:
let
moduleName = "obsidian";
inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters;
@ -15889,6 +15897,7 @@ in
in
{
enable = true;
package = pkgs.obsidian;
defaultSettings = {
app = {
attachmentFolderPath = "attachments";
@ -16010,6 +16019,78 @@ in
</div>
</div>
</div>
<div id="outline-container-org9efd839" class="outline-5">
<h5 id="org9efd839"><span class="section-number-5">3.3.1.38.</span> Anki</h5>
<div class="outline-text-5" id="text-3-3-1-38">
<div class="org-src-container">
<pre class="src src-nix-ts">{ inputs, lib, config, pkgs, globals, nixosConfig ? config, ... }:
let
moduleName = "anki";
inherit (config.swarselsystems) isPublic isNixos;
in
{
options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} and settings";
config = lib.mkIf config.swarselmodules.${moduleName} {
sops = lib.mkIf (!isPublic &amp;&amp; !isNixos) {
secrets = {
anki-user = { };
anki-pw = { };
};
};
programs.anki = {
enable = true;
package = pkgs.anki;
hideBottomBar = true;
hideBottomBarMode = "always";
hideTopBar = true;
hideTopBarMode = "always";
reduceMotion = true;
spacebarRatesCard = true;
# videoDriver = "opengl";
sync = {
autoSync = true;
syncMedia = true;
url = "https://${globals.services.ankisync.domain}";
usernameFile = nixosConfig.sops.secrets.anki-user.path;
# this is not the password but the syncKey
# get it by logging in or out, saving preferences and then
# show details on the "settings wont be saved" dialog
keyFile = nixosConfig.sops.secrets.anki-pw.path;
};
addons =
let
minimize-to-tray = pkgs.anki-utils.buildAnkiAddon
(finalAttrs: {
pname = "minimize-to-tray";
version = "2.0.1";
src = pkgs.fetchFromGitHub {
owner = "simgunz";
repo = "anki21-addons_minimize-to-tray";
rev = finalAttrs.version;
sparseCheckout = [ "src" ];
hash = "sha256-xmvbIOfi9K0yEUtUNKtuvv2Vmqrkaa4Jie6J1s+FuqY=";
};
sourceRoot = "${finalAttrs.src.name}/src";
});
in
[
(minimize-to-tray.withConfig
{
config = {
hide_on_startup = "true";
};
})
];
};
};
}
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-h:b1a00339-6e9b-4ae4-b5dc-6fd5669a2ddb" class="outline-4">
<h4 id="h:b1a00339-6e9b-4ae4-b5dc-6fd5669a2ddb"><span class="section-number-4">3.3.2.</span> Server</h4>
@ -19147,8 +19228,8 @@ writeShellApplication {
</div>
</div>
</div>
<div id="outline-container-orgcf33c04" class="outline-4">
<h4 id="orgcf33c04"><span class="section-number-4">3.5.34.</span> endme</h4>
<div id="outline-container-org7608fec" class="outline-4">
<h4 id="org7608fec"><span class="section-number-4">3.5.34.</span> endme</h4>
<div class="outline-text-4" id="text-3-5-34">
<p>
Sometimes my DE crashes after putting it to suspend - to be precise, it happens when I put it into suspend when I have multiple screens plugged in. I have never taken the time to debug the issue, but instead just switch to a different TTY and then use this script to kill the hanging session.
@ -19308,8 +19389,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org16ac549" class="outline-5">
<h5 id="org16ac549"><span class="section-number-5">3.6.1.3.</span> Optionals</h5>
<div id="outline-container-org62904d9" class="outline-5">
<h5 id="org62904d9"><span class="section-number-5">3.6.1.3.</span> Optionals</h5>
<div class="outline-text-5" id="text-3-6-1-3">
<div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }:
@ -19585,6 +19666,7 @@ in
anki-tray = lib.mkDefault true;
element-tray = lib.mkDefault true;
vesktop-tray = lib.mkDefault true;
anki = lib.mkDefault true;
};
};
@ -26367,7 +26449,7 @@ similarly, there exists an version that starts from the right.
</div>
<div id="postamble" class="status">
<p class="author">Author: Leon Schwarzäugl</p>
<p class="date">Created: 2025-10-09 Do 00:17</p>
<p class="date">Created: 2025-10-09 Do 02:38</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>