NixOS

NixOS 는 리눅스 배포판 중 하나로, 평소 잘 아는 Debian, Red Hat(RHEL) 등과는 별도의 계열을 가지는 배포판이다. Nix 패키지 관리 시스템 을 기반으로 설계되어, 아래와 같은 특성을 가진다.

  • 재현성: 소프트웨어 패키지를 격리된 환경에서 빌드하고, 의존성을 통제해 높은 재현성을 확보한다. 실제 작성 시에도 외부 패키지들의 버전을 세밀하게 기록하여 재현에 차질이 없도록 한다.
  • 선언적: 소프트웨어 패키징에 특화된 선언적 프로그래밍 언어 Nix를 사용한다.
  • 신뢰성: 한 패키지를 업데이트하는 일이 다른 패키지를 망가뜨리지 않도록 보장한다.

Nix를 사용하여 나의 로컬 기기 세팅을 명세화해두면, 추후 마이그레이션 등에서 큰 이점을 가져올 수 있다.

nix-darwin

NixOS의 Mac 버전이라고 생각하면 쉽다. 맥북의 설정들과 패키지들을 기록하기 위해 사용한다.

home-manager

Nix 를 사용하는 경우, 하드웨어 단 까지의 시스템 설정을 포괄 적용할 수 있는 Nix 이외에 사용자 별 설정을 적용할 수 있는 추가 레이어가 존재하고, 이곳에 사용자 별 설정을 관리하기 위한 home-manager라는 도구가 존재한다.

일반적으로 전역 설정이 필요하거나 시스템 설정이 필요한 경우에 nix-darwin 관련 configuration파일에 저장하고, 그렇지 않은 유저 별 설정들의 경우 home-manager에 설정한다.


전반적으로, 문서가 단일되어있다거나 생각보다 친절하다거나,,,올바른 레퍼런스가 있다거나 하는 경우가 아직은 많지 않은 듯 하다.. 처음 온보딩이 조금 헷갈리지만 몇 번 헷갈리면 충분히 해둘만 한 설정들인 것 같다. 나중에 마이그레이션할 나를 위해서!!