{ pkgs
, lib
, config
, ... }: with lib; let
  cfg = config.home.util;
  gui = with config.global.gpu; enable && session;
in {
  options.home.util = {
    minimal = mkEnableOption "minimal system environment with less packages";
  };

  config = {
    users.homeModules = [
      # this module passes util configuration to home-manager
      { passthrough.util = cfg; }
    ];

    programs.zsh.enable = true;
    environment.shells = singleton pkgs.zsh;

    users.home.persist.directories = [ ] ++
    optionals (!cfg.minimal) [
      ".cache/nix-index"
    ] ++
    optionals gui [
      ".local/share/Mission Planner"
      ".config/ExpressLRS Configurator"
      ".config/betaflight-configurator"
      ".config/inav-configurator"
    ];
  };
}