こんにちはnyahahanohaです。
私は学校から指定のPCがMacなので4年ほどMacを使っているのですが、Linux信者のためMacの環境に四苦八苦していました。
そしてNixOSに出会ってからはbrewの滅茶苦茶な環境に嫌気がさしていました。
MacにもNixをinstallできるのでNixでの環境整備を行ったりしてみたのですが、Mac対応のpackageの少なさにほとんど移行できないこと気づきました。
そこでOrbStackを利用してNixOSをMac内に軽量VMとして導入して、そちらに本環境を移行することにしました。
Version
soft | version |
---|---|
Alacritty | 0.14.0 |
OrbStack | 1.8.2 |
NixOS | 25.05 |
OrbStackの構築
brewでOrbStackをinstallしてください。
% brew install orbstack
軽量VMを構築します。
% orbctl create -a arm64 nixos ${MACHINE_NAME}
このVMが1台目でなければ作成したVMをdefaultに設定する必要があります。
% orbctl set-default ${MACHINE_NAME}
Alacirttyの設定
alacritty.tomlの一部を抜粋します。
[terminal.shell]
program = "/opt/homebrew/bin/orb"
#program = "/bin/zsh
通常shellのPATHを入力する箇所にorb
commandのPATHを入力します。
するとAlacritty起動時にNixOSが起動するようになります。
NixOSの設定
NixOSの解説は別のもっと詳しく書いた記事を読んでください。
ここでは$HOME/.config/nixos
にflake.nixを配置した後の、shellのconfigのみ解説します。
ちなみにconfigは下記で公開しています。
https://github.com/nyahahanoha/orbstack-nix
shellの設定
zshの設定のみ特徴的なので解説します。
zshの設定は下記です。
{ config, pkgs, ... }:
{
programs.zsh = {
enable = true;
shellAliases = {
docker = "mac docker";
kubectl = "mac kubectl";
brew = "mac brew";
home = "cd /Users/\${USER}";
ls = "ls -1 --color";
la = "ls -a";
ll = "ls -l";
lla= "ls -la";
orb= "mac";
update = "sudo nixos-rebuild switch --flake /home/\${USER}/.config/nixos#\${USER}";
};
initExtraFirst = ''
if [ -z $TMUX ]; then
tmux new-session -A -s default; exit
fi
'';
initExtra = ''
function keyscan() {
host=$1
echo "delete $host from known_hosts"
ssh-keygen -R $host
echo "add $host to known_hosts"
ssh-keyscan -H $host >> "$HOME"/.ssh/known_hosts
}
precmd() {
if [[ "$PWD" == /Users/* ]]; then
fs_os="macos"
color="blue"
else
fs_os="nixos"
color="green"
fi
PROMPT="%F{"$color"}%B"$fs_os" >%b %f"
}
eval "$(gh completion -s zsh)"
export LC_CTYPE="en_US.UTF-8"
'';
syntaxHighlighting = {
enable = true;
highlighters = [
"main"
"brackets"
];
};
};
}
aliasでmac
というcommandをdocker
やkubectl
の先頭につけていますが、これをすることでVM環境でなくMacの環境でdocker
やkubectl
を使えるようになります。
また、aliasでorb
commandをmac
に変更していますが、VM環境でorb
commandを実行するとバグってVMがフリーズするためこのようにしています。
他の設定はconfiguration.nix配下以外は何ら通常のNixOSと変わりないため、是非利用してみてください。
追記
brewの中身がこんなに綺麗になります。
==> Formulae
arp-scan
==> Casks
alacritty discord google-chrome microsoft-teams utm
balenaetcher drawio hammerspoon notion visual-studio-code
chatgpt firefox microsoft-auto-update orbstack wireshark
cloudflare-warp font-meslo-lg-nerd-font microsoft-office slack
VM環境に入れられないGUI以外はほとんど入らなくなるのでとてもスッキリとします。