-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflake.nix
More file actions
98 lines (89 loc) · 2.57 KB
/
flake.nix
File metadata and controls
98 lines (89 loc) · 2.57 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{
inputs = {
disko = {
url = "github:nix-community/disko";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
flake-utils.url = "github:numtide/flake-utils";
haumea = {
url = "github:nix-community/haumea";
inputs.nixpkgs.follows = "nixpkgs";
};
namaka = {
url = "github:nix-community/namaka";
inputs = {
haumea.follows = "haumea";
nixpkgs.follows = "nixpkgs";
};
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, disko, flake-utils, namaka, nixpkgs, ... }: {
nixosModules = rec {
default = pogo;
pogo.imports = [
disko.nixosModules.disko
./modules
];
};
} // flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
checks = namaka.lib.load {
src = ./tests;
inputs = let
inherit (nixpkgs) lib;
in {
eval = attrs: let
inherit (nixpkgs.lib.nixosSystem {
modules = [
{
nixpkgs.hostPlatform = system;
}
self.nixosModules.pogo
attrs
];
}) config;
in
assert config.system.build.diskoScript.outPath != "";
{
# only compare some key values to not break on every change
boot = {
initrd.luks.devices = lib.mapAttrs (n: v: lib.filterAttrs (n: v: lib.any (x: x == n ) [
"device"
"name"
]) v) config.boot.initrd.luks.devices;
loader.grub = {
mirroredBoots = map (device: { inherit (device) devices path; }) config.boot.loader.grub.mirroredBoots;
};
};
disko.devices.disk = lib.mapAttrs (n: v: {
content.partitions = map (v: {
inherit (v) start end;
}) v.content.partitions;
}) config.disko.devices.disk;
fileSystems = lib.mapAttrs (n: v: lib.filterAttrs (n: v: lib.any (x: x == n) [
# # descend into all entries
# lib.hasPrefix "/" n ||
"depends"
"device"
"fsType"
"mountPoint"
"neededForBoot"
"options"
]) v) config.fileSystems;
inherit (config) swapDevices;
};
};
};
devShells.default = pkgs.mkShell {
packages = [
namaka.packages.${system}.default
];
};
});
}