diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-05 21:31:36 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-07 02:46:04 +0900 |
| commit | 72a931a71a4722c0e56b231d07787bef608ceedc (patch) | |
| tree | 7de0a75a8d091ceb78f89a040af79f9c806710f3 /flake.nix | |
| parent | 9a25542c6d23fd4dc12f25fa914e6f560f4d7324 (diff) | |
nix: interactive nixos vm
This is useful for quickly spinning up an ephemeral hakurei environment for testing changes or reproducing vm test failures.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -159,6 +159,53 @@ default = pkgs.mkShell { buildInputs = hakurei.targetPkgs; }; withPackage = pkgs.mkShell { buildInputs = [ hakurei ] ++ hakurei.targetPkgs; }; + vm = + let + nixos = nixpkgs.lib.nixosSystem { + inherit system; + modules = [ + { + environment = { + systemPackages = [ + (pkgs.buildFHSEnv { + pname = "hakurei-fhs"; + inherit (hakurei) version; + targetPkgs = _: hakurei.targetPkgs; + extraOutputsToInstall = [ "dev" ]; + profile = '' + export PKG_CONFIG_PATH="/usr/share/pkgconfig:$PKG_CONFIG_PATH" + ''; + }) + ]; + + hakurei = + let + # this is used for interactive vm testing during development, where tests might be broken + package = self.packages.${pkgs.system}.hakurei.override { + buildGoModule = previousArgs: pkgs.pkgsStatic.buildGoModule (previousArgs // { doCheck = false; }); + }; + in + { + inherit package; + hsuPackage = self.packages.${pkgs.system}.hsu.override { hakurei = package; }; + }; + }; + } + + ./test/interactive/configuration.nix + ./test/interactive/vm.nix + ./test/interactive/hakurei.nix + + self.nixosModules.hakurei + self.inputs.home-manager.nixosModules.home-manager + ]; + }; + in + pkgs.mkShell { + buildInputs = [ nixos.config.system.build.vm ]; + shellHook = "exec run-nixos-vm $@"; + }; + generateDoc = let inherit (pkgs) lib; |
