Nix 개발 환경의 느린 속도와 복잡성(Complexity) 문제를 해결하기 위해 devenv 2.0이 출시됨
터미널 UI(Terminal UI), 네이티브 쉘 리로딩(Native Shell Reloading), 프로세스 관리자(Process Manager) 등 다양한 기능 추가
폴리레포(Polyrepo) 지원 및 시크릿 관리(Secret Management) 기능으로 개발 환경 유연성 강화
일부 사용자는 기존의 플레인 플래그(Plain Flake) 방식 선호, TUI(Terminal UI) 비활성화 옵션 추가
devenv 2.0은 터미널 UI(Terminal UI)를 통해 Nix 빌드 과정을 시각적으로 보여준다. 개발자는 빌드 진행 상황, 의존성 관계, 에러 정보를 실시간으로 확인 가능하며, 네이티브 쉘 리로딩(Native Shell Reloading) 기능을 통해 파일 변경 시 쉘이 멈추는 문제를 해결했다. 이러한 개선 사항은 개발자의 개발 생산성(Developer Productivity)을 향상시키는 데 기여한다.
devenv 2.0은 내장된 Rust 프로세스 관리자(Process Manager)를 제공하여, process-compose를 대체한다. 이를 통해 개발 환경 내에서 프로세스 간의 의존성, 재시작 정책, 헬스 체크(Health Check) 등을 선언적으로 정의할 수 있다. 특히, 포트 할당(Port Allocation) 기능을 통해 포트 충돌 문제를 해결하고, 시크릿 관리(Secret Management) 기능을 통해 보안성을 강화했다.
devenv 2.0은 Nix CLI 호출을 최소화하기 위해 C FFI 백엔드를 사용한다. 이는 여러 개의 Nix 프로세스를 생성하는 대신, C API를 통해 Nix 평가기(Evaluator)를 직접 호출하여 속도를 향상시킨다. 또한, 평가 캐시(Evaluation Cache)를 통해 변경 사항이 없는 경우 캐시된 결과를 즉시 반환하여, 빌드 속도(Build Speed)를 더욱 개선한다.
devenv 2.0은 폴리레포(Polyrepo) 지원을 통해 여러 개의 Git 저장소를 사용하는 개발 환경을 지원한다. 또한, `--from` 옵션을 사용하여 `devenv.nix` 파일이 없는 프로젝트에서도 개발 환경을 구성할 수 있다. 이러한 기능은 다양한 프로젝트 구조를 가진 개발팀의 유연성(Flexibility)을 높이고, 개발 환경 설정의 재사용성(Reusability)을 향상시킨다.