この記事は新歓ブログリレー2026 17日目の記事です。
はじめに
どうも、アルゴリズム班のComaviusです。環境構築のオタクとしてC++向け競プロ環境を簡単に作る方法を紹介します。
前提
Windowsを想定していますが、MacやLinuxでも動くはずです。vscodeをインストールしておいてください。
インストール
1. WSLのインストール
MacやLinuxをお使いの方、WindowsでWSLをインストール済みの方は飛ばしてください。
PowerShellを開き、次のコマンドを実行します。
wsl --install
その後は指示に従ってインストールを完了させてください。どこかでWindowsの再起動が必要になるはずです。
2. Nixのインストール
Nixを入れます。ターミナル(windowsの場合はWSL)を開き、次のコマンドを実行してください。
curl -fsSL https://install.determinate.systems/nix | sh -s -- install
試しに、ターミナルを開きなおしてから次のコマンドを実行してみてください。
nix run nixpkgs#hello
# Hello, world! と表示されれば成功です。
3. 環境のセットアップ
ターミナルで、作業用のディレクトリを作成してvscodeで開きます。
mkdir -p ~/kyopuro
code ~/kyopuro
vscodeの画面から、flake.nixという名前のファイルを作成し、次の内容を張り付けて保存します。
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
flake-parts.url = "github:hercules-ci/flake-parts";
systems.url = "github:nix-systems/default";
};
outputs =
inputs@{
flake-parts,
...
}:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = import inputs.systems;
perSystem =
{ pkgs, ... }:
let
inherit (pkgs) lib;
# 設定項目ここから
problems = {
"default" = ./main.cpp;
"a" = ./a.cpp;
"b" = ./b.cpp;
"c" = ./c.cpp;
"d" = ./d.cpp;
"e" = ./e.cpp;
"f" = ./f.cpp;
"g" = ./g.cpp;
"h" = ./h.cpp;
};
buildInputs = with pkgs; [
ac-library.dev
boost.dev
];
nativeBuildInputs = with pkgs; [
gcc
];
devInputs = with pkgs; [
clang-tools
];
# 設定項目ここまで
in
{
devShells.default = pkgs.mkShell {
buildInputs = buildInputs ++ nativeBuildInputs ++ devInputs;
};
packages = lib.mapAttrs (
_problem: srcFile:
lib.pipe srcFile [
builtins.readFile
(pkgs.writeTextDir "main.cpp")
(
src:
pkgs.stdenv.mkDerivation rec {
inherit buildInputs nativeBuildInputs;
inherit src;
pname = "solution";
version = "1.0.0";
buildPhase = ''
g++ -O2 -std=c++23 main.cpp -o ${pname}
'';
installPhase = ''
mkdir -p $out/bin
cp ${pname} $out/bin/${pname}
'';
}
)
]
) problems;
formatter = pkgs.nixfmt-rfc-style;
};
};
}
main.cppという名前のファイルを作成し、次の内容を張り付けて保存します。
#include <bits/stdc++.h>
int main() {
std::cout << "Hello, kyopuro!!" << std::endl;
}
今度はvscodeからターミナルを開き(Ctrl + Shift + P -> Terminal: Create New Terminal)、次のコマンドを実行してください。
nix run
1回目とそれ以降で少し挙動が違いますが、どちらも最後にHello, kyopuro!!と表示されれば成功です。

4. VSCodeの拡張機能の導入
VSCodeの拡張機能画面を開き(Ctrl + Shift + P -> Extensions: Install Extensions)、次のものをインストールしてください。
- clangd
- Nix Environment Selector
次に、Nix Environment Selectorを開き(Ctrl + Shift + P -> Nix Environment Selector: Select Environment)、flake.nixを選択してください。VSCodeの左下にReload Requiredと表示されたら、VSCodeを再読み込みしてください(Ctrl + Shift + P -> Developer: Reload Window)。
main.cppの2行目のmainのところにカーソルを合わせたとき、下のような表示が出れば成功です。

5. トラブルシューティング
もし動かない場合、flake.lockという名前のファイルを開いて(ない場合は作って)、次の内容を張り付けて保存してみてください。
flake.lockの内容: 長いので折りたたんでいます
{
"nodes": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1772408722,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1773964973,
"narHash": "sha256-NV/J+tTER0P5iJhUDL/8HO5MDjDceLQPRUYgdmy5wXw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "812b3986fd1568f7a858f97fcf425ad996ba7d25",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1772328832,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"root": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs",
"systems": "systems"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
他の機能
デフォルトで、a.cppからh.cppまでをnix run .#aからnix run .#hまでのコマンドでビルドして実行できるようになっています。flake.nixのproblemsのところにファイルを追加すれば、同様のことができます。ライブラリを追加したいときは、https://search.nixos.org/packages で検索してbuildInputsのところに追加してください。
終わりに
これが最速だと思います。コンテスト中に環境構築を始めても間に合うのではないでしょうか?
明日は@genmiraさんの『初心者向け簡単料理レシピ3選』です。お楽しみに!