-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
77 lines (68 loc) · 2.29 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{
description = "NixOS in MicroVMs";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.openhab.url = "gitlab:peterhoeg/openhab-flake";
inputs.openhab.inputs.nixpkgs.follows = "nixpkgs";
inputs.microvm.url = "github:astro/microvm.nix";
inputs.microvm.inputs.nixpkgs.follows = "nixpkgs";
outputs = { self, nixpkgs, microvm, openhab }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [
openhab.overlays.default
];
};
in
{
defaultPackage.${system} = self.packages.${system}.my-microvm;
packages.${system}.my-microvm =
let
inherit (self.nixosConfigurations.my-microvm) config;
# quickly build with another hypervisor if this MicroVM is built as a package
hypervisor = "qemu";
in
config.microvm.runner.${hypervisor};
nixosConfigurations.my-microvm = nixpkgs.lib.nixosSystem
{
inherit pkgs system;
modules = [
openhab.nixosModules.openhab
{
services.openhab = {
enable = true;
# configOnly = true;
package = pkgs.openhab.openhab34;
};
system.stateVersion = "23.05";
}
microvm.nixosModules.microvm
{
networking.hostName = "my-microvm";
users.users.root.password = "";
microvm = {
mem = 4096;
volumes = [{
mountPoint = "/var";
image = "var.img";
size = 1024; # the default bindings take up a fair bit of space
}];
shares = [{
# use "virtiofs" for MicroVMs that are started by systemd
proto = "9p";
tag = "ro-store";
# a host's /nix/store will be picked up so that the
# size of the /dev/vda can be reduced.
source = "/nix/store";
mountPoint = "/nix/.ro-store";
}];
socket = "control.socket";
# relevant for delarative MicroVM management
hypervisor = "qemu";
};
}
];
};
};
}