100 lines
4.8 KiB
Nix
100 lines
4.8 KiB
Nix
{
|
|
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;
|
|
};
|
|
}
|