{
  lib,
  config,
  ...
}: let
  cfg = config.soispha.programs.taskwarrior;
in {
  options.soispha.programs.taskwarrior = {
    enable = lib.mkEnableOption "taskwarrior-secrets";
  };

  # HACK: Migrating the whole `taskwarrior` setup is right now unrealistic, as the module is
  # tightly coupled with the `firefox` module, and `neorg` script.
  # But to work around the  fact that setting the `age` secrets in the legacy module is
  # impossible, this module was created as work-around until the `taskwarrior` module can
  # be fully migrated. <2024-10-18>
  config = lib.mkIf cfg.enable {
    age.secrets = {
      taskserverPrivate = {
        file = ./secrets/private.key;
        mode = "700";
        owner = "soispha";
        group = "users";
      };
      taskserverPublic = {
        file = ./secrets/public.cert;
        mode = "700";
        owner = "soispha";
        group = "users";
      };
      taskserverCA = {
        file = ./secrets/ca.cert;
        mode = "700";
        owner = "soispha";
        group = "users";
      };
      taskserverCredentials = {
        file = ./secrets/credentials;
        mode = "700";
        owner = "soispha";
        group = "users";
      };
    };
  };
}