{ config, lib, pkgs, ... }: { options = { apps.development = { editor = { vscodium.enable = lib.mkEnableOption "enable vscodium"; emacs.enable = lib.mkEnableOption "enable emacs"; neovim.enable = lib.mkEnableOption "enable neovim"; zed.enable = lib.mkEnableOption "enable zed"; default = lib.mkOption { default = "neovim"; description = "default editor"; }; }; }; }; config = { environment.systemPackages = with pkgs; [ nixfmt fd nil nixd ] ++ (if config.apps.development.editor.vscodium.enable then [ vscodium ] else [ ]) ++ (if config.apps.development.editor.zed.enable then [ zed-editor ] else [ ]); programs = { neovim = if config.apps.development.editor.neovim.enable then { enable = true; defaultEditor = if (config.apps.development.editor.default == "neovim") then true else false; viAlias = true; vimAlias = true; } else { }; vscode = if config.apps.development.editor.vscodium.enable then { enable = true; package = pkgs.vscodium; defaultEditor = if (config.apps.development.editor.default == "vscodium") then true else false; # profiles.default.extensions = with pkgs.vscode-extensions; [ # catppuccin.catppuccin-vsc # catppuccin.catppuccin-vsc-icons # jnoortheen.nix-ide # alefragnani.project-manager # naumovs.color-highlight # geequlim.godot-tools # stylelint.vscode-stylelint # ecmel.vscode-html-css # esbenp.prettier-vscode # ]; } else { }; }; services = { emacs = if config.apps.development.editor.emacs.enable then { enable = true; install = true; defaultEditor = if (config.apps.development.editor.default == "emacs") then true else false; } else { }; }; }; }