nix/hosts/default.nix
2025-04-05 02:14:48 -05:00

151 lines
4 KiB
Nix

{
inputs,
lib,
specialArgs,
user ? "rayandrew",
...
}:
let
mkNixosConfiguration =
host: system:
let
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
(import ../overlays {
inherit inputs;
inherit (pkgs) 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";
};
modules = [
inputs.disko.nixosModules.default
./${host}
./${host}/hardware.nix
../nixos
../overlays
({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.hmModules.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 (pkgs) 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";
};
modules = [
./${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.hmModules.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
];
};
in
{
nixosConfigurations = {
pickwick = mkNixosConfiguration "pickwick" "x86_64-linux";
lemur = mkNixosConfiguration "lemur" "x86_64-linux";
};
darwinConfigurations = {
dango = mkDarwinConfiguration "dango" "aarch64-darwin";
};
}