DeMination Nix Installer는 MacOS, Linux, Linux (WSL), Selinux, Selinux 용 Windows 서브 시스템, 밸브 스팀 데크 등을 포함하여 Nix를 설치하고 관리하는 빠르고 친숙하며 안정적인 방법입니다. 기본적으로 플레이크를 사용하여 Nix를 설치하고 Nix를 원활하게 제거하는 데 도움이되며 Nix가 MacOS 업그레이드를 생존 할 수 있습니다.
이 1 라이너는 지원되는 모든 시스템을 시작하는 가장 빠른 방법입니다.
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install팁
설치 프로그램을 사용하여 결정을 설치하려면 아래 지침을 참조하십시오.
결정 Nix Installer는 Github Actions 및 Gitlab을 포함한 여러 환경에서 7 백만 개 이상의 설치를 성공적으로 완료했습니다.
| 플랫폼 | 다중 사용자? | root 만 | 성숙함 |
|---|---|---|---|
Linux ( x86_64 및 aarch64 ) | ✓ (시스템을 통해) | ✓ | 안정적인 |
MacOS ( x86_64 및 aarch64 ) | ✓ | 안정 (참고 참조) | |
| 밸브 스팀 데크 (스팀 오스) | ✓ | 안정적인 | |
Linux 2의 Windows 서브 시스템 (WSL2) ( x86_64 및 aarch64 ) | ✓ (시스템을 통해) | ✓ | 안정적인 |
| Podman Linux 컨테이너 | ✓ (시스템을 통해) | ✓ | 안정적인 |
| 도커 컨테이너 | ✓ | 안정적인 |
이 스크립트를 실행하여 기본 플래너 및 옵션으로 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 플래그를 추가하여 Dectinate Nix Installer를 사용하여 Dectinate를 설치할 수 있습니다.
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix |
sh -s -- install --determinate팁
Nix-Darwin 또는 Nixos를 사용하는 경우 determinate 플레이크가 제공하는 모듈을 사용하여 결정된 설치하는 것이 좋습니다.
결정은 다음과 같습니다.
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또는 다른 버전의 결정 Nix 설치 프로그램으로 제거하고 다시 설치할 수 있습니다.
실행을 통해 DeMinate Nix Installer가 설치 한 Nix를 제거 할 수 있습니다.
/nix/nix-installer uninstall nix-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 Runners는 일반적으로 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 none docker/podman 컨테이너 또는 init (예 : systemd )가 존재하지 않는 WSL2 인스턴스에서는 --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-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 시스템을 활성화하는 것이 옵션이 아닌 경우, 명령 끝에 없음 --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 Installer Working Group의 다른 참가자 및 광범위한 커뮤니티 회원과 협력하는 것은 훌륭했습니다. 실무 그룹은 설치 프로그램의 기초 소유 포크를 유지합니다.
결정적인 NIX 설치 프로그램은 포괄적이고 Quirky 경험을 제공하려고하지만 불행히도 수동 개입 또는 운영자 선택이 필요한 몇 가지 문제가 있습니다.
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 서비스는 새로 설치된 닉스와 상호 작용하고 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-darwin Unstaller가 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를 설치하므로 기본 빌드는 정적 이진입니다.
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 실행하려는 컴퓨터에 복사하십시오. 걱정할 시스템 종속성이 없으므로화물을 사용하지 않고 시스템에 설치 프로그램을 추가 할 수도 있습니다.
# 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 옵션을 전달하십시오.
메모
우리는 현재 Tokio의 프로세스 그룹을 사용하여 안정적인 std API를 감싸지 만 MSRV 범프가 필요하기 때문에 --cfg tokio_unstable 합니다.
경고
Decinate Nix Installer를 녹이 라이브러리로 사용하는 것은 여전히 실험적입니다. 이 기능은 옹호자없이 미래에 제거 될 것입니다. 이것을 사용하는 경우 알려 주시면 안정화 경로를 제공 할 수 있습니다.
nix-installer 라이브러리를 종속성에 추가하십시오.
cargo add nix-installer CLI를 구축하는 경우 clap 통합을 위해 cli 기능 플래그를 확인하십시오.
또한 Tokio의 프로세스 그룹을 사용하여 안정적인 std API를 감싸지 tokio_unstable MSRV 범프가 필요 .cargo/config.toml 때문에 불안정합니다.
# .cargo/config.toml
[ build ]
rustflags =[ " --cfg " , " tokio_unstable " ] 또한 Nix-2.21.2-aarch64-darwin.tar.xz와 같은 대상에 적합한 NIX 설치 TARBALL을 가리 키도록 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을 수정하여 특정 버전의 Dectiome Nix Installer를 고정 할 수 있습니다. 예는 다음과 같습니다.
VERSION= " v0.6.0 "
curl --proto ' =https ' --tlsv1.2 -sSf -L https://install.determinate.systems/nix/tag/ ${VERSION} |
sh -s -- install사용 가능한 버전을 발견하거나 릴리스에 대한 Binaries를 다운로드하려면 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.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 에 저장되고 /nix/nix-installer 의 설치 바이너리의 사본을 저장합니다.nix-channel --update 실행되지 않으며 ~/.nix-channels 프로비저닝되지 않습니다ssl-cert-file 인수가 사용되는 경우 ssl-cert-file File은 /etc/nix/nix.conf 로 설정됩니다. 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 | Decinate를 설치합니다 | 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 | 구성 할 시스템이 시작됩니다 (If --init none Nix는 루트 전용입니다) | launchd (MacOS), systemd (Linux) | NIX_INSTALLER_INIT |
--nix-build-group-id | 닉스 빌드 그룹 GID | 350 (MacOS), 30000 (Linux) | NIX_INSTALLER_NIX_BUILD_GROUP_ID |
--nix-build-group-name | 닉스 빌드 그룹 이름 | 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 | 닉스 빌드 사용자 접두사 (사용자 번호는 우편화됩니다) | _nixbld (MACOS), nixbld (Linux) | NIX_INSTALLER_NIX_BUILD_USER_PREFIX |
--nix-package-url | 닉스 패키지 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를 가져 오는 데 사용되며 /etc/nix/nix.conf 에서 ssl-cert-file 설정합니다 | 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 | 결정 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 중 하나입니다. |
attribution | 선택적으로 사용자가 정의하면이 실행의 진단을 제공된 값에 연결합니다. |
failure_chain | 실패가 무엇인지에 대한 높은 수준의 설명. 예를 들면 : Command("diskutil") 명령 diskutil list 실패한 경우. |
진단보고를 비활성화하려면 --diagnostic-endpoint="" 또는 설정 NIX_INSTALLER_DIAGNOSTIC_ENDPOINT="" 통과시켜 진단 URL을 빈 문자열로 설정하십시오.
결정 시스템에 대한 전체 개인 정보 보호 정책, Decientinate Nix Installer의 제작자 인 여기에서 읽을 수 있습니다.