diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix index d30dee85c..df1dd2378 100644 --- a/modules/programs/vscode.nix +++ b/modules/programs/vscode.nix @@ -28,6 +28,7 @@ let "${config.xdg.configHome}/${configDir}/User"; configFilePath = "${userDir}/settings.json"; + tasksFilePath = "${userDir}/tasks.json"; keybindingsFilePath = "${userDir}/keybindings.json"; # TODO: On Darwin where are the extensions? @@ -70,6 +71,27 @@ in { ''; }; + userTasks = mkOption { + type = jsonFormat.type; + default = { }; + example = literalExpression '' + { + "version": "2.0.0", + "tasks": [ + { + "type": "shell", + "label": "Hello task", + "command": "hello", + } + ] + } + ''; + description = '' + Configuration written to Visual Studio Code's + tasks.json. + ''; + }; + keybindings = mkOption { type = types.listOf (types.submodule { options = { @@ -146,6 +168,10 @@ in { "${configFilePath}".source = jsonFormat.generate "vscode-user-settings" cfg.userSettings; }) + (mkIf (cfg.userTasks != { }) { + "${tasksFilePath}".source = + jsonFormat.generate "vscode-user-tasks" cfg.userTasks; + }) (mkIf (cfg.keybindings != [ ]) (let dropNullFields = filterAttrs (_: v: v != null); in {