나는 주로 nix-shell
에 의해 사용될 .nix 표현식을 쓰고있다. 어떻게해야할지 모르겠다. 이것은 NixOS에있는 것이 아니라는 점에 유의하십시오. 그러나 나는 이것이 매우 적절하다고 생각하지 않습니다.nix-shell이 nix 표현식에서 nixpkgs 파생물 이름을 가져 오는 방법은 무엇입니까?
내가 찾고 있어요 특정 예를 들어 내가 보이는 this version-dependent name 싶어한다는 것입니다 :
let
pkgs = import <nixpkgs> {};
stdenv = pkgs.stdenv;
# idea_name = assert pkgs.jetbrains.idea-ultimate.name != ""; pkgs.jetbrains.idea-ultimate.name;
in rec {
scalaEnv = stdenv.mkDerivation rec {
name = "scala-env";
builder = "./scala-build.sh";
shellHook = ''
alias cls=clear
'';
CLANG_PATH = pkgs.clang + "/bin/clang";
CLANGPP_PATH = pkgs.clang + "/bin/clang++";
# A bug in the nixpkgs openjdk (#29151) makes us resort to Zulu OpenJDK for IDEA:
# IDEA_JDK = pkgs.openjdk + "/lib/openjdk";
# PATH = "${pkgs.jetbrains.idea-ultimate}/${idea_name}/bin:$PATH";
IDEA_JDK = /usr/lib/jvm/zulu-8-amd64;
# IDEA_JDK = /opt/zulu8.23.0.3-jdk8.0.144-linux_x64;
# IDEA_JDK = /usr/lib/jvm/java-8-openjdk-amd64;
buildInputs = with pkgs; [
ammonite
boehmgc
clang
emacs
jetbrains.idea-ultimate
less
libunwind
openjdk
re2
sbt
stdenv
unzip
zlib
];
};
}
내가 PATH
설정 주석있다 :
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "2017.2.2"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jdk.tar.gz";
sha256 = "b8eb9d612800cc896eb6b6fbefbf9f49d92d2350ae1c3c4598e5e12bf93be401"; /* updated by script */
};
wmClass = "jetbrains-idea";
update-channel = "IDEA_Release";
};
내 괜찬 식을 다음입니다 그것은 let
에서 idea_name
을 얻는 것에 달려 있습니다. 흥미로운 부수적 인 메모로서, 내가 주석 처리하지 않은 상태로두면 bash
을 실행할 수 없다는 것에 대해 nix-shell
을 실행할 때 매우 기괴한 오류가 발생합니다. 나는 또한 let
idea_name = pkgs.jetbrains.idea-ultimate.name;
의 더 간단한 경우를 시도했지만 idea_name
이 PATH
설정에 사용 된 경우 나중에 idea_name
이 정의되지 않아 종료되지 않습니다.
업데이트 :
나는 nix-instantiate
으로 탐구하기 시작했다, 그러나 관심의 유도가 비어 보인다 의도가 괜찬아 쉘 환경에 idea-ultimate
을 얻을 경우
[nix-shell:/nix/store]$ nix-instantiate --eval --xml -E "((import <nixpkgs> {}).callPackage ./3hk87pqgl2qdqmskxbhy23cyr24q8g6s-nixpkgs-18.03pre114739.d0d905668c/nixpkgs/pkgs/applications/editors/jetbrains { }).idea-ultimate";
<?xml version='1.0' encoding='utf-8'?>
<expr>
<derivation>
<repeated />
</derivation>
</expr>
나는 어설 션이 실패한 이유를 이해하기 위해'nix-shell --verbose --verbose --verbose --verbose --verbose --show-trace' 인쇄 된 정보의 양은 그 정보가 주장 값을 포함하지 않는다. – bbarker