mirror of
https://github.com/gburd/nix-config.git
synced 2024-11-15 08:46:25 +00:00
369 lines
12 KiB
Nix
369 lines
12 KiB
Nix
args@{ pkgs, lib, ... }:
|
|
let
|
|
codeServer = if builtins.hasAttr "codeServer" args then args.codeServer else { enable = false; };
|
|
|
|
languages = if builtins.hasAttr "languages" args then args.languages else { };
|
|
|
|
getLangOr = key: default: !!(if builtins.hasAttr key languages then languages [ key ] else default);
|
|
|
|
getListIf = isEnabled: list: if isEnabled then list else [ ];
|
|
|
|
# NOTE: regenerate or update using the script in this directory
|
|
ext = {
|
|
bash-debug = {
|
|
name = "bash-debug";
|
|
publisher = "rogalmic";
|
|
version = "0.3.9";
|
|
sha256 = "0n7lyl8gxrpc26scffbrfczdj0n9bcil9z83m4kzmz7k5dj59hbz";
|
|
};
|
|
bash-ide-vscode = {
|
|
name = "bash-ide-vscode";
|
|
publisher = "mads-hartmann";
|
|
version = "1.41.0";
|
|
sha256 = "0gc4fk9j202xgahj1jy9p20fqxkfbldy4d0gbir5x3i7hq2ahml2";
|
|
};
|
|
cmake-tools = {
|
|
name = "cmake-tools";
|
|
publisher = "ms-vscode";
|
|
version = "1.18.39";
|
|
sha256 = "16wywsx5md3zkaj42vnp8bjpvv5pp4bwm9ll3gxbb0jhs1dwz7fc";
|
|
};
|
|
code-spell-checker = {
|
|
name = "code-spell-checker";
|
|
publisher = "streetsidesoftware";
|
|
version = "3.0.1";
|
|
sha256 = "0i76gf7zr0j4dr02zmxwfphk6yy8rvlj9rzq3k8pvnlfzkmh9ri9";
|
|
};
|
|
copilot = {
|
|
name = "copilot";
|
|
publisher = "github";
|
|
version = "1.194.886";
|
|
sha256 = "0qvsij109i1n89xl6clr4010r6q71pk4xhsyrzr1nyqggqwqhhpn";
|
|
};
|
|
cpptools = {
|
|
name = "cpptools";
|
|
publisher = "ms-vscode";
|
|
version = "1.20.5";
|
|
sha256 = "1j1a8ni5gihpw7zi8c6pg0l2n9yqbk369s3mywgz7dj8ykx7q8xl";
|
|
};
|
|
cpptools-extension-pack = {
|
|
name = "cpptools-extension-pack";
|
|
publisher = "ms-vscode";
|
|
version = "1.3.0";
|
|
sha256 = "11fk26siccnfxhbb92z6r20mfbl9b3hhp5zsvpn2jmh24vn96x5c";
|
|
};
|
|
debian-vscode = {
|
|
name = "debian-vscode";
|
|
publisher = "dawidd6";
|
|
version = "0.1.2";
|
|
sha256 = "0vzqwbd1qck9m0ip6vg995xz3x15x68jfly1f5zp1dpmaw8rmc0f";
|
|
};
|
|
editorconfig = {
|
|
name = "editorconfig";
|
|
publisher = "editorconfig";
|
|
version = "0.16.4";
|
|
sha256 = "0fa4h9hk1xq6j3zfxvf483sbb4bd17fjl5cdm3rll7z9kaigdqwg";
|
|
};
|
|
font-switcher = {
|
|
name = "font-switcher";
|
|
publisher = "evan-buss";
|
|
version = "4.1.0";
|
|
sha256 = "1ijn55n6866hagrpaccjb1fc36xmjw5sclydgq8pkvyn1xyd8i9a";
|
|
};
|
|
gitlens = {
|
|
name = "gitlens";
|
|
publisher = "eamodio";
|
|
version = "2024.5.2305";
|
|
sha256 = "1i24zbrf8d35mmc3ajyah8fxwdkjvz89c88i4iac4y3ahd5kpdzf";
|
|
};
|
|
go = {
|
|
name = "go";
|
|
publisher = "golang";
|
|
version = "0.41.4";
|
|
sha256 = "03gxgcvjk5plzkk7gjsrrck1kszzbzswkbcr33m3qlkyz4iw9nly";
|
|
};
|
|
grammarly = {
|
|
name = "grammarly";
|
|
publisher = "znck";
|
|
version = "0.25.0";
|
|
sha256 = "048bahfaha3i6sz1b5jkyhfd2aiwgpkmyy2i7hlzc45g1289827z";
|
|
};
|
|
language-hugo-vscode = {
|
|
name = "language-hugo-vscode";
|
|
publisher = "budparr";
|
|
version = "1.3.1";
|
|
sha256 = "16bchjx895jg0avgbg2s13kij1i8h2rma2vbks4w6vy00bz7rnpm";
|
|
};
|
|
linux-desktop-file = {
|
|
name = "linux-desktop-file";
|
|
publisher = "nico-castell";
|
|
version = "0.0.21";
|
|
sha256 = "0d2pfby72qczljzw1dk2rsqkqharl2sbq3g31zylz0rx73cvxb72";
|
|
};
|
|
makefile-tools = {
|
|
name = "makefile-tools";
|
|
publisher = "ms-vscode";
|
|
version = "0.10.7";
|
|
sha256 = "148c15friprfj1bwcalz3divrjnq283pgz9984aklznkb3fzas06";
|
|
};
|
|
markdown-all-in-one = {
|
|
name = "markdown-all-in-one";
|
|
publisher = "yzhang";
|
|
version = "3.6.2";
|
|
sha256 = "1n9d3qh7vypcsfygfr5rif9krhykbmbcgf41mcjwgjrf899f11h4";
|
|
};
|
|
nix-ide = {
|
|
name = "nix-ide";
|
|
publisher = "jnoortheen";
|
|
version = "0.3.1";
|
|
sha256 = "1cpfckh6zg8byi6x1llkdls24w9b0fvxx4qybi9zfcy5gc60r6nk";
|
|
};
|
|
non-breaking-space-highlighter = {
|
|
name = "non-breaking-space-highlighter";
|
|
publisher = "viktorzetterstrom";
|
|
version = "0.0.3";
|
|
sha256 = "1v7x973bbywqdpkslvwn5nh2fpxiq82cq4d9g7g0y2vzac2r3s5p";
|
|
};
|
|
partial-diff = {
|
|
name = "partial-diff";
|
|
publisher = "ryu1kn";
|
|
version = "1.4.3";
|
|
sha256 = "0x3lkvna4dagr7s99yykji3x517cxk5kp7ydmqa6jb4bzzsv1s6h";
|
|
};
|
|
prettier-vscode = {
|
|
name = "prettier-vscode";
|
|
publisher = "esbenp";
|
|
version = "10.4.0";
|
|
sha256 = "1iy7i0yxnhizz40llnc1dk9q8kk98rz6ki830sq7zj3ak9qp9vzk";
|
|
};
|
|
pubspec-assist = {
|
|
name = "pubspec-assist";
|
|
publisher = "jeroen-meijer";
|
|
version = "2.3.2";
|
|
sha256 = "1zdv8i6i4hka536i52qbqpmghs6jyn22vgzxp7jfnvxvx9nirjgq";
|
|
};
|
|
python = {
|
|
name = "python";
|
|
publisher = "ms-python";
|
|
version = "2024.7.11371014";
|
|
sha256 = "0s21jdpdcwy7pnmzlqk9l8h71yh7wg1idhj6zgqk91xa06dhq060";
|
|
};
|
|
remote-ssh-edit = {
|
|
name = "remote-ssh-edit";
|
|
publisher = "ms-vscode-remote";
|
|
version = "0.47.2";
|
|
sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
|
|
};
|
|
rust-analyzer = {
|
|
name = "rust-analyzer";
|
|
publisher = "rust-lang";
|
|
version = "0.3.1386";
|
|
sha256 = "qttgUVpoYNEg2+ArYxnEHwM4AbChQiB6/JW46+cq7/w=";
|
|
};
|
|
shellcheck = {
|
|
name = "shellcheck";
|
|
publisher = "timonwong";
|
|
version = "0.37.1";
|
|
sha256 = "sha256-JSS0GY76+C5xmkQ0PNjt2Nu/uTUkfiUqmPL51r64tl0=";
|
|
};
|
|
simple-rst = {
|
|
name = "simple-rst";
|
|
publisher = "trond-snekvik";
|
|
version = "1.5.4";
|
|
sha256 = "1js1489nd9fycvpgh39mwzpbqm28qi4gzi68443v3vhw3dsg4wjv";
|
|
};
|
|
systemd-unit-file = {
|
|
name = "systemd-unit-file";
|
|
publisher = "coolbear";
|
|
version = "1.0.6";
|
|
sha256 = "0sc0zsdnxi4wfdlmaqwb6k2qc21dgwx6ipvri36x7agk7m8m4736";
|
|
};
|
|
vala = {
|
|
name = "vala";
|
|
publisher = "prince781";
|
|
version = "1.0.8";
|
|
sha256 = "sha256-IuIb7vLNiE3rzVHOsjInaYLzNYORbwabQq0bfaPLlqc=";
|
|
};
|
|
vscode-docker = {
|
|
name = "vscode-docker";
|
|
publisher = "ms-azuretools";
|
|
version = "1.29.1";
|
|
sha256 = "0zba6g0cw2h42gfvrlx0x2axlj61hkrfjfg5kyd14fqzi4n9jmxs";
|
|
};
|
|
vscode-front-matter = {
|
|
name = "vscode-front-matter";
|
|
publisher = "eliostruyf";
|
|
version = "8.4.0";
|
|
sha256 = "sha256-L0PbZ4HxJAlxkwVcZe+kBGS87yzg0pZl89PU0aUVYzY=";
|
|
};
|
|
vscode-github-actions = {
|
|
name = "vscode-github-actions";
|
|
publisher = "github";
|
|
version = "0.26.2";
|
|
sha256 = "16kp1yxs798jp8ffqq3ixm3pyz4f3wgdkdyjpjy94ppqp4aklixh";
|
|
};
|
|
vscode-icons = {
|
|
name = "vscode-icons";
|
|
publisher = "vscode-icons-team";
|
|
version = "12.7.0";
|
|
sha256 = "1w30gd0chf2c26a9c426ghs7gmss9dk9yzlrab51ydwhfkkd4hxb";
|
|
};
|
|
vscode-mdx = {
|
|
name = "vscode-mdx";
|
|
publisher = "unifiedjs";
|
|
version = "1.8.6";
|
|
sha256 = "177yjm8dhjjgmwww00sqi0fk1clajkdyy2nypi8413xv6cm14c71";
|
|
};
|
|
vscode-mdx-preview = {
|
|
name = "vscode-mdx-preview";
|
|
publisher = "xyc";
|
|
version = "0.3.3";
|
|
sha256 = "1i65l6xrzh3if4x3bj012rrdk6lwyrmlpgdqml4p53048nm09b1q";
|
|
};
|
|
vscode-neovim = {
|
|
name = "vscode-neovim";
|
|
publisher = "asvetliakov";
|
|
version = "1.12.0";
|
|
sha256 = "09xyb2i1va0yq45ymk20v9cxjnc02xlfvm1rm8cialq19xl3h0m2";
|
|
};
|
|
vscode-power-mode = {
|
|
name = "vscode-power-mode";
|
|
publisher = "hoovercj";
|
|
version = "3.0.2";
|
|
sha256 = "sha256-ZE+Dlq0mwyzr4nWL9v+JG00Gllj2dYwL2r9jUPQ8umQ=";
|
|
};
|
|
vscode-pylance = {
|
|
name = "vscode-pylance";
|
|
publisher = "ms-python";
|
|
version = "2024.5.101";
|
|
sha256 = "0yp0dlq2q9yvv5vhpxfmpbrdgcy61i9r1ilknhni29nlg86mqbbv";
|
|
};
|
|
vscode-yaml = {
|
|
name = "vscode-yaml";
|
|
publisher = "redhat";
|
|
version = "1.14.0";
|
|
sha256 = "0pww9qndd2vsizsibjsvscz9fbfx8srrj67x4vhmwr581q674944";
|
|
};
|
|
vsliveshare = {
|
|
name = "vsliveshare";
|
|
publisher = "ms-vsliveshare";
|
|
version = "1.0.5918";
|
|
sha256 = "1m4mpy6irj3vzjw6mzmjjp6appgf000zfhmkjwxw65sl4wmjckaf";
|
|
};
|
|
xml = {
|
|
name = "xml";
|
|
publisher = "dotjoshjohnson";
|
|
version = "2.5.1";
|
|
sha256 = "1v4x6yhzny1f8f4jzm4g7vqmqg5bqchyx4n25mkgvw2xp6yls037";
|
|
};
|
|
};
|
|
|
|
|
|
g = {
|
|
ai = getLangOr "ai" false;
|
|
cpp = getLangOr "cpp" true;
|
|
diff = getLangOr "diff" true;
|
|
docker = getLangOr "docker" true;
|
|
editorconfig = getLangOr "editorconfig" true;
|
|
elm = getLangOr "elm" false;
|
|
fun = getLangOr "fun" false;
|
|
github = getLangOr "github" false;
|
|
gitlens = getLangOr "gitlens" false;
|
|
go = getLangOr "go" false;
|
|
hugo = getLangOr "hugo" false;
|
|
icons = getLangOr "icons" true;
|
|
js = getLangOr "js" true;
|
|
linux = getLangOr "linux" false;
|
|
nix = getLangOr "nix" true;
|
|
php = getLangOr "php" false;
|
|
prisma = getLangOr "prisma" true;
|
|
python = getLangOr "python" true;
|
|
rust = getLangOr "rust" false;
|
|
ssh = getLangOr "ssh" false;
|
|
text = getLangOr "text" true;
|
|
vala = getLangOr "vala" false;
|
|
xml = getLangOr "xml" true;
|
|
yaml = getLangOr "yaml" true;
|
|
};
|
|
in
|
|
{
|
|
imports = lib.optional codeServer.enable ../services/vscode-server.nix
|
|
;
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
(vscode-with-extensions.override {
|
|
inherit (trunk) vscode;
|
|
vscodeExtensions = with unstable.vscode-extensions;
|
|
# globally enabled extensions
|
|
getListIf g.cpp [ ms-vscode.cpptools ms-vscode.cpptools-extension-pack ms-vscode.cmake-tools ms-vscode.makefile-tools ]
|
|
++ getListIf g.diff [ ryu1kn.partial-diff ]
|
|
++ getListIf g.docker [ ms-azuretools.vscode-docker ]
|
|
++ getListIf g.editorconfig [ editorconfig.editorconfig ]
|
|
++ getListIf g.elm [ elmtooling.elm-ls-vscode ]
|
|
++ getListIf g.github [ github.vscode-github-actions github.copilot ]
|
|
++ getListIf g.gitlens [ eamodio.gitlens ]
|
|
++ getListIf g.go [ golang.go ]
|
|
++ getListIf g.icons [ vscode-icons-team.vscode-icons ]
|
|
++ getListIf g.js [ esbenp.prettier-vscode ]
|
|
++ getListIf g.linux [ coolbear.systemd-unit-file timonwong.shellcheck mads-hartmann.bash-ide-vscode ]
|
|
++ getListIf g.nix [ bbenoist.nix jnoortheen.nix-ide ]
|
|
++ getListIf g.php [ bmewburn.vscode-intelephense-client ]
|
|
++ getListIf g.prisma [ prisma.prisma ]
|
|
++ getListIf g.python [ ms-python.python ms-python.vscode-pylance ]
|
|
++ getListIf g.ssh [ ms-vscode-remote.remote-ssh ]
|
|
++ getListIf g.text [ streetsidesoftware.code-spell-checker yzhang.markdown-all-in-one ]
|
|
++ getListIf g.xml [ dotjoshjohnson.xml ]
|
|
++ getListIf g.yaml [ redhat.vscode-yaml ]
|
|
|
|
# The most simple way to calculate a package's SHA256 is to simply
|
|
# copy over an invalid SHA256 and the nixos-rebuild will fail,
|
|
# with output for the specified and actual hash values. Or,
|
|
# SHA=$(nix-hash --flat --base32 --type sha256 "$EXTTMP/$N.zip")
|
|
# see: https://t.ly/Akd1I
|
|
++ (pkgs.unstable.vscode-utils.extensionsFromVscodeMarketplace
|
|
# globally enabled extensions
|
|
[
|
|
ext.non-breaking-space-highlighter
|
|
ext.vscode-neovim
|
|
# TODO: the following is a work-around for the option-based
|
|
# method below which doesn't seem to work at the moment.
|
|
ext.bash-debug
|
|
ext.gitlens
|
|
ext.copilot
|
|
ext.vscode-github-actions
|
|
ext.bash-ide-vscode
|
|
ext.shellcheck
|
|
ext.grammarly
|
|
]
|
|
++ getListIf g.ai [ ext.copilot ]
|
|
++ getListIf g.cpp [ ]
|
|
++ getListIf g.diff [ ]
|
|
++ getListIf g.docker [ ]
|
|
++ getListIf g.editorconfig [ ]
|
|
++ getListIf g.elm [ ]
|
|
++ getListIf g.fun [ ext.vscode-power-mode ]
|
|
++ getListIf g.github [ ]
|
|
++ getListIf g.gitlens [ ]
|
|
++ getListIf g.go [ ]
|
|
++ getListIf g.hugo [ ext.language-hugo-vscode ]
|
|
++ getListIf g.icons [ ]
|
|
++ getListIf g.js [ ]
|
|
++ getListIf g.linux [ ext.linux-desktop-file ext.bash-debug ]
|
|
++ getListIf g.nix [ ]
|
|
++ getListIf g.php [ ]
|
|
++ getListIf g.python [ ]
|
|
++ getListIf g.rust [ ext.rust-analyzer ]
|
|
++ getListIf g.ssh [ ext.remote-ssh-edit ]
|
|
# TODO: Determine root cause of manifest issues
|
|
# ++ getListIf g.text [ext.simple-rst ext.vscode-mdx ext.vscode-mdx-preview]
|
|
++ getListIf g.xml [ ]
|
|
++ getListIf g.yaml [ ]
|
|
)
|
|
;
|
|
})
|
|
];
|
|
|
|
# May require the service to be enable/started for the user
|
|
# - systemctl --user enable auto-fix-vscode-server.service --now
|
|
}
|
|
# unstable.vscode-extensions.ms-vsliveshare.vsliveshare
|