Files
Olympus/system/flake.nix
2024-10-19 08:44:02 -05:00

74 lines
2.0 KiB
Nix
Executable File

{
description = "Unified System Configuration";
inputs = {
srvcs.url = "./services";
pckgs.url = "./packages";
prgms.url = "./programs";
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
impermanence.url = "github:nix-community/impermanence";
};
outputs = { self, ... }@inputs: {
nixosModule = { config, lib, pkgs, core_inputs, ... }: {
imports = [
./configuration
# ./configuration/${core_inputs.host}/hardware-configuration.nix
./disko
inputs.disko.nixosModules.default
./impermanence
inputs.impermanence.nixosModules.impermanence
inputs.srvcs.module
inputs.pckgs.module
inputs.prgms.module
./first_boot
];
options = {
sysconfig.opts = {
host = lib.options.mkOption {
type = lib.types.str;
default = null;
};
username = lib.options.mkOption {
type = lib.types.str;
default = "nathan";
};
};
};
config = {
assertions = [
{
assertion = (config.sysconfig.opts.host != null);
message = "host cannot be null";
}
{
assertion = (config.sysconfig.opts.devices.main != null);
message = "devices.main cannot be null";
}
];
networking.hostName = lib.mkDefault config.sysconfig.opts.host;
#users.users.${config.sysconfig.opts.username} = {
#};
};
};
};
}