diff --git a/flake.nix b/flake.nix index 2db6201..8414c3d 100644 --- a/flake.nix +++ b/flake.nix @@ -40,6 +40,9 @@ }; devShells.${system}.default = pkgs.mkShell { buildInputs = with pkgs; [ (import home-manager { inherit pkgs; }).home-manager just ]; + shellHook = '' + export NIXPKGS_PATH=${pkgs.path}; + ''; }; }; } diff --git a/justfile b/justfile index 1dbfaaf..c75a4a7 100644 --- a/justfile +++ b/justfile @@ -29,7 +29,11 @@ _switch: # switch to latest home-manager generation switch: (_run "_switch") -_update: && _switch +_update-vscode-extensions: + $NIXPKGS_PATH/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh > \ + {{ root_dir }}/programs/vscode/extensions.nix + +_update: _update-vscode-extensions && _switch nix flake update --commit-lock-file "{{ root_dir }}" # update packages and switch diff --git a/programs/vscode.nix b/programs/vscode.nix index a395367..41795ca 100644 --- a/programs/vscode.nix +++ b/programs/vscode.nix @@ -1,6 +1,15 @@ { config, pkgs, ... }: -{ +let + marketplaceExtensions = [ + "13xforever/language-x86-64-assembly" + "ban/spellright" + "dawhite/mustache" + "kirozen/wordcounter" + "pedrorgirardi/vscode-cljfmt" + "wmaurer/change-case" + ]; +in { programs.vscode = { enable = true; mutableExtensionsDir = false; @@ -13,6 +22,7 @@ esbenp.prettier-vscode haskell.haskell jdinhlife.gruvbox + jebbs.plantuml jnoortheen.nix-ide justusadam.language-haskell kamikillerto.vscode-colorize @@ -23,50 +33,9 @@ timonwong.shellcheck tyriar.sort-lines zhuangtongfa.material-theme - ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - publisher = "13xforever"; - name = "language-x86-64-assembly"; - version = "3.0.0"; - sha256 = "sha256-wIsY6Fuhs676EH8rSz4fTHemVhOe5Se9SY3Q9iAqr1M="; - } - { - publisher = "ban"; - name = "spellright"; - version = "3.0.90"; - sha256 = "sha256-yAHlwX2stqGuUu3Q+mVxsF1JKmTgy/kkT63VH3YlomM="; - } - { - publisher = "dawhite"; - name = "mustache"; - version = "1.1.1"; - sha256 = "sha256-PkymMex1icvDN2Df38EIuV1O9TkMNWP2sGOjl1+xGMk="; - } - { - publisher = "jebbs"; - name = "plantuml"; - version = "2.17.4"; - sha256 = "sha256-fnz6ubB73i7rJcv+paYyNV1r4cReuyFPjgPM0HO40ug"; - } - { - publisher = "kirozen"; - name = "wordcounter"; - version = "2.4.3"; - sha256 = "sha256-gkdMaMiDwQNjmrGfUK/c/bQUn1bovESRPJ+etz2yfJk="; - } - { - publisher = "pedrorgirardi"; - name = "vscode-cljfmt"; - version = "1.3.0"; - sha256 = "sha256-gZ8Fo7YXSapnQL6UbYUKJDg27wYqK2NG1lcJUae6dWs="; - } - { - publisher = "wmaurer"; - name = "change-case"; - version = "1.0.0"; - sha256 = "sha256-tN/jlG2PzuiCeERpgQvdqDoa3UgrUaM7fKHv6KFqujc="; - } - ]; + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace (builtins.filter + ({ publisher, name, ... }: builtins.elem (publisher + "/" + name) marketplaceExtensions) + (import ./vscode/extensions.nix).extensions); userSettings = { debug.console.fontSize = 13; diff --git a/programs/vscode/extensions.nix b/programs/vscode/extensions.nix new file mode 100644 index 0000000..5363f96 --- /dev/null +++ b/programs/vscode/extensions.nix @@ -0,0 +1,141 @@ +{ extensions = [ + { + name = "language-x86-64-assembly"; + publisher = "13xforever"; + version = "3.0.0"; + sha256 = "0lxg58hgdl4d96yjgrcy2dbacxsc3wz4navz23xaxcx1bgl1i2y0"; + } + { + name = "spellright"; + publisher = "ban"; + version = "3.0.90"; + sha256 = "0qx24mv1zmdd9wjgkjz0chm4jpdhf5jzml7daapa3dmcgp0ya0f8"; + } + { + name = "markdown-mermaid"; + publisher = "bierner"; + version = "1.15.2"; + sha256 = "0wq15fviv2zxn58xbgzwh8x958iy24q0963pbrci732hnyb9s9m8"; + } + { + name = "better-toml"; + publisher = "bungcip"; + version = "0.3.2"; + sha256 = "08lhzhrn6p0xwi0hcyp6lj9bvpfj87vr99klzsiy8ji7621dzql3"; + } + { + name = "vscode-markdownlint"; + publisher = "DavidAnson"; + version = "0.48.1"; + sha256 = "0npmvaw734r8pk17cz8vccxwxnbpk076ickndkd9gymcyqd5jfnx"; + } + { + name = "mustache"; + publisher = "dawhite"; + version = "1.1.1"; + sha256 = "1j8qn5grg8v3n3v66d8c77slwpdr130xzpv06z1wp2bmxhqsck1y"; + } + { + name = "prettier-vscode"; + publisher = "esbenp"; + version = "9.9.0"; + sha256 = "1zba2k51ylpzz47r74kdr2adp669xw19a866gw0wndcigkhcrgk2"; + } + { + name = "haskell"; + publisher = "haskell"; + version = "2.2.1"; + sha256 = "14p9g07zsb3da4ilaasgsdvh3wagfzayqr8ichsf6k5c952zi8fk"; + } + { + name = "gruvbox"; + publisher = "jdinhlife"; + version = "1.8.0"; + sha256 = "0bixrlhimy0qw94cy354fn0gcsb8s1y4m4yf1gkncaawqinmp09z"; + } + { + name = "plantuml"; + publisher = "jebbs"; + version = "2.17.4"; + sha256 = "1s6jp1rx1k03ir7j3fsyqkhnnp9m6akabznb4pmjxpkvn2wzlz3y"; + } + { + name = "nix-ide"; + publisher = "jnoortheen"; + version = "0.1.23"; + sha256 = "0i5zqfz2ic57z9b4v6mrs68dzhvgpnr5984srjapi0nzm30k127b"; + } + { + name = "language-haskell"; + publisher = "justusadam"; + version = "3.6.0"; + sha256 = "115y86w6n2bi33g1xh6ipz92jz5797d3d00mr4k8dv5fz76d35dd"; + } + { + name = "vscode-colorize"; + publisher = "kamikillerto"; + version = "0.11.1"; + sha256 = "1h82b1jz86k2qznprng5066afinkrd7j3738a56idqr3vvvqnbsm"; + } + { + name = "wordcounter"; + publisher = "kirozen"; + version = "2.4.3"; + sha256 = "16bwn8yvg7lz7j8l9g78asgi9d7xvjpm17xik9ih7hc3r1l4qiw2"; + } + { + name = "git-graph"; + publisher = "mhutchie"; + version = "1.30.0"; + sha256 = "000zhgzijf3h6abhv4p3cz99ykj6489wfn81j0s691prr8q9lxxh"; + } + { + name = "vscode-cljfmt"; + publisher = "pedrorgirardi"; + version = "1.3.0"; + sha256 = "0svmpakm22apsr366ara0vpkcf141a2nv55y81kslj8pnsihb7w1"; + } + { + name = "rust-analyzer"; + publisher = "rust-lang"; + version = "0.4.1226"; + sha256 = "0q1pm6xybpbpx5516vy6mnjjpx77sm3cahmip3cf10b63xrfpd5j"; + } + { + name = "just"; + publisher = "skellock"; + version = "2.0.0"; + sha256 = "1ph869zl757a11f8iq643f79h8gry7650a9i03mlxyxlqmspzshl"; + } + { + name = "code-spell-checker"; + publisher = "streetsidesoftware"; + version = "2.10.0"; + sha256 = "1hn2v1q54wnx2lwngd5azdycm47ifi8wsina5ikxfp7v5gl940xx"; + } + { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.23.0"; + sha256 = "190xi23kad95bbh8cwk5asnncfdaqi9574hv87ja5lpy53my1v8d"; + } + { + name = "sort-lines"; + publisher = "Tyriar"; + version = "1.9.1"; + sha256 = "0dds99j6awdxb0ipm15g543a5b6f0hr00q9rz961n0zkyawgdlcb"; + } + { + name = "change-case"; + publisher = "wmaurer"; + version = "1.0.0"; + sha256 = "0dxsdahyivx1ghxs6l9b93filfm8vl5q2sa4g21fiklgdnaf7pxl"; + } + { + name = "material-theme"; + publisher = "zhuangtongfa"; + version = "3.15.5"; + sha256 = "0crrzpdy8fy4l1nim93qscmlpz2jhyb6hf0gh1rzqgfnk9w431xi"; + } +]; +} \ No newline at end of file