{ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.bscpkgs.url = "git+https://git.sr.ht/~rodarima/bscpkgs?ref=riscv-benchmarks"; # When changing bscpkgs, take directly from disk to avoid having to push: #inputs.bscpkgs.url = "/home/Computational/rarias/bscpkgs"; outputs = {self, nixpkgs, ...}@inputs: let system = "x86_64-linux"; nixosSystem = import (nixpkgs + "/nixos/lib/eval-config.nix"); in { #overlay = import ./overlay.nix; nixosConfigurations = { # The qemu configuration defines a system that runs in the RISC-V # architecture, but is build from an x86 host machine. qemu = nixosSystem { specialArgs = { inherit self; }; system = "${system}"; modules = [ ./configuration.nix ./vm.nix ]; }; # Same, but disable compressed instructions qemu-nc = nixosSystem { specialArgs = { inherit self; }; system = "${system}"; modules = [ ./configuration.nix ./vm.nix ./no-compressed.nix ]; }; # FPGA Lagarto Hun CPU lagarto-hun = nixosSystem { specialArgs = { inherit self; }; system = "${system}"; modules = [ ./configuration.nix ./lagarto-hun.nix ./no-compressed.nix ]; }; # FPGA Lagarto Ox CPU lagarto-ox = nixosSystem { specialArgs = { inherit self; }; system = "${system}"; modules = [ ./configuration.nix ./lagarto-ox.nix ./no-compressed.nix ]; }; }; # A development shell with QEMU ready to boot the RISC-V system in an x86 # machine. devShells.x86_64-linux.default = let nixosconf = self.nixosConfigurations.qemu-nc; syspkgs = nixosconf.pkgs; toplevel = nixosconf.config.system.build.toplevel; in syspkgs.mkShell { pname = "qemu-shell"; nativeBuildInputs = with syspkgs; [ qemu e2fsprogs ]; # Here we tell the run script where to find the system NIXOS_SYSTEM_TOPLEVEL = toplevel; OPENSBI = syspkgs.opensbi-uboot; }; devShells.x86_64-linux.lagarto-hun = let nixosconf = self.nixosConfigurations.lagarto-hun; syspkgs = nixosconf.pkgs; build = nixosconf.config.system.build; in syspkgs.mkShell { pname = "lagarto-hun-shell"; TOPLEVEL = build.toplevel; OPENSBI = syspkgs.opensbi; KERNEL = build.kernel; INITRD = build.initialRamdisk; ROOTFS = build.sdImage; UBOOT_ENV = syspkgs.uboot-env; shellHook = '' echo "Here are the current system pieces:" echo " TOPLEVEL = $TOPLEVEL" echo " KERNEL = $KERNEL" echo " OPENSBI = $OPENSBI" echo " INITRD = $INITRD" echo " ROOTFS = $ROOTFS" echo " UBOOT_ENV = $UBOOT_ENV" ''; }; devShells.x86_64-linux.lagarto-ox = let nixosconf = self.nixosConfigurations.lagarto-ox; syspkgs = nixosconf.pkgs; build = nixosconf.config.system.build; in syspkgs.mkShell { pname = "lagarto-ox-shell"; TOPLEVEL = build.toplevel; OPENSBI = syspkgs.opensbi; KERNEL = build.kernel; INITRD = build.initialRamdisk; ROOTFS = build.sdImage; UBOOT_ENV = syspkgs.uboot-env; BITSTREAM = syspkgs.bitstream; BOOTROM = syspkgs.bootrom; shellHook = '' echo "Here are the current system pieces:" echo " TOPLEVEL = $TOPLEVEL" echo " KERNEL = $KERNEL" echo " OPENSBI = $OPENSBI" echo " INITRD = $INITRD" echo " ROOTFS = $ROOTFS" echo " UBOOT_ENV = $UBOOT_ENV" echo " BITSTREAM = $BITSTREAM" echo " BOOTROM = $BOOTROM" ''; }; devShells.x86_64-linux.lagarto-ox-rd = self.outputs.devShells.x86_64-linux.lagarto-ox.overrideAttrs (old:{ TOPLEVEL = ""; ROOTFS = ""; }); }; }