{ config, pkgs, lib, ... }: with lib; with types; let mkMagicMergeOption = { description ? "", example ? { }, default ? { }, apply ? id, ... }: mkOption { inherit example description default apply; type = with lib.types; let valueType = nullOr (oneOf [ bool int float str (attrsOf valueType) (listOf valueType) ]) // { description = "bool, int, float or str"; emptyValue.value = { }; }; in valueType; }; in { options.components.gui.taskwarrior.enable = mkOption { type = bool; default = config.components.gui.enable; }; options.components.gui.taskwarrior.config = mkMagicMergeOption { type = attrs; default = { }; }; config = mkIf (config.components.gui.taskwarrior.enable) { environment.systemPackages = with pkgs; [ unstable.taskwarrior-tui taskwarrior timewarrior tasksh (pkgs.writeShellScriptBin "tsak" ''${pkgs.taskwarrior}/bin/task "$@"'') (pkgs.writers.writeBashBin "calendar" '' ${pkgs.taskwarrior}/bin/task calendar ${pkgs.taskwarrior}/bin/task calendar_report '') unstable.vit (pkgs.writers.writeBashBin "active" "${vit}/bin/vit active") (pkgs.writers.writeBashBin "todo" "${vit}/bin/vit todo") taskwarrior-hooks vdirsyncer khal (pkgs.writers.writeBashBin "kalendar" '' ${pkgs.vdirsyncer}/bin/vdirsyncer sync ${pkgs.khal}/bin/ikhal '') # todo : before deleting this, put it in trilium (python3Packages.bugwarrior.overrideAttrs (old: { version = "develop"; src = pkgs.fetchFromGitHub { owner = "ralphbean"; repo = "bugwarrior"; rev = "eb19a702a698f9c8c3ce2a1fe41f35872d9ae398"; sha256 = "sha256-Geon+ddE58WJ10L4unotzvmZj1Ye0yjZHVQgrR2YWgE="; }; propagatedBuildInputs = old.propagatedBuildInputs ++ [ python3Packages.pydantic python3Packages.tomli python3Packages.email-validator python3Packages.packaging ]; })) ]; #home-manager.users.mainUser.home.file.".config/bugwarrior/bugwarriorrc".source = ./bugwarriorc.ini; #home-manager.users.mainUser.home.file.".config/bugwarrior/bugwarriorrc".source = (pkgs.formats.toml { }).generate "bugwarriorrc.toml" config.components.gui.taskwarrior.config; home-manager.users.mainUser.home.file.".config/bugwarrior/bugwarrior.toml".source = (pkgs.formats.toml { }).generate "bugwarriorrc.toml" config.components.gui.taskwarrior.config; }; }