nixos-config/flake.nix

90 lines
2.2 KiB
Nix

{
inputs = {
# General inputs
stable.url = "nixpkgs/nixos-24.11";
unstable.url = "nixpkgs/nixos-unstable";
# Flake helpers
flake-utils.url = "github:numtide/flake-utils";
# System inputs
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "stable";
};
impermanence.url = "github:nix-community/impermanence";
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "stable";
};
# Hardware specific
jovian = {
url = "github:Jovian-Experiments/Jovian-NixOS";
inputs.nixpkgs.follows = "unstable";
};
# Service inputs
mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11";
inputs.nixpkgs.follows = "stable";
};
minecraft.url = "github:Infinidoge/nix-minecraft";
# Home inputs
hm = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "stable";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "unstable";
};
blender.url = "github:edolstra/nix-warez?dir=blender";
};
outputs = inputs:
inputs.flake-utils.lib.eachDefaultSystemPassThrough (system:
with inputs; let
mkNix = name: channel: channel.lib.nixosSystem {
modules = [ (./hosts + "/${name}") ];
specialArgs = inputs;
};
mkHome = channel: modules: hm.lib.homeManagerConfiguration {
inherit modules;
extraSpecialArgs = inputs;
pkgs = builtins.getAttr system channel.legacyPackages;
};
hostChannels = {
tower = stable;
intuos = stable;
jupiter = unstable;
redmond = stable;
midas = stable;
kitty = stable;
prophet = stable;
};
in {
nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) hostChannels;
homeConfigurations = {
default = mkHome stable [ ./modules/home ];
full = mkHome stable [
./modules/home
{
home.guifull.enable = true;
targets.genericLinux.enable = true;
}
];
};
}
);
}