macOSへNixでChromeをインストールする
macOSへパッケージマネージャであるNix
HomebrewやApp Storeからインストールしたアプリケーションをメモしておきます。
macOSへ Nix(Determinate Nix Installer)、nix-darwin、および nix-homebrew を新規導入し、指定されたすべてのアプリケーションを管理するための最小限かつ実用的な設定例(Flake構成)を解説します。
ディレクトリ構成¶
設定ファイルは ~/.config/nix-darwin 以下に集約します。
設定ファイル¶
1. flake.nix¶
{
description = "Darwin configuration with Nix-Darwin and Homebrew";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";
nix-homebrew.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nix-darwin, nixpkgs, nix-homebrew }:
let
configuration = import ./darwin-configuration.nix;
in
{
darwinConfigurations."macbook" = nix-darwin.lib.darwinSystem {
modules = [
configuration
nix-homebrew.darwinModules.nix-homebrew
{
nix-homebrew = {
enable = true;
enableRosetta = false;
user = "YOUR_USERNAME"; # macOSのユーザー名に変更してください
autoMigrate = true;
};
}
];
};
darwinPackages = self.darwinConfigurations."macbook".pkgs;
};
}
2. darwin-configuration.nix¶
GUIアプリの多く(特にGoogle IMEやKarabiner、Forkなど)はmacOS固有の依存関係や権限管理が必要なため、nix-homebrew 経由の Homebrew Cask で管理するのが最もトラブルが少なく安定します。
{ pkgs, ... }:
{
# Nixの実験的機能(Flakes)を有効化
nix.settings.experimental-features = "nix-command flakes";
# nix-darwinで管理するNixパッケージ(CLIツール・エディタなど)
environment.systemPackages = with pkgs; [
zed-editor
cmux
];
# Homebrew cask を使用してインストールするアプリケーション
homebrew = {
enable = true;
onActivation.cleanup = "zap"; # 設定にないBrewパッケージを削除
casks = [
"google-chrome"
"raycast"
"google-japanese-input" # Google日本語入力 (Google IME)
"aerospace"
"karabiner-elements"
"fork"
];
};
# システム状態の互換性バージョン
system.stateVersion = 5;
# システムのアーキテクチャ設定(Apple Siliconの場合)
nixpkgs.hostPlatform = "aarch64-darwin";
}
- Determinate Nix Installer の実行: 公式推奨のマルチユーザーインストール. ターミナルで以下を実行し、Nixをインストールします。
インストール完了後、指示に従ってターミナルを再起動するか exec zsh で設定を読み込みます。
- 設定ファイルの作成: 設定ディレクトリを作成し、用意した2つのファイルを配置します。
注意:
flake.nix内のYOUR_USERNAMEはご自身のmacOSユーザー名(whoamiの実行結果)に置き換えてください。
- nix-darwin の初回適用: Flakeによるシステム構築. 初回インストールコマンドを実行します。
- 以降の更新手順: 次回以降、設定変更を適用する場合は以下のコマンドで反映できます。
home.nix(Home Manager単体構成)で管理する場合、パッケージの性質(Nixpkgsに公式登録されているか、Homebrew Caskでしか提供されていないか)によって指定場所が変わります。
Zed はNixpkgsに存在するため home.packages に直接記述できますが、Google Chrome・cmux・Raycast は macOS の GUI アプリ(Cask)であるため、Homebrew 連携モジュール 側に記述するのが最も確実です。
修正後の home.nix¶
{ config, pkgs, ... }:
{
home.username = "あなたのユーザー名";
home.homeDirectory = "/Users/あなたのユーザー名";
# 設定の互換性バージョン
home.stateVersion = "24.05";
# --- [1] Nixpkgs(Nix直入れ)で管理するツール ---
home.packages = [
pkgs.zed-editor # Zed エディタ
];
# Home Manager自身を管理するための設定
programs.home-manager.enable = true;
# --- [2] Homebrew 連携で管理する macOS GUI アプリ ---
# Home Manager 経由で Homebrew/Cask を管理する設定
targets.darwin.currentHostDefaults."com.apple.gamed".ControllerAvailable = {}; # darwin環境の有効化用
# ※Home Managerに homebrew モジュールを取り込んでいる場合の記述
# (nix-darwinと統合していない場合、Caskアプリは以下のように指定します)
}
おすすめの構成(nix-darwin / nix-homebrew 連携時)¶
もし前述の nix-darwin(または nix-homebrew)と Home Manager を統合して管理されている場合は、以下のように役割分担して記述します。
① home.nix(Home Manager 側)¶
{ config, pkgs, ... }:
{
home.username = "あなたのユーザー名";
home.homeDirectory = "/Users/あなたのユーザー名";
home.stateVersion = "24.05";
home.packages = [
pkgs.zed-editor # Zed は Nixpkgs 公式に存在します
];
programs.home-manager.enable = true;
}
② configuration.nix(nix-darwin 側)¶
Google Chrome・cmux・Raycast を Homebrew Cask として指定します。
{ config, pkgs, ... }:
{
homebrew = {
enable = true;
casks = [
"google-chrome"
"cmux"
"raycast"
];
};
}
パッケージの分類まとめ¶
| アプリ名 | 管理方法 | パッケージ名 / Cask名 | 理由 |
|---|---|---|---|
| Zed | Nix (home.packages) |
pkgs.zed-editor |
Nixpkgs に公式登録されているため |
| Google Chrome | Homebrew Cask | "google-chrome" |
macOS専用ビルドの安定性のため |
| cmux | Homebrew Cask | "cmux" |
Caskでの配布が主流のため |
| Raycast | Homebrew Cask | "raycast" |
macOSシステム密着型GUIアプリのため |
Homebrew¶
macOS環境で Nix と Home Manager(スタンドアロン構成)を新規にセットアップし、Google Chrome をインストールする一連の手順です。
macOSでのNixインストールには、OSのアップデート時にも壊れにくくアンインストールも簡単な Determinate Systems製インストーラー(nix-installer)を使用するのが現在最も推奨されています。
- Nixのインストール: Determinate Systemsの公式インストーラーを使用します. ターミナルを開き、以下のコマンドを実行します。
画面の指示に従い、Macの管理者パスワードを入力して完了させます。インストール完了後、設定を反映するためにターミナルを再起動(または新しいタブを開く)します。
動作確認:
- Home Managerの初期化: Flakesを用いたスタンドアロンセットアップを行います. Home Managerの設定ファイルを配置するディレクトリを作成し、初期化します。
# 設定ディレクトリの作成と移動
mkdir -p ~/.config/home-manager
cd ~/.config/home-manager
# flake.nix と home.nix の生成
nix run home-manager/master -- init
これで ~/.config/home-manager 内に flake.nix と home.nix が作成されます。
- home.nix に Chrome を追加: 設定ファイルにパッケージを記述します.
~/.config/home-manager/home.nixをお好みのエディタ(nanoやvimなど)で開きます。
home.packages の項目を探し、pkgs.google-chrome を追加します。
{ config, pkgs, ... }:
{
home.username = "あなたのユーザー名";
home.homeDirectory = "/Users/あなたのユーザー名";
# 設定の互換性バージョン(変更不要)
home.stateVersion = "24.05";
# インストールするパッケージを指定
home.packages = [
pkgs.google-chrome
];
# Home Manager自身を管理するための設定
programs.home-manager.enable = true;
}
- 設定の適用(Google Chromeのインストール): Home Managerを実行してインストールを完了させます.
設定ファイルが存在するディレクトリ(
~/.config/home-manager)で以下のコマンドを実行します。
初回実行時はビルドとダウンロードが行われ、完了すると ~/Applications/Home Manager Apps ディレクトリ内に Google Chrome が配置されます。
- macOSでアプリケーションとして認識させる: 初回のみ必要なパス通し.
Home Managerが配置したGUIアプリ(
~/Applications/Home Manager Apps)をmacOSのSpotlightやLaunchpadで認識させるため、初回起動時またはエイリアスが反映されていない場合は以下のようにして起動・検索できます。
Spotlight(Cmd + Space)で Google Chrome と検索するか、Finderで ~/Applications/Home Manager Apps を開いて起動してください。
今後の運用コマンド¶
-
設定更新(Chrome以外のソフトを追加・変更したとき):
home.nixを編集後、以下を実行します。 -
パッケージの検索: インストールしたいソフトがNixに存在するか確認する場合:
ご提示いただいたソフトウェア群は、「CLIツール・言語スタック」と「GUIアプリケーション・フォント・macOSドライバ系」の2つに大きく分けることができます。
直前のステップで組んだ **nix-darwin + Home Manager + Homebrew** のハイブリッド構成で管理する場合、CLIツールはNix (Home Manager) で宣言し、GUIアプリやMac専用ソフトウェア(Cask / mas)は Homebrew 連携 に割り振るのが最もエラーがなく安定します。
各パッケージに対応する最新の構成例です。
1. home.nix(または flake.nix 内の Home Manager セクション)¶
CLIツール、プログラミング言語、Nixで公式サポートされている一部の開発系GUIツール(aerospace や zed など)を記述します。
{ pkgs, ... }:
{
home.packages = with pkgs; [
# --- AWS / Cloud / Infrastructure ---
awscli2 # awscli
terraform # terraform
skopeo # skopeo
# --- CLI Utils / Modern Alternatives ---
eza # eza (lsの代替)
ripgrep # ripgrep (grepの代替)
jq # jq
xh # xh (curl/httpieの代替)
tree # tree
axel # axel
fping # fping
nmap # nmap
telnet # telnet
sshpass # sshpass
mas # mas (Mac App Store CLI)
# --- Development / Languages / Runtimes ---
go # go
go-task # go-task
govulncheck # govulncheck
nodejs # node
sheldon # sheldon (zsh plugin manager)
gh # gh (GitHub CLI)
# --- Python Ecosystem ---
uv # uv
mypy # mypy
ruff # ruff
python3Packages.pytest # pytest
python3Packages.pyinstaller # pyinstaller
# --- Security / Vulnerability Scanners ---
osv-scanner # osv-scanner
# --- Editors & Window Managers ---
neovim # neovim
zed-editor # zed
aerospace # aerospace (i3風タイル型ウィンドウマネージャ)
# --- Media / Video / Image ---
ffmpeg # ffmpeg
libwebp # webp
];
}
2. configuration.nix(nix-darwin 側の Homebrew 設定)¶
macOS専用のGUIアプリ、日本語入力(IME)、ドライバ権限を要するもの、および Homebrew Cask でしか提供されていないツール群を記述します。
{ config, pkgs, ... }:
{
homebrew = {
enable = true;
onActivation.cleanup = "zap"; # 設定にない手動brewアプリを自動整理
# --- フォント (Tap経由) ---
taps = [
"homebrew/cask-fonts"
];
# --- Homebrew Casks (GUI App / System Utility) ---
casks = [
# --- Browsers & Communication ---
"google-chrome"
"slack"
"discord"
"webex"
# --- Productivity & Knowledge ---
"obsidian"
"raindropio"
"biscuit"
# --- AI Tools ---
"claude"
"claude-code"
"google-gemini"
"antigravity"
# --- Dev / Database / System Utilities ---
"raycast"
"karabiner-elements"
"alt-tab"
"cleanshot"
"keycastr"
"macshot"
"fork"
"openmtp"
"transmit"
"parallels-client"
"the-unarchiver"
"voiceink"
"xdeck"
"codex"
"codexbar"
"cmux"
# --- Media & Graphics ---
"audacity"
"gimp"
"vlc"
"orca"
# --- Network & Security ---
"wireshark" # wireshark-app
"tigervnc-viewer"
# --- Input Method (IME) ---
"google-japanese-ime"
# --- Fonts ---
"font-udev-gothic-nf"
];
};
}
注意点・補足¶
containerパッケージについて-
一般的なコンテナランタイム(Docker DesktopやRancher Desktop等)を指す場合は、Homebrew Cask側に
"docker"や"rancher"などを指定してください。 -
**
tigervncとtigervnc-viewer** -
VNCビューア単体を利用したい場合は Cask の
"tigervnc-viewer"を使い、CLIのVNCサーバー/クライアントツール本体が必要な場合は Home Manager 側(pkgs.tigervnc)に追加してください。 -
claude-codeや新興AIツールの表記 - Cask名が変更されている、または
npmやuv経由でのインストールが推奨される場合があります。nix-darwin実行時に「Caskが見つからない」とエラーが出た場合は、uv tool installやnpm install -gに切り替えるか、brew search <名前>で公式の正確なCask名をご確認ください。 macOSにおける Microsoft 365(Word、Excel、PowerPoint、Outlookなど)の Office スイートは、Nixpkgs(Nix直入れ)ではなく Homebrew Cask 連携(nix-darwin)経由でインストールするのが最も確実で推奨される方法です。
なぜ Homebrew Cask を使うのか?¶
- macOSの制約とライセンス: Microsoft Office はプロプライエタリな大型GUIアプリであり、macOS向けのインストーラー(.pkg / .dmg)として配布されています。
- メンテナンス性: Nixpkgs 本体の macOS 向け GUI アプリ管理は制限が多く、アップデートの追従やアクティベーション処理の面で Homebrew Cask が事実上の標準として使われています。
設定手順¶
nix-darwin の configuration.nix(または Homebrew 連携の設定ファイル)に以下のいずれかを追記します。
パターン1: Office 365 スイートを一括インストールする(推奨)¶
Word, Excel, PowerPoint, Outlook, OneNote が丸ごと入るスイートパッケージ(microsoft-office)を指定します。
# configuration.nix
{ config, pkgs, ... }:
{
homebrew = {
enable = true;
casks = [
"microsoft-office" # Microsoft 365 スイート全体
"microsoft-teams" # 必要に応じて Teams も追加
];
};
}
パターン2: 必要なアプリだけ個別で指定したい場合¶
特定のアプリのみに絞りたい場合は、各 Cask 名を個別に記述します。
# configuration.nix
{ config, pkgs, ... }:
{
homebrew = {
enable = true;
casks = [
"microsoft-word"
"microsoft-excel"
"microsoft-powerpoint"
"microsoft-auto-update" # Officeアプリの自動更新ツール
];
};
}
設定の適用¶
設定ファイルを編集後、いつもの構築コマンドを実行します。
適用が完了すると /Applications に各 Microsoft 365 アプリが配置されます。初回起動時にご自身の Microsoft 365 アカウントでログイン(ライセンス認証)を行うことで利用可能になります。