{ 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 repoFlake.inputs.nix4vscode.packages.${pkgs.stdenv.system}.default # 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