{ description = "My visionfive 2 setup"; inputs = { nixpkgs.url = "github:NickCao/nixpkgs/riscv"; # https://github.com/NickCao/nixpkgs/tree/riscv #nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; # https://github.com/nixos/nixpkgs/tree/nixos-22.11 #unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; # https://github.com/nixos/nixpkgs/tree/nixpkgs-unstable nickcao-rv64.url = "github:NickCao/nixos-riscv"; # https://github.com/NickCao/nixos-riscv nickcao-rv64.inputs.nixpkgs.follows = "nixpkgs"; #nickcao-rv64.url = "path:../nickcao-nixos-riscv"; # broken: https://github.com/NixOS/nix/issues/3978 #zhao-rv64.url = "github:zhaofengli/nixos-riscv64"; # https://github.com/zhaofengli/nixos-riscv64 }; outputs = { self, nixpkgs, nickcao-rv64, ...}@inputs: let nixlib = nixpkgs.lib; overlays = nixlib.mapAttrsToList (name: val: val) self.overlays; hostname = hostname: { networking.hostName = hostname; networking.domain = "pbsds.net"; }; in { #hydraJobs = {} overlays = { nickcao = nickcao-rv64.overlay; #default = (final: prev: {}); }; nixosModules.generic-boot = { boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; }; nixosModules.rv64 = { system = "riscv64-unknown-linux-gnu"; #nixpkgs.overlays = [ self.overlays.nickcao ]; }; nixosModules.rv64-cross = { nixpkgs.localSystem.config = "x86_64-unknown-linux-gnu"; nixpkgs.crossSystem.config = "riscv64-unknown-linux-gnu"; #nixpkgs.overlays = [ self.overlays.nickcao ]; }; nixosModules.nvme-image = { config, lib, pkgs, modulesPath , ... }: { system.build.nvmeImage = import "${modulesPath}/../lib/make-disk-image.nix" { inherit config lib pkgs; diskSize = 8*1024; # megabytes # TODO: zstd format = "raw"; # one of qcow2, qcow2-compressed, vdi, vpc, raw. installBootLoader = true; partitionTableType = "efi"; # TODO: make this thing able to rebuild configFile = pkgs.writeText "configuration.nix" '' { imports = [ <./machine-config.nix> ]; } ''; }; boot.growPartition = true; boot.initrd.kernelModules = [ "nvme" ]; /** / boot.loader.grub.efiSupport = true; boot.loader.grub.efiInstallAsRemovable = true; boot.loader.grub.device = "nodev"; /**/ fileSystems."/boot" = { device = "/dev/nvme0n1p1"; fsType = "vfat"; }; fileSystems."/" = { device = "/dev/nvme0n1p2"; fsType = "ext4"; }; }; nixosModules.sd-image = { config, lib, pkgs, modulesPath, ... }: { imports = [ "${modulesPath}/installer/sd-card/sd-image.nix" ]; sdImage.populateFirmwareCommands = ""; sdImage.populateRootCommands = '' mkdir -p ./files/boot ${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot ''; }; nixosModules.nickcao-common = "${nickcao-rv64.outPath}/common.nix"; # is equal to: generic-boot + sd-image + rv64-cross nixosModules.nickcao-unmatched = "${nickcao-rv64.outPath}/unmatched.nix"; nixosModules.nickcao-visionfive = "${nickcao-rv64.outPath}/visionfive.nix"; nixosModules.nickcao-visionfive2 = "${nickcao-rv64.outPath}/visionfive2.nix"; nixosModules.nickcao-qemu = "${nickcao-rv64.outPath}/qemu.nix"; nixosModules.base = { nixpkgs.overlays = overlays; imports = [ ./configuration.nix ]; }; # TODO: gunder # nixos-rebuild --flake .#NAME nixosConfigurations.qemu = nickcao-rv64.nixosConfigurations.qemu.extendModules { modules = with self.nixosModules; [ base ]; }; nixosConfigurations.asgaut = nixpkgs.lib.nixosSystem { modules = with self.nixosModules; [ base (hostname "asgaut") nickcao-visionfive2 ]; }; nixosConfigurations.asgaut-nvme = nixpkgs.lib.nixosSystem { modules = with self.nixosModules; [ base (hostname "asgaut") nickcao-visionfive2 generic-boot rv64-cross nvme-image ]; }; nixosConfigurations.asgaut-sd = nixpkgs.lib.nixosSystem { modules = with self.nixosModules; [ base (hostname "asgaut") nickcao-visionfive2 generic-boot rv64-cross sd-image ]; }; nixosConfigurations.asgaut-sd2 = nixpkgs.lib.nixosSystem { modules = with self.nixosModules; [ base (hostname "asgaut") nickcao-visionfive2 nickcao-common ]; }; # nix build .#images.NAME . images.asgaut-nvme = self.nixosConfigurations.asgaut-nvme.config.system.build.nvmeImage; images.asgaut-sd = self.nixosConfigurations.asgaut-sd .config.system.build.sdImage; images.asgaut-sd2 = self.nixosConfigurations.asgaut-sd2 .config.system.build.sdImage; # nix build .#riscv64-linux.NAME-sd-image #packages.riscv64-linux.asgaut-sd-image = self.nixosConfigurations.gunder.config.system.build.sdImage; }; }