(module-system-tutorial)=
# 모듈 시스템

Nixpkgs와 NixOS가 지닌 강력함의 상당 부분은 모듈 시스템에서 나옵니다.

모듈 시스템은 다음과 같은 일을 할 수 있게 해 주는 Nix 언어 라이브러리입니다.
- 여러 개의 개별 Nix 표현식을 사용하여 하나의 속성 집합을 선언합니다.
- 해당 속성 집합의 값에 타입 제약을 부여합니다.
- 서로 다른 Nix 표현식에서 같은 속성의 값을 정의하고, 이 값들을 타입에 따라 자동으로 병합합니다.

이러한 Nix 표현식을 모듈이라고 하며, 모듈은 특정한 구조를 갖추어야 합니다.

이 튜토리얼 시리즈에서는 다음 내용을 배웁니다.
- 모듈이란 무엇이며 모듈을 만드는 방법
- 옵션이란 무엇이며 옵션을 선언하는 방법
- 모듈 간의 의존성을 표현하는 방법

## 무엇이 필요합니까?

- 데이터 타입과 일반적인 프로그래밍 개념에 대한 이해
- 예제를 실행할 {ref}`Nix 설치 <install-nix>` 환경
- {ref}`Nix 언어 <reading-nix-language>`를 읽고 쓰는 중급 수준의 능숙도

## 얼마나 걸립니까?

이 튜토리얼은 매우 깁니다. 최소 3시간의 작업 시간을 준비하십시오.

```{toctree}
:maxdepth: 1
:caption: 강의
:numbered:
a-basic-module/index.md
deep-dive.md
```
