Degination Nix Installer - это быстрый, дружелюбный и надежный способ установки и управления NIX везде, включая MacOS, Linux, подсистема Windows для Linux (WSL), Selinux, палуба Valve Steam и многое другое. Он устанавливает NIX с помощью хлопьев, включенных по умолчанию, предлагает поддержку для беспроблемного удаления NIX, позволяет NIX выжить в обновлениях MacOS и многое другое.
Эта линия-самый быстрый способ начать работу в любой поддерживаемой системе:
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- installКончик
Чтобы установить определение, используя установщик, см. Инструкции ниже.
Detrinate Nix Installer успешно завершил более 7 миллионов установок в ряде средств, включая действия GitHub и Gitlab:
| Платформа | Многопользователь? | только root | Зрелость |
|---|---|---|---|
Linux ( x86_64 и aarch64 ) | ✓ (через Systemd) | ✓ | Стабильный |
MacOS ( x86_64 и aarch64 ) | ✓ | Стабильный (см. Примечание) | |
| Паровая палуба клапана (Steamos) | ✓ | Стабильный | |
Подсистема Windows для Linux 2 (WSL2) ( x86_64 и aarch64 ) | ✓ (через Systemd) | ✓ | Стабильный |
| Podman 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 Это установило бы NIX на систему x86_64-linux но вы можете заменить это на систему по вашему выбору.
Если вы находитесь на MacOS (но не Nix-Darwin) или Linux (но не Nixos), вы можете установить определение, используя Detuante Nix установщика, добавив флаг --determinate :
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --determinateКончик
Если вы используете NIX-DARWIN или NIXOS, мы рекомендуем установить Deginate с использованием модулей, предоставляемых determinate Flake.
Определить:
Detrinate 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В качестве альтернативы, вы можете удалить и переустановить с другой версией Deginate Nix Installer.
Вы можете удалить NIX, установленную Deginate NIX Установкой, запустив:
/nix/nix-installer uninstall Вы можете установить NIX на действия GitHub, используя nix-installer-action . Вот пример конфигурации:
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 не присутствует, поэтому вам нужно передать вариант --init none планировщику Linux.
На бегунах по умолчанию Gitlab Runners вы можете установить 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, вы все равно можете установить NIX, явно указав план linux и --init none .
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install linux --init none В контейнерах Docker/Podman или экземплярах WSL2, где init (например, systemd ) нет, пропустите --init none .
Для контейнеров (без инициирования):
Предупреждение
Когда --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-nixДля контейнеров с системным инициатором:
# 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 -- installЕсли WSLG включен, вы можете делать такие вещи, как открыть Linux Firefox из Windows на PowerShell:
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 делают хорошую работу, но их трудно поддерживать.
Тонкие различия в реализациях оболочки и инструменте, используемых в сценариях, затрудняют внесение значимых изменений в установщике.
Установка Degination NIX имеет многочисленные преимущества по сравнению с этими параметрами:
useradd ) при необходимостиPATH Было замечательно сотрудничать с другими участниками рабочей группы NIX Installer и членами более широкого сообщества. Рабочая группа поддерживает вилку установщика, принадлежащую фундаменту.
В то время как Detrinate Nix Installer пытается обеспечить комплексный и Unquirky Experience, есть, к сожалению, некоторые проблемы, которые могут потребовать ручного вмешательства или выбора операторов.
Если 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 предоставляет услугу org.nixos.activate-system , которая остается после удаления NIX. Служба 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-darwin Унсталлер не будет работать после удаления NIX, поскольку он использует NIX и требует сетевого подключения.
Можно разрешить эту ситуацию, удалив службу 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, сборка по умолчанию является статическим двоичным файлом.
Чтобы построить портативный двоичный файл Linux в системе с 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 "На 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 .
Примечание
В настоящее время нам требуется --cfg tokio_unstable , поскольку мы используем группы процессов TOKIO, которые обертывают стабильные APIS std , но являются нестабильными из -за него, требующих удара MSRV.
Предупреждение
Использование Detrinate Nix установщика в качестве библиотеки ржавчины все еще экспериментально. Эта функция, вероятно, будет удалена в будущем без адвоката. Если вы используете это, сообщите нам об этом, и мы можем предоставить путь к стабилизации.
Добавьте библиотеку nix-installer в свои зависимости:
cargo add nix-installer Если вы создаете CLI, ознакомьтесь с флагом функций cli для интеграции clap .
Вам также необходимо отредактировать ваш .cargo/config.toml для использования tokio_unstable , поскольку мы используем группы процессов Tokio, которые обертывают стабильные API std , но нестабильны из -за этого, требуя удара MSRV:
# .cargo/config.toml
[ build ]
rustflags =[ " --cfg " , " tokio_unstable " ] Вам также необходимо установить переменную среды NIX_INSTALLER_TARBALL_PATH , чтобы указать на подходящую для цели TARBALL NIX, например, NIX-2.21.2-AARCH64-DARWIN.TAR.XZ. Содержимое встроено в полученный бинар, а не загружается во время установки.
Тогда можно просмотреть документацию:
cargo doc --open -p nix-installer Документация также доступна через nix build :
nix build github:DeterminateSystems/nix-installer#nix-installer.doc
firefox result-doc/nix-installer/index.htmlВы можете прикрепить к конкретной версии Detrinate Nix Installer, изменяя URL -адрес загрузки. Вот пример:
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, используя --nix-package-url или NIX_INSTALLER_NIX_PACKAGE_URL= но это не рекомендуется, поскольку мы не проверяли эту комбинацию. Вот какой -то пример URL -адресов NIX Package, включая NIX версию, ОС и архитектуру:
Отличается от сценариев установщика NIX вверх по течению:
nix.conf :nix-command и flakes включеныbash-prompt-prefix установленauto-optimise-store установлен на true (только на Linux)always-allow-substitutes установлены на trueextra-nix-path установлен на nixpkgs=flake:nixpkgsmax-jobs установлен на autoupgrade-nix-store-path-url установлен по адресу https://install.determinate.systems/nix-upgrade/stable/universal , чтобы предотвратить непреднамеренные понижения./nix/receipt.json , а также копию установки Binary AT /nix/nix-installernix-channel --update не запускается, ~/.nix-channels не предоставляютсяssl-cert-file установлен в /etc/nix/nix.conf , если используется аргумент ssl-cert-file . Detrinate Nix Installer предоставляет множество настроек конфигурации, некоторые общие, а некоторые-для каждого команды. Все настройки доступны через флаги или через 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 | Устанавливает Deginate | 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 none nix будет только корневой). | launchd (macOS), systemd (Linux) | NIX_INSTALLER_INIT |
--nix-build-group-id | GID GID NIX BUILD GID | 350 (macOS), 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_GROUP_ID |
--nix-build-group-name | Название группы Nix Build | nixbld | NIX_INSTALLER_NIX_BUILD_GROUP_NAME |
--nix-build-user-count | Количество пользователей сборки для создания | 32 | NIX_INSTALLER_NIX_BUILD_USER_COUNT |
--nix-build-user-id-base | UID пользовательской базы NIX Build (ACPENDER) (Примечание: Первый UID будет этой базой + 1) | 350 (macOS), 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_USER_ID_BASE |
--nix-build-user-prefix | Префикс пользователя Nix Build (номера пользователей будут постфикс) | _nixbld (macos), nixbld (linux) | NIX_INSTALLER_NIX_BUILD_USER_PREFIX |
--nix-package-url | URL -адрес пакета NIX | 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 |
Вы также можете указать квитанцию об установке в качестве первого аргумента (по умолчанию IS /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 Pipeline и установщик собирают немного диагностической информации, чтобы помочь нам сделать это правдой.
Вот таблица диагностических данных, которые мы собираем:
| Поле | Использовать |
|---|---|
version | Версия Detrinate Nix Installer. |
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 . |
attribution | При желании определено пользователем, свяжите диагностику этого запуска с предоставленной стоимостью. |
failure_chain | Высокое описание того, что было в сбое, если таковые имеются. Например: Command("diskutil") , если diskutil list не удастся. |
Чтобы отключить диагностическую отчетность, установите URL-адрес диагностики на пустую строку, передавая --diagnostic-endpoint="" или настройка NIX_INSTALLER_DIAGNOSTIC_ENDPOINT="" .
Вы можете прочитать полную политику конфиденциальности для определяющих систем, создателей Detrinate Nix установщика, здесь.