{ lib, ... }: let inherit (lib.types) str enum; inherit (lib.options) mkEnableOption mkOption; in { options.modules.system.programs = { editors = { helix.enable = mkEnableOption "Helix text editor"; kakoune.enable = mkEnableOption "Kakoune text editor"; }; discord.enable = mkEnableOption "Discord messenger"; spotify.enable = mkEnableOption "Spotify music client"; zathura.enable = mkEnableOption "Zathura pdf viewer"; nushell.enable = mkEnableOption "nushell"; terminals = { foot.enable = mkEnableOption "Foot terminal emulator"; kitty.enable = mkEnableOption "Kitty terminal emulator"; }; git = { signingKey = mkOption { type = str; default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPiRe9OH/VtWFWyy5QbAVcN7CLxr4zUtRCwmxD6aeN6"; description = "The default gpg key used for signing commits"; }; }; default = { terminal = mkOption { type = enum [ "foot" "kitty" ]; default = "foot"; }; fileManager = mkOption { type = enum [ "thunar" "dolphin" "nemo" ]; default = "thunar"; }; browser = mkOption { type = enum [ "firefox" "librewolf" "chromium" ]; default = "firefox"; }; editor = mkOption { type = enum [ "neovim" "helix" "emacs" ]; default = "emacs"; }; launcher = mkOption { type = enum [ "anyrun" "rofi" "wofi" ]; default = "anyrun"; }; }; }; }