home-manager: refactor vscode module, seperate language settings
This commit is contained in:
parent
dd077d98e2
commit
af11897dda
1 changed files with 122 additions and 115 deletions
|
@ -3,62 +3,139 @@ with lib;
|
|||
|
||||
let
|
||||
cfg = config.custom-hm.vscode;
|
||||
|
||||
packages = {
|
||||
nixPackages = {
|
||||
systemPackages = with pkgs; [ nixd nixpkgs-fmt ];
|
||||
extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
jnoortheen.nix-ide
|
||||
];
|
||||
settings = {
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.formatterPath" = "nixpkgs-fmt";
|
||||
"nix.serverPath" = "nixd";
|
||||
};
|
||||
};
|
||||
cxxPackages = {
|
||||
systemPackages = with pkgs; [ clang-tools ];
|
||||
extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
(ms-vscode.cmake-tools.overrideAttrs (_: { sourceRoot = "extension"; }))
|
||||
twxs.cmake
|
||||
];
|
||||
settings = {
|
||||
"cmake.configureOnEdit" = false;
|
||||
"cmake.showOptionsMovedNotification" = false;
|
||||
"cmake.showNotAllDocumentsSavedQuestion" = false;
|
||||
};
|
||||
};
|
||||
pythonPackages = {
|
||||
systemPackages = with pkgs; [ ];
|
||||
extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
ms-python.python
|
||||
];
|
||||
settings = { };
|
||||
};
|
||||
scalaPackages = {
|
||||
systemPackages = with pkgs; [ ];
|
||||
extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
scala-lang.scala
|
||||
scalameta.metals
|
||||
];
|
||||
settings = { };
|
||||
};
|
||||
latexPackages = {
|
||||
systemPackages = with pkgs; [ texliveSmall ];
|
||||
extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
james-yu.latex-workshop
|
||||
];
|
||||
settings = {
|
||||
"latex-workshop.latex.autoBuild.run" = "never";
|
||||
"latex-workshop.latex.tools" = [
|
||||
{ "name" = "xelatex";
|
||||
"command" = "xelatex";
|
||||
"args" = [ "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "-pdf" "%DOCFILE%" ];
|
||||
}
|
||||
{ "name" = "pdflatex";
|
||||
"command" = "pdflatex";
|
||||
"args" = [ "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "%DOCFILE%" ];
|
||||
}
|
||||
{ "name" = "bibtex"; "command" = "bibtex"; "args" = [ "%DOCFILE%" ]; }
|
||||
];
|
||||
"latex-workshop.latex.recipes" = [
|
||||
{ "name" = "xelatex"; "tools" = [ "xelatex" ]; }
|
||||
{ "name" = "pdflatex"; "tools" = [ "pdflatex" ]; }
|
||||
{ "name" = "xe->bib->xe->xe"; "tools" = [ "xelatex" "bibtex" "xelatex" "xelatex" ]; }
|
||||
{ "name" = "pdf->bib->pdf->pdf"; "tools" = [ "pdflatex" "bibtex" "pdflatex" "pdflatex" ]; }
|
||||
];
|
||||
"[latex]" = {
|
||||
"editor.formatOnPaste" = false;
|
||||
"editor.suggestSelection" = "recentlyusedbyprefix";
|
||||
"editor.wordWrap" = "bounded";
|
||||
"editor.wordWrapColumn" = 80;
|
||||
"editor.unicodeHighlight.ambiguousCharacters" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
languages = [ "nix" "cxx" "python" "scala" "latex" ];
|
||||
zipAttrsWithLanguageOption = (attr:
|
||||
(map (l: (lib.mkIf cfg.languages.${l} packages."${l}Packages".${attr})) languages)
|
||||
);
|
||||
in
|
||||
{
|
||||
options.custom-hm.vscode = {
|
||||
enable = mkEnableOption "Vscode config";
|
||||
languages = {
|
||||
nix = mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
cxx = mkEnableOption "C++";
|
||||
python = mkEnableOption "Python";
|
||||
scala = mkEnableOption "Scala";
|
||||
latex = mkEnableOption "Latex";
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
pkgs.wl-clipboard-x11
|
||||
];
|
||||
home.packages = lib.mkMerge ([
|
||||
[ pkgs.clang-tools ]
|
||||
] ++ zipAttrsWithLanguageOption "systemPackages");
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
mutableExtensionsDir = false;
|
||||
extensions = (with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
mkhl.direnv
|
||||
extensions = lib.mkMerge ([
|
||||
(with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [
|
||||
mkhl.direnv
|
||||
|
||||
bbenoist.nix
|
||||
ms-azuretools.vscode-docker
|
||||
ms-vscode-remote.remote-ssh
|
||||
vscodevim.vim
|
||||
github.vscode-pull-request-github
|
||||
gruntfuggly.todo-tree # todo highlight
|
||||
ms-azuretools.vscode-docker
|
||||
ms-vscode-remote.remote-ssh
|
||||
vscodevim.vim
|
||||
github.vscode-pull-request-github
|
||||
gruntfuggly.todo-tree # todo highlight
|
||||
|
||||
# Language support
|
||||
# Python
|
||||
ms-python.python
|
||||
# Markdown
|
||||
davidanson.vscode-markdownlint
|
||||
# C/C++
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
# Nix
|
||||
jnoortheen.nix-ide
|
||||
# Latex
|
||||
james-yu.latex-workshop
|
||||
# Vue
|
||||
vue.volar
|
||||
# Scale / chisel
|
||||
scala-lang.scala
|
||||
scalameta.metals
|
||||
# Markdown
|
||||
davidanson.vscode-markdownlint
|
||||
# Latex
|
||||
# Scale / chisel
|
||||
sterben.fpga-support
|
||||
|
||||
(ms-vscode.cmake-tools.overrideAttrs (_: { sourceRoot = "extension"; }))
|
||||
twxs.cmake
|
||||
|
||||
sterben.fpga-support
|
||||
|
||||
ms-vscode-remote.remote-ssh-edit
|
||||
mushan.vscode-paste-image
|
||||
]) ++ (with pkgs.vscode-extensions; [
|
||||
waderyan.gitblame
|
||||
catppuccin.catppuccin-vsc
|
||||
# Rust
|
||||
rust-lang.rust-analyzer
|
||||
]);
|
||||
userSettings = {
|
||||
"workbench.colorTheme" = "Catppuccin Macchiato";
|
||||
ms-vscode-remote.remote-ssh-edit
|
||||
mushan.vscode-paste-image
|
||||
])
|
||||
(with pkgs.vscode-extensions; [
|
||||
waderyan.gitblame
|
||||
catppuccin.catppuccin-vsc
|
||||
# Rust
|
||||
rust-lang.rust-analyzer
|
||||
# ]) ++ ;
|
||||
])
|
||||
] ++ zipAttrsWithLanguageOption "extension");
|
||||
userSettings = lib.mkMerge ([
|
||||
{"workbench.colorTheme" = "Catppuccin Macchiato";
|
||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
"files.autoSave" = "afterDelay";
|
||||
|
@ -70,80 +147,10 @@ in
|
|||
"git.autofetch" = false;
|
||||
"window.zoomLevel" = -1;
|
||||
|
||||
"nix.enableLanguageServer" = true;
|
||||
|
||||
"latex-workshop.latex.autoBuild.run" = "never";
|
||||
"latex-workshop.latex.tools" = [
|
||||
{
|
||||
"name" = "xelatex";
|
||||
"command" = "xelatex";
|
||||
"args" = [
|
||||
"-synctex=1"
|
||||
"-interaction=nonstopmode"
|
||||
"-file-line-error"
|
||||
"-pdf"
|
||||
"%DOCFILE%"
|
||||
];
|
||||
}
|
||||
{
|
||||
"name" = "pdflatex";
|
||||
"command" = "pdflatex";
|
||||
"args" = [
|
||||
"-synctex=1"
|
||||
"-interaction=nonstopmode"
|
||||
"-file-line-error"
|
||||
"%DOCFILE%"
|
||||
];
|
||||
}
|
||||
{
|
||||
"name" = "bibtex";
|
||||
"command" = "bibtex";
|
||||
"args" = [
|
||||
"%DOCFILE%"
|
||||
];
|
||||
}
|
||||
];
|
||||
"latex-workshop.latex.recipes" = [
|
||||
{
|
||||
"name" = "xelatex";
|
||||
"tools" = [
|
||||
"xelatex"
|
||||
];
|
||||
}
|
||||
{
|
||||
"name" = "pdflatex";
|
||||
"tools" = [
|
||||
"pdflatex"
|
||||
];
|
||||
}
|
||||
{
|
||||
"name" = "xe->bib->xe->xe";
|
||||
"tools" = [
|
||||
"xelatex"
|
||||
"bibtex"
|
||||
"xelatex"
|
||||
"xelatex"
|
||||
];
|
||||
}
|
||||
{
|
||||
"name" = "pdf->bib->pdf->pdf";
|
||||
"tools" = [
|
||||
"pdflatex"
|
||||
"bibtex"
|
||||
"pdflatex"
|
||||
"pdflatex"
|
||||
];
|
||||
}
|
||||
];
|
||||
"[latex]" = {
|
||||
"editor.formatOnPaste" = false;
|
||||
"editor.suggestSelection" = "recentlyusedbyprefix";
|
||||
"editor.wordWrap" = "bounded";
|
||||
"editor.wordWrapColumn" = 80;
|
||||
"editor.unicodeHighlight.ambiguousCharacters" = false;
|
||||
"extensions.experimental.affinity" = {
|
||||
"vscodevim.vim" = 1;
|
||||
};
|
||||
"cmake.configureOnEdit" = false;
|
||||
};
|
||||
}] ++ zipAttrsWithLanguageOption "settings");
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue