diff --git a/flake.nix b/flake.nix index ec07434..2fc43bb 100644 --- a/flake.nix +++ b/flake.nix @@ -1,19 +1,49 @@ -{ - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/25.11"; +{ inputs = { + flake-utils.url = "github:numtide/flake-utils/v1.0.0"; + + nixpkgs.url = "github:NixOS/nixpkgs/23.11"; }; - outputs = - { self, nixpkgs }: - { - packages.x86_64-linux.default = - (nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + outputs = { flake-utils, nixpkgs, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages."${system}"; - modules = [ - "${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix" - ./module.nix - ]; - }).config.system.build.vm; - }; + base = { lib, modulesPath, ... }: { + imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; + + # https://github.com/utmapp/UTM/issues/2353 + networking.nameservers = lib.mkIf pkgs.stdenv.isDarwin [ "8.8.8.8" ]; + + virtualisation = { + graphics = false; + + host = { inherit pkgs; }; + }; + }; + + machine = nixpkgs.lib.nixosSystem { + system = builtins.replaceStrings [ "darwin" ] [ "linux" ] system; + + modules = [ base ./module.nix ]; + }; + + program = pkgs.writeShellScript "run-vm.sh" '' + export NIX_DISK_IMAGE=$(mktemp -u -t nixos.qcow2) + + trap "rm -f $NIX_DISK_IMAGE" EXIT + + ${machine.config.system.build.vm}/bin/run-nixos-vm + ''; + + in + { packages = { inherit machine; }; + + apps.default = { + type = "app"; + + program = "${program}"; + }; + } + ); }