MACOS、Linux、Linux(WSL)のWindowsサブシステム、Selinux、The Valve Steam Deckなど、Nixをどこにでもインストールおよび管理するための高速でフレンドリーで信頼できる信頼できる方法です。デフォルトで有効になっているフレークを備えたNixをインストールし、シームレスにアンインストールしたNixをサポートし、NixがMacOSのアップグレードを生き抜くことができます。
このワンライナーは、サポートされているシステムを開始するための最も迅速な方法です。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installヒント
インストーラーを使用してDetienineをインストールするには、以下の指示を参照してください。
GitHub ActionsやGitLabなど、多くの環境で700万件を超えるインストーラーが正常に完了しました。
| プラットフォーム | マルチユーザー? | rootのみ | 成熟 |
|---|---|---|---|
Linux( x86_64およびaarch64 ) | ✓(SystemD経由) | ✓✓ | 安定した |
macos( x86_64およびaarch64 ) | ✓✓ | 安定した(メモを参照) | |
| バルブスチームデッキ(蒸気) | ✓✓ | 安定した | |
Linux 2のWindowsサブシステム(WSL2)( x86_64およびaarch64 ) | ✓(SystemD経由) | ✓✓ | 安定した |
| ポッドマンLinuxコンテナ | ✓(SystemD経由) | ✓✓ | 安定した |
| Dockerコンテナ | ✓✓ | 安定した |
このスクリプトを実行して、デフォルトのプランナーとオプションでnixをインストールできます。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installプラットフォーム固有のインストーラーバイナリを自分でダウンロードするには:
curl -sL -o nix-installer https://install.determinate.systems/nix/nix-installer-x86_64-linux
chmod +x nix-installer
./nix-installerこれにより、 x86_64-linuxシステムにNixがインストールされますが、それを選択したシステムに置き換えることができます。
macOS(nix-darwinではない)またはLinux(nixosではない)を使用している場合は、 --determinateフラグを追加して、deventerine nixインストーラーを使用してsevedeatineをインストールできます。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --determinateヒント
nix-darwinまたはnixosを使用する場合は、 determinateフレークによって提供されたモジュールを使用して、決定的なものをインストールすることをお勧めします。
決定的なのは次のとおりです。
inix nixインストーラーは、プランナーによって作成されたプランに従ってNIXをインストールします。利用可能なプランナーを確認するには:
/nix/nix-installer install --helpプランナーには独自のオプションとデフォルトがあり、それらのほとんどを共通して共有しています。 Linuxのオプションを確認するには、例:
/nix/nix-installer install linux --help環境変数またはコマンド引数を使用してプランナーを構成できます。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
NIX_BUILD_GROUP_NAME=nixbuilder sh -s -- install --nix-build-group-id 4000
# Alternatively:
NIX_BUILD_GROUP_NAME=nixbuilder ./nix-installer install --nix-build-group-id 4000オプションの完全なリストについては、以下のインストーラー設定を参照してください。
インストーラーに問題がありますか?トラブルシューティングガイドを参照して、問題がカバーされているかどうかを確認してください。
nixを実行することで、現在推奨されているnixのバージョンにアップグレードできます。
sudo -i nix upgrade-nixまたは、Detiente Nixインストーラーの異なるバージョンでアンインストールおよび再インストールすることもできます。
実行して、detine nixインストーラーによってインストールされたnixを削除できます。
/nix/nix-installer uninstallnix-installer-actionを使用して、githubアクションにnixをインストールできます。これが構成の例です。
on :
pull_request :
push :
branches : [main]
jobs :
build :
name : Build
runs-on : ubuntu-22.04
steps :
- uses : actions/checkout@v4
- name : Install Nix
uses : DeterminateSystems/nix-installer-action@main
- name : Run `nix build`
run : nix build .Gitlab CIランナーは通常、Dockerベースであり、 rootユーザーとして実行されます。これは、 systemdが存在しないことを意味するため、Linuxプランナーに--init noneオプションに合格する必要があります。
デフォルトのgitlabランナーでは、この構成を使用してnixをインストールできます。
test :
script :
- curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux --no-confirm --init none
- . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
- nix run nixpkgs#hello
- nix profile install nixpkgs#hello
- hello異なるランナーを使用している場合、上記の例を調整する必要がある場合があります。
警告
--init noneが使用されている場合、 rootまたはrootの特権を高めることができるユーザーのみがnixを実行できます。
sudo -i nix run nixpkgs#hello SystemDを使用していない場合でも、 linuxプランを明示的に指定して、 --init noneでnixをインストールできます。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install linux --init nonedocker/podmanコンテナまたはinit( systemdのような)が存在しない場合のWSL2インスタンスでは、渡されます--init none 。
コンテナ用(initなし):
警告
--init noneが使用されている場合、 rootまたはrootの特権を高めることができるユーザーのみがnixを実行できます。
sudo -i nix run nixpkgs#hello # Dockerfile
FROM ubuntu:latest
RUN apt update -y
RUN apt install curl -y
RUN curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux
--extra-conf "sandbox = false"
--init none
--no-confirm
ENV PATH= "${PATH}:/nix/var/nix/profiles/default/bin"
RUN nix run nixpkgs#hellodocker build -t ubuntu-with-nix .
docker run --rm -ti ubuntu-with-nix
docker rmi ubuntu-with-nix
# or
podman build -t ubuntu-with-nix .
podman run --rm -ti ubuntu-with-nix
podman rmi ubuntu-with-nixsystemd initのコンテナの場合:
# Dockerfile
FROM ubuntu:latest
RUN apt update -y
RUN apt install curl systemd -y
RUN curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux
--extra-conf "sandbox = false"
--no-start-daemon
--no-confirm
ENV PATH= "${PATH}:/nix/var/nix/profiles/default/bin"
RUN nix run nixpkgs#hello
CMD [ "/bin/systemd" ]podman build -t ubuntu-systemd-with-nix .
IMAGE= $( podman create ubuntu-systemd-with-nix )
CONTAINER= $( podman start $IMAGE )
podman exec -ti $CONTAINER /bin/bash
podman rm -f $CONTAINER
podman rmi $IMAGE Dockerなどの一部のコンテナツールを使用すると、 sandbox = false省略できます。これを省略すると、Podmanなどのコンテナツールとの互換性に悪影響を及ぼします。
最初にSystemDを有効にしてから、通常どおりNIXをインストールすることを強くお勧めします。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installWSLGが有効になっている場合、PowerShellのWindowsからLinux Firefoxを開くなどを行うことができます。
wsl nix run nixpkgs # firefoxいくつかのOpenGLアプリケーションを使用するには、 nixGLを使用できます( blenderなどの一部のアプリケーションは機能しない場合があることに注意してください):
wsl nix run -- impure github:guibou / nixGL nix run nixpkgs # obs-studio SystemDを有効にすることがオプションではない場合は、パス--init noneコマンドの最後に渡されます。
警告
--init noneが使用されている場合、 rootまたはrootの特権を高めることができるユーザーのみがnixを実行できます。
sudo -i nix run nixpkgs#hellocurl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install linux --init none確認ステップをバイパスしたい場合は、 --no-confirmフラグを適用できます。
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --no-confirmこれは、非対話スクリプトでインストーラーを使用する場合に特に役立ちます。
既存のNIXインストールスクリプトは良い仕事をしますが、維持するのは困難です。
スクリプトで使用されるシェルの実装とツールの微妙な違いにより、インストーラーに意味のある変更を加えることが困難になります。
nixインストーラーがこれらのオプションよりも多くの利点があります。
useraddなど)のみを呼び出すPATHに存在することを保証しますNIXインストーラーワーキンググループやより広範なコミュニティのメンバーの他の参加者と協力することは素晴らしいことです。ワーキンググループは、インストーラーの基礎所有のフォークを維持しています。
Steventine Nixインストーラーは、包括的で不安定な体験を提供しようとしますが、残念ながら、手動介入またはオペレーターの選択を必要とする可能性のある問題がいくつかあります。
Nixが最初にNix-Darwinをアンインストールせずに以前にアンインストールされていた場合、これと同様のエラーが発生する可能性があります。
nix shell nixpkgs#curl
error: unable to download ' https://cache.nixos.org/g8bqlgmpa4yg601w561qy2n576i6g0vh.narinfo ' : Problem with the SSL CA cert (path ? access rights ? ) (77)これはnix-darwin Nixがアンインストールされた後に残るorg.nixos.activate-systemサービスを提供するために発生します。この状態のorg.nixos.activate-systemサービスは、新しくインストールされたNIXと相互作用し、壊れたシンリンクに使用するSSL証明書を変更します。
ls -lah /etc/ssl/certs
total 0
drwxr-xr-x 3 root wheel 96B Oct 17 08:26 .
drwxr-xr-x 6 root wheel 192B Sep 16 06:28 ..
lrwxr-xr-x 1 root wheel 41B Oct 17 08:26 ca-certificates.crt - > /etc/static/ssl/certs/ca-certificates.crtこの問題は、NIXを使用してネットワーク接続を必要とするため、NIXのアンインストール後にnix-darwin Uninstallerが機能しないという問題によって悪化します。
org.nixos.activate-systemサービスとca-certificatesを削除することにより、この状況を解決することが可能です。
sudo rm /Library/LaunchDaemons/org.nixos.activate-system.plist
sudo launchctl bootout system/org.nixos.activate-system
/nix/nix-installer uninstall
sudo rm /etc/ssl/certs/ca-certificates.crtインストーラーをもう一度実行すると、動作するはずです。
インストーラーの最新のバージョンは、Nix-Darwinが最初にアンインストールされるまでアンインストールを拒否し、この問題を軽減するのに役立ちます。
インストーラーを使用してnixなしでシステムにNIXをインストールするため、デフォルトのビルドは静的バイナリです。
nixを使用したシステムにポータブルLinuxバイナリを構築するには:
# to build a local copy
nix build -L " .#nix-installer-static "
# to build the remote main development branch
nix build -L " github:determinatesystems/nix-installer#nix-installer-static "
# for a specific version of the installer:
export NIX_INSTALLER_TAG= " v0.6.0 "
nix build -L " github:determinatesystems/nix-installer/ $NIX_INSTALLER_TAG #nix-installer-static "MacOSについて:
# to build a local copy
nix build -L " .#nix-installer "
# to build the remote main development branch
nix build -L " github:determinatesystems/nix-installer#nix-installer "
# for a specific version of the installer:
export NIX_INSTALLER_TAG= " v0.6.0 "
nix build -L " github:determinatesystems/nix-installer/ $NIX_INSTALLER_TAG #nix-installer "次に、実行したいマシンにresult/bin/nix-installerをコピーします。心配するシステムの依存関係がないため、貨物を使用してnixなしでインストーラーをシステムに追加することもできます。
# to build and run a local copy
RUSTFLAGS= " --cfg tokio_unstable " cargo run -- --help
# to build the remote main development branch
RUSTFLAGS= " --cfg tokio_unstable " cargo install --git https://github.com/DeterminateSystems/nix-installer
nix-installer --help
# for a specific version of the installer:
export NIX_INSTALLER_TAG= " v0.6.0 "
RUSTFLAGS= " --cfg tokio_unstable " cargo install --git https://github.com/DeterminateSystems/nix-installer --tag $NIX_INSTALLER_TAG
nix-installer --helpこのビルドをポータブルにするには、 --target x86_64-unknown-linux-muslオプションを渡します。
注記
現在、Stable std APIをラップするTokioのプロセスグループを使用しているため、 --cfg tokio_unstableが必要ですが、MSRVバンプが必要なため不安定です。
警告
rustライブラリとしてdetinate nixインストーラーを使用することはまだ実験的です。この機能は、支持者なしで将来削除される可能性があります。これを使用している場合は、お知らせください。安定化へのパスを提供できます。
nix-installerライブラリを依存関係に追加します。
cargo add nix-installer CLIを構築している場合は、 clap統合のcli機能フラグをご覧ください。
また、 tokio_unstableを使用するために.cargo/config.tomlを編集する必要があります。Tokioのプロセスグループを使用します。これは、安定したstd APIをラップしますが、MSRVバンプが必要なため不安定です。
# .cargo/config.toml
[ build ]
rustflags =[ " --cfg " , " tokio_unstable " ]また、NIX-2.21.2-AARCH64-DARWIN.TAR.XZのようなターゲットに適したNIXインストールタルボールを指すように、 NIX_INSTALLER_TARBALL_PATH環境変数を設定する必要があります。内容は、インストール時にダウンロードされる代わりに、結果のバイナリに埋め込まれています。
次に、ドキュメントを確認することができます。
cargo doc --open -p nix-installerドキュメントは、 nix buildからも利用できます。
nix build github:DeterminateSystems/nix-installer#nix-installer.doc
firefox result-doc/nix-installer/index.htmlダウンロードURLを変更することにより、Detienting Nixインストーラーの特定のバージョンにピン留めできます。これが例です:
VERSION= " v0.6.0 "
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix/tag/ ${VERSION} |
sh -s -- install使用可能なバージョンを見つけるか、リリースのバイナリをダウンロードするには、GitHubリリースを確認してください。
これらのリリースを直接ダウンロードして使用できます。これが例です:
VERSION= " v0.6.0 "
ARCH= " aarch64-linux "
curl -sSf -L https://github.com/DeterminateSystems/nix-installer/releases/download/ ${VERSION} /nix-installer- ${ARCH} -o nix-installer
./nix-installer install各インストーラーバージョンには、関連するサポートされているNIXバージョンがあります。インストーラーバージョンをピン留めする場合、関連するNIXバージョンに間接的にピン留めします。
--nix-package-urlまたはNIX_INSTALLER_NIX_PACKAGE_URL=を使用してnixバージョンをオーバーライドすることもできますが、その組み合わせをテストしていないため、これを行うことはお勧めしません。 NIXバージョン、OS、アーキテクチャなど、NIXパッケージURLの例を次に示します。
上流のnixインストーラースクリプトとは異なります:
nix.conf :nix-commandとflakes機能が有効になっていますbash-prompt-prefixが設定されていますauto-optimise-store trueに設定されています(Linuxのみ)always-allow-substitutes trueに設定されていますextra-nix-pathはnixpkgs=flake:nixpkgsに設定されていますmax-jobsはautoに設定されていますupgrade-nix-store-path-url意図しないダウングレードを防ぐために、 https://install.determinate.systems/nix-upgrade/stable/universalに設定されています。/nix/receipt.jsonに保存され、インストールバイナリAt /nix/nix-installerのコピーが保存されますnix-channel --update ~/.nix-channelsされませんssl-cert-file ssl-cert-file引数が使用されている場合、 /etc/nix/nix.confに設定されています。 detinate nixインストーラーは、さまざまな構成設定を提供します。一部は一般的なもので、一部はコマンドごとにあります。すべての設定は、フラグまたはNIX_INSTALLER_*環境変数を介して利用できます。
これらの設定は、すべてのコマンドで使用できます。
| 旗 | 説明 | デフォルト(ある場合) | 環境変数 |
|---|---|---|---|
--log-directives | コンマが区切られたトレースディレクティブ | NIX_INSTALLER_LOG_DIRECTIVES | |
--logger | どのロガーを使用するか(オプションはcompact 、 full 、 pretty 、 jsonです) | compact | NIX_INSTALLER_LOGGER |
--verbose | デバッグログを有効にする(トレース用-vv ) | false | NIX_INSTALLER_VERBOSITY |
nix-installer install )| 旗 | 説明 | デフォルト(ある場合) | 環境変数 |
|---|---|---|---|
--determinate | 決定的なものをインストールします | NIX_INSTALLER_DETERMINATE | |
--diagnostic-attribution | インストール診断を特定の値に関連付けます | NIX_INSTALLER_DIAGNOSTIC_ATTRIBUTION | |
--diagnostic-endpoint | インストール診断が送信されるURLまたはファイルパス | https://install.determinate.systems/nix/diagnostic | NIX_INSTALLER_DIAGNOSTIC_ENDPOINT |
--explain | インストールプロセスがシステムに行う変更の説明を提供する | false | NIX_INSTALLER_EXPLAIN |
--extra-conf | /etc/nix.confの追加構成ライン | NIX_INSTALLER_EXTRA_CONF | |
--force | インストーラーがファイルを強制的に再作成する必要があるかどうか | false | NIX_INSTALLER_FORCE |
--init | どのinitシステムを構成するシステム(if-- --init none nixはルートのみになります) | launchd (macos)、 systemd (linux) | NIX_INSTALLER_INIT |
--nix-build-group-id | nixビルドグループGID | 350 (macos)、 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_GROUP_ID |
--nix-build-group-name | nixビルドグループ名 | nixbld | NIX_INSTALLER_NIX_BUILD_GROUP_NAME |
--nix-build-user-count | 作成するビルドユーザーの数 | 32 | NIX_INSTALLER_NIX_BUILD_USER_COUNT |
--nix-build-user-id-base | nixビルドユーザーベースUID(上昇)(注:最初のUIDはこのベース + 1になります) | 350 (macos)、 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_USER_ID_BASE |
--nix-build-user-prefix | nixビルドユーザープレフィックス(ユーザー番号は修正されます) | _nixbld (macos)、 nixbld (linux) | NIX_INSTALLER_NIX_BUILD_USER_PREFIX |
--nix-package-url | nixパッケージURL | NIX_INSTALLER_NIX_PACKAGE_URL | |
--no-confirm | 明示的なユーザー確認を必要とせずにインストールを実行します | false | NIX_INSTALLER_NO_CONFIRM |
--no-modify-profile | ユーザープロファイルを変更して、nixを自動的にロードします。 | true | NIX_INSTALLER_MODIFY_PROFILE |
--proxy | 使用するプロキシ(ある場合);有効なプロキシベースはhttps://$URL 、 http://$URLおよびsocks5://$URL | NIX_INSTALLER_PROXY | |
--ssl-cert-file | 使用するSSL証明書(ある場合); Nixの取得に使用され、 ssl-cert-fileを/etc/nix/nix.confに設定します | NIX_INSTALLER_SSL_CERT_FILE | |
--no-start-daemon | デーモンを開始します(そうでない場合は--init none ) | true | NIX_INSTALLER_START_DAEMON |
また、最初の引数でプランナーを指定することもできます。
nix-installer install < plan >または、 NIX_INSTALLER_PLAN環境変数を使用できます。
NIX_INSTALLER_PLAN= < plan > nix-installer installnix-installer uninstall )| 旗 | 説明 | デフォルト(ある場合) | 環境変数 |
|---|---|---|---|
--explain | インストールプロセスがシステムに行う変更の説明を提供する | false | NIX_INSTALLER_EXPLAIN |
--no-confirm | 明示的なユーザー確認を必要とせずにインストールを実行します | false | NIX_INSTALLER_NO_CONFIRM |
また、最初の引数としてインストール領収書を指定することもできます(デフォルトは/nix/receipt.jsonです):
nix-installer uninstall /path/to/receipt.jsonnix-installer plan )| 旗 | 説明 | デフォルト(ある場合) | 環境変数 |
|---|---|---|---|
--out-file | 生成されたプランを書く場所(JSON形式) | /dev/stdout | NIX_INSTALLER_PLAN_OUT_FILE |
nix-installer repair )| 旗 | 説明 | デフォルト(ある場合) | 環境変数 |
|---|---|---|---|
--no-confirm | 明示的なユーザー確認を必要とせずにインストールを実行します | false | NIX_INSTALLER_NO_CONFIRM |
nix-installer self-test ) nix-installer self-test一般的な設定のみを取ります。
NIXインストーラーを決定する目標は、NIXを正常かつ正しくインストールすることです。 curl | shパイプラインとインストーラーは、それを真実にするのに役立つ診断情報を少し収集します。
これは、私たちが収集する診断データの表です。
| 分野 | 使用 |
|---|---|
version | Detiente Nixインストーラーのバージョン。 |
planner | nixをインストールする方法( linux 、 macos 、 steam-deck ) |
configured_settings | デフォルトから変更されたプランナー設定の名前。値は含まれていません。 |
os_name | 実行中のオペレーティングシステム。 |
os_version | オペレーティングシステムのバージョン。 |
triple | システムのアーキテクチャ/オペレーティングシステム/バイナリ形式。 |
is_ci | インストーラーがCIで使用されているかどうか(GitHubアクションなど)。 |
action | InstallまたはUninstallいずれか。 |
status | Success 、 Failure 、 Pending 、またはCancelledの1つ。 |
attribution | オプションでユーザーによって定義され、この実行の診断を提供された値に関連付けます。 |
failure_chain | 故障が何であるかについての高レベルの説明。例: Command("diskutil")コマンドdiskutil listが失敗した場合。 |
診断レポートを無効にするには、 --diagnostic-endpoint=""を渡すか、 NIX_INSTALLER_DIAGNOSTIC_ENDPOINT=""を渡すことにより、診断URLを空の文字列に設定します。
ここでは、siginine nixインストーラーの作成者であるDetine Systemsの完全なプライバシーポリシーを読むことができます。