diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 164 |
1 files changed, 86 insertions, 78 deletions
@@ -20,104 +20,112 @@ ( system: let - pkgsBuild = nixpkgs.legacyPackages.${system}; - pkgsHost = import nixpkgs { - inherit system; - crossSystem.config = "riscv64-unknown-none-elf"; - }; + pkgs = nixpkgs.legacyPackages.${system}; fenix = fenix-flake.packages.${system}; - toolchain = fenix.combine [ + rust-toolchain = fenix.combine [ fenix.stable.cargo fenix.stable.rustc fenix.stable.clippy - fenix.targets.riscv64gc-unknown-none-elf.stable.rust-std + # fenix.targets.riscv64gc-unknown-none-elf.stable.rust-std ]; - rust = pkgsHost.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; - - packages = rec { - boards = import ./boards { - inherit libkernel; - pkgs = pkgsHost; - }; - libkernel = pkgsBuild.callPackage ./kernel { inherit rust; }; + rust = pkgs.makeRustPlatform { + cargo = rust-toolchain; + rustc = rust-toolchain; }; - run-vm = pkgsBuild.writeShellApplication { - name = "run-vm"; - - runtimeInputs = [ pkgsBuild.qemu ]; - text = '' - set -x - qemu-system-riscv64 \ - -machine virt \ - -m 1G \ - -nographic \ - -bios none \ - -kernel ${packages.boards.qemu-virt}/kernel.elf \ - "$@" - ''; - }; + packages = { }; in - { - apps = { - default = { - type = "app"; - program = pkgsBuild.lib.getExe run-vm; + /* + pkgsHost = import nixpkgs { + inherit system; + crossSystem.config = "riscv64-unknown-none-elf"; }; - run = { - type = "app"; - program = pkgsBuild.lib.getExe run-vm; + packages = rec { + boards = import ./boards { + inherit libkernel; + pkgs = pkgsHost; + }; + libkernel = pkgsBuild.callPackage ./kernel { inherit rust; }; }; + run-vm = pkgsBuild.writeShellApplication { + name = "run-vm"; + + runtimeInputs = [ pkgsBuild.qemu ]; - debug = { - type = "app"; - program = pkgsBuild.lib.getExe ( - pkgsBuild.writeShellApplication { - name = "run-vm-debug"; - runtimeInputs = [ run-vm ]; - text = '' - port=$(( 1000 * ("$(id -u)" - 990) )) - run-vm -gdb tcp::$port -S "$@" - ''; - } - ); + text = '' + set -x + qemu-system-riscv64 \ + -machine virt \ + -m 1G \ + -nographic \ + -bios none \ + -kernel ${packages.boards.qemu-virt}/kernel.elf \ + "$@" + ''; }; + */ + { + /* + apps = { + default = { + type = "app"; + program = pkgsBuild.lib.getExe run-vm; + }; - gdb = { - type = "app"; - program = pkgsBuild.lib.getExe ( - pkgsBuild.writeShellApplication { - name = "gdb"; - runtimeInputs = [ toolchain ]; - text = '' - port=$(( 1000 * ("$(id -u)" - 990) )) - rust-gdb ${packages.boards.qemu-virt}/kernel.elf \ - -ex "target remote 127.0.0.1:$port" \ - -ex "set riscv use-compressed-breakpoints yes" \ - -ex "layout asm" \ - -ex "layout regs" \ - -ex "focus cmd" \ - -ex "tbreak hart0_boot" \ - -ex "c" - ''; - } - ); + run = { + type = "app"; + program = pkgsBuild.lib.getExe run-vm; + }; + + debug = { + type = "app"; + program = pkgsBuild.lib.getExe ( + pkgsBuild.writeShellApplication { + name = "run-vm-debug"; + runtimeInputs = [ run-vm ]; + text = '' + port=$(( 1000 * ("$(id -u)" - 990) )) + run-vm -gdb tcp::$port -S "$@" + ''; + } + ); + }; + + gdb = { + type = "app"; + program = pkgsBuild.lib.getExe ( + pkgsBuild.writeShellApplication { + name = "gdb"; + runtimeInputs = [ toolchain ]; + text = '' + port=$(( 1000 * ("$(id -u)" - 990) )) + rust-gdb ${packages.boards.qemu-virt}/kernel.elf \ + -ex "target remote 127.0.0.1:$port" \ + -ex "set riscv use-compressed-breakpoints yes" \ + -ex "layout asm" \ + -ex "layout regs" \ + -ex "focus cmd" \ + -ex "tbreak hart0_boot" \ + -ex "c" + ''; + } + ); + }; }; - }; + */ - devShells.default = pkgsBuild.mkShell { + devShells.default = pkgs.mkShell { inputsFrom = builtins.attrValues (flake-utils.lib.flattenTree packages); nativeBuildInputs = [ - pkgsBuild.cargo-watch - pkgsBuild.qemu - pkgsHost.stdenv.cc.bintools.bintools + (pkgs.callPackage ./nix/miri.nix { inherit fenix; }) + pkgs.cargo-watch + pkgs.qemu + rust-toolchain + # pkgsHost.stdenv.cc.bintools.bintools ]; - CARGO_BUILD_TARGET = "riscv64gc-unknown-none-elf"; + # CARGO_BUILD_TARGET = "riscv64gc-unknown-none-elf"; }; packages = flake-utils.lib.flattenTree packages; |