From fcbf0e2205149a0f409afd80dddb5fd6913f2021 Mon Sep 17 00:00:00 2001 From: Adam0 Date: Sat, 9 May 2026 01:05:38 +0200 Subject: [PATCH] dendritic migration 2026-05-08 --- lib/default.nix | 24 +++++ lib/env.nix | 13 +++ lib/mime.nix | 14 +++ lib/starship.nix | 15 +++ lib/stylix.nix | 72 +++++++++++++ modules/desktop/tuigreet.nix | 1 - modules/lib.nix | 7 ++ .../{ripgrep-all-adapters => }/default.nix | 4 +- modules/pkgs/{os-age => }/os-age.nix | 0 modules/pkgs/os-age/default.nix | 9 -- modules/pkgs/zaread.nix | 64 +++++++++++ modules/profiles/common/lidswitch.nix | 12 +++ modules/profiles/common/locale.nix | 32 ++++++ modules/profiles/common/timezone.nix | 41 +++++++ modules/profiles/personal.nix | 10 +- modules/programs/cli/fastfetch.nix | 2 +- modules/programs/cli/gh.nix | 4 +- modules/programs/cli/nh.nix | 6 +- .../cli/ripgrep-all/adapters/other.nix | 2 +- modules/programs/gui/lsfg.nix | 16 +++ modules/programs/gui/seahorse.nix | 5 + modules/programs/gui/sober.nix | 19 ++++ modules/programs/gui/virt-manager.nix | 50 +++++++++ modules/programs/gui/zaread.nix | 88 +++++++++++++++ modules/programs/gui/zathura.nix | 23 ++++ modules/programs/gui/zathura/mime.nix | 101 ++++++++++++++++++ modules/programs/gui/zen/chrome.nix | 6 +- modules/programs/gui/zen/preferences.nix | 4 +- modules/programs/tui/wiremix.nix | 42 ++++++++ modules/services/bluetooth.nix | 13 +++ modules/services/bpftune.nix | 6 ++ modules/services/envfs.nix | 6 ++ modules/services/evolution-data-server.nix | 6 ++ modules/services/geoclue.nix | 20 ++++ modules/services/libinput.nix | 6 ++ modules/services/locate.nix | 9 ++ modules/services/network.nix | 83 ++++++++++++++ modules/services/pipewire.nix | 17 +++ modules/services/podman.nix | 56 ++++++++++ modules/services/power-profiles-daemon.nix | 6 ++ modules/services/printing.nix | 38 +++++++ modules/services/scx.nix | 12 +++ modules/services/timesyncd.nix | 12 +++ modules/services/tlp.nix | 15 +++ modules/services/udisks2.nix | 6 ++ modules/services/upower.nix | 6 ++ modules/services/wifi.nix | 20 ++++ modules/services/zram.nix | 8 ++ todo-stats.sh | 30 ++++++ todo.md | 76 +++++++------ 50 files changed, 1075 insertions(+), 62 deletions(-) create mode 100644 lib/default.nix create mode 100644 lib/env.nix create mode 100644 lib/mime.nix create mode 100644 lib/starship.nix create mode 100644 lib/stylix.nix create mode 100644 modules/lib.nix rename modules/pkgs/{ripgrep-all-adapters => }/default.nix (78%) rename modules/pkgs/{os-age => }/os-age.nix (100%) delete mode 100644 modules/pkgs/os-age/default.nix create mode 100644 modules/pkgs/zaread.nix create mode 100644 modules/profiles/common/lidswitch.nix create mode 100644 modules/profiles/common/locale.nix create mode 100644 modules/profiles/common/timezone.nix create mode 100644 modules/programs/gui/lsfg.nix create mode 100644 modules/programs/gui/seahorse.nix create mode 100644 modules/programs/gui/sober.nix create mode 100644 modules/programs/gui/virt-manager.nix create mode 100644 modules/programs/gui/zaread.nix create mode 100644 modules/programs/gui/zathura.nix create mode 100644 modules/programs/gui/zathura/mime.nix create mode 100644 modules/programs/tui/wiremix.nix create mode 100644 modules/services/bluetooth.nix create mode 100644 modules/services/bpftune.nix create mode 100644 modules/services/envfs.nix create mode 100644 modules/services/evolution-data-server.nix create mode 100644 modules/services/geoclue.nix create mode 100644 modules/services/libinput.nix create mode 100644 modules/services/locate.nix create mode 100644 modules/services/network.nix create mode 100644 modules/services/pipewire.nix create mode 100644 modules/services/podman.nix create mode 100644 modules/services/power-profiles-daemon.nix create mode 100644 modules/services/printing.nix create mode 100644 modules/services/scx.nix create mode 100644 modules/services/timesyncd.nix create mode 100644 modules/services/tlp.nix create mode 100644 modules/services/udisks2.nix create mode 100644 modules/services/upower.nix create mode 100644 modules/services/wifi.nix create mode 100644 modules/services/zram.nix create mode 100755 todo-stats.sh diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..9355301 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,24 @@ +{lib}: let + inherit + (builtins) + # keep-sorted start + filter + foldl' + functionArgs + # keep-sorted end + ; + + helperArgs = { + inherit lib; + }; + + helperFiles = + lib.filesystem.listFilesRecursive ./. + |> filter (path: baseNameOf path != "default.nix"); + + importHelper = file: let + helper = import file; + in + helper (lib.filterAttrs (name: _: builtins.hasAttr name (functionArgs helper)) helperArgs); +in + foldl' (acc: attrs: acc // attrs) {} (map importHelper helperFiles) diff --git a/lib/env.nix b/lib/env.nix new file mode 100644 index 0000000..10c6355 --- /dev/null +++ b/lib/env.nix @@ -0,0 +1,13 @@ +_: let + inherit (builtins) listToAttrs; +in { + # Build environment-variable attrs from a prefix and feature names. + envFlags = prefix: names: + listToAttrs ( + map (name: { + name = "${prefix}_${name}"; + value = 1; + }) + names + ); +} diff --git a/lib/mime.nix b/lib/mime.nix new file mode 100644 index 0000000..82c542e --- /dev/null +++ b/lib/mime.nix @@ -0,0 +1,14 @@ +_: let + inherit (builtins) listToAttrs; +in { + # Build mime application entries for a desktop handler. + mimeAppEntries = prefix: desktop: names: + map (name: { + name = "${prefix}/${name}"; + value = desktop; + }) + names; + + # Convert mime application entries to an attrset. + mimeAppDefaults = listToAttrs; +} diff --git a/lib/starship.nix b/lib/starship.nix new file mode 100644 index 0000000..89d1275 --- /dev/null +++ b/lib/starship.nix @@ -0,0 +1,15 @@ +{lib}: let + inherit (lib) genAttrs; +in { + # Build a wrapped Starship segment that uses the shared `base01` background. + starshipBase01Segment = body: fg: { + format = "[ ](#00000000)[ ](bg:base01)[${body}]($style)[ ](bg:base01)"; + style = "bg:base01 fg:${fg}"; + }; + + # Build a Starship style string on the shared `base01` background. + starshipBase01Style = fg: "bg:base01 fg:${fg}"; + + # Disable Starship modules by name. + starshipDisabledModules = modules: genAttrs modules (_: {disabled = true;}); +} diff --git a/lib/stylix.nix b/lib/stylix.nix new file mode 100644 index 0000000..5e0695d --- /dev/null +++ b/lib/stylix.nix @@ -0,0 +1,72 @@ +{lib}: let + inherit + (builtins) + # keep-sorted start + div + genList + stringLength + substring + # keep-sorted end + ; + inherit + (lib) + # keep-sorted start + concatStringsSep + filterAttrs + genAttrs + hasPrefix + # keep-sorted end + ; + + hexDigitToInt = digit: + { + "0" = 0; + "1" = 1; + "2" = 2; + "3" = 3; + "4" = 4; + "5" = 5; + "6" = 6; + "7" = 7; + "8" = 8; + "9" = 9; + "a" = 10; + "b" = 11; + "c" = 12; + "d" = 13; + "e" = 14; + "f" = 15; + }.${ + digit + }; + + hexPairToInt = pair: + (hexDigitToInt (substring 0 1 pair)) + * 16 + + hexDigitToInt (substring 1 1 pair); + + intToHexPair = value: let + digits = "0123456789abcdef"; + high = div value 16; + low = value - high * 16; + in "${substring high 1 digits}${substring low 1 digits}"; + + mixChannel = alpha: bg: fg: div (bg * (100 - alpha) + fg * alpha) 100; +in { + # Select the base0* palette used by nix-userstyles and similar consumers. + stylixPalette = osConfig: filterAttrs (name: _: hasPrefix "base0" name) osConfig.lib.stylix.colors; + + # Blend a hex foreground color toward a hex background color. + blendHex = alpha: bg: fg: let + bgHex = substring 1 (stringLength bg - 1) bg; + fgHex = substring 1 (stringLength fg - 1) fg; + channel = index: + intToHexPair + (mixChannel alpha + (hexPairToInt (substring (index * 2) 2 bgHex)) + (hexPairToInt (substring (index * 2) 2 fgHex))); + in "#${concatStringsSep "" (genList channel 3)}"; + + # Disable Stylix targets by name. + stylixDisabledTargets = targets: genAttrs targets (_: {enable = false;}); +} diff --git a/modules/desktop/tuigreet.nix b/modules/desktop/tuigreet.nix index 7c0819f..f6dfb29 100644 --- a/modules/desktop/tuigreet.nix +++ b/modules/desktop/tuigreet.nix @@ -106,7 +106,6 @@ flake.overlays.tuigreet = final: _prev: let inherit (final.stdenv.hostPlatform) system; - in { inherit (inputs.tuigreet.packages.${system}) tuigreet; }; diff --git a/modules/lib.nix b/modules/lib.nix new file mode 100644 index 0000000..c094235 --- /dev/null +++ b/modules/lib.nix @@ -0,0 +1,7 @@ +{inputs, ...}: let + lib = inputs.nixpkgs.lib.extend (_final: prev: { + self = import ../lib {lib = prev;}; + }); +in { + flake.lib = lib; +} diff --git a/modules/pkgs/ripgrep-all-adapters/default.nix b/modules/pkgs/default.nix similarity index 78% rename from modules/pkgs/ripgrep-all-adapters/default.nix rename to modules/pkgs/default.nix index c1ce8a0..00e81bf 100644 --- a/modules/pkgs/ripgrep-all-adapters/default.nix +++ b/modules/pkgs/default.nix @@ -1,5 +1,5 @@ {self, ...}: { - flake.overlays.ripgrep-all-adapters = final: _prev: let + flake.overlays.pkgs = final: _prev: let inherit (final.stdenv.hostPlatform) system; packages = self.packages.${system}; @@ -8,7 +8,9 @@ (packages) # keep-sorted start djvutorga-adapter + os-age pptx2md-adapter + zaread # keep-sorted end ; }; diff --git a/modules/pkgs/os-age/os-age.nix b/modules/pkgs/os-age.nix similarity index 100% rename from modules/pkgs/os-age/os-age.nix rename to modules/pkgs/os-age.nix diff --git a/modules/pkgs/os-age/default.nix b/modules/pkgs/os-age/default.nix deleted file mode 100644 index 8236a3e..0000000 --- a/modules/pkgs/os-age/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{self, ...}: { - flake.overlays.os-age = final: _prev: let - inherit (final.stdenv.hostPlatform) system; - - packages = self.packages.${system}; - in { - inherit (packages) os-age; - }; -} diff --git a/modules/pkgs/zaread.nix b/modules/pkgs/zaread.nix new file mode 100644 index 0000000..d11a14d --- /dev/null +++ b/modules/pkgs/zaread.nix @@ -0,0 +1,64 @@ +let + zaread = { + # keep-sorted start + bashNonInteractive, + calibre, + fetchFromGitHub, + lib, + libreoffice, + makeWrapper, + md2pdf, + stdenv, + typst, + zathura, + # keep-sorted end + libreofficeSupport ? true, + markdownSupport ? true, + mobiSupport ? false, + typstSupport ? true, + }: + stdenv.mkDerivation { + pname = "zaread"; + version = "0-unstable-2025-11-11"; + + src = fetchFromGitHub { + owner = "paoloap"; + repo = "zaread"; + rev = "d4935a72d19bf9c5c035c1363ef798574b6738e7"; + hash = "sha256-4tqi9tvFqB5MZIEluqVmmMWH+hN1c2Jy10C1/iGI6e4="; + }; + + pathAdd = lib.makeBinPath ( + [zathura] + ++ lib.optionals libreofficeSupport [libreoffice] + ++ lib.optionals markdownSupport [md2pdf] + ++ lib.optionals mobiSupport [calibre] + ++ lib.optionals typstSupport [typst] + ); + + nativeBuildInputs = [makeWrapper]; + buildInputs = [bashNonInteractive]; + dontBuild = true; + + installPhase = '' + install -Dm 755 $src/zaread $out/bin/zaread + runHook postInstall + ''; + + postInstall = '' + wrapProgram $out/bin/zaread --prefix PATH : $pathAdd + ''; + + meta = { + description = "lightweight document reader"; + homepage = "https://github.com/paoloap/zaread"; + license = lib.licenses.gpl3Only; + platforms = lib.platforms.unix; + mainProgram = "zaread"; + }; + }; +in { + perSystem = {pkgs, ...}: { + packages.zaread = pkgs.callPackage zaread {}; + }; +} diff --git a/modules/profiles/common/lidswitch.nix b/modules/profiles/common/lidswitch.nix new file mode 100644 index 0000000..f2c9f5c --- /dev/null +++ b/modules/profiles/common/lidswitch.nix @@ -0,0 +1,12 @@ +{ + flake.modules.nixos.lidswitch = { + # Lid switch behavior: suspend on close, ignore when docked. + services.logind.settings.Login = { + # keep-sorted start + HandleLidSwitch = "suspend"; + HandleLidSwitchDocked = "ignore"; + HandleLidSwitchExternalPower = "suspend"; + # keep-sorted end + }; + }; +} diff --git a/modules/profiles/common/locale.nix b/modules/profiles/common/locale.nix new file mode 100644 index 0000000..fca7efe --- /dev/null +++ b/modules/profiles/common/locale.nix @@ -0,0 +1,32 @@ +{self, ...}: { + flake.modules.nixos.locale = {vars, ...}: let + inherit + (vars) + # keep-sorted start + defaultLocale + regionalLocale + # keep-sorted end + ; + in { + imports = [self.modules.generic.vars]; + + i18n = { + inherit defaultLocale; + extraLocaleSettings = { + # keep-sorted start + LC_ADDRESS = regionalLocale; + LC_COLLATE = defaultLocale; + LC_CTYPE = defaultLocale; + LC_MEASUREMENT = regionalLocale; + LC_MESSAGES = defaultLocale; + LC_MONETARY = regionalLocale; + LC_NAME = regionalLocale; + LC_NUMERIC = regionalLocale; + LC_PAPER = regionalLocale; + LC_TELEPHONE = regionalLocale; + LC_TIME = defaultLocale; + # keep-sorted end + }; + }; + }; +} diff --git a/modules/profiles/common/timezone.nix b/modules/profiles/common/timezone.nix new file mode 100644 index 0000000..8ea3d7b --- /dev/null +++ b/modules/profiles/common/timezone.nix @@ -0,0 +1,41 @@ +{ + flake.modules.nixos.timezone = { + # keep-sorted start + config, + lib, + # keep-sorted end + ... + }: let + inherit + (lib) + # keep-sorted start + mkIf + mkMerge + mkOption + types + # keep-sorted end + ; + + cfgTimezone = config.optServices.timezone; + in { + options.optServices.timezone = mkOption { + type = types.nullOr types.str; + default = null; + example = "Europe/Amsterdam"; + description = '' + Configure the system time zone or enable automatic adjustment. + Set to a time zone string (for example "Europe/Amsterdam") to use a fixed time zone, + or to "automatic-timezoned" to enable the automatic-timezoned service. + ''; + }; + + config = mkMerge [ + (mkIf (cfgTimezone != null && cfgTimezone != "automatic-timezoned") { + time.timeZone = cfgTimezone; + }) + (mkIf (cfgTimezone == "automatic-timezoned") { + services.automatic-timezoned.enable = true; + }) + ]; + }; +} diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index ecdcd7e..b78cf97 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -1,12 +1,11 @@ {self, ...}: { flake.modules.nixos.personal = { imports = with self.modules.nixos; [ - # Import user vars. - self.modules.generic.vars - # Profile common. # keep-sorted start + locale slim + timezone tweaks # keep-sorted end ]; @@ -15,9 +14,6 @@ }; flake.modules.homeManager.personal = { - imports = [ - # Import user vars. - self.modules.generic.vars - ]; + imports = []; }; } diff --git a/modules/programs/cli/fastfetch.nix b/modules/programs/cli/fastfetch.nix index 24ac162..267cf75 100644 --- a/modules/programs/cli/fastfetch.nix +++ b/modules/programs/cli/fastfetch.nix @@ -13,7 +13,7 @@ # Escape code for fastfetch color formatting. esc = fromJSON "\"\\u001b\""; in { - nixpkgs.overlays = [self.overlays.os-age]; + nixpkgs.overlays = [self.overlays.pkgs]; programs.fastfetch = { enable = true; diff --git a/modules/programs/cli/gh.nix b/modules/programs/cli/gh.nix index 16c162b..a82594c 100644 --- a/modules/programs/cli/gh.nix +++ b/modules/programs/cli/gh.nix @@ -1,7 +1,9 @@ -{ +{self, ...}: { flake.modules.homeManager.gh = {vars, ...}: let inherit (vars) gitUsername; in { + imports = [self.modules.generic.vars]; + programs.gh = { enable = true; diff --git a/modules/programs/cli/nh.nix b/modules/programs/cli/nh.nix index 11dbf2a..cc1a381 100644 --- a/modules/programs/cli/nh.nix +++ b/modules/programs/cli/nh.nix @@ -1,7 +1,9 @@ -{ - flake.modules.nixos.nh = {vars, ...}: let +{self, ...}: { + flake.modules.homeManager.nh = {vars, ...}: let inherit (vars) username; in { + imports = [self.modules.generic.vars]; + programs.nh = { enable = true; diff --git a/modules/programs/cli/ripgrep-all/adapters/other.nix b/modules/programs/cli/ripgrep-all/adapters/other.nix index ba87046..2377ec9 100644 --- a/modules/programs/cli/ripgrep-all/adapters/other.nix +++ b/modules/programs/cli/ripgrep-all/adapters/other.nix @@ -20,7 +20,7 @@ pptx2md = getExe pkgs.pptx2md-adapter; # keep-sorted end in { - nixpkgs.overlays = [self.overlays.ripgrep-all-adapters]; + nixpkgs.overlays = [self.overlays.pkgs]; programs.ripgrep-all.custom_adapters = [ # keep-sorted start block=yes newline_separated=yes diff --git a/modules/programs/gui/lsfg.nix b/modules/programs/gui/lsfg.nix new file mode 100644 index 0000000..ed359ec --- /dev/null +++ b/modules/programs/gui/lsfg.nix @@ -0,0 +1,16 @@ +{ + flake.modules.nixos.lsfg = {pkgs, ...}: let + inherit (builtins) attrValues; + in { + # Add lossless scaling linux packages. + environment.systemPackages = attrValues { + inherit + (pkgs) + # keep-sorted start + lsfg-vk + lsfg-vk-ui + # keep-sorted end + ; + }; + }; +} diff --git a/modules/programs/gui/seahorse.nix b/modules/programs/gui/seahorse.nix new file mode 100644 index 0000000..3107ff4 --- /dev/null +++ b/modules/programs/gui/seahorse.nix @@ -0,0 +1,5 @@ +{ + flake.modules.nixos.seahorse = { + programs.seahorse.enable = true; + }; +} diff --git a/modules/programs/gui/sober.nix b/modules/programs/gui/sober.nix new file mode 100644 index 0000000..6ce21e6 --- /dev/null +++ b/modules/programs/gui/sober.nix @@ -0,0 +1,19 @@ +{self, ...}: { + flake.modules.homeManager.sober = _: let + pkg = "org.vinegarhq.Sober"; + in { + imports = [self.modules.homeManager.flatpak]; + + # Install the flatpak and expose Discord IPC sockets. + services.flatpak = { + packages = [pkg]; + + overrides.${pkg}.Context.filesystems = [ + # keep-sorted start + "xdg-run/app/com.discordapp.Discord:create" + "xdg-run/discord-ipc-0" + # keep-sorted end + ]; + }; + }; +} diff --git a/modules/programs/gui/virt-manager.nix b/modules/programs/gui/virt-manager.nix new file mode 100644 index 0000000..04c1256 --- /dev/null +++ b/modules/programs/gui/virt-manager.nix @@ -0,0 +1,50 @@ +{self, ...}: { + flake.modules.nixos.virt-manager = { + # keep-sorted start + pkgs, + vars, + # keep-sorted end + ... + }: let + inherit (vars) username; + in { + imports = [self.modules.generic.vars]; + + # keep-sorted start block=yes newline_separated=yes + programs.virt-manager.enable = true; + + # Groups for libvirt access. + users.users.${username}.extraGroups = [ + # keep-sorted start + "kvm" + "libvirtd" + # keep-sorted end + ]; + + virtualisation.libvirtd = { + # Configure libvirtd with qemu swtpm. + enable = true; + qemu = { + # Allow the use of emulated tpm. + swtpm.enable = true; + + # Use qemu_kvm package to save disk space. + package = pkgs.qemu_kvm; + }; + + # Keep VMs off at boot. + onBoot = "ignore"; + }; + # keep-sorted end + + # Allow the default libvirt bridge and leave it unmanaged by NetworkManager. + networking = let + interface = ["virbr0"]; + in { + # keep-sorted start + firewall.trustedInterfaces = interface; + networkmanager.unmanaged = interface; + # keep-sorted end + }; + }; +} diff --git a/modules/programs/gui/zaread.nix b/modules/programs/gui/zaread.nix new file mode 100644 index 0000000..e094977 --- /dev/null +++ b/modules/programs/gui/zaread.nix @@ -0,0 +1,88 @@ +{ + flake.modules.homeManager.zaread = { + # keep-sorted start + lib, + pkgs, + self, + # keep-sorted end + ... + }: { + imports = [self.modules.homeManager.zathura]; + nixpkgs.overlays = [self.overlays.pkgs]; + + # keep-sorted start block=yes newline_separated=yes + home.packages = [pkgs.zaread]; + + xdg.desktopEntries.zaread = { + name = "zaread"; + genericName = "document viewer"; + comment = "Open documents via zathura with format conversion."; + + exec = "${lib.getExe pkgs.zaread} %U"; + terminal = false; + + categories = [ + # keep-sorted start + "Office" + "Viewer" + # keep-sorted end + ]; + + # Claim office and ebook formats that zaread converts before handing off to zathura. + mimeType = [ + # keep-sorted start + "application/msword" + "application/msword-template" + "application/rtf" + "application/vnd.apple.keynote" + "application/vnd.apple.numbers" + "application/vnd.apple.pages" + "application/vnd.ms-excel" + "application/vnd.ms-excel.sheet.binary.macroEnabled.12" + "application/vnd.ms-excel.sheet.macroEnabled.12" + "application/vnd.ms-excel.template.macroEnabled.12" + "application/vnd.ms-powerpoint" + "application/vnd.ms-powerpoint.presentation.macroEnabled.12" + "application/vnd.ms-powerpoint.slideshow.macroEnabled.12" + "application/vnd.ms-powerpoint.template.macroEnabled.12" + "application/vnd.ms-visio.drawing.macroEnabled.main+xml" + "application/vnd.ms-visio.drawing.main+xml" + "application/vnd.ms-visio.stencil.macroEnabled.main+xml" + "application/vnd.ms-visio.stencil.main+xml" + "application/vnd.ms-visio.template.macroEnabled.main+xml" + "application/vnd.ms-visio.template.main+xml" + "application/vnd.ms-word.document.macroEnabled.12" + "application/vnd.ms-word.template.macroEnabled.12" + "application/vnd.oasis.opendocument.graphics" + "application/vnd.oasis.opendocument.presentation" + "application/vnd.oasis.opendocument.presentation-flat-xml" + "application/vnd.oasis.opendocument.presentation-template" + "application/vnd.oasis.opendocument.spreadsheet" + "application/vnd.oasis.opendocument.spreadsheet-flat-xml" + "application/vnd.oasis.opendocument.spreadsheet-template" + "application/vnd.oasis.opendocument.text" + "application/vnd.oasis.opendocument.text-flat-xml" + "application/vnd.oasis.opendocument.text-template" + "application/vnd.openxmlformats-officedocument.presentationml.presentation" + "application/vnd.openxmlformats-officedocument.presentationml.slideshow" + "application/vnd.openxmlformats-officedocument.presentationml.template" + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + "application/vnd.openxmlformats-officedocument.spreadsheetml.template" + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + "application/vnd.openxmlformats-officedocument.wordprocessingml.template" + "application/vnd.sun.xml.calc" + "application/vnd.sun.xml.impress" + "application/vnd.sun.xml.writer" + "application/vnd.sun.xml.writer.template" + "application/x-hwp" + "application/x-mobipocket-ebook" + "text/csv" + "text/markdown" + "text/x-markdown" + "text/x-typst" + # keep-sorted end + ]; + }; + # keep-sorted end + }; +} diff --git a/modules/programs/gui/zathura.nix b/modules/programs/gui/zathura.nix new file mode 100644 index 0000000..10ff45b --- /dev/null +++ b/modules/programs/gui/zathura.nix @@ -0,0 +1,23 @@ +{ + flake.modules.homeManager.zathura = _: { + programs.zathura = { + enable = true; + + options = { + # Enable recoloring of documents. + # keep-sorted start + recolor = true; + recolor-keephue = true; + # keep-sorted end + + # keep-sorted start block=yes newline_separated=yes + # Use the system clipboard for text selection. + selection-clipboard = "clipboard"; + + # Show hidden files for complete filesystem access. + show-hidden = true; + # keep-sorted end + }; + }; + }; +} diff --git a/modules/programs/gui/zathura/mime.nix b/modules/programs/gui/zathura/mime.nix new file mode 100644 index 0000000..552e740 --- /dev/null +++ b/modules/programs/gui/zathura/mime.nix @@ -0,0 +1,101 @@ +{ + flake.modules.homeManager.zathura = {lib, ...}: let + inherit + (lib.self) + # keep-sorted start + mimeAppDefaults + mimeAppEntries + # keep-sorted end + ; + in { + xdg.mimeApps.defaultApplications = mimeAppDefaults ( + # keep-sorted start block=yes + (mimeAppEntries "application" "org.pwmt.zathura-pdf-mupdf.desktop" [ + # keep-sorted start + "epub+zip" + "oxps" + "pdf" + "vnd.ms-xpsdocument" + # keep-sorted end + ]) + ++ (mimeAppEntries "application" "org.pwmt.zathura-cb.desktop" [ + # keep-sorted start + "vnd.comicbook+zip" + "vnd.comicbook-rar" + "x-cb7" + "x-cbt" + # keep-sorted end + ]) + ++ (mimeAppEntries "application" "org.pwmt.zathura-ps.desktop" [ + "postscript" + ]) + ++ (mimeAppEntries "application" "zaread.desktop" [ + # keep-sorted start + "msword" + "msword-template" + "rtf" + "vnd.apple.keynote" + "vnd.apple.numbers" + "vnd.apple.pages" + "vnd.ms-excel" + "vnd.ms-excel.sheet.binary.macroEnabled.12" + "vnd.ms-excel.sheet.macroEnabled.12" + "vnd.ms-excel.template.macroEnabled.12" + "vnd.ms-powerpoint" + "vnd.ms-powerpoint.presentation.macroEnabled.12" + "vnd.ms-powerpoint.slideshow.macroEnabled.12" + "vnd.ms-powerpoint.template.macroEnabled.12" + "vnd.ms-visio.drawing.macroEnabled.main+xml" + "vnd.ms-visio.drawing.main+xml" + "vnd.ms-visio.stencil.macroEnabled.main+xml" + "vnd.ms-visio.stencil.main+xml" + "vnd.ms-visio.template.macroEnabled.main+xml" + "vnd.ms-visio.template.main+xml" + "vnd.ms-word.document.macroEnabled.12" + "vnd.ms-word.template.macroEnabled.12" + "vnd.oasis.opendocument.graphics" + "vnd.oasis.opendocument.presentation" + "vnd.oasis.opendocument.presentation-flat-xml" + "vnd.oasis.opendocument.presentation-template" + "vnd.oasis.opendocument.spreadsheet" + "vnd.oasis.opendocument.spreadsheet-flat-xml" + "vnd.oasis.opendocument.spreadsheet-template" + "vnd.oasis.opendocument.text" + "vnd.oasis.opendocument.text-flat-xml" + "vnd.oasis.opendocument.text-template" + "vnd.openxmlformats-officedocument.presentationml.presentation" + "vnd.openxmlformats-officedocument.presentationml.slideshow" + "vnd.openxmlformats-officedocument.presentationml.template" + "vnd.openxmlformats-officedocument.spreadsheetml.sheet" + "vnd.openxmlformats-officedocument.spreadsheetml.template" + "vnd.openxmlformats-officedocument.wordprocessingml.document" + "vnd.openxmlformats-officedocument.wordprocessingml.template" + "vnd.sun.xml.calc" + "vnd.sun.xml.impress" + "vnd.sun.xml.writer" + "vnd.sun.xml.writer.template" + "x-hwp" + "x-mobipocket-ebook" + # keep-sorted end + ]) + ++ (mimeAppEntries "image" "org.pwmt.zathura-djvu.desktop" [ + # keep-sorted start + "vnd.djvu" + "vnd.djvu+multipage" + # keep-sorted end + ]) + ++ (mimeAppEntries "image" "org.pwmt.zathura-ps.desktop" [ + "x-eps" + ]) + ++ (mimeAppEntries "text" "zaread.desktop" [ + # keep-sorted start + "csv" + "markdown" + "x-markdown" + "x-typst" + # keep-sorted end + ]) + # keep-sorted end + ); + }; +} diff --git a/modules/programs/gui/zen/chrome.nix b/modules/programs/gui/zen/chrome.nix index d52f7b6..501df58 100644 --- a/modules/programs/gui/zen/chrome.nix +++ b/modules/programs/gui/zen/chrome.nix @@ -1,16 +1,16 @@ { flake.modules.homeManager.zen = { # keep-sorted start - flakeLib, inputs, + lib, osConfig, pkgs, # keep-sorted end ... }: let inherit (builtins) readFile; - inherit (pkgs.lib) mkAfter; - inherit (flakeLib) stylixPalette; + inherit (lib) mkAfter; + inherit (lib.self) stylixPalette; inherit (pkgs.stdenv.hostPlatform) system; diff --git a/modules/programs/gui/zen/preferences.nix b/modules/programs/gui/zen/preferences.nix index b51fd3d..c7e81b9 100644 --- a/modules/programs/gui/zen/preferences.nix +++ b/modules/programs/gui/zen/preferences.nix @@ -1,4 +1,4 @@ -{ +{self, ...}: { flake.modules.homeManager.zen = { # keep-sorted start config, @@ -19,6 +19,8 @@ ; inherit (vars) countryCode; in { + imports = [self.modules.generic.vars]; + options.zen-browser = { # keep-sorted start block=yes newline_separated=yes commit-space = mkOption { diff --git a/modules/programs/tui/wiremix.nix b/modules/programs/tui/wiremix.nix new file mode 100644 index 0000000..e3a45e1 --- /dev/null +++ b/modules/programs/tui/wiremix.nix @@ -0,0 +1,42 @@ +{ + flake.modules.homeManager.wiremix = { + # keep-sorted start + config, + lib, + pkgs, + # keep-sorted end + ... + }: let + inherit (lib) getExe; + + pkg = pkgs.wiremix; + in { + # keep-sorted start block=yes newline_separated=yes + home.packages = [pkg]; + + # Create desktop entry to allow launching via launcher. + xdg.desktopEntries.wiremix = { + name = "Wiremix"; + genericName = "Pipewire Volume Control"; + icon = "multimedia-volume-control"; + + exec = let + # keep-sorted start + terminalCommand = getExe config.xdg.terminal-exec.package; + wiremix = getExe pkg; + # keep-sorted end + in "${terminalCommand} --title=Wiremix ${wiremix}"; + + categories = [ + # keep-sorted start + "Audio" + "AudioVideo" + "ConsoleOnly" + "Mixer" + "Settings" + # keep-sorted end + ]; + }; + # keep-sorted end + }; +} diff --git a/modules/services/bluetooth.nix b/modules/services/bluetooth.nix new file mode 100644 index 0000000..1debcc8 --- /dev/null +++ b/modules/services/bluetooth.nix @@ -0,0 +1,13 @@ +{ + flake.modules.nixos.bluetooth = { + hardware.bluetooth = { + enable = true; + + # Enable experimental features needed by some devices. + settings.General.Experimental = true; + + # Disable bluetooth power-on at boot to save battery. + powerOnBoot = false; + }; + }; +} diff --git a/modules/services/bpftune.nix b/modules/services/bpftune.nix new file mode 100644 index 0000000..94fe483 --- /dev/null +++ b/modules/services/bpftune.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.bpftune = { + # Auto-tune kernel bpf settings for performance. + services.bpftune.enable = true; + }; +} diff --git a/modules/services/envfs.nix b/modules/services/envfs.nix new file mode 100644 index 0000000..912257b --- /dev/null +++ b/modules/services/envfs.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.envfs = { + # Provide fhs-style paths for compatibility with legacy applications. + services.envfs.enable = true; + }; +} diff --git a/modules/services/evolution-data-server.nix b/modules/services/evolution-data-server.nix new file mode 100644 index 0000000..0ac231a --- /dev/null +++ b/modules/services/evolution-data-server.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.evolution-data-server = { + # Enable gnome evolution data server for calendar and contact integration. + services.gnome.evolution-data-server.enable = true; + }; +} diff --git a/modules/services/geoclue.nix b/modules/services/geoclue.nix new file mode 100644 index 0000000..3cf0adc --- /dev/null +++ b/modules/services/geoclue.nix @@ -0,0 +1,20 @@ +{ + flake.modules.nixos.geoclue = {config, ...}: let + cfgWifi = config.capabilities.wifi; + in { + services.geoclue2 = { + enable = true; + + # Use wi-fi positioning only when wi-fi support is enabled for the host. + enableWifi = cfgWifi; + + # Disable radio/serial backends to avoid unnecessary hardware usage. + # keep-sorted start + enable3G = false; + enableCDMA = false; + enableModemGPS = false; + enableNmea = false; + # keep-sorted end + }; + }; +} diff --git a/modules/services/libinput.nix b/modules/services/libinput.nix new file mode 100644 index 0000000..5f9cf37 --- /dev/null +++ b/modules/services/libinput.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.libinput = { + # Input stack defaults (touchpad, mouse) via libinput. + services.libinput.enable = true; + }; +} diff --git a/modules/services/locate.nix b/modules/services/locate.nix new file mode 100644 index 0000000..8a7dc48 --- /dev/null +++ b/modules/services/locate.nix @@ -0,0 +1,9 @@ +{ + flake.modules.nixos.locate = { + services.locate = { + enable = true; + + interval = "daily"; + }; + }; +} diff --git a/modules/services/network.nix b/modules/services/network.nix new file mode 100644 index 0000000..2b643a8 --- /dev/null +++ b/modules/services/network.nix @@ -0,0 +1,83 @@ +{self, ...}: { + flake.modules.nixos.network = { + # keep-sorted start + config, + vars, + # keep-sorted end + ... + }: let + inherit (vars) username; + in { + imports = [ + # keep-sorted start + self.modules.generic.vars + self.modules.nixos.sops + # keep-sorted end + ]; + + sops = let + hostname = config.networking.hostName; + in { + secrets = { + # keep-sorted start numeric=yes + "dns/${hostname}/dns_1" = {}; + "dns/${hostname}/dns_2" = {}; + "dns/${hostname}/dns_3" = {}; + "dns/${hostname}/dns_4" = {}; + # keep-sorted end + }; + + # Template for resolved.conf carrying dns servers from sops. + templates."resolved-dns.conf" = { + mode = "0440"; + group = "systemd-resolve"; + + content = '' + [Resolve] + DNS=${config.sops.placeholder."dns/${hostname}/dns_1"} ${config.sops.placeholder."dns/${hostname}/dns_2"} ${config.sops.placeholder."dns/${hostname}/dns_3"} ${config.sops.placeholder."dns/${hostname}/dns_4"} + ''; + }; + }; + + networking = { + useDHCP = false; + dhcpcd.enable = false; + + networkmanager = { + enable = true; + dns = "systemd-resolved"; + }; + }; + + users.users.${username}.extraGroups = ["networkmanager"]; + + services.resolved = { + enable = true; + settings.Resolve = { + DNSOverTLS = "opportunistic"; + + FallbackDNS = [ + # keep-sorted start + "1.0.0.1#cloudflare-dns.com" + "1.1.1.1#cloudflare-dns.com" + "2606:4700:4700::1001#cloudflare-dns.com" + "2606:4700:4700::1111#cloudflare-dns.com" + # keep-sorted end + ]; + }; + }; + + systemd = { + # Avoid blocking boot on network readiness. + network.wait-online.enable = false; + + services.systemd-resolved = { + wants = ["sops-nix.service"]; + after = ["sops-nix.service"]; + }; + }; + + # Install the resolved dns rendered from sops. + environment.etc."systemd/resolved.conf.d/00-dns.conf".source = config.sops.templates."resolved-dns.conf".path; + }; +} diff --git a/modules/services/pipewire.nix b/modules/services/pipewire.nix new file mode 100644 index 0000000..56f2d2b --- /dev/null +++ b/modules/services/pipewire.nix @@ -0,0 +1,17 @@ +{ + flake.modules.nixos.pipewire = { + services.pipewire = { + enable = true; + + # keep-sorted start + alsa.enable = true; + jack.enable = true; + pulse.enable = true; + wireplumber.enable = true; + # keep-sorted end + + # Keep 32-bit audio. + alsa.support32Bit = true; + }; + }; +} diff --git a/modules/services/podman.nix b/modules/services/podman.nix new file mode 100644 index 0000000..333319a --- /dev/null +++ b/modules/services/podman.nix @@ -0,0 +1,56 @@ +{self, ...}: { + flake.modules.nixos.podman = { + # keep-sorted start + config, + lib, + pkgs, + vars, + # keep-sorted end + ... + }: let + inherit + (lib) + # keep-sorted start + mkEnableOption + mkIf + # keep-sorted end + ; + inherit (vars) username; + + cfgAutoPrune = config.optServices.podman.autoPrune.enable; + in { + imports = [self.modules.generic.vars]; + + options.optServices.podman.autoPrune.enable = mkEnableOption "Enable podman auto-prune."; + + virtualisation = { + podman = { + # Enable podman service and tooling. + enable = true; + # Expose docker-compatible socket for tooling that expects dockerd. + dockerSocket.enable = true; + + # Clean up unused images/containers regularly. + autoPrune = mkIf cfgAutoPrune { + enable = true; + + flags = [ + # keep-sorted start + "--all" + "--force" + # keep-sorted end + ]; + }; + }; + + # Disable the podman compose warning about external command execution. + containers.containersConf.settings.engine.compose_warning_logs = false; + }; + + # Enable the usage of compose files with podman. + environment.systemPackages = [pkgs.podman-compose]; + + # Add user to the podman group. + users.users.${username}.extraGroups = ["podman"]; + }; +} diff --git a/modules/services/power-profiles-daemon.nix b/modules/services/power-profiles-daemon.nix new file mode 100644 index 0000000..dbb57db --- /dev/null +++ b/modules/services/power-profiles-daemon.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.power-profiles-daemon = { + # System power profile switching (balanced, power-saver, performance). + services.power-profiles-daemon.enable = true; + }; +} diff --git a/modules/services/printing.nix b/modules/services/printing.nix new file mode 100644 index 0000000..1b55cc6 --- /dev/null +++ b/modules/services/printing.nix @@ -0,0 +1,38 @@ +{ + flake.modules.nixos.printing = {pkgs, ...}: let + inherit (builtins) attrValues; + in { + services.printing = { + enable = true; + # Allow network clients to reach cups. + openFirewall = true; + + # Disable the web interface. + webInterface = false; + + # Printer drivers packages. + drivers = attrValues { + inherit + (pkgs) + # keep-sorted start + foomatic-db-ppds + foomatic-db-ppds-withNonfreeDb + gutenprint + gutenprint-bin + splix + # keep-sorted end + ; + }; + + # Enable network printer discovery and share local queues by default. + browsing = true; + defaultShared = true; + }; + + # Enable fonts for ghostscript. + fonts.enableGhostscriptFonts = true; + + # Enable the printer config program. + programs.system-config-printer.enable = true; + }; +} diff --git a/modules/services/scx.nix b/modules/services/scx.nix new file mode 100644 index 0000000..109075a --- /dev/null +++ b/modules/services/scx.nix @@ -0,0 +1,12 @@ +{ + flake.modules.nixos.scx = {pkgs, ...}: { + services.scx = { + enable = true; + + # Use the rust scheds package with lavd and autopower tuning. + package = pkgs.scx.rustscheds; + scheduler = "scx_lavd"; + extraArgs = ["--autopower"]; + }; + }; +} diff --git a/modules/services/timesyncd.nix b/modules/services/timesyncd.nix new file mode 100644 index 0000000..7d9004c --- /dev/null +++ b/modules/services/timesyncd.nix @@ -0,0 +1,12 @@ +{ + flake.modules.nixos.timesyncd = { + services.timesyncd.servers = [ + # keep-sorted start numeric=yes + "server 0.pool.ntp.org" + "server 1.pool.ntp.org" + "server 2.pool.ntp.org" + "server 3.pool.ntp.org" + # keep-sorted end + ]; + }; +} diff --git a/modules/services/tlp.nix b/modules/services/tlp.nix new file mode 100644 index 0000000..7232ea6 --- /dev/null +++ b/modules/services/tlp.nix @@ -0,0 +1,15 @@ +{ + flake.modules.nixos.tlp = {lib, ...}: { + services = { + # Disable conflicting power management daemon. + power-profiles-daemon.enable = lib.mkForce false; + + tlp = { + enable = true; + + # Enable tlp power daemon for power-profiles-daemon compatibility. + pd.enable = true; + }; + }; + }; +} diff --git a/modules/services/udisks2.nix b/modules/services/udisks2.nix new file mode 100644 index 0000000..2bea911 --- /dev/null +++ b/modules/services/udisks2.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.udisks2 = { + # Disk management dbus service. + services.udisks2.enable = true; + }; +} diff --git a/modules/services/upower.nix b/modules/services/upower.nix new file mode 100644 index 0000000..3032a30 --- /dev/null +++ b/modules/services/upower.nix @@ -0,0 +1,6 @@ +{ + flake.modules.nixos.upower = { + # Power and battery information service used by desktops. + services.upower.enable = true; + }; +} diff --git a/modules/services/wifi.nix b/modules/services/wifi.nix new file mode 100644 index 0000000..d1fbabe --- /dev/null +++ b/modules/services/wifi.nix @@ -0,0 +1,20 @@ +{lib, ...}: let + inherit (lib) mkEnableOption; +in { + flake.modules.nixos.wifi = { + options.capabilities.wifi = mkEnableOption "wifi support"; + + config = { + capabilities.wifi = true; + + networking = { + wireless.iwd.enable = true; + + networkmanager.wifi = { + backend = "iwd"; + scanRandMacAddress = true; + }; + }; + }; + }; +} diff --git a/modules/services/zram.nix b/modules/services/zram.nix new file mode 100644 index 0000000..1eaac83 --- /dev/null +++ b/modules/services/zram.nix @@ -0,0 +1,8 @@ +{ + flake.modules.nixos.zram = { + zramSwap = { + enable = true; + priority = 100; + }; + }; +} diff --git a/todo-stats.sh b/todo-stats.sh new file mode 100755 index 0000000..6f322b1 --- /dev/null +++ b/todo-stats.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env sh + +set -eu + +todo_file=${1:-todo.md} + +if [ ! -f "$todo_file" ]; then + printf 'todo file not found: %s\n' "$todo_file" >&2 + exit 1 +fi + +awk ' + /^- \[ \]/ { todo++ } + /^- \[[xX]\]/ { done++ } + /^- \[-\]/ { removed++ } + END { + total = todo + done + removed + + if (total == 0) { + print "No todo entries found." + exit + } + + printf "Todo summary for %s\n", FILENAME + printf "Still to do: %d (%.1f%%)\n", todo, todo * 100 / total + printf "Done: %d (%.1f%%)\n", done, done * 100 / total + printf "Removed: %d (%.1f%%)\n", removed, removed * 100 / total + printf "Total: %d\n", total + } +' "$todo_file" diff --git a/todo.md b/todo.md index dd33c84..43c4a10 100644 --- a/todo.md +++ b/todo.md @@ -37,13 +37,15 @@ Checklist of repository files grouped by path for the dendritic migration. ## libs/ -- [ ] attr-paths.nix -- [ ] default.nix -- [ ] env.nix -- [ ] files.nix -- [ ] mime.nix -- [ ] starship.nix -- [ ] stylix.nix +(moved to lib/) + +- [-] attr-paths.nix +- [x] default.nix +- [x] env.nix +- [x] files.nix +- [x] mime.nix +- [x] starship.nix +- [x] stylix.nix ## modules/home/ @@ -218,10 +220,10 @@ Checklist of repository files grouped by path for the dendritic migration. - [ ] onlyoffice.nix - [ ] other.nix - [ ] prism.nix -- [ ] sober.nix -- [ ] spotify.nix -- [ ] zaread.nix -- [ ] zathura.nix +- [x] sober.nix +- [x] spotify.nix +- [x] zaread.nix +- [x] zathura.nix ## modules/home/gui/discord/ @@ -267,6 +269,8 @@ Checklist of repository files grouped by path for the dendritic migration. ## modules/home/tui/ +(moved to modules/programs/tui) + - [ ] atuin.nix - [ ] bluetui.nix - [ ] btop.nix @@ -278,7 +282,7 @@ Checklist of repository files grouped by path for the dendritic migration. - [ ] other.nix - [ ] oxicord.nix - [ ] spotify-player.nix -- [ ] wiremix.nix +- [ ] wiremix.nix (need to import terminal-exec before finished) ## modules/home/tui/neovim/ @@ -422,7 +426,7 @@ Checklist of repository files grouped by path for the dendritic migration. - [ ] default.nix - [ ] disk.nix -- [ ] locale.nix +- [x] locale.nix (moved to modules/profiles/locale.nix) - [ ] nix.nix - [x] slim.nix (moved to modules/profiles/slim.nix) - [x] sops.nix (moved to modules/nix/sops.nix) @@ -452,10 +456,10 @@ Checklist of repository files grouped by path for the dendritic migration. (moved to modules/programs/gui) -- [ ] lsfg.nix -- [ ] other.nix +- [x] lsfg.nix +- [x] other.nix (split into services/printing.nix and gui/seahorse.nix) - [x] steam.nix -- [ ] virt-manager.nix +- [x] virt-manager.nix ## modules/system/services/ @@ -463,23 +467,23 @@ Checklist of repository files grouped by path for the dendritic migration. - [x] ananicy.nix - [x] avahi.nix -- [ ] bluetooth.nix -- [ ] geoclue.nix +- [x] bluetooth.nix +- [x] geoclue.nix - [x] gnome-keyring.nix - [x] gvfs.nix -- [ ] locate.nix -- [ ] logind.nix -- [ ] network.nix -- [ ] other.nix -- [ ] pipewire.nix -- [ ] podman.nix -- [ ] printing.nix -- [ ] scx.nix -- [ ] ssh.nix -- [ ] timesyncd.nix +- [x] locate.nix +- [x] logind.nix (moved to modules/profiles/common/lidswitch.nix) +- [x] network.nix (split wifi up into sepperate wifi module) +- [x] other.nix (split up into multiple files) +- [x] pipewire.nix +- [x] podman.nix +- [x] printing.nix +- [x] scx.nix +- [-] ssh.nix +- [x] timesyncd.nix - [ ] timezone.nix -- [ ] tlp.nix -- [ ] zram.nix +- [x] tlp.nix +- [x] zram.nix ## overlays/ @@ -490,7 +494,7 @@ Checklist of repository files grouped by path for the dendritic migration. - [ ] hyprland-plugins.nix - [ ] pkgs.nix - [ ] superhtml.nix -- [ ] zaread.nix +- [-] zaread.nix ## pkgs/ @@ -498,7 +502,7 @@ Checklist of repository files grouped by path for the dendritic migration. - [ ] lutris.nix - [ ] nocheatsheet-nvim.nix - [ ] telescope-all-recent-nvim.nix -- [ ] zaread.nix +- [x] zaread.nix ## pkgs/scripts/ @@ -508,9 +512,11 @@ Checklist of repository files grouped by path for the dendritic migration. ## pkgs/scripts/ripgrep-all-adapters/ -- [ ] djvutorga-adapter.nix -- [ ] pptx2md-adapter.nix +(moved to modules/pkgs/ripgrep-all-adapters) + +- [x] djvutorga-adapter.nix +- [x] pptx2md-adapter.nix ## secrets/ -- [ ] secrets.yaml +- [x] secrets.yaml -- 2.51.2