각종 트러블슈팅 기록

kernel module

커널 모듈은 /run/current-system/kernel-modules/lib/modules/$(uname -r) 에 위치한다.

oci-containers

:latest 태그로 컨테이너를 선언하여도, nixos-rebuild에서 업데이트 된 이미지가 있는지 체크해주지 않는다. 직접 podman pull 로 새 이미지를 받아오고, 서비스를 restart 해야한다.

자동으로 latest 컨테이너를 업데이트하는 것이 별로 신경쓰이지 않는다면, systemd 서비스를 만들어서 등록해주자.

Remote Builds

tldr

nixos-rebuild --build-host id@example.com switch --flake "path#output"
  • root 가 remote 서버의 접속할 수 있어야 한다.

트러블 슈팅

다음과 같은 이슈가 있을 때.

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is required

remote build 에서는 nix-storesudo 로 실행하는데, 이때 패스워드 입력이 안되서 생기는 문제이다. 리모트 빌드를 받는 전용 계정(builder 로 명명) 생성 후, nix-storeNOPASSWD 로 실행할 수 있도록 sudo` 설정을 해주는 것으로 해결하였다.

security.sudo.extraConfig = ''
      builder ALL=NOPASSWD: ${pkgs.nix}/bin/nix-store
'';

그리고 보안을 위해 passwd -l builderbuilder 로 로그인하는 것을 제한적으로 막았다.

참고자료