Open jackyliu16 opened 1 year ago
目前基本完成了nix flakes的配置,可以在nix环境下直接通过nix develop打开执行环境,尽可能的降低课程依赖的安装对于外界环境的影响也可以更好的移除,可能具有更好的平台适用性,但是我没测试过。
nix flakes
nix
nix develop
注意:使用本文的方法最好需要有一定nix的使用基础,以在可能出错的地方修改代码使之正常运行。(本文的代码尚未完全测试)
配置文件最新地址 如果在使用的过程中遇到了任何问题,欢迎回复(就是不一定我能解决
# update in 2023-05-24 21:26 { description = "A devShell for rCore"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # nixpkgs-qemu7.url = "https://github.com/NixOS/nixpkgs/archive/7cf5ccf1cdb2ba5f08f0ac29fc3d04b0b59a07e4.tar.gz"; rust-overlay.url = "github:oxalica/rust-overlay"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let overlays = [ (import rust-overlay) (self: super: { # ref: https://github.com/the-nix-way/dev-templates rust-toolchain = let rust = super.rust-bin; in if builtins.pathExists ./rust-toolchain.toml then rust.fromRustupToolchainFile ./rust-toolchain.toml else if builtins.pathExists ./rust-toolchain then rust.fromRustupToolchainFile ./rust-toolchain else # The rust-toolchain when i make this file, which maybe change (rust.nightly."2022-08-05".minimal.override { extensions = [ "rust-src" "llvm-tools-preview" "rustfmt" "clippy" ]; targets = [ "riscv64gc-unknown-none-elf" ]; }); }) ]; pkgs = import nixpkgs { inherit system overlays; }; # pkg-qemu = import nixpkgs-qemu7 { inherit system; }; in { devShells.default = pkgs.mkShell { buildInputs = (with pkgs;[ # Basic openssl pkg-config exa fd libclang # Cross Compile (with pkgsCross.riscv64; [ musl.stdenv.cc ]) # If use normally, no necessary need to change. # Rust Configuraiton rustup cargo-binutils rust-toolchain ]) ++ [ pkgs.qemu # pkg-qemu.qemu ]; shellHook = '' alias ls=exa alias find=fd ''; }; } ); }
注意:使用本文的方法最好需要有一定
nix
的使用基础,以在可能出错的地方修改代码使之正常运行。(本文的代码尚未完全测试)配置文件最新地址 如果在使用的过程中遇到了任何问题,欢迎回复(就是不一定我能解决