diff --git a/.vscode/settings.json b/.vscode/settings.json index 25a357c..15cc4cb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -128,6 +128,7 @@ "maxtime", "mechatroner", "mediainfo", + "microvm", "mklabel", "mkpart", "modesetting", diff --git a/flake.nix b/flake.nix index 584e60d..4135384 100644 --- a/flake.nix +++ b/flake.nix @@ -33,8 +33,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - system_tools = { - url = "github:RichieCahill/system_tools"; + microvm = { + url = "github:astro/microvm.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -47,6 +47,10 @@ url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + system_tools = { + url = "github:RichieCahill/system_tools"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { @@ -56,6 +60,7 @@ systems, nixos-cosmic, sops-nix, + microvm, ... } @ inputs: let inherit (self) outputs; @@ -71,10 +76,35 @@ in { inherit lib; overlays = import ./overlays {inherit inputs outputs;}; - devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;}); formatter = forEachSystem (pkgs: pkgs.alejandra); + emulated-dev = nixpkgs.lib.nixosSystem { + # host system + system = "x86_64-linux"; + modules = let + guestSystem = "aarch64-unknown-linux-gnu"; + # you can use packages in the guest machine with cross system configuration + pkgs = import nixpkgs { + system = "x86_64-linux"; + crossSystem.config = guestSystem; + }; + in [ + {nixpkgs.crossSystem.config = guestSystem;} + microvm.nixosModules.microvm + { + microvm = { + # you can choose what CPU will be emulated by qemu + cpu = "cortex-a53"; + hypervisor = "qemu"; + }; + environment.systemPackages = with pkgs; [ cowsay htop ]; + services.getty.autologinUser = "root"; + system.stateVersion = "23.11"; + } + ]; + }; + nixosConfigurations = { bob = lib.nixosSystem { modules = [ diff --git a/systems/jeeves/runners/default.nix b/systems/jeeves/runners/default.nix index 6c5dc30..f7c7beb 100644 --- a/systems/jeeves/runners/default.nix +++ b/systems/jeeves/runners/default.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { - imports = [ ./nix_builder.nix ]; + imports = [ + ./nix_builder.nix + ]; users = { users.github-runners = { diff --git a/systems/jeeves/runners/nix_builder.nix b/systems/jeeves/runners/nix_builder.nix index 69cf27b..ea78f35 100644 --- a/systems/jeeves/runners/nix_builder.nix +++ b/systems/jeeves/runners/nix_builder.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, inputs, lib, ... }: with lib; @@ -6,6 +6,8 @@ let vars = import ../vars.nix; in { + imports = [ inputs.microvm.nixosModules.microvm ]; + options.services.nix_builder.containers = mkOption { type = types.attrsOf (types.submodule ({ name, ... }: { options.enable = mkEnableOption "GitHub runner container"; @@ -81,3 +83,4 @@ in } ) config.services.nix_builder.containers; } +