nixos-config/setups/nixos.nix

105 lines
2.9 KiB
Nix

/*
This is a custom data for this project where it lists the images found in
this flake. This can range from NixOS configurations intended to be deployed
for servers and desktops to installers.
The data is then used for the image creation functions found in `flake.nix`.
Each of the entry should correspond to one of the hosts in `./hosts/`
directory.
Schema:
* systems
A list of systems that is expected to be deployed. This is required and
will have a default list of "x86_64-linux" when no system is given.
* format
The image format to be generated from nixos-generators. You can give it
as `null` when not intended to be listed as part of the images which is
often the case for desktop NixOS systems.
* modules
A list of extra NixOS modules to be passed. You'll want to see the
baseline host configuration defined in `flake.nix`.
* deploy
An attribute set of arguments similar to the `deploy` CLI. When this
attribute is present, it will be assumed as part of NixOS configurations
even with `format = null` which is often the case for bare metal NixOS
servers that also has a suitable image format for deployment.
* hostname
The hostname of the host. By default, it assumes the hostname being given
from the attribute name.
* domain
The domain set for the host. Normally given to server systems.
*/
{ lib, inputs }:
{
# The main desktop.
ni = {
systems = [ "x86_64-linux" ];
format = null;
modules = [
inputs.nur.nixosModules.nur
({ config, ... }: {
nixpkgs.overlays = [
# Neovim nightly!
inputs.neovim-nightly-overlay.overlays.default
# Emacs unstable version!
inputs.emacs-overlay.overlays.default
# Helix master!
inputs.helix-editor.overlays.default
# Access to NUR.
inputs.nur.overlay
];
})
];
};
# A remote server.
plover = {
systems = [ "x86_64-linux" ];
format = null;
domain = "foodogsquared.one";
deploy = {
hostname = "plover.foodogsquared.one";
auto-rollback = true;
magic-rollback = true;
};
};
# TODO: Remove extra newlines that are here for whatever reason.
#{{{
void = {
systems = [ "x86_64-linux" ];
format = "vm";
};
#}}}
# The barely customized non-graphical installer.
bootstrap = {
systems = [ "aarch64-linux" "x86_64-linux" ];
format = "install-iso";
nixpkgs-channel = "nixos-unstable-small";
};
# The barely customized graphical installer.
graphical-installer = {
systems = [ "aarch64-linux" "x86_64-linux" ];
format = "install-iso";
};
# The WSL system (that is yet to be used).
winnowing = {
systems = [ "x86_64-linux" ];
format = null;
modules = [
# Well, well, well...
inputs.nixos-wsl.nixosModules.default
];
};
}
# vim:foldmethod=marker