From 2f64b9960a7303ebaa7d55ef5fdd1792416fd2ff Mon Sep 17 00:00:00 2001 From: Astro Date: Wed, 8 Jun 2022 22:55:35 +0200 Subject: [PATCH] riscbert: init --- flake.lock | 21 ++++++++++++++++++ flake.nix | 14 +++++++++++- host-registry.nix | 2 ++ hosts/containers/nix-build/default.nix | 4 ++-- .../nix-build/{rpi-netboot.nix => tftp.nix} | 0 hosts/riscbert/default.nix | 22 +++++++++++++++++++ 6 files changed, 60 insertions(+), 3 deletions(-) rename hosts/containers/nix-build/{rpi-netboot.nix => tftp.nix} (100%) create mode 100644 hosts/riscbert/default.nix diff --git a/flake.lock b/flake.lock index ff8aa6b3..9847584a 100644 --- a/flake.lock +++ b/flake.lock @@ -387,6 +387,26 @@ "type": "github" } }, + "riscv64": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1647822145, + "narHash": "sha256-hN9oOPwR/mhUnhG2YLywUDFE51SpyBC8O8IOFSVPqbU=", + "owner": "zhaofengli", + "repo": "nixos-riscv64", + "rev": "f0b105b7671289c3fc17849532afe4fceb95bfd6", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "nixos-riscv64", + "type": "github" + } + }, "root": { "inputs": { "fenix": "fenix", @@ -400,6 +420,7 @@ "nixpkgs-openwebrx": "nixpkgs-openwebrx", "openwrt": "openwrt", "openwrt-imagebuilder": "openwrt-imagebuilder", + "riscv64": "riscv64", "scrapers": "scrapers", "secrets": "secrets", "sops-nix": "sops-nix", diff --git a/flake.nix b/flake.nix index e66f04dd..3e01fb37 100644 --- a/flake.nix +++ b/flake.nix @@ -82,9 +82,13 @@ openwrt-imagebuilder.follows = "openwrt-imagebuilder"; }; }; + riscv64 = { + url = "github:zhaofengli/nixos-riscv64"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = inputs@{ self, nixpkgs, secrets, nixos-hardware, zentralwerk, yammat, scrapers, spacemsg, tigger, ticker, heliwatch, sops-nix, naersk, fenix, microvm, ... }: + outputs = inputs@{ self, nixpkgs, secrets, nixos-hardware, zentralwerk, yammat, scrapers, spacemsg, tigger, ticker, heliwatch, sops-nix, naersk, fenix, microvm, riscv64, ... }: let inherit (nixpkgs) lib; forAllSystems = lib.genAttrs [ "aarch64-linux" "x86_64-linux" ]; @@ -602,6 +606,14 @@ ]; }; + riscbert = nixosSystem' { + modules = [ + riscv64.nixosModules.visionfive + ./hosts/riscbert + ]; + system = "riscv64-linux"; + }; + }; nixosModule = self.nixosModules.c3d2; diff --git a/host-registry.nix b/host-registry.nix index 8fafade0..a4280331 100644 --- a/host-registry.nix +++ b/host-registry.nix @@ -4,6 +4,8 @@ dacbert.ip4 = "dacbert.hq.c3d2.de"; dacbert.serial = "3c271952"; + riscbert.ip4 = "riscbert.c3d2.zentralwerk.org"; + dn42 = { ip4 = "172.22.99.253"; }; diff --git a/hosts/containers/nix-build/default.nix b/hosts/containers/nix-build/default.nix index fc049af3..32cb57f0 100644 --- a/hosts/containers/nix-build/default.nix +++ b/hosts/containers/nix-build/default.nix @@ -2,7 +2,7 @@ { imports = [ ./hardware-configuration.nix - ./rpi-netboot.nix + ./tftp.nix ]; networking.hostName = "nix-build"; # Define your hostname. @@ -28,7 +28,7 @@ cleanTmpDir = true; kernelModules = [ "kvm-intel" ]; - binfmt.emulatedSystems = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + binfmt.emulatedSystems = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" "riscv64-linux" ]; }; nix = { diff --git a/hosts/containers/nix-build/rpi-netboot.nix b/hosts/containers/nix-build/tftp.nix similarity index 100% rename from hosts/containers/nix-build/rpi-netboot.nix rename to hosts/containers/nix-build/tftp.nix diff --git a/hosts/riscbert/default.nix b/hosts/riscbert/default.nix new file mode 100644 index 00000000..3c0a699a --- /dev/null +++ b/hosts/riscbert/default.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: +{ + boot = { + loader.generic-extlinux-compatible.enable = true; + kernelParams = [ + "verbose" "shell_on_fail" + "elevator=deadline" + ]; + }; + + system.build.bootFiles = pkgs.runCommandNoCC "boot-files" {} '' + mkdir -p $out/boot + ${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d $out/boot + ''; + + networking.hostName = "dacbert"; + + fileSystems."/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + }; +}