112 lines
3.0 KiB
Nix
112 lines
3.0 KiB
Nix
|
|
# 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"
|
||
|
|
{ };
|
||
|
|
}
|
||
|
|
);
|
||
|
|
};
|
||
|
|
}
|