Determinasi NIX Installer adalah cara yang cepat, ramah, dan andal untuk menginstal dan mengelola NIX di mana -mana, termasuk macOS, Linux, Subsistem Windows untuk Linux (WSL), Selinux, Dek Steam Valve, dan banyak lagi. Ini menginstal Nix dengan serpihan yang diaktifkan secara default, ia menawarkan dukungan untuk menghapus nix yang mulus, memungkinkan Nix untuk selamat dari peningkatan macOS, dan banyak lagi.
One-liner ini adalah cara tercepat untuk memulai sistem yang didukung:
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installTip
Untuk menginstal Determinate menggunakan penginstal, lihat instruksi di bawah ini.
Penentuan NIX Installer telah berhasil menyelesaikan lebih dari 7 juta pemasangan di sejumlah lingkungan, termasuk tindakan GitHub dan GitLab:
| Platform | Multi pengguna? | root saja | Kematangan |
|---|---|---|---|
Linux ( x86_64 dan aarch64 ) | ✓ (via SystemD) | ✓ | Stabil |
MacOS ( x86_64 dan aarch64 ) | ✓ | Stabil (lihat catatan) | |
| Dek uap katup (Steamos) | ✓ | Stabil | |
Subsistem Windows untuk Linux 2 (WSL2) ( x86_64 dan aarch64 ) | ✓ (via SystemD) | ✓ | Stabil |
| Podman Linux Containers | ✓ (via SystemD) | ✓ | Stabil |
| Wadah Docker | ✓ | Stabil |
Anda dapat menginstal NIX dengan perencana dan opsi default dengan menjalankan skrip ini:
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installUntuk mengunduh Biner Installer Platform Specific sendiri:
curl -sL -o nix-installer https://install.determinate.systems/nix/nix-installer-x86_64-linux
chmod +x nix-installer
./nix-installer Ini akan menginstal NIX pada sistem x86_64-linux tetapi Anda dapat menggantinya dengan sistem pilihan Anda.
Jika Anda menggunakan macOS (tetapi tidak nix-darwin) atau linux (tetapi bukan nixos), Anda dapat menginstal penentuan menggunakan installer nix determinate dengan menambahkan flag --determinate :
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --determinateTip
Jika Anda menggunakan Nix-Darwin atau Nixos, kami sarankan menginstal Determinate menggunakan modul yang disediakan oleh determinate Flake.
Determinasi adalah:
Menentukan NIX Installer menginstal NIX dengan mengikuti paket yang dibuat oleh perencana . Untuk meninjau perencana yang tersedia:
/nix/nix-installer install --helpPerencana memiliki opsi dan default mereka sendiri, berbagi sebagian besar dari mereka. Untuk melihat opsi untuk Linux, misalnya:
/nix/nix-installer install linux --helpAnda dapat mengonfigurasi perencana menggunakan variabel lingkungan atau argumen perintah:
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 4000Lihat Pengaturan Penginstal di bawah ini untuk daftar lengkap opsi.
Memiliki masalah dengan installer? Konsultasikan dengan panduan pemecahan masalah kami untuk melihat apakah masalah Anda tercakup.
Anda dapat meningkatkan NIX ke versi NIX yang kami rekomendasikan saat ini dengan menjalankan:
sudo -i nix upgrade-nixSebagai alternatif, Anda dapat menghapus dan menginstal ulang dengan versi yang berbeda dari pemasang NIX yang ditentukan.
Anda dapat menghapus nix yang diinstal oleh penentuan nix installer dengan menjalankan:
/nix/nix-installer uninstall Anda dapat menginstal NIX pada tindakan GitHub menggunakan nix-installer-action . Inilah contoh konfigurasi:
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 . Pelari Gitlab CI biasanya berbasis Docker dan dijalankan sebagai pengguna root . Ini berarti bahwa systemd tidak ada, jadi Anda perlu melewati --init none opsi untuk perencana Linux.
Pada pelari gitlab default, Anda dapat menginstal NIX menggunakan konfigurasi ini:
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
- helloJika Anda menggunakan pelari yang berbeda, contoh di atas mungkin perlu disesuaikan.
Peringatan
Ketika --init none yang digunakan, hanya root atau pengguna yang dapat meningkatkan ke hak istimewa root yang dapat menjalankan NIX:
sudo -i nix run nixpkgs#hello Jika Anda tidak menggunakan SystemD, Anda masih dapat menginstal NIX dengan secara eksplisit menentukan Paket linux dan --init none :
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install linux --init none Dalam wadah Docker/Podman atau instance WSL2 di mana init (seperti systemd ) tidak ada, lulus --init none .
Untuk wadah (tanpa init):
Peringatan
Ketika --init none yang digunakan, hanya root atau pengguna yang dapat meningkatkan ke hak istimewa root yang dapat menjalankan 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-nixUntuk wadah dengan init SystemD:
# 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 Dengan beberapa alat wadah, seperti Docker, Anda dapat menghilangkan sandbox = false . Menghilangkan ini akan berdampak negatif terhadap kompatibilitas dengan alat wadah seperti Podman.
Kami sangat merekomendasikan SystemD yang memungkinkan terlebih dahulu dan kemudian menginstal NIX seperti biasa:
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installJika WSLG diaktifkan, Anda dapat melakukan hal -hal seperti membuka Linux Firefox dari Windows di PowerShell:
wsl nix run nixpkgs # firefox Untuk menggunakan beberapa aplikasi OpenGL, Anda dapat menggunakan nixGL (perhatikan bahwa beberapa aplikasi, seperti blender , mungkin tidak berfungsi):
wsl nix run -- impure github:guibou / nixGL nix run nixpkgs # obs-studio Jika mengaktifkan SystemD bukan suatu opsi, lulus --init none di akhir perintah:
Peringatan
Ketika --init none yang digunakan, hanya root atau pengguna yang dapat meningkatkan ke hak istimewa root yang dapat menjalankan NIX:
sudo -i nix run nixpkgs#hellocurl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install linux --init none Jika Anda ingin memotong langkah konfirmasi, Anda dapat menerapkan bendera --no-confirm :
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --no-confirmIni sangat berguna saat menggunakan penginstal dalam skrip non-interaktif.
Skrip instalasi NIX yang ada melakukan pekerjaan dengan baik tetapi sulit untuk dipertahankan.
Perbedaan halus dalam implementasi shell dan alat yang digunakan dalam skrip membuatnya sulit untuk membuat perubahan yang bermakna pada penginstal.
Determinasi NIX Installer memiliki banyak keunggulan dibandingkan opsi ini:
useradd ) bila perluPATH Sungguh luar biasa berkolaborasi dengan peserta lain di Nix Installer Working Group dan anggota komunitas yang lebih luas. Kelompok kerja mempertahankan garpu pemasang yang dimiliki fondasi.
Sementara penentuan NIX Installer mencoba memberikan pengalaman yang komprehensif dan tidak tidak unik, sayangnya ada beberapa masalah yang mungkin memerlukan intervensi manual atau pilihan operator.
Jika Nix sebelumnya tidak diinstal tanpa menghapus pemasangan Nix-Darwin terlebih dahulu, Anda mungkin mengalami kesalahan yang mirip dengan ini:
nix shell nixpkgs#curl
error: unable to download ' https://cache.nixos.org/g8bqlgmpa4yg601w561qy2n576i6g0vh.narinfo ' : Problem with the SSL CA cert (path ? access rights ? ) (77) Ini terjadi karena nix-darwin menyediakan layanan org.nixos.activate-system yang tetap setelah NIX tidak diinstal. Layanan org.nixos.activate-system dalam keadaan ini berinteraksi dengan NIX yang baru diinstal dan mengubah sertifikat SSL yang digunakannya sebagai symlink yang rusak.
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 Masalahnya diperparah oleh masalah bahwa nix-darwin Uninstaller tidak akan bekerja setelah menghapus pemasangan NIX, karena menggunakan NIX dan membutuhkan konektivitas jaringan.
Dimungkinkan untuk menyelesaikan situasi ini dengan menghapus org.nixos.activate-system Service dan 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.crtJalankan penginstal lagi dan itu harus berhasil.
Versi terkini dari penginstal akan menolak untuk menghapus instalan sampai Nix-Darwin dihapus terlebih dahulu, membantu mengurangi masalah ini.
Karena Anda akan menggunakan penginstal untuk menginstal NIX pada sistem tanpa NIX, build default adalah biner statis.
Untuk membangun biner Linux portabel di sistem dengan NIX:
# 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 "Di 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 " Kemudian salin result/bin/nix-installer ke mesin yang ingin Anda jalankan. Anda juga dapat menambahkan penginstal ke sistem tanpa nix menggunakan kargo, karena tidak ada dependensi sistem yang perlu dikhawatirkan:
# 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 Untuk membuat ini dibangun portabel, lulus opsi --target x86_64-unknown-linux-musl .
Catatan
Kami saat ini memerlukan --cfg tokio_unstable saat kami menggunakan grup proses Tokio, yang membungkus API std yang stabil, tetapi tidak stabil karena membutuhkan benjolan MSRV.
Peringatan
Menggunakan pemasang NIX yang ditentukan sebagai perpustakaan karat masih eksperimental. Fitur ini kemungkinan akan dihapus di masa depan tanpa advokat. Jika Anda menggunakan ini, beri tahu kami dan kami dapat memberikan jalur untuk stabilisasi.
Tambahkan pustaka nix-installer ke dependensi Anda:
cargo add nix-installer Jika Anda membangun CLI, lihat bendera fitur cli untuk integrasi clap .
Anda juga harus mengedit .cargo/config.toml Anda untuk menggunakan tokio_unstable saat kami menggunakan grup proses Tokio, yang membungkus API std yang stabil, tetapi tidak stabil karena membutuhkan benjolan MSRV:
# .cargo/config.toml
[ build ]
rustflags =[ " --cfg " , " tokio_unstable " ] Anda juga harus mengatur variabel lingkungan NIX_INSTALLER_TARBALL_PATH untuk menunjuk ke tarball instalasi NIX yang sesuai target, seperti NIX-2.21.2-aarch64-darwin.tar.xz. Konten tertanam dalam biner yang dihasilkan alih -alih diunduh pada waktu instalasi.
Maka dimungkinkan untuk meninjau dokumentasi:
cargo doc --open -p nix-installer Dokumentasi juga tersedia melalui nix build :
nix build github:DeterminateSystems/nix-installer#nix-installer.doc
firefox result-doc/nix-installer/index.htmlAnda dapat menyematkan ke versi spesifik dari pentahapan NIX Installer dengan memodifikasi URL unduhan. Inilah contohnya:
VERSION= " v0.6.0 "
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix/tag/ ${VERSION} |
sh -s -- installUntuk menemukan versi mana yang tersedia, atau mengunduh binari untuk rilis apa pun, periksa rilis GitHub.
Anda dapat mengunduh dan menggunakan rilis ini secara langsung. Inilah contohnya:
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 installSetiap versi penginstal memiliki versi NIX yang didukung terkait - jika Anda menyematkan versi penginstal, Anda juga akan secara tidak langsung menjepit versi NIX terkait.
Anda juga dapat mengganti versi NIX menggunakan --nix-package-url atau NIX_INSTALLER_NIX_PACKAGE_URL= tetapi melakukan ini tidak disarankan karena kami belum menguji kombinasi itu. Berikut adalah beberapa contoh URL paket NIX, termasuk versi NIX, OS, dan arsitektur:
Berbeda dari skrip penginstal NIX hulu:
nix.conf :nix-command and flakes diaktifkanbash-prompt-prefix ditetapkanauto-optimise-store diatur ke true (hanya di Linux)always-allow-substitutes diatur ke trueextra-nix-path diatur ke nixpkgs=flake:nixpkgsmax-jobs diatur ke autoupgrade-nix-store-path-url diatur ke https://install.determinate.systems/nix-upgrade/stable/universal , untuk mencegah penurunan peringkat yang tidak disengaja./nix/receipt.json serta salinan instalasi biner AT /nix/nix-installernix-channel --update tidak dijalankan, ~/.nix-channels tidak disediakanssl-cert-file diatur dalam /etc/nix/nix.conf jika argumen ssl-cert-file digunakan. Determinate Nix Installer menyediakan berbagai pengaturan konfigurasi, beberapa umum dan beberapa berdasarkan perintah per. Semua pengaturan tersedia melalui bendera atau melalui NIX_INSTALLER_* Variabel Lingkungan.
Pengaturan ini tersedia untuk semua perintah.
| Bendera | Keterangan | Default (jika ada) | Variabel Lingkungan |
|---|---|---|---|
--log-directives | Penelusuran arahan yang dibatasi oleh koma | NIX_INSTALLER_LOG_DIRECTIVES | |
--logger | Logger mana yang akan digunakan (opsi yang compact , full , pretty , dan json ) | compact | NIX_INSTALLER_LOGGER |
--verbose | Aktifkan log debug, ( -vv untuk jejak) | false | NIX_INSTALLER_VERBOSITY |
nix-installer install )| Bendera | Keterangan | Default (jika ada) | Variabel Lingkungan |
|---|---|---|---|
--determinate | Instalasi Determinate | NIX_INSTALLER_DETERMINATE | |
--diagnostic-attribution | Hubungkan diagnostik instal dengan nilai tertentu | NIX_INSTALLER_DIAGNOSTIC_ATTRIBUTION | |
--diagnostic-endpoint | URL atau jalur file untuk diagnostik instalasi untuk dikirim | https://install.determinate.systems/nix/diagnostic | NIX_INSTALLER_DIAGNOSTIC_ENDPOINT |
--explain | Berikan penjelasan tentang perubahan yang akan dilakukan oleh proses instalasi untuk sistem Anda | false | NIX_INSTALLER_EXPLAIN |
--extra-conf | Baris Konfigurasi Ekstra untuk /etc/nix.conf | NIX_INSTALLER_EXTRA_CONF | |
--force | Apakah penginstal harus secara paksa membuat ulang file, ia menemukan ada | false | NIX_INSTALLER_FORCE |
--init | Sistem init mana yang akan dikonfigurasi (jika --init none nix akan hanya root) | launchd (MacOS), systemd (Linux) | NIX_INSTALLER_INIT |
--nix-build-group-id | Nix Build Group Gid | 350 (MacOS), 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_GROUP_ID |
--nix-build-group-name | Nama Grup Bangun Nix | nixbld | NIX_INSTALLER_NIX_BUILD_GROUP_NAME |
--nix-build-user-count | Jumlah pengguna yang dibangun untuk membuat | 32 | NIX_INSTALLER_NIX_BUILD_USER_COUNT |
--nix-build-user-id-base | Nix Build Basis Pengguna UID (Ascending) (Catatan: UID pertama akan menjadi basis ini + 1) | 350 (MacOS), 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_USER_ID_BASE |
--nix-build-user-prefix | Awalan Pengguna Build Nix (Nomor Pengguna akan diposting) | _nixbld (macos), nixbld (linux) | NIX_INSTALLER_NIX_BUILD_USER_PREFIX |
--nix-package-url | URL Paket NIX | NIX_INSTALLER_NIX_PACKAGE_URL | |
--no-confirm | Jalankan instalasi tanpa memerlukan konfirmasi pengguna eksplisit | false | NIX_INSTALLER_NO_CONFIRM |
--no-modify-profile | Ubah Profil Pengguna untuk secara otomatis memuat NIX. | true | NIX_INSTALLER_MODIFY_PROFILE |
--proxy | Proxy untuk digunakan (jika ada); Basis proxy yang valid adalah https://$URL , http://$URL dan socks5://$URL | NIX_INSTALLER_PROXY | |
--ssl-cert-file | Sertifikat SSL untuk digunakan (jika ada); digunakan untuk mengambil nix dan mengatur ssl-cert-file di /etc/nix/nix.conf | NIX_INSTALLER_SSL_CERT_FILE | |
--no-start-daemon | Mulailah daemon (jika tidak --init none ) | true | NIX_INSTALLER_START_DAEMON |
Anda juga dapat menentukan perencana dengan argumen pertama:
nix-installer install < plan > Atau, Anda dapat menggunakan variabel lingkungan NIX_INSTALLER_PLAN :
NIX_INSTALLER_PLAN= < plan > nix-installer installnix-installer uninstall )| Bendera | Keterangan | Default (jika ada) | Variabel Lingkungan |
|---|---|---|---|
--explain | Berikan penjelasan tentang perubahan yang akan dilakukan oleh proses instalasi untuk sistem Anda | false | NIX_INSTALLER_EXPLAIN |
--no-confirm | Jalankan instalasi tanpa memerlukan konfirmasi pengguna eksplisit | false | NIX_INSTALLER_NO_CONFIRM |
Anda juga dapat menentukan tanda terima instalasi sebagai argumen pertama (defaultnya adalah /nix/receipt.json ):
nix-installer uninstall /path/to/receipt.jsonnix-installer plan )| Bendera | Keterangan | Default (jika ada) | Variabel Lingkungan |
|---|---|---|---|
--out-file | Tempat menulis rencana yang dihasilkan (dalam format JSON) | /dev/stdout | NIX_INSTALLER_PLAN_OUT_FILE |
nix-installer repair )| Bendera | Keterangan | Default (jika ada) | Variabel Lingkungan |
|---|---|---|---|
--no-confirm | Jalankan instalasi tanpa memerlukan konfirmasi pengguna eksplisit | false | NIX_INSTALLER_NO_CONFIRM |
nix-installer self-test ) nix-installer self-test hanya mengambil pengaturan umum.
Tujuan penentuan penginstal NIX adalah untuk berhasil dan tepat menginstal NIX. The curl | sh Pipeline dan pemasang mengumpulkan sedikit informasi diagnostik untuk membantu kami membuatnya benar.
Berikut adalah tabel data diagnostik yang kami kumpulkan:
| Bidang | Menggunakan |
|---|---|
version | Versi Pemasang Nix Determinasi. |
planner | Metode menginstal NIX ( linux , macos , steam-deck ) |
configured_settings | Nama -nama pengaturan perencana yang diubah dari default mereka. Tidak termasuk nilainya. |
os_name | Sistem operasi yang berjalan. |
os_version | Versi sistem operasi. |
triple | Sistem arsitektur/operasi/format biner sistem Anda. |
is_ci | Apakah penginstal sedang digunakan dalam CI (misalnya tindakan GitHub). |
action | Baik Install atau Uninstall . |
status | Salah satu Success , Failure , Pending , atau Cancelled . |
attribution | Secara opsional didefinisikan oleh pengguna, kaitkan diagnostik berjalan ke nilai yang disediakan. |
failure_chain | Deskripsi tingkat tinggi tentang apa kegagalannya, jika ada. Misalnya: Command("diskutil") Jika diskutil list perintah gagal. |
Untuk menonaktifkan pelaporan diagnostik, atur URL diagnostik ke string kosong dengan melewati --diagnostic-endpoint="" atau pengaturan NIX_INSTALLER_DIAGNOSTIC_ENDPOINT="" .
Anda dapat membaca Kebijakan Privasi Lengkap untuk Sistem Determinate, pencipta pemasang NIX yang ditentukan, di sini.