summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix195
1 files changed, 106 insertions, 89 deletions
diff --git a/flake.nix b/flake.nix
index c2bcf13..8d1be5f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,105 +5,122 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
- outputs = { self, fenix-flake, flake-utils, nixpkgs }:
- flake-utils.lib.eachSystem [ "aarch64-linux" "x86_64-linux" ] (system:
- let
- pkgsBuild = nixpkgs.legacyPackages.${system};
- pkgsHost = import nixpkgs {
- inherit system;
- crossSystem.config = "riscv64-unknown-none-elf";
- };
- fenix = fenix-flake.packages.${system};
+ outputs =
+ {
+ self,
+ fenix-flake,
+ flake-utils,
+ nixpkgs,
+ }:
+ flake-utils.lib.eachSystem
+ [
+ "aarch64-linux"
+ "x86_64-linux"
+ ]
+ (
+ system:
+ let
+ pkgsBuild = nixpkgs.legacyPackages.${system};
+ pkgsHost = import nixpkgs {
+ inherit system;
+ crossSystem.config = "riscv64-unknown-none-elf";
+ };
+ fenix = fenix-flake.packages.${system};
- toolchain = fenix.combine [
- fenix.stable.cargo
- fenix.stable.rustc
- fenix.stable.clippy
- fenix.targets.riscv64gc-unknown-none-elf.stable.rust-std
- ];
- rust = pkgsHost.makeRustPlatform {
- cargo = toolchain;
- rustc = toolchain;
- };
+ toolchain = fenix.combine [
+ fenix.stable.cargo
+ fenix.stable.rustc
+ fenix.stable.clippy
+ 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;
+ packages = rec {
+ boards = import ./boards {
+ inherit libkernel;
+ pkgs = pkgsHost;
+ };
+ libkernel = pkgsBuild.callPackage ./kernel { inherit rust; };
};
- libkernel = pkgsBuild.callPackage ./kernel { inherit rust; };
- };
- run-vm = pkgsBuild.writeShellApplication {
- name = "run-vm";
+ run-vm = pkgsBuild.writeShellApplication {
+ name = "run-vm";
- runtimeInputs = [ pkgsBuild.qemu ];
+ runtimeInputs = [ pkgsBuild.qemu ];
- text = ''
- set -x
- qemu-system-riscv64 \
- -machine virt \
- -m 1G \
- -nographic \
- -bios none \
- -kernel ${packages.boards.qemu-virt}/kernel.elf \
- "$@"
- '';
- };
- in {
- apps = {
- default = {
- type = "app";
- program = pkgsBuild.lib.getExe run-vm;
+ text = ''
+ set -x
+ qemu-system-riscv64 \
+ -machine virt \
+ -m 1G \
+ -nographic \
+ -bios none \
+ -kernel ${packages.boards.qemu-virt}/kernel.elf \
+ "$@"
+ '';
};
+ in
+ {
+ apps = {
+ default = {
+ type = "app";
+ program = pkgsBuild.lib.getExe run-vm;
+ };
- run = {
- type = "app";
- program = pkgsBuild.lib.getExe run-vm;
- };
+ 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 "$@"
- '';
- });
- };
+ 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"
- '';
- });
+ 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 {
- inputsFrom =
- builtins.attrValues (flake-utils.lib.flattenTree packages);
- nativeBuildInputs = [
- pkgsBuild.cargo-watch
- pkgsBuild.qemu
- pkgsHost.stdenv.cc.bintools.bintools
- ];
- CARGO_BUILD_TARGET = "riscv64gc-unknown-none-elf";
- };
+ devShells.default = pkgsBuild.mkShell {
+ inputsFrom = builtins.attrValues (flake-utils.lib.flattenTree packages);
+ nativeBuildInputs = [
+ pkgsBuild.cargo-watch
+ pkgsBuild.qemu
+ pkgsHost.stdenv.cc.bintools.bintools
+ ];
+ CARGO_BUILD_TARGET = "riscv64gc-unknown-none-elf";
+ };
- packages = flake-utils.lib.flattenTree packages;
- });
+ packages = flake-utils.lib.flattenTree packages;
+ }
+ );
}