nixosのwslで vscode remote-wsl を起動する
皆さんnixは使っていますか。
NixOSとは
Nixは他のディストリビューションと異なった特徴を持っているOSです。
まずパッケージをインストールするには、コードを書いて実行する必要があります。
Linuxを作るうえで大切な home directoryの内容やsystemdの管理もコードから定義できます。
コードとして管理されるOSのメリットとして
- どの環境でも同じ環境を再現することができます。
- nixosを理解している前提になりますが他の人にも共有しやすい。見た人が同じ環境を作れる。
- OSで障害が起きた際にもコードを戻すことで元の状態に戻すことができます。
- flake.nixを使用することで、flake.lockによりパッケージのバージョンをロックできます。
WSL remoteとは
Windows上にLinux環境を作成することをWSLと呼びます。
Windows上のVScodeからこのWSL環境にアクセスすることをWSL-remoteといいます。
これを使うことでEmacsや、vimを知らない人でも簡単にLinuxのソースコードの変更ができるようになります。
最終結果
手順
windows側の手順
Remote Developmentのvscodeの拡張機能からパッケージをインストールします。
すると画面上にモニターのようなアイコンが追加されます。
最終結果の画面でいうと上から5番目のアイコンですね。
この項目が出ていれば完了となります。
最終的にはWSL TargetListにnixosが追加され選択できるようになります。
nixos側の手順
大まかな手順としては、
- NixOSをWSLに入れる。説明が長くなるので省略します。
- NixOSにwget,nix-ld-rsをインストールする。
※nix-ld
は24.11以降には不要 - NixOSにVSCode-serverを手動でインストールする。他のOS(ubuntu)の場合はリモートサーバーをつなげた瞬間にvscode-serverが自動的にインストールしてくれるらしい。→詳細は知らない。
NixOS-WSLから使用するので
wgetとnix-ld-rsをインストールして有効化する。
{ config, lib, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
wget
nix-ld-rs
...
];
programs = {
nix-ld.enable = true;
};
}
nix-community/nixos-vscode-serverに従ってvscodeを入れる
{
inputs.vscode-server.url = "github:nix-community/nixos-vscode-server";
outputs = { self, nixpkgs, vscode-server }: {
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
modules = [
#home-manager
home-manager.nixosModules.home-manager
{
...関係ないので省略
}
vscode-server.nixosModules.default
({ config, pkgs, ... }: {
services.vscode-server.enable = true;
})
];
};
};
}
systemdで起動
systemctl --user enable auto-fix-vscode-server.service
systemctl --user start auto-fix-vscode-server.service
ここまでくればwindowsでvscodeを開いたり。
nixos側でvscodeを開いてみたりしたら動くと思います。
code .
最後に
自分でgoogle検査してもまったく nixosのwsl でvscodeを開いたという記事は見当たらなかった。
唯一 youtubeのjeezy codesさんが見つかった。
このビデオも、1年前のものですぐに使えるかと言うと微妙でした。
youtubeのビデオを現在の状況に合わせて記事にしましました。
今年はnixos元年としたいです。
記事作成時点のcommitの自分のリポジトリ
参考
Discussion