# Text-based calendar and scheduling application { config, lib, pkgs, ... }: let calcurseSync = pkgs.writeShellScriptBin "calcurse-sync" (builtins.readFile ./calcurse-sync.sh); calcursePackage = pkgs.symlinkJoin { name = "calcurse-wrapped"; paths = [ pkgs.bash pkgs.calcurse calcurseSync ] ++ lib.optionals config.development.nixvim.enable [ config.development.nixvim.package ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' ${lib.optionalString config.development.nixvim.enable '' wrapProgram $out/bin/calcurse --set PAGER "nvim" ''} wrapProgram $out/bin/calcurse-sync \ --prefix PATH : ${ lib.makeBinPath [ config.development.git.package pkgs.coreutils pkgs.gnused ] } ''; meta = { mainProgram = "calcurse"; }; }; in { options.office.calcurse = { enable = lib.mkEnableOption "Enables calcurse."; package = lib.mkOption { type = lib.types.package; readOnly = true; default = calcursePackage; description = "The calcurse package to use."; }; }; config = lib.mkIf config.office.calcurse.enable { home.packages = [ config.office.calcurse.package ]; xdg.configFile."calcurse/conf" = { source = ./conf; force = true; }; xdg.configFile."calcurse/keys" = { source = ./keys; force = true; }; }; }