나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-02-04 14:28:04

Nix

NIX에서 넘어옴


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
동음이의어에 대한 내용은 닉스(동음이의어) 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
<colbgcolor=#7eb9e3><colcolor=#fff> Nix
파일:nix.svg
종류 패키지 매니저, 프로그래밍 언어
출시 2003년 6월 15일
최초 개발자 엘코 돌스트라
개발 NixOS Team
언어 C++
플랫폼 Linux, Darwin, FreeBSD
버전 2.25.4
라이선스 GNU 약소 일반 공중 사용 허가서 2.1
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 특징3. 문법4. 환경5. 패키징6. nixpkgs
6.1. channel
7. flakes8. 파생 소프트웨어
8.1. NixOS8.2. nix-darwin

[clearfix]

1. 개요

리눅스Darwin 운영체제용 선언적, 재현적 패키지 관리자.

2. 특징

전역 설치밖에 할 수 없는 다른 리눅스 패키지 관리자들과는 다르게, 모든 패키지를 /nix/store 하위의 독립된 디렉토리에 설치한다. 개별 버전의 패키지는 전부 고유한 해시 값을 가지며, 따라서 버전이 올라가면 store 하위의 폴더 이름도 바뀌어, 새로운 공간에 설치된다. 종속성 또한 이러한 해시를 가지고 있으며, 따라서 같은 이름의 서로 다른 버전의 라이브러리를 동시에 설치하거나, 여러 프로그램이 각각이 찾는 버전의 라이브러리를 링크하는 일도 가능하다.

3. 문법

튜토리얼

패키지를 정의하기 위해 자체적인 도메인 특화 언어를 가지고 있으며, 이를 이용해 패키지와 설정을 모두 정의한다. JSON과 매우 닯았다.

속성 집합(attribute sets)이 핵심적인 자료구조로, 다음과 같이 정의한다.
{ key1 = val1; key2 = val2; }
이 때 집합을 정의하면서 자신이 이미 가진 key의 값을 참조해 다른 key의 값을 정의하는 것도 가능한데, 이를 재귀적 정의라고 한다. 재귀적 정의를 하기 위해선 rec 키워드를 붙여야 한다.
rec {
  one = 1;
  two = one + 1;
}

함수는 으레 함수형 언어들이 그렇듯 커링(currying) 활용을 위해 단 하나의 인자만 받는다.[1] :의 왼쪽에 오는 식별자가 인자, 우측에 오는 식별자가 치환(replace)될 표현식(expression)이다.
x: x + 1
여러 인자를 받는다면 커링을 활용한다.
x: y: x + y

4. 환경

5. 패키징

6. nixpkgs

파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg

Nix 패키지들의 중앙 레지스트리. .nix 패키지들의 Git 저장소 형태로 구성되어 있으며, 현재 약 10만개가 넘는 패키지를 보유하고 있다. nixpkgs 저장소 자체는 패키지 정의 소스 파일들만 포함하고, 실제 각 플랫폼별로 빌드된 derivations 바이너리는 자체 CI 시스템인 hydra에 캐시된다.

6.1. channel

#

안정 상태 정책에 따라 nixpkgs 저장소의 특정 리비전을 가르키는 브랜치. 대표적으로 매일 업데이트되는 unstable이 있으며, nixos기준으로 6개월마다 한번씩 관리되는 메이저 버전이 존재한다.

nixpkgs가 아닌 추가(extra) 채널도 사용할 수 있는데, 대표적인 예시가 home-manager. primary채널을 설정하기 위해선 channel alias를 nixpkgs또는 nixos로 설정해야 한다.

7. flakes

공식 위키

2019년부터 개발되어 2021년부터 실험적 기능(experimental feature)으로 도입된 신기능으로, 핵심적으로 nixpkgs에서 모든 종속성의 버전을 고정하는 기능을 추가한다.

8. 파생 소프트웨어

8.1. NixOS

파일:상세 내용 아이콘.svg   자세한 내용은 NixOS 문서
번 문단을
부분을
참고하십시오.

8.2. nix-darwin

파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg

Nix 패키지 매니저 및 NixOS 정의 구조를 Darwin 커널에도 적용하는 프로젝트.
[1] A function always takes exactly one argument. Argument and function body are separated by a colon