(custom-binary-cache)=
# 사용자 지정 바이너리 캐시를 사용하도록 Nix 설정하기

Nix는 [`substituters`](https://nix.dev/manual/nix/latest/command-ref/conf-file.html#conf-substituters) 및 [`trusted-public-keys`](https://nix.dev/manual/nix/latest/command-ref/conf-file.html#conf-trusted-public-keys) 설정을 통해 바이너리 캐시를 단독으로 사용하거나 cache.nixos.org에 더해 추가로 사용하도록 설정할 수 있습니다.

:::{warning}
Nix는 설정된 공개 키에 대응하는 개인 키로 서명된 스토어 객체라면 요청된 것은 무엇이든 받아들입니다. 따라서 해당 개인 키에 접근할 수 있으면 임의의 파일을 Nix 스토어에 대체해 넣을 수 있습니다. 여기에는 높은 권한으로 실행되거나 자동으로 실행될 수 있는 실행 파일도 포함됩니다!

무조건 신뢰할 수 있는 공개 키만 추가하십시오.
:::

예를 들어 공개 키가 `My56...Q==%`인 바이너리 캐시가 `https://example.org`에 있고 `default.nix`에 어떤 derivation이 있다면, [설정을 명령줄 플래그로](https://nix.dev/manual/nix/latest/command-ref/conf-file#command-line-flags) 전달하여 Nix가 한 번만 해당 캐시를 단독으로 사용하게 할 수 있습니다:

```shell-session
$ nix-build --substituters https://example.org --trusted-public-keys example.org:My56...Q==%
```

공개 캐시보다 사용자 지정 캐시를 먼저 시도하도록 영구적으로 설정하려면, [Nix 설정 파일](https://nix.dev/manual/nix/latest/command-ref/conf-file#configuration-file)에 더 낮은 `priority` 값과 함께 `extra-substiters`로 추가하십시오:

```shell-session
$ echo "extra-substituters = https://example.org?priority=30" >> /etc/nix/nix.conf
$ echo "extra-trusted-public-keys = example.org:My56...Q==%" >> /etc/nix/nix.conf
```

항상 사용자 지정 캐시만 사용하려면 다음과 같이 하십시오:

```shell-session
$ echo "substituters = https://example.org" >> /etc/nix/nix.conf
$ echo "trusted-public-keys = example.org:My56...Q==%" >> /etc/nix/nix.conf
```

::::{admonition} NixOS
NixOS에서는 [`nix.settings`](https://search.nixos.org/options?show=nix.settings) 옵션을 통해 Nix를 설정합니다:

```nix
{ ... }: {
  nix.settings = {
    substituters = [ "https://example.org?priority=30" ];
    trusted-public-keys = [ "example.org:My56...Q==%" ];
  };
}
```
::::

## 다음 단계

- 튜토리얼을 따라 [자신만의 HTTP 바이너리 캐시를 구축하십시오](setup-http-binary-cache)

:::{tip}
외부 트래픽을 줄이려면 [원격 빌드 머신](distributed-build-setup-tutorial)을 우선 바이너리 캐시로 사용하십시오.
:::
