1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Alacritty+OrbStack+NixOSで再現性の高いMac環境を!

Last updated at Posted at 2024-11-29

こんにちは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を入力する箇所にorbcommandの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をdockerkubectlの先頭につけていますが、これをすることでVM環境でなくMacの環境でdockerkubectlを使えるようになります。
また、aliasでorbcommandをmacに変更していますが、VM環境でorbcommandを実行するとバグって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以外はほとんど入らなくなるのでとてもスッキリとします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?