abstracted host definitions in flake.nix

This commit is contained in:
2025-07-29 13:56:25 -04:00
parent bd1851f706
commit 44062a87b4
6 changed files with 150 additions and 391 deletions

197
flake.nix
View File

@@ -7,8 +7,6 @@
hyprpicker.url = "github:hyprwm/hyprpicker";
stylix.url = "github:danth/stylix";
disko.url = "github:nix-community/disko";
impermanence.url = "github:nix-community/impermanence";
ghostty.url = "github:ghostty-org/ghostty";
nixvim = {
url = "github:nix-community/nixvim";
@@ -32,176 +30,39 @@
};
};
outputs = { self, home-manager, disko, nixpkgs, impermanence, nixvim, stylix, ... }@inputs:
outputs = { ... }@inputs:
let
system = "x86_64-linux";
username = "pagedmov";
nixpkgsConfig = {
allowUnfree = true;
};
in {
homeConfigurations = {
oganessonHome = let host = "oganesson"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { inherit host; root = self; })
];
};
extraSpecialArgs = {
inherit host self username inputs;
};
modules = [
./hosts/desktop/home.nix
./modules/home
stylix.homeModules.stylix
nixvim.homeManagerModules.nixvim
];
};
phosphorousHome = let host = "phosphorous"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { inherit host; root = self; })
];
};
extraSpecialArgs = {
inherit host self username inputs;
};
modules = [
./hosts/work/home.nix
./modules/home
stylix.homeModules.stylix
nixvim.homeManagerModules.nixvim
];
};
mercuryHome = let host = "mercury"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { inherit host; root = self; })
];
};
extraSpecialArgs = {
inherit host self username inputs;
};
modules = [
./hosts/laptop/home.nix
./modules/home
stylix.homeModules.stylix
nixvim.homeManagerModules.nixvim
];
};
xenonHome = let host = "xenon"; in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { inherit host; root = self; })
];
};
extraSpecialArgs = {
inherit host self username inputs;
};
modules = [
./hosts/server/home.nix
./modules/home
stylix.homeModules.stylix
nixvim.homeManagerModules.nixvim
];
};
movLib = import ./lib {
inherit inputs;
username = "pagedmov";
};
nixosConfigurations = {
oganesson = nixpkgs.lib.nixosSystem { # Desktop
specialArgs = {
inherit self inputs username;
host = "oganesson";
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
inherit system;
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
modules = [
./hosts/desktop/config.nix
./modules/sys
stylix.nixosModules.stylix
];
};
phosphorous = nixpkgs.lib.nixosSystem { # Desktop
specialArgs = {
inherit self inputs username;
host = "oganesson";
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
inherit system;
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
overlays = [
(import ./overlay/overlay.nix { root = self; })
];
};
modules = [
./hosts/work/config.nix
./modules/sys
stylix.nixosModules.stylix
];
};
mercury = nixpkgs.lib.nixosSystem { # Laptop
specialArgs = {
inherit self inputs username;
host = "mercury";
};
inherit system;
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
};
modules = [
./hosts/laptop/config.nix
./modules/sys
stylix.nixosModules.stylix
];
};
xenon = nixpkgs.lib.nixosSystem { # Server
specialArgs = {
inherit self inputs username;
host = "xenon";
};
inherit system;
pkgs = import nixpkgs {
inherit system;
config = nixpkgsConfig;
};
modules = [
./hosts/server/config.nix
./modules/sys
hosts = movLib.foldHosts [
{
host = "oganesson";
hostDir = "desktop";
kind = "both";
}
{
host = "phosphorous";
hostDir = "work";
kind = "both";
}
{
host = "mercury";
hostDir = "laptop";
kind = "both";
}
{
host = "xenon";
hostDir = "server";
kind = "both";
extraNixosModules = [
./modules/server
stylix.nixosModules.stylix
];
};
};
}
];
in {
inherit (hosts) nixosConfigurations homeConfigurations;
};
}