{user}: { lib, pkgs, config, ... }: with lib; let editor = config.programs.editor; pkg = editor.package; menu = config.programs.menu.package + config.programs.menu.dmenuCommand; in { options.programs = { editor = { enable = mkEnableOption "editor"; package = mkPackageOption pkgs "vscodium" { example = "pkgs.vscode"; }; neovim = mkEnableOption "neovim mode"; }; }; config = mkIf editor.enable { home-manager.users.${user}.imports = [ { programs.vscode = { enable = true; package = editor.package; extensions = []; userSettings = { "keyboard.dispatch" = "keyCode"; "terminal.integrated.sendKeybindingsToShell" = true; "aws.telemetry" = false; "gitlens.telemetry.enabled" = false; "redhat.telemetry.enabled" = false; "cSpell.language" = "en,en-GB"; }; }; } ]; programs.scripts = [ { name = "open-code"; text = '' code_dir=~/Documents/code cd $code_dir repo=$({ ls && echo clone-repo; } | ${menu}) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ''; install = false; hotkeys = [{key = "C";}]; } ]; }; }