90 lines
2.7 KiB
Nix
90 lines
2.7 KiB
Nix
# Get a repl for this flake
|
|
# nix repl --expr "builtins.getFlake \"$PWD\""
|
|
|
|
# TODO maybe use `nix eval --raw .#odo.iso.outPath`
|
|
|
|
#
|
|
# Install on a new machine:
|
|
#
|
|
#
|
|
# doas nix --substituters "http://10.0.2.2:8080?trusted=1 https://cache.nixos.org/" --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount hosts/odo/disk-config.nix
|
|
|
|
# for f in /persist/manual/manual_add_to_store/*; do nix-store --add-fixed sha256 "$f"; done
|
|
# nixos-install --substituters "http://10.0.2.2:8080?trusted=1 https://cache.nixos.org/" --flake ".#vm_ionlybootzfs"
|
|
#
|
|
|
|
{
|
|
description = "My system configuration";
|
|
|
|
inputs = {
|
|
impermanence.url = "github:nix-community/impermanence";
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
nixpkgs-unoptimized.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
lanzaboote = {
|
|
url = "github:nix-community/lanzaboote/v0.4.2";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
disko = {
|
|
url = "github:nix-community/disko";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
nixpkgs,
|
|
nixpkgs-unoptimized,
|
|
disko,
|
|
impermanence,
|
|
lanzaboote,
|
|
...
|
|
}:
|
|
let
|
|
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
|
nodes = {
|
|
odo = {
|
|
system = "x86_64-linux";
|
|
};
|
|
quark = {
|
|
system = "x86_64-linux";
|
|
};
|
|
};
|
|
nixosConfigs = builtins.mapAttrs (
|
|
hostname: nodeConfig: format:
|
|
nixpkgs.lib.nixosSystem {
|
|
inherit (nodeConfig) system;
|
|
specialArgs = {
|
|
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;
|
|
in
|
|
{
|
|
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))
|
|
)
|
|
);
|
|
};
|
|
}
|