infra/nix/home-manager/programs/vscode/default.nix

186 lines
4.8 KiB
Nix

{
config,
pkgs,
repoFlake,
lib,
...
}:
let
pkgsVscodium = import repoFlake.inputs.nixpkgs-vscodium { inherit (pkgs) system config; };
in
{
programs.vscode = {
enable = true;
package = pkgsVscodium.vscodium;
extensions =
with pkgsVscodium.vscode-extensions;
[
eamodio.gitlens
mkhl.direnv
tomoki1207.pdf
vscodevim.vim
# bbenoist.nix
jnoortheen.nix-ide
ms-vscode.theme-tomorrowkit
nonylene.dark-molokai-theme
ms-python.vscode-pylance
# TODO: these are not in nixpkgs
# fredwangwang.vscode-hcl-format
# hashicorp.hcl
# mindaro-dev.file-downloader
# ms-vscode.remote-explorer
# TODO: not compatible with vscodium
# ms-vscode-remote.remote-ssh
]
++ (
let
extensions = repoFlake.inputs.nix-vscode-extensions.extensions.${pkgs.system};
in
with extensions.vscode-marketplace;
with extensions.vscode-marketplace-release;
[
tamasfe.even-better-toml
serayuzgur.crates
rust-lang.rust-analyzer
swellaby.vscode-rust-test-adapter
golang.go
jeff-hykin.better-go-syntax
]
)
++ (
let
nix4vscodeToml = pkgs.writeText "nix4vscode.toml" ''
vscode_version = "${config.programs.vscode.package.version}"
[[extensions]]
publisher_name = "FelixZeller"
extension_name = "markdown-oxide"
[[extensions]]
publisher_name = "ibecker"
extension_name = "treefmt-vscode"
'';
nix4vscodeNix =
pkgs.runCommand "nix4vscode.nix"
{
# nix4vscode needs internet access
__noChroot = true;
requiredSystemFeatures = [ "recursive-nix" ];
buildInputs = [
pkgs.nix
pkgs.cacert
(pkgs.callPackage "${repoFlake.inputs.nix4vscode.outPath}/nix/package.nix" { })
# pkgs.strace
];
# outputHashAlgo = "sha256";
# outputHashMode = "recursive";
# outputHash = lib.fakeSha256;
}
''
# set -x
# export RUST_BACKTRACE=full
# export RUST_LOG=trace
export HOME=$(mktemp -d)
# strace -ffZyyY
nix4vscode ${nix4vscodeToml} > $out
'';
nix4vscodeExtensions = builtins.removeAttrs (pkgs.callPackage nix4vscodeNix { }) [
"override"
"overrideDerivation"
];
nix4vscodeExtensions' = lib.attrsets.mapAttrsToList (
_: v: builtins.head (builtins.attrValues v)
) nix4vscodeExtensions;
in
nix4vscodeExtensions'
);
mutableExtensionsDir = true;
};
home.packages = [
pkgs.nil
pkgs.nixfmt-rfc-style
];
}
# TODO: automate
### original list:
# 74th.Theme-NaturalContrast-With-HC
# AlanWalk.markdown-toc
# DiryoX.Paper-tmTheme
# Mit.Monokai-Polished
# Stephanvs.dot
# ZakCodes.rust-snippets
# aaron-bond.better-comments
# af4jm.vscode-icalendar
# akmittal.hugofy
# asciidoctor.asciidoctor-vscode
# bierner.markdown-preview-github-styles
# brian-yu.made-of-code
# bungcip.better-toml
# bwildeman.tabulous
# CoenraadS.bracket-pair-colorizer
# dawhite.mustache
# doctorrustynelson.vscode-nomnoml
# eamodio.gitlens
# ethansugar.monokai-light
# gerane.Theme-Monokai-Contrast
# gerane.Theme-snappy-light
# GitHub.vscode-pull-request-github
# golang.go
# hashicorp.terraform
# hawkeyegold.bonsai
# hdg.live-html-previewer
# JaimeOlivares.yuml
# James-Yu.latex-workshop
# jebbs.plantuml
# jeremyfa.tasks-chooser
# joaompinto.asciidoctor-vscode
# johndugan.contrast-theme
# k3a.theme-dark-plus-contrast
# kenhowardpdx.vscode-gist
# leizongmin.quick-open
# mechatroner.rainbow-csv
# mermade.openapi-lint
# mimarec.swagger-doc-viewer
# mitaki28.vscode-clang
# mohsen1.prettify-json
# ms-azuretools.vscode-docker
# ms-python.python
# ms-toolsai.jupyter
# ms-vscode.cpptools
# nocksock.vscode-quick-open-create
# oderwat.indent-rainbow
# paulofallon.phantypist
# qnsolutions.swaggitor
# redhat.vscode-yaml
# rozbo.papercolor-vscode
# rstuven.iferrblocks
# rust-lang.rust
# sashaweiss.bracket-jumper
# skellock.just
# steditor.line-endings
# streetsidesoftware.code-spell-checker
# streetsidesoftware.code-spell-checker-german
# sugarpirate.theme-tinacious-contrast
# sysoev.vscode-open-in-github
# tht13.html-preview-vscode
# tickleforce.scrolloff
# timonwong.shellcheck
# Tyriar.sort-lines
# vadimcn.vscode-lldb
# vscodevim.vim
# vthiery.prettify-selected-json
# webfreak.debug
# xaver.clang-format
# xmonader.vscode-capnp
# xyz.plsql-language
# yzane.markdown-pdf
# zxh404.vscode-proto3