102 lines
2.8 KiB
Nix
Raw Normal View History

2024-12-21 10:18:28 -05:00
# Get a repl for this flake
# nix repl --expr "builtins.getFlake \"$PWD\""
# TODO maybe use `nix eval --raw .#odo.iso.outPath`
2024-12-21 10:18:28 -05:00
2025-04-16 20:36:08 -04:00
#
# Install on a new machine:
#
2025-10-26 17:36:25 -04:00
# Set
# me.disko.enable = true;
# me.disko.offline.enable = true;
2025-04-16 20:36:08 -04:00
#
2025-10-26 17:36:25 -04:00
# Run
# doas disko --mode destroy,format,mount hosts/recovery/disk-config.nix
# doas nixos-install --substituters "http://10.0.2.2:8080?trusted=1 https://cache.nixos.org/" --flake ".#recovery"
2025-04-16 20:36:08 -04:00
2024-12-17 15:26:10 -05:00
{
description = "My system configuration";
inputs = {
impermanence.url = "github:nix-community/impermanence";
2025-01-15 21:00:57 -05:00
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
2025-03-22 22:36:24 -04:00
nixpkgs-unoptimized.url = "github:NixOS/nixpkgs/nixos-unstable";
2024-12-22 10:58:01 -05:00
lanzaboote = {
2025-01-26 16:57:18 -05:00
url = "github:nix-community/lanzaboote/v0.4.2";
2024-12-23 15:44:53 -05:00
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-12-17 15:26:10 -05:00
};
2024-12-20 22:37:44 -05:00
outputs =
{
2025-10-26 17:36:25 -04:00
self,
2024-12-20 22:37:44 -05:00
nixpkgs,
2025-03-22 22:36:24 -04:00
nixpkgs-unoptimized,
disko,
2024-12-20 22:37:44 -05:00
impermanence,
2024-12-22 10:58:01 -05:00
lanzaboote,
2024-12-20 22:37:44 -05:00
...
}:
2024-12-20 22:37:44 -05:00
let
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
nodes = {
odo = {
system = "x86_64-linux";
};
quark = {
system = "x86_64-linux";
};
recovery = {
system = "x86_64-linux";
};
i_only_boot_zfs = {
system = "x86_64-linux";
};
};
nixosConfigs = builtins.mapAttrs (
hostname: nodeConfig: format:
nixpkgs.lib.nixosSystem {
inherit (nodeConfig) system;
specialArgs = {
2025-10-26 17:36:25 -04:00
inherit self;
this_nixos_config = self.nixosConfigurations."${hostname}";
pkgs-unoptimized = import nixpkgs-unoptimized {
inherit (nodeConfig) system;
hostPlatform.gcc.arch = "default";
hostPlatform.gcc.tune = "default";
};
};
modules = [
impermanence.nixosModules.impermanence
lanzaboote.nixosModules.lanzaboote
disko.nixosModules.disko
./configuration.nix
(./. + "/hosts/${hostname}")
(./. + "/formats/${format}.nix")
];
}
) nodes;
2024-12-20 22:37:44 -05:00
in
2024-12-17 15:26:10 -05:00
{
nixosConfigurations = (builtins.mapAttrs (name: value: value "toplevel") nixosConfigs);
}
// {
packages = (
forAllSystems (
system:
(builtins.mapAttrs (hostname: nodeConfig: {
iso = (nixosConfigs."${hostname}" "iso").config.system.build.isoImage;
vm_iso = (nixosConfigs."${hostname}" "vm_iso").config.system.build.isoImage;
sd = (nixosConfigs."${hostname}" "sd").config.system.build.sdImage;
}) (nixpkgs.lib.attrsets.filterAttrs (hostname: nodeConfig: nodeConfig.system == system) nodes))
)
);
2024-12-17 15:26:10 -05:00
};
}