From 45e09b810a36b693c7b1aa3cbeacaa86bcbfd7d4 Mon Sep 17 00:00:00 2001 From: Andrei Jiroh Halili Date: Tue, 31 Dec 2024 13:24:09 +0800 Subject: [PATCH] Update nix files and stuff --- .config/home-manager/home.nix | 17 + .config/home-manager/meta.nix | 193 +++++++++++ .config/nixos/shared/vscode-extensions.nix | 376 ++++++++++++++++++++- .nix4vscode.toml | 192 ++++++++++- README.md | 20 +- bin/nix4vscode-config-builder | 15 + bin/nix4vscode-generator | 12 + 7 files changed, 813 insertions(+), 12 deletions(-) create mode 100644 .config/home-manager/home.nix create mode 100644 .config/home-manager/meta.nix create mode 100755 bin/nix4vscode-config-builder create mode 100755 bin/nix4vscode-generator diff --git a/.config/home-manager/home.nix b/.config/home-manager/home.nix new file mode 100644 index 0000000..51d237e --- /dev/null +++ b/.config/home-manager/home.nix @@ -0,0 +1,17 @@ +{ config, ... }: + +{ + imports = [ + ./meta.nix + ]; + + # Home Manager needs a bit of information about you and the paths it should + # manage. Also don't ask how we got here on the roleplaying part on the main + # nixpkgs branch of the dotfiles. + # TODO: Update the username and homeDirectory when switching between host-specific + # branches. + home = { + username = "gildedguy"; + homeDirectory = "/home/gildedguy"; + }; +} \ No newline at end of file diff --git a/.config/home-manager/meta.nix b/.config/home-manager/meta.nix new file mode 100644 index 0000000..9f07534 --- /dev/null +++ b/.config/home-manager/meta.nix @@ -0,0 +1,193 @@ +# This is the meta configuration for my dotfiles with home-manager, except +# some home.{username,userDirectory} configs to ensure portability between +# hosts + +{ config, pkgs, lib, ... }: + +{ + # https://fnordig.de/til/nix/home-manager-allow-unfree.html + nixpkgs = { + config = { + allowUnfree = true; + # https://github.com/nix-community/home-manager/issues/2942 + allowUnfreePredicate = (_: true); + }; + }; + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "24.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = with pkgs; [ + # # Adds the 'hello' command to your environment. It prints a friendly + # # "Hello, world!" when run. + # pkgs.hello + + # # It is sometimes useful to fine-tune packages, for example, by applying + # # overrides. You can do that directly here, just don't forget the + # # parentheses. Maybe you want to install Nerd Fonts with a limited number of + # # fonts? + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) + + # # You can also create simple shell scripts directly inside your + # # configuration. For example, this adds a command 'my-hello' to your + # # environment: + # (pkgs.writeShellScriptBin "my-hello" '' + # echo "Hello, ${config.home.username}!" + # '') + + ## devtools ## + # https://httpie.io + httpie + # https://devenv.sh + devenv + # https://cli.github.com + gh + # bet we'll going to have a field day since Copilot is now available for free + # (this is seperate from the gh copilot extension for those asking) + # context: https://github.blog/news-insights/product-news/github-copilot-in-vscode-free/ + github-copilot-cli + # markdownlint + markdownlint-cli + # https://doppler.com + doppler + direnv + shellcheck + hadolint + + ## programming languages + deno + nodejs_22 + python313 + pipx + pipenv + + ## language servers ## + # nix language server - https://github.com/oxalica/nil + nil + # https://github.com/alesbrelih/gitlab-ci-ls + gitlab-ci-ls + ]; + + home.sessionPath = [ + "${config.home.homeDirectory}/bin" + ]; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # Home Manager can also manage your environment variables through + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/gildedguy/etc/profile.d/hm-session-vars.sh + # + home.sessionVariables = { + EDITOR = "nano"; + NIXOS_ALLOW_UNFREE = "1"; # for impure builds + GIT_EDITOR = "code --wait"; + VISUAL = "code --wait"; + DOCKER_BUILDKIT = "1"; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + + # let me cook with the configs, starting with git + programs.git = { + enable = true; + package = pkgs.gitAndTools.gitFull; + lfs = { + enable = true; + }; + userName = "Andrei Jiroh Halili"; + userEmail = "ajhalili2006@andreijiroh.dev"; + aliases = { + signoff = "commit --signoff"; + amend = "commit -a --amend"; + remotes = "remote -v"; + root = "rev-parse --show-toplevel"; + unstage = "restore --staged"; + stats = "status"; + }; + extraConfig = { + format = { + signOff = true; + }; + init = { + defaultBranch = "main"; + }; + + # https://groups.google.com/g/binary-transparency/c/f-BI4o8HZW0 + transfer = { + fsckobjects = true; + }; + fetch = { + fsckobjects = true; + }; + receive = { + fsckobjects = true; + }; + push = { + autoSetupRemote = true; + }; + + + }; + }; + + programs.vscode = { + enable = true; + package = pkgs.vscode; + enableExtensionUpdateCheck = true; + mutableExtensionsDir = true; + # userSettings = { + # "nix.enableLanguageServer" = true; + # "nix.serverPath" = "nil"; + # "window.customTitleBarVisibility" = "auto"; + # "window.titleBarStyle" = "custom"; + # "window.menuBarVisibility" = "classic"; + # "redhat.telemetry.enabled" = true; + # "github.copilot.editor.enableAutoCompletions" = false; + # "github.copilot.chat.followUps" = "always"; + # "github.copilot.chat.terminalChatLocation" = "terminal"; + # "git.confirmSync" = false; + # "microsoft-authentication.implementation" = "msal"; + # "workbench.colorTheme" = "GitHub Dark Colorblind (Beta)"; + # "workbench.iconTheme" = "material-icon-theme"; + # "workbench.productIconTheme" = "material-product-icons"; + # }; + # We're importing what's generated from nix4vscode here as a workaround + # for now. + #extensions = lib.attrsets.mapAttrsToList (_: v: v) vscExts; + }; +} diff --git a/.config/nixos/shared/vscode-extensions.nix b/.config/nixos/shared/vscode-extensions.nix index c9ed167..91212ac 100644 --- a/.config/nixos/shared/vscode-extensions.nix +++ b/.config/nixos/shared/vscode-extensions.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ pkgs, lib }: let inherit (pkgs.stdenv) isDarwin isLinux isi686 isx86_64 isAarch32 isAarch64; @@ -10,6 +10,30 @@ merge (merge (merge { + "ms-python"."vscode-pylance" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-pylance"; + publisher = "ms-python"; + version = "2024.12.100"; + sha256 = "167cj9r476whfjg474s4nf7zi8v7cj58vrqiw86y4vcgl57v4h50"; + }; + "esbenp"."prettier-vscode" = vscode-utils.extensionFromVscodeMarketplace { + name = "prettier-vscode"; + publisher = "esbenp"; + version = "11.0.0"; + sha256 = "1fcz8f4jgnf24kblf8m8nwgzd5pxs2gmrv235cpdgmqz38kf9n54"; + }; + "ms-azuretools"."vscode-docker" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-docker"; + publisher = "ms-azuretools"; + version = "1.29.3"; + sha256 = "1j35yr8f0bqzv6qryw0krbfigfna94b519gnfy46sr1licb6li6g"; + }; + "dbaeumer"."vscode-eslint" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-eslint"; + publisher = "dbaeumer"; + version = "3.0.13"; + sha256 = "0yjrylvkw5q9w7kjigndm5m66qn8nranrm0m7qna8ggi0f2nz5cp"; + }; "eamodio"."gitlens" = vscode-utils.extensionFromVscodeMarketplace { name = "gitlens"; publisher = "eamodio"; @@ -22,30 +46,210 @@ merge version = "5.16.0"; sha256 = "0ggwj2y84dyqhzl9kisddx64559bkhnfv94zxz6zcqyfq0vpycng"; }; + "github"."vscode-pull-request-github" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-pull-request-github"; + publisher = "github"; + version = "0.103.2024121117"; + sha256 = "0k90870ra85np0dg19mx2blr1yg9i2sk25mx08bblqh0hh0s5941"; + }; + "github"."copilot" = vscode-utils.extensionFromVscodeMarketplace { + name = "copilot"; + publisher = "github"; + version = "1.254.1278"; + sha256 = "0n55apya8q87l4ijfvj3qqwg6sij1k9is99zc2wffgmghqb9fv7l"; + }; "wakatime"."vscode-wakatime" = vscode-utils.extensionFromVscodeMarketplace { name = "vscode-wakatime"; publisher = "wakatime"; version = "25.0.0"; sha256 = "1c5ilsj8zvcrhvh3gb9wbgz8llfkjgxnv39r12a3iyy3fvdg5zlz"; }; + "github"."copilot-chat" = vscode-utils.extensionFromVscodeMarketplace { + name = "copilot-chat"; + publisher = "github"; + version = "0.24.2024121201"; + sha256 = "14cs1ncbv0fib65m1iv6njl892p09fmamjkfyxrsjqgks2hisz5z"; + }; + "xabikos"."javascriptsnippets" = vscode-utils.extensionFromVscodeMarketplace { + name = "javascriptsnippets"; + publisher = "xabikos"; + version = "1.8.0"; + sha256 = "19xg24alxsvq8pvafprshg7qxzx8p37bzk7qz6kjgkpvandrdpl6"; + }; "github"."github-vscode-theme" = vscode-utils.extensionFromVscodeMarketplace { name = "github-vscode-theme"; publisher = "github"; version = "6.3.5"; sha256 = "0jj7bp5iadrm2h75pdn96z0wzygv0sfa93karvlqlwagh2hrvrkl"; }; + "golang"."go" = vscode-utils.extensionFromVscodeMarketplace { + name = "go"; + publisher = "golang"; + version = "0.45.0"; + sha256 = "1ihy5pd5ymxarcgnq8ky7nfa9kk9x3hdazajirrh5f1m4cwgizn3"; + }; + "donjayamanne"."githistory" = vscode-utils.extensionFromVscodeMarketplace { + name = "githistory"; + publisher = "donjayamanne"; + version = "0.6.20"; + sha256 = "0x9q7sh5l1frpvfss32ypxk03d73v9npnqxif4fjwcfwvx5mhiww"; + }; + "streetsidesoftware"."code-spell-checker" = vscode-utils.extensionFromVscodeMarketplace { + name = "code-spell-checker"; + publisher = "streetsidesoftware"; + version = "4.0.29"; + sha256 = "1vx7qs66vbkshig029qgxmcx1shg5hkjkj7bd693hzfhz8702krs"; + }; + "editorconfig"."editorconfig" = vscode-utils.extensionFromVscodeMarketplace { + name = "editorconfig"; + publisher = "editorconfig"; + version = "0.16.4"; + sha256 = "0fa4h9hk1xq6j3zfxvf483sbb4bd17fjl5cdm3rll7z9kaigdqwg"; + }; + "bradlc"."vscode-tailwindcss" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-tailwindcss"; + publisher = "bradlc"; + version = "0.13.64"; + sha256 = "14962pavlbdmqki6m7y7k9nvz1pcicrn3dw10lrcq8vxbj2bc416"; + }; + "davidanson"."vscode-markdownlint" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-markdownlint"; + publisher = "davidanson"; + version = "0.57.0"; + sha256 = "1gsc3xsvy4qbz75frk6jjf2f95b0frmbclhgxi1j49zbh16y2b76"; + }; + "mikestead"."dotenv" = vscode-utils.extensionFromVscodeMarketplace { + name = "dotenv"; + publisher = "mikestead"; + version = "1.0.1"; + sha256 = "0rs57csczwx6wrs99c442qpf6vllv2fby37f3a9rhwc8sg6849vn"; + }; + "github"."codespaces" = vscode-utils.extensionFromVscodeMarketplace { + name = "codespaces"; + publisher = "github"; + version = "1.17.3"; + sha256 = "1g4b7gd24cifmh62v1dj1b79yp5z6jbffmwh2nlymjbqf9h4bll9"; + }; + "mtxr"."sqltools" = vscode-utils.extensionFromVscodeMarketplace { + name = "sqltools"; + publisher = "mtxr"; + version = "0.28.3"; + sha256 = "0zs8gdfar6g7j1mybdrpx7rmydlb1smqicw9438hrfzw301cffkd"; + }; + "codezombiech"."gitignore" = vscode-utils.extensionFromVscodeMarketplace { + name = "gitignore"; + publisher = "codezombiech"; + version = "0.9.0"; + sha256 = "0ww0x28m83fv5zdqkmz108rsxb60fyy5y0ksknb2xchirzwhayi0"; + }; + "github"."remotehub" = vscode-utils.extensionFromVscodeMarketplace { + name = "remotehub"; + publisher = "github"; + version = "0.65.2024112101"; + sha256 = "0mbw1nzvf8ch55vq0lsf0qpfl1dgyk5y80pca81j9dplyz4vrgax"; + }; + "ms-vscode"."remote-repositories" = vscode-utils.extensionFromVscodeMarketplace { + name = "remote-repositories"; + publisher = "ms-vscode"; + version = "0.43.2024112101"; + sha256 = "1mss2fkpx21dm5rlnbhqw7japxz4k22grrv66ja34fl9fbqli9zw"; + }; + "github"."vscode-github-actions" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-github-actions"; + publisher = "github"; + version = "0.27.0"; + sha256 = "0sk8cgnk4pyjxwfi3hr3qrajffvdncvq3xbjn73g3jz0ygakg7xi"; + }; + "ms-vscode"."azure-repos" = vscode-utils.extensionFromVscodeMarketplace { + name = "azure-repos"; + publisher = "ms-vscode"; + version = "0.41.2024112101"; + sha256 = "1dgyr1zmrl1aihlsfn0grrysmzf4g47m968zdn7fyc17hl857r59"; + }; + "orta"."vscode-jest" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-jest"; + publisher = "orta"; + version = "6.4.0"; + sha256 = "0asjg2ycq20qg2zyxybnmas2br08mjwhsw03y0qz24g8rkn9a7s4"; + }; + "tamasfe"."even-better-toml" = vscode-utils.extensionFromVscodeMarketplace { + name = "even-better-toml"; + publisher = "tamasfe"; + version = "0.21.2"; + sha256 = "0208cms054yj2l8pz9jrv3ydydmb47wr4i0sw8qywpi8yimddf11"; + }; + "bierner"."markdown-mermaid" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-mermaid"; + publisher = "bierner"; + version = "1.27.0"; + sha256 = "1c9nvi2r3frbyi2ygff2zh3ylvr4df585mb6b5r8n6g5aa9kzp6k"; + }; + "prisma"."prisma" = vscode-utils.extensionFromVscodeMarketplace { + name = "prisma"; + publisher = "prisma"; + version = "6.1.0"; + sha256 = "1m4i60hm62m1bl6nn4pk0l54ph7zf0c3ppvx4qc4bwpqv82k7xv1"; + }; + "bierner"."markdown-preview-github-styles" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-preview-github-styles"; + publisher = "bierner"; + version = "2.1.0"; + sha256 = "1fn9gdf3xj1drch4djn6c9lg94i2r9yjpfrf1a0y4v8q2zjk8sz8"; + }; + "gitlab"."gitlab-workflow" = vscode-utils.extensionFromVscodeMarketplace { + name = "gitlab-workflow"; + publisher = "gitlab"; + version = "5.26.0"; + sha256 = "1xb8a834bgblc4zcrdc9v3by3wv3fls3bz3bm7rxaqyvszlpb42d"; + }; + "bierner"."markdown-emoji" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-emoji"; + publisher = "bierner"; + version = "0.3.1"; + sha256 = "0409sks7zz0lp1a0x6nxsh11yfnnb36s802q6dwfwjnblp049xw1"; + }; "denoland"."vscode-deno" = vscode-utils.extensionFromVscodeMarketplace { name = "vscode-deno"; publisher = "denoland"; version = "3.43.1"; sha256 = "0lna1znrbsdggzp6mx079461p21ngwgqz6mb7i3d0bnpxb844x3a"; }; + "bierner"."markdown-checkbox" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-checkbox"; + publisher = "bierner"; + version = "0.4.0"; + sha256 = "0jbfi0av84ixwhcpysh9gyrsfxpy65igiidrdarn7vgsvxsdr0q2"; + }; "unifiedjs"."vscode-mdx" = vscode-utils.extensionFromVscodeMarketplace { name = "vscode-mdx"; publisher = "unifiedjs"; version = "1.8.12"; sha256 = "0afzx5i6bw7hmm4f8vdvx6a6mx053gmvc0gn78fz94b6fyaijsl7"; }; + "bierner"."emojisense" = vscode-utils.extensionFromVscodeMarketplace { + name = "emojisense"; + publisher = "bierner"; + version = "0.10.0"; + sha256 = "14rb8licb32rh04g7lq73lmfx4pk2p4x63427l3s9fw9idsiwgrw"; + }; + "bierner"."markdown-yaml-preamble" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-yaml-preamble"; + publisher = "bierner"; + version = "0.1.0"; + sha256 = "1xlb6dvrsy2sp92lax1nq01xcrax1nm256ns9b4vvkq7p4njpqp5"; + }; + "bierner"."markdown-footnotes" = vscode-utils.extensionFromVscodeMarketplace { + name = "markdown-footnotes"; + publisher = "bierner"; + version = "0.1.1"; + sha256 = "1pp64x8cn4vmpscmzv2dg6bakjhnwd36rms2wl6bs5laq29k5wl7"; + }; + "bierner"."github-markdown-preview" = vscode-utils.extensionFromVscodeMarketplace { + name = "github-markdown-preview"; + publisher = "bierner"; + version = "0.3.0"; + sha256 = "124vsg5jxa90j3mssxi18nb3wn6fji6b0mnnkasa89rgx3jfb5pf"; + }; "pkief"."material-product-icons" = vscode-utils.extensionFromVscodeMarketplace { name = "material-product-icons"; publisher = "pkief"; @@ -58,20 +262,182 @@ merge version = "1.26.0"; sha256 = "1n414wwd6my4xjmh55b6l0s8bqadnq35ya1isxvdi6yabapbwg9f"; }; + "coolbear"."systemd-unit-file" = vscode-utils.extensionFromVscodeMarketplace { + name = "systemd-unit-file"; + publisher = "coolbear"; + version = "1.0.6"; + sha256 = "0sc0zsdnxi4wfdlmaqwb6k2qc21dgwx6ipvri36x7agk7m8m4736"; + }; + "ms-vscode"."wordcount" = vscode-utils.extensionFromVscodeMarketplace { + name = "wordcount"; + publisher = "ms-vscode"; + version = "0.1.0"; + sha256 = "164s721bqbw2lh770vli9vij8q79033nd5k1acxwadmlf99hmgj1"; + }; + "ms-vscode"."vscode-github-issue-notebooks" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-github-issue-notebooks"; + publisher = "ms-vscode"; + version = "0.0.130"; + sha256 = "0g82z1qpj1abfykflk0yq0j40mqwfkxk7sx0ms9q7wa2yblwj1fk"; + }; + "exiasr"."hadolint" = vscode-utils.extensionFromVscodeMarketplace { + name = "hadolint"; + publisher = "exiasr"; + version = "1.1.2"; + sha256 = "00x6bnjm0yk0fcw91c47g8c5shgbcvxyyz49r4y23q4gqizvaqz8"; + }; + "drknoxy"."eslint-disable-snippets" = vscode-utils.extensionFromVscodeMarketplace { + name = "eslint-disable-snippets"; + publisher = "drknoxy"; + version = "1.4.1"; + sha256 = "1djjknfg81cjbn4bcalc7gg9fha5lzwmpmmrzm68n87qvld58hs4"; + }; + "leighlondon"."eml" = vscode-utils.extensionFromVscodeMarketplace { + name = "eml"; + publisher = "leighlondon"; + version = "0.4.0"; + sha256 = "180gis04nisccr9l4ibks5fn2gp327b9bmwjiap81lir859kkrzv"; + }; "jnoortheen"."nix-ide" = vscode-utils.extensionFromVscodeMarketplace { name = "nix-ide"; publisher = "jnoortheen"; version = "0.3.5"; sha256 = "12sg67mn3c8mjayh9d6y8qaky00vrlnwwx58v1f1m4qrbdjqab46"; }; + "matthewpi"."caddyfile-support" = vscode-utils.extensionFromVscodeMarketplace { + name = "caddyfile-support"; + publisher = "matthewpi"; + version = "0.4.0"; + sha256 = "1fjhirybvb92frqj1ssh49a73q497ny69z9drdjlkpaccpbvb0r7"; + }; + "ultram4rine"."vscode-choosealicense" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-choosealicense"; + publisher = "ultram4rine"; + version = "0.9.4"; + sha256 = "1hs8sjbq9rvs8wkaxx9nh9swbdca9rfkamf2mcvp3gyw7d5park2"; + }; + "tailscale"."vscode-tailscale" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-tailscale"; + publisher = "tailscale"; + version = "1.0.0"; + sha256 = "0j41xbz6zangq7i4mj4xgdpsswss3jnznyd9v3943yvfhmkq5a1h"; + }; + "wdhongtw"."gpg-indicator" = vscode-utils.extensionFromVscodeMarketplace { + name = "gpg-indicator"; + publisher = "wdhongtw"; + version = "0.7.2"; + sha256 = "0sfn2lvj2a7kwkbjpswbl9hwhpcv053gnxny5x5rhsqcsq2nx8yk"; + }; + "r3inbowari"."gomodexplorer" = vscode-utils.extensionFromVscodeMarketplace { + name = "gomodexplorer"; + publisher = "r3inbowari"; + version = "0.3.18"; + sha256 = "1k0assbxwakbsxfp5d2kcq1pfg3rzdmzc96d7qgrhrp9lx22n8p9"; + }; "doppler"."doppler-vscode" = vscode-utils.extensionFromVscodeMarketplace { name = "doppler-vscode"; publisher = "doppler"; version = "0.0.10"; sha256 = "1cqaxnf45in44i4za36diirgh1q5rkmk27is9h6zgnmgl2i9awa7"; }; + "yahyabatulu"."vscode-markdown-alert" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-markdown-alert"; + publisher = "yahyabatulu"; + version = "0.0.4"; + sha256 = "1b4ngq3hn362ngdybjazr0x73whr7p5sbxms80s8mdd7yhq949kl"; + }; + "martellaj"."license-injector" = vscode-utils.extensionFromVscodeMarketplace { + name = "license-injector"; + publisher = "martellaj"; + version = "0.0.2"; + sha256 = "09d9bbd5drp3krla2q37dp4rrz4mb20mnsrkjpb00n1mvf7q1fps"; + }; + "codiium"."wrangler" = vscode-utils.extensionFromVscodeMarketplace { + name = "wrangler"; + publisher = "codiium"; + version = "0.0.1"; + sha256 = "1g2wx6ln2kym2daqgc3nxw995rb1c1n7j3gqj0vfbk520qp4vhfx"; + }; + "joel-harkes"."emlviewer" = vscode-utils.extensionFromVscodeMarketplace { + name = "emlviewer"; + publisher = "joel-harkes"; + version = "0.0.4"; + sha256 = "08rh5j50jkhcywkngf493cdim15f6vbj08av6m1cvp0v3ha21vdq"; + }; + "aikebang"."mkdocs-syntax-highlight" = vscode-utils.extensionFromVscodeMarketplace { + name = "mkdocs-syntax-highlight"; + publisher = "aikebang"; + version = "0.2.1"; + sha256 = "1gpcjdcf9yr263cql14wwyw2f5fsq06i2bsr8nja0izyw76g8wvm"; + }; + "devfile"."vscode-devfile" = vscode-utils.extensionFromVscodeMarketplace { + name = "vscode-devfile"; + publisher = "devfile"; + version = "0.0.2"; + sha256 = "156vq1gr7x94nrjlgv1a5qz0r8k5vh9y9hz1f0jaxcjcynjp4ijs"; + }; } - (lib.attrsets.optionalAttrs (isLinux && (isi686 || isx86_64)) { })) - (lib.attrsets.optionalAttrs (isLinux && (isAarch32 || isAarch64)) { })) - (lib.attrsets.optionalAttrs (isDarwin && (isi686 || isx86_64)) { })) - (lib.attrsets.optionalAttrs (isDarwin && (isAarch32 || isAarch64)) { }) + (lib.attrsets.optionalAttrs (isLinux && (isi686 || isx86_64)) { + "ms-python"."python" = vscode-utils.extensionFromVscodeMarketplace { + name = "python"; + publisher = "ms-python"; + version = "2024.23.2024121901"; + sha256 = "01wfhbaq9v2wvnndh6dphq1f6c04dg0yx9p7637v9bl124zm0qw7"; + arch = "linux-x64"; + }; + "timonwong"."shellcheck" = vscode-utils.extensionFromVscodeMarketplace { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.37.1"; + sha256 = "13gdyiafqla7dra17q842d8a7vrgmf0im4z6qm6xzgim71qzcqhy"; + arch = "linux-x64"; + }; + })) + (lib.attrsets.optionalAttrs (isLinux && (isAarch32 || isAarch64)) { + "ms-python"."python" = vscode-utils.extensionFromVscodeMarketplace { + name = "python"; + publisher = "ms-python"; + version = "2024.23.2024121901"; + sha256 = "1qs14aca323yqc93rrnwvp7v40k9z2500lj9pkh5sa2pfm9cl68x"; + arch = "linux-arm64"; + }; + "timonwong"."shellcheck" = vscode-utils.extensionFromVscodeMarketplace { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.37.1"; + sha256 = "1xp4qyrs8rcaba94nm26da0lf0qjbchp218jm4iyczg5dpgvp6hk"; + arch = "linux-arm64"; + }; + })) + (lib.attrsets.optionalAttrs (isDarwin && (isi686 || isx86_64)) { + "ms-python"."python" = vscode-utils.extensionFromVscodeMarketplace { + name = "python"; + publisher = "ms-python"; + version = "2024.23.2024121901"; + sha256 = "0jh7rkh5j2l8irb2d43hy9n5kw59czyijsiq5f9641rfl6yvakzh"; + arch = "darwin-x64"; + }; + "timonwong"."shellcheck" = vscode-utils.extensionFromVscodeMarketplace { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.37.1"; + sha256 = "0jvi9pzw80ga47p9zy92wy43prci5dj8lfa5syxl5cvchd3848v1"; + arch = "darwin-x64"; + }; + })) + (lib.attrsets.optionalAttrs (isDarwin && (isAarch32 || isAarch64)) { + "ms-python"."python" = vscode-utils.extensionFromVscodeMarketplace { + name = "python"; + publisher = "ms-python"; + version = "2024.23.2024121901"; + sha256 = "1d0w7ih58bg1smmjp3i798qbf08maqa3m263ygvllyawy3kl03qr"; + arch = "darwin-arm64"; + }; + "timonwong"."shellcheck" = vscode-utils.extensionFromVscodeMarketplace { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.37.1"; + sha256 = "0l72fmphy7v86jdlbk4xclaxm6g2mc2cd3jcydwrnwyfagh2n9di"; + arch = "darwin-arm64"; + }; + }) diff --git a/.nix4vscode.toml b/.nix4vscode.toml index 0cca6a1..8699dcf 100644 --- a/.nix4vscode.toml +++ b/.nix4vscode.toml @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 -# To use thhis configuration, you must have nix4vscode installed, either -# via "cargo build" or good old "nix develop" from a local clone of the -# tooling's sources. +# To use thhis configuration, you must have nix4vscode installed, either via "cargo build" +# or good old "nix develop" from a local clone of the tooling's sources. This is currently +# manually managed to be in sync with code --list-extensions while Settings Sync is enabled. # TODO: Bump this on every VS Code release here. vscode_version = "1.96.0" @@ -30,6 +30,103 @@ extension_name = "gitlens" [[extensions]] publisher_name = "vivaxy" extension_name = "vscode-conventional-commits" +[[extensions]] +publisher_name = "gitlab" +extension_name = "gitlab-workflow" +[[extensions]] +publisher_name = "exiasr" +extension_name = "hadolint" +[[extensions]] +publisher_name = "editorconfig" +extension_name = "editorconfig" +[[extensions]] +publisher_name = "donjayamanne" +extension_name = "githistory" +[[extensions]] +publisher_name = "devfile" +extension_name = "vscode-devfile" +[[extensions]] +publisher_name = "tailscale" +extension_name = "vscode-tailscale" +[[extensions]] +publisher_name = "timonwong" +extension_name = "shellcheck" + +# github +[[extensions]] +publisher_name = "github" +extension_name = "copilot" +[[extensions]] +publisher_name = "github" +extension_name = "vscode-github-actions" +[[extensions]] +publisher_name = "github" +extension_name = "remotehub" +[[extensions]] +publisher_name = "github" +extension_name = "copilot-chat" +[[extensions]] +publisher_name = "github" +extension_name = "codespaces" +[[extensions]] +publisher_name = "github" +extension_name = "vscode-pull-request-github" + +# markdown +[[extensions]] +publisher_name = "aikebang" +extension_name = "mkdocs-syntax-highlight" +[[extensions]] +publisher_name = "bierner" +extension_name = "emojisense" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-checkbox" +[[extensions]] +publisher_name = "bierner" +extension_name = "github-markdown-preview" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-emoji" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-footnotes" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-mermaid" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-preview-github-styles" +[[extensions]] +publisher_name = "bierner" +extension_name = "markdown-yaml-preamble" + +# microsoft +[[extensions]] +publisher_name = "ms-azuretools" +extension_name = "vscode-docker" +# temporarily commented out per https://github.com/nix-community/nix4vscode/issues/135 +#[[extensions]] +#publisher_name = "ms-python" +#extension_name = "debugpy" +[[extensions]] +publisher_name = "ms-python" +extension_name = "python" +[[extensions]] +publisher_name = "ms-python" +extension_name = "vscode-pylance" +[[extensions]] +publisher_name = "ms-vscode" +extension_name = "azure-repos" +[[extensions]] +publisher_name = "ms-vscode" +extension_name = "remote-repositories" +[[extensions]] +publisher_name = "ms-vscode" +extension_name = "vscode-github-issue-notebooks" +[[extensions]] +publisher_name = "ms-vscode" +extension_name = "wordcount" # programming languages + IntelliSense [[extensions]] @@ -43,4 +140,91 @@ publisher_name = "redhat" extension_name = "vscode-yaml" [[extensions]] publisher_name = "unifiedjs" -extension_name = "vscode-mdx" \ No newline at end of file +extension_name = "vscode-mdx" +[[extensions]] +publisher_name = "davidanson" +extension_name = "vscode-markdownlint" +[[extensions]] +publisher_name = "golang" +extension_name = "go" +[[extensions]] +publisher_name = "mikestead" +extension_name = "dotenv" +[[extensions]] +publisher_name = "joel-harkes" +extension_name = "emlviewer" +[[extensions]] +publisher_name = "leighlondon" +extension_name = "eml" +[[extensions]] +publisher_name = "matthewpi" +extension_name = "caddyfile-support" +[[extensions]] +publisher_name = "bradlc" +extension_name = "vscode-tailwindcss" +[[extensions]] +publisher_name = "christan-kohler" +extension_name = "npm-intellisense" +[[extensions]] +publisher_name = "codezombiech" +extension_name = "gitignore" +[[extensions]] +publisher_name = "codiium" +extension_name = "wrangler" +[[extensions]] +publisher_name = "coolbear" +extension_name = "systemd-unit-file" +[[extensions]] +publisher_name = "dbaeumer" +extension_name = "vscode-eslint" +[[extensions]] +publisher_name = "drknoxy" +extension_name = "eslint-disable-snippets" +[[extensions]] +publisher_name = "esbenp" +extension_name = "prettier-vscode" +[[extensions]] +publisher_name = "martellaj" +extension_name = "license-injector" +[[extensions]] +publisher_name = "mtxr" +extension_name = "sqltools" +[[extensions]] +publisher_name = "mtxr" +extension_name = "sqltools-mysql" +[[extensions]] +publisher_name = "mtxr" +extension_name = "sqltools-pg" +[[extensions]] +publisher_name = "mtxr" +extension_name = "sqltools-sqlite" +[[extensions]] +publisher_name = "orta" +extension_name = "vscode-jest" +[[extensions]] +publisher_name = "prisma" +extension_name = "prisma" +[[extensions]] +publisher_name = "r3inbowari" +extension_name = "gomodexplorer" +[[extensions]] +publisher_name = "socheatsok78" +extension_name = "dotenv-vscode-stripped" +[[extensions]] +publisher_name = "streetsidesoftware" +extension_name = "code-spell-checker" +[[extensions]] +publisher_name = "tamasfe" +extension_name = "even-better-toml" +[[extensions]] +publisher_name = "ultram4rine" +extension_name = "vscode-choosealicense" +[[extensions]] +publisher_name = "wdhongtw" +extension_name = "gpg-indicator" +[[extensions]] +publisher_name = "xabikos" +extension_name = "javascriptsnippets" +[[extensions]] +publisher_name = "yahyabatulu" +extension_name = "vscode-markdown-alert" diff --git a/README.md b/README.md index bf50c88..dd98cb0 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,29 @@ # `@andreijiroh-dev/dotfiles@nixos` - @ajhalili2006's dotfiles under nixos + nixpkgs! -Yup, I'm starting a fresh for my dotfiles, now with [nixpkgs](https://nixos.org) -and [home-manager]() +Yup, I'm starting a fresh for my dotfiles for 2025 and beyond, now with +[nixpkgs](https://nixos.org) and [home-manager](https://nix-community.github.io/home-manager). +(Don't worry, I'll be maintaining the yadm-era setup for non-Nix setups seperately) ## Usage ### Using my Nixpkgs config +Make sure Git is installed in your NixOS/nixpkgs setup (via `/etc/nixos/configuration.nix` or +the usual `nix-env -iA nixpkgs.gitFull` or `nix profile install nixpkgs#gitFull` if using +Flakes) for the setup to work. + +```bash +cd ~ +git init +git remote add origin https://mau.dev/andreijiroh-dev/dotfiles +# TODO: add the rest +``` + ## Directory + File Map ### Essientials -* [`.config/nixos`](./.config/nixos/) - my NixOS configuration as a flake, including system tools +* [`.config/nixos`](./.config/nixos/) - my NixOS configuration as a flake, including system tools, +usually in sync * [`.config/home-manager`](./.config/home-manager/) - Home-manager configs, mostly CLI and desktop apps go here +* [`bin`](./bin) - Shell scripts! (because Nix looks like Haskell to me) diff --git a/bin/nix4vscode-config-builder b/bin/nix4vscode-config-builder new file mode 100755 index 0000000..7a8bd45 --- /dev/null +++ b/bin/nix4vscode-config-builder @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# Output the VSCode version +echo 'vscode_version = "'$(code --version | head -n1)'"' +echo + +# Loop through each installed extension +code --list-extensions | while read extension; do + publisher_name=$(echo "$extension" | cut -d '.' -f 1) + extension_name=$(echo "$extension" | cut -d '.' -f 2-) + echo '[[extensions]]' + echo 'publisher_name = "'$publisher_name'"' + echo 'extension_name = "'$extension_name'"' + echo +done \ No newline at end of file diff --git a/bin/nix4vscode-generator b/bin/nix4vscode-generator new file mode 100755 index 0000000..c229a35 --- /dev/null +++ b/bin/nix4vscode-generator @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -o pipefail + +if [[ $DEBUG != "" ]]; then + set -x +fi + +NIX4VSCODE_PATH=$(command -v nix4vscode) +NIX4VSCODE=${NIX4VSCODE:-"$HOME/bin/nix4vscode"} + +"$NIX4VSCODE" --output "$HOME/.config/nixos/shared/vscode-extensions.nix" "$HOME/.nix4vscode.toml" +"$NIX4VSCODE" --openvsx --output "$HOME/.config/nixos/shared/openvsx-extensions.nix" "$HOME/.nix4vscode.toml" || true