- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的一个可执行项目构建派生,它需要一个尚未在 nixpkgs channel 中的 Rust 版本,因此我构建了一个 nix 派生来安装我需要的那个版本:
{ mkDerivation, stdenv, fetchurl }:
rec {
version = "1.33.0";
platform = mkDerivation rec {
ver = version;
name = "rust-${ver}";
platform = if stdenv.system == "x86_64-linux" then "x86_64-unknown-linux-gnu"
else if stdenv.system == "x86_64-darwin" then "x86_64-apple-darwin"
else abort "unsupported platform";
pkgSha = if stdenv.system == "x86_64-linux" then "6623168b9ee9de79deb0d9274c577d741ea92003768660aca184e04fe774393f"
else if stdenv.system == "x86_64-darwin" then "864e7c074a0b88e38883c87c169513d072300bb52e1d320a067bd34cf14f66bd"
else abort "unsupported platform";
src = fetchurl {
url = "https://static.rust-lang.org/dist/rust-${ver}-${platform}.tar.gz";
sha256 = pkgSha;
};
phases = ["unpackPhase" "installPhase"];
installPhase = ''
mkdir -p $out
./install.sh --prefix=$out
'';
};
rustc = platform;
cargo = platform;
}
这对我来说很容易融入我的 shell 环境,因为我只需要包含 buildInputs = [ rust.rustc rust.cargo ]
,我马上就有了 Rust 1.33。
我使用carnix-0.9.8设置了Cargo.nix
、crates-io.nix
和crates-io.list
文件。因此,我依赖的库像任何其他派生一样安装到 nix 存储中,理论上我的构建过程最终根本不使用 Cargo。
我已经需要一个 macOS native 安全库,所以我已经创建了一个 default.nix
文件:
{ pkgs ? import <nixpkgs-18.09> {}
, unstable ? import <nixpkgs> {}
, stdenv ? pkgs.stdenv
, licenses ? pkgs.lib.licenses
, maintainers ? pkgs.stdenv.maintainers }:
let
rust = import ./nixpkgs/rust-1.33.nix {
mkDerivation = pkgs.stdenv.mkDerivation;
fetchurl = pkgs.fetchurl;
stdenv = pkgs.stdenv;
};
cratesIO = import ./crates-io.nix {
lib = stdenv.lib;
buildRustCrate = unstable.buildRustCrate;
buildRustCrateHelpers = unstable.buildRustCrateHelpers;
};
cargo = ...
frameworks = ...
security = ...
orizentic = (cargo.orizentic {}).override { ... };
in pkgs.symlinkJoin rec {
...
}
然后我设置了一个 build.rs
文件,如果用于构建的 Rust 版本不是至少 1.33.0 版本,该文件会出错。
如何将 我的 Rust 派生注入(inject) buildRustCrate
和 buildRustCrateHelpers
?
最佳答案
我最近遇到了类似的问题,所以我可以在这里提供我的方法。我的 rustc 版本来自 Mozilla overlay ,但我想差异应该很小。
{ moz_overlay ? builtins.fetchTarball https://github.com/mozilla/nixpkgs-ozilla/archive/master.tar.gz
, nixpkgs ? <nixpkgs>
}:
let
moz_nixpkgs = import "${nixpkgs}" { overlays = [ (import "${moz_overlay}") ]; };
rustc = (moz_nixpkgs.rustChannelOf { date = "2019-03-15"; channel = "nightly"; }).rust;
crates = (import ./Cargo.nix {
inherit (moz_nixpkgs) lib buildPlatform buildRustCrateHelpers fetchgit;
buildRustCrate = moz_nixpkgs.buildRustCrate.override {
inherit rustc; # I guess that injection happens here?
};
cratesIO = import ./nix/crates-io.nix {
inherit (moz_nixpkgs) lib buildRustCrate buildRustCrateHelpers;
};
});
in {
myapp = crates.myapp {};
}
关于rust - 我如何在 nixpkgs 派生中使用特定的 Rust 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787068/
在: n = import {}; n包含一个属性 n.pkgs ,它似乎也包含所有可用的包。那么n 之间有什么区别?和 n.pkgs ? 这似乎与 Nix 配置的修复点语义以及覆盖 nixpkgs
目前,我在使用依赖于它的另一个 Idris 包中与 nixpkg 一起安装的 Idris 包时遇到了一些问题。这两个包都在 Debian 系统上进行了测试,所以问题不在于 Idris 代码本身,而在于
我正在关注 this设置 nix 和 haskell-ng 的指南。但是当我走到这一步 nix-env -iA nixpkgs.haskellEnv 然后我得到错误: error: attribute
我有一个推导( default.nix )定义为: with import {}; let version = "7.5.1"; in stdenv.mkDerivation { name
我曾经使用 nix-env -qaP 来搜索一个 haskell 包。但是自从我前段时间更新了我的 nix channel 后,所有的 Haskell 包都消失了。 再具体一点: qs@BF:~$
查询hackage包时,the manual建议使用命令: $ nix-env -f "" -qaP -A haskellPackages 因此,我们在搜索 Haskell 包时将“事件 Nix 表达
我在 NixOS 上,试图编译一个需要 linenoise 的 c 项目库(它是 readline 的替代品)。但 linenoise 在 nixpkgs 中不可用。 所以,我正在尝试自己添加它。目前
我想覆盖 mkShell 的 stdenv 以使用 gcc10Stdenv。我看过 https://nixos.wiki/wiki/Using_Clang_instead_of_GCC ,它提供了覆盖
例如在下面(我假设它是一个 nix 表达式): (import {}).haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [ lens
我想从 github 添加一个包,就像在下面的示例中一样,但我不知道在哪里可以获得任何给定的 github 源所需的 sha256 哈希值(如下所示)。 有人可以解释一下 sha256 来自哪里,我如
我真的很喜欢 nixos/nix 的确定性,但我很难理解为我的使用定制包的最佳方法。我使用 nixpkgs.config.packageOverrides 属性取得的成功有限,但它很痛苦,我发现它失败
我真的很喜欢 nixos/nix 的确定性,但我很难理解为我的使用定制包的最佳方法。我使用 nixpkgs.config.packageOverrides 属性取得的成功有限,但它很痛苦,我发现它失败
我正在尝试为我的一个可执行项目构建派生,它需要一个尚未在 nixpkgs channel 中的 Rust 版本,因此我构建了一个 nix 派生来安装我需要的那个版本: { mkDerivation,
是否有一些 envvar 或类似的东西可以用来配置 ~/.config/nixpkgs/config.nix 的位置? 最佳答案 是的,可以使用 NIXPKGS_CONFIG 设置默认的 Nixpkg
我想将 nixpkgs 固定到一个非常新的修订版,例如 Haskell LTS-12.9 或其他东西。我想将 nix-build 用于 MacOS(达尔文)构建。 问题是大多数 Haskell 包都没
我正在尝试为 Nix 打包一个 python 应用程序,但我发现大多数文档都假设我想要打包一个库。 为了做到这一点,我查看了 Rednotebook 示例(除了我碰巧知道它是用 python 编写的之
基本上我正在使用这个: default.nix { nixpkgs ? import {}, compiler ? "ghc864" }: nixpkgs.pkgs.haskell.packages
我目前正在 NixOS 上开发 Yesod Web 应用程序。我正在使用一个 default.nix 文件,如 O'Charles' blog post 中所述。 : { haskellPackage
我正在编写一个 .nix 表达式,主要供 nix-shell 使用。 .我不知道该怎么做。请注意,这不在 NixOS 上,但我认为这不是很相关。 我正在查看的特定示例是我想获得 this versio
找到很多描述 callPackage 的来源和它的一些内部结构,但没有一个是指它的位置。这就像 Nix 最保守的 secret ,手册甚至似乎都在积极回避这个话题。我可以在给定的时间内找到它,但这是一
我是一名优秀的程序员,十分优秀!