configuration.nix/nixos/configs/default.nix

31 lines
1.5 KiB
Nix

toplevel@{ inputs, withSystem, ... }:
let
system = "x86_64-linux";
mods = toplevel.config.flake.nixosModules;
hardwareConfigurations = toplevel.config.flake.hardwareConfigurations;
essential = with mods; [ grub base shell security wireless wireguard ];
desktop = with mods; [ sound wayland ];
configWithModules = { hardware ? { nixpkgs.hostPlatform = system; }, modules }: withSystem system (ctx@{ config, inputs', pkgs, ... }: inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs inputs' pkgs;
packages = config.packages;
};
modules = [ hardware ] ++ modules;
});
novaConfig = mods: configWithModules { hardware = hardwareConfigurations.nova; modules = essential ++ desktop ++ mods; };
installer = config: config // { hardware = import /mnt/etc/nixos/hardware-configuration.nix; };
in
{
flake.nixosConfigurations = rec {
nova = novaConfig [ mods.ivand ];
nova-music = novaConfig (with mods; [ ivand music ]);
nova-crypto = novaConfig (with mods; [ ivand cryptocurrency ]);
nova-nonya = novaConfig (with mods; [ ivand anon cryptocurrency ]);
nova-ai = novaConfig (with mods; [ ivand ai ]);
install-iso = configWithModules { modules = (with mods; [ grub base shell wireless ]); };
mailserver = configWithModules { modules = (with mods; [ base shell security vps ]); };
stara-miner = configWithModules { hardware = import /etc/nixos/hardware-configuration.nix; modules = (with mods; [ base shell security monero-miner ]); };
stara-miner-installer = installer stara-miner;
};
}