From 173620e8efd5f6e51d4552d858f7e175958e36f3 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Tue, 30 Jan 2024 02:29:18 -0700 Subject: [PATCH] Use anki plugins declaratively. --- hive/framework/default.nix | 49 +++++++++++++++++------------------ users/jrpotter/anki.nix | 52 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 users/jrpotter/anki.nix diff --git a/hive/framework/default.nix b/hive/framework/default.nix index 84a1844..20ac13f 100644 --- a/hive/framework/default.nix +++ b/hive/framework/default.nix @@ -54,33 +54,30 @@ home-manager = { useGlobalPkgs = true; useUserPackages = true; - users.jrpotter = args@{ pkgs, lib, ... }: - let - base = import ../../users/jrpotter args // { - dconf.settings = { - "org/virt-manager/virt-manager/connections" = { - autoconnect = ["qemu:///system"]; - uris = ["qemu:///system"]; - }; - }; + users.jrpotter = { pkgs, ... }: { + imports = [ + ../../users/jrpotter + ../../users/jrpotter/anki.nix + ]; + + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; }; - in - lib.attrsets.updateManyAttrsByPath [ - { - path = [ "home" "packages" ]; - update = old: old ++ (with pkgs; [ - anki-bin - bitwarden - chromium - firefox - gimp - virt-manager - vlc - wezterm - zotero - ]); - } - ] base; + }; + + home.packages = with pkgs; [ + bitwarden + chromium + firefox + gimp + virt-manager + vlc + wezterm + zotero + ]; + }; # Used to pass non-default parameters to submodules. extraSpecialArgs = { diff --git a/users/jrpotter/anki.nix b/users/jrpotter/anki.nix new file mode 100644 index 0000000..d76c9e2 --- /dev/null +++ b/users/jrpotter/anki.nix @@ -0,0 +1,52 @@ +{ pkgs, ... }: +let + FlexibleGrading = pkgs.fetchFromGitHub { + owner = "jrpotter"; + repo = "FlexibleGrading"; + rev = "d9cd06bbb154a0740518e58e4619d3855e22c027"; + hash = "sha256-ciIVFyt7TDBeC+h5feA5I17Ld1Pge/hRDqGMMcLTJiM="; + fetchSubmodules = true; + }; + + image-occlusion-enhanced = pkgs.fetchFromGitHub { + owner = "glutanimate"; + repo = "image-occlusion-enhanced"; + rev = "33711026fbbfd0950fcfaee88ce776ab5e395f9b"; + hash = "sha256-aSe9IzezhV3MGW/KGcul+Eesa5oQVwisVse5tjr8RQc="; + }; + + syntax-highlighting-ng = pkgs.stdenv.mkDerivation { + name = "syntax-highlighting-ng"; + src = pkgs.fetchgit { + url = "https://github.com/cav71/syntax-highlighting-ng"; + rev = "138db00d5372e155ac056a148a5cd05a7455bfe1"; + hash = "sha256-2EEiS/wF2YcQf9U7rYxeWmgAluh5iUAE4fpron7JKw4="; + }; + + installPhase = '' + mkdir -p $out + cp -r ./src/syntax_highlighting_ng/* $out + cat < $out/config.json + { + "hotkey": "Alt+s", + "limitToLangs": [], + "style": "monokai" + } + EOF + ''; + }; +in +{ + xdg.dataFile."Anki2/addons21/1715096333" = { + source = FlexibleGrading; + recursive = true; # Let's addon write to directory. + }; + + xdg.dataFile."Anki2/addons21/1374772155".source = + "${image-occlusion-enhanced}/src/image_occlusion_enhanced"; + + xdg.dataFile."Anki2/addons21/566351439".source = + syntax-highlighting-ng; + + home.packages = [ pkgs.anki-bin ]; +}