nix/hosts/default.nix
2025-11-27 12:19:47 -06:00

173 lines
4.3 KiB
Nix

{
inputs,
specialArgs,
user ? "rayandrew",
...
}:
let
mkNixosConfiguration =
host: system:
let
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
(import ../overlays {
inherit inputs;
inherit system;
})
];
};
lib = (
import ../lib.nix {
inherit (inputs.nixpkgs) lib;
inherit pkgs;
inherit (inputs) home-manager;
}
);
in
lib.nixosSystem {
inherit pkgs lib;
specialArgs = specialArgs // {
inherit host user;
dots = "/home/${user}/dotfiles";
home-dir = "/home/${user}";
};
modules = [
inputs.disko.nixosModules.default
./shared.nix
./${host}
./${host}/hardware.nix
../nixos
(
{ config, ... }:
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs // {
inherit host user system;
system-font = "Consolas";
dots = "/home/${user}/dotfiles";
home-dir = config.home-manager.users.${user}.home.homeDirectory;
};
users.${user} = {
imports = [
inputs.nix-index-database.homeModules.nix-index
inputs.sops-nix.homeManagerModules.sops
../home
]
++ lib.optional (builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
};
};
}
)
# alias for home-manager
(lib.mkAliasOptionModule
[ "hm" ]
[
"home-manager"
"users"
user
]
)
inputs.home-manager.nixosModules.home-manager
inputs.sops-nix.nixosModules.sops
];
};
mkDarwinConfiguration =
host: system:
let
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
(import ../overlays {
inherit inputs;
inherit system;
})
inputs.nixpkgs-firefox-darwin.overlay
];
};
lib = (
import ../lib.nix {
inherit (inputs.nixpkgs) lib;
inherit pkgs;
inherit (inputs) home-manager;
}
);
in
inputs.nix-darwin.lib.darwinSystem {
inherit pkgs lib;
specialArgs = specialArgs // {
inherit host user;
dots = "/Users/${user}/dotfiles";
home-dir = "/Users/${user}";
};
modules = [
./shared.nix
./${host}
../darwin
(
{ config, ... }:
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs // {
inherit host user system;
system-font = "SF Mono";
home-dir = config.home-manager.users.${user}.home.homeDirectory;
dots = "/Users/${user}/dotfiles";
};
users.${user} = {
imports = [
inputs.nix-index-database.homeModules.nix-index
inputs.sops-nix.homeManagerModules.sops
inputs.mac-app-util.homeManagerModules.default
../home
]
++ lib.optional (builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
};
};
}
)
# alias for home-manager
(lib.mkAliasOptionModule
[ "hm" ]
[
"home-manager"
"users"
user
]
)
inputs.home-manager.darwinModules.home-manager
inputs.mac-app-util.darwinModules.default
inputs.nix-homebrew.darwinModules.nix-homebrew
(
{ config, ... }:
{
homebrew.taps = builtins.attrNames config.nix-homebrew.taps;
}
)
];
};
in
{
nixosConfigurations = {
pickwick = mkNixosConfiguration "pickwick" "x86_64-linux";
lemur = mkNixosConfiguration "lemur" "x86_64-linux";
};
darwinConfigurations = {
dango = mkDarwinConfiguration "dango" "aarch64-darwin";
};
}