nixos-riscv/flake.nix

100 lines
4.8 KiB
Nix
Raw Normal View History

2023-06-24 14:56:10 +02:00
{
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;
};
}