
지금까지 저는 nix-env -i
패키지를 설치하여 Nix 패키지 관리자를 사용해 보았습니다. 이제 다음과 같은 하나를 사용하여 관리하고 싶습니다 ~/configuration.nix
.여기 예, 내 도트 파일에 버전을 지정할 수 있습니다. 현재 환경에서 이 구성을 생성할 수 있는 방법이 있습니까?
nixos-generate-config
사용자 또는 시스템 수준 구성에 대해 찾을 수 있는 모든 정보는 NixOS에만 해당되며 파일을 생성하기 위해 실행했다고 가정합니다 . 이 도구는 nixpkgs에서 사용할 수 없기 때문에 이 도구는 NixOS 설치 생성에만 사용되며 일반 구성 파일 생성에는 사용되지 않는 것으로 보입니다.
또한 Nix 패키지 관리자가 설치 중에 이 파일을 생성하지 않는 이유는 무엇입니까? Nix(NixOS 아님) 사용자는 이 파일 없이 설치된 소프트웨어(예: Vim 플러그인)를 어떻게 구성합니까?
답변1
이 파일은 실제로 NixOS에만 해당되며 NixOS가 설치될 때 자동으로 생성됩니다. 즉, 해결책이 있습니다.
그 중 하나가 설명되어 있습니다.https://nixos.org/nixpkgs/manual/#sec-declarative-package-managementNixpkgs 매뉴얼에 있습니다. (추가됨이번 홍보.)
그 이후로 재정의 메커니즘이 등장했다는 점에 유의하세요.12장 중첩: "
packageOverrides
재정의는 Nixpkg를 사용자 정의하는 다른 방법, 특히 다음에 설명된 속성 과 유사합니다.6.5절. “패키지를 수정하여packageOverrides
”. 실제로packageOverrides
이는 super 매개변수와의 오버레이 역할만 합니다. 따라서 기본적인 사용에 적합하지만 더 강력하고 배포하기 쉬운 오버레이가 있습니다."또한 사용자 측 선언적 구성이 작업 중인 것으로 보이지만 한동안 업데이트되지 않았습니다.https://github.com/NixOS/nixpkgs/pull/9250
또한보십시오일반 사용자를 위한 선언적 패키지 관리NixOS 담론에 대한 토론.
답변2
다음과 같은 nix 표현식을 사용하여 "nix 쉘" 환경을 관리할 수 있습니다.
쉘.닉스
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [ pkgs.bash pkgs.zsh pkgs.curl pkgs.wget ];
}
그런 다음 이 환경에 "들어가려면" 다음을 실행하십시오.nix-shell shell.nix
답변3
configuration.nix
Ben Creasy가 제안한 도구를 사용하여 파일에 대해 [NixOS 문서](nixos-rebuild 스위치)에 설명된 작업 흐름을 복사할 수 있습니다.집 관리자.
NixOS가 아닌 Linux 배포판에 대한 옵션이 있습니다[1]:
targets.genericLinux.enable = true;
어느
NixOS가 아닌 Linux에서 nix 설치 소프트웨어를 쉽게 사용할 수 있도록 일부 환경 변수를 자동으로 설정합니다(로컬 문제 수정, XDG_DATA_DIRS 설정 등).
홈 관리자를 사용하여 패키지/프로그램을 선언적으로 관리할 수 있습니다. 다음은 home.nix
설명서의 최소 예입니다.
{ pkgs, ... }:
{
home.packages = [
pkgs.htop
pkgs.fortune
];
programs.emacs = {
enable = true;
extraPackages = epkgs: [
epkgs.nix-mode
epkgs.magit
];
};
programs.firefox = {
enable = true;
profiles = {
myprofile = {
settings = {
"general.smoothScroll" = false;
};
};
};
};
services.gpg-agent = {
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
};
programs.home-manager = {
enable = true;
path = "…";
};
}
home-manager switch
그런 다음 변경 사항을 적용합니다.