# nix build .#computer.vm # result/bin/run-nixbsd-base-vm { description = "NixBSD Flake"; inputs = { nixpkgs.url = "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"; # nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixbsd = { url = "github:nixos-bsd/nixbsd"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixbsd, ... }@inputs: let forAllSystems = func: builtins.listToAttrs ( map (system: { name = system; value = func system; }) nixpkgs.lib.systems.flakeExposed ); makeImage = buildPlatform: conf: let extended = conf.extendModules { modules = [ { config.nixpkgs.buildPlatform = buildPlatform; } ]; }; in extended.config.system.build // { # appease `nix flake show` type = "derivation"; name = "system-build"; closureInfo = extended.pkgs.closureInfo { rootPaths = [ extended.config.system.build.toplevel.drvPath ]; }; vmClosureInfo = extended.pkgs.closureInfo { rootPaths = [ extended.config.system.build.vm.drvPath ]; }; system = extended.config.system.build.toplevel; inherit (extended) pkgs config; }; in { nixosConfigurations.computer = nixbsd.lib.nixbsdSystem { system = "x86_64-freebsd"; modules = [ ( { config, lib, ... }: { nixpkgs.hostPlatform = "x86_64-freebsd"; networking.hostName = "computer"; users.users.root.initialPassword = "toor"; # Don't make me wait for an address... networking.dhcpcd.wait = "background"; users.users.talexander = { isNormalUser = true; description = "me"; extraGroups = [ "wheel" ]; inherit (config.users.users.root) initialPassword; }; services.sshd.enable = true; boot.loader.stand-freebsd.enable = true; fileSystems."/" = { device = "/dev/gpt/nixos"; fsType = "ufs"; }; fileSystems."/boot" = { device = "/dev/msdosfs/ESP"; fsType = "msdosfs"; }; virtualisation.vmVariant.virtualisation.diskImage = "./${config.system.name}.qcow2"; system.stateVersion = "26.11"; } ) ]; }; packages = forAllSystems ( system: nixpkgs.lib.mapAttrs (name: makeImage system) self.nixosConfigurations // { tools = nixpkgs.legacyPackages.${system}.callPackages "${nixbsd}/modules/installer/tools/package.nix" { }; } ); }; }