config.nix/modules/apps/development/editor.nix
2026-05-04 08:12:55 +02:00

82 lines
2.1 KiB
Nix

{
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
{ };
};
};
}