nix-configs/flake.nix

115 lines
2.9 KiB
Nix
Raw Normal View History

2025-06-06 06:46:08 +01:00
{
description = "I have no idea what I'm doing";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
2025-06-10 21:45:02 +01:00
apple-silicon = {
url = "github:tpwrules/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-06-06 06:46:08 +01:00
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-07-03 21:33:50 +01:00
nix-darwin = {
url = "github:nix-darwin/nix-darwin/master";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-06-06 11:09:23 +01:00
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-06-13 18:57:19 +01:00
sops-nix = {
url = "github:mic92/sops-nix";
inputs.nix.follows = "nixpkgs";
};
2025-06-06 06:46:08 +01:00
};
outputs =
{
2025-06-10 21:45:02 +01:00
apple-silicon,
2025-06-06 06:46:08 +01:00
flake-utils,
home-manager,
2025-07-03 21:33:50 +01:00
nix-darwin,
2025-07-06 21:49:22 +01:00
nixpkgs,
2025-06-06 11:09:23 +01:00
nur,
2025-07-06 21:49:22 +01:00
self,
2025-06-13 18:57:19 +01:00
sops-nix,
2025-06-10 21:45:02 +01:00
}@inputs:
let
2025-07-06 21:49:22 +01:00
outputs = inputs.self;
overlays = [
2025-06-10 21:45:02 +01:00
apple-silicon.overlays.apple-silicon-overlay
nur.overlays.default
];
2025-07-06 21:49:22 +01:00
supportedSystems = [
"x86_64-linux"
"aarch64-darwin"
"aarch64-linux"
];
in
2025-06-06 06:46:08 +01:00
{
nixosConfigurations = {
laptop = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./nixos/common.nix
./nixos/hosts/laptop/default.nix
./nixos/hosts/laptop/hardware-configuration.nix
];
};
2025-06-10 21:45:02 +01:00
homeserver = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
./nixos/common.nix
./nixos/hosts/homeserver/default.nix
./nixos/hosts/homeserver/hardware-configuration.nix
apple-silicon.nixosModules.apple-silicon-support
];
specialArgs = inputs;
};
2025-06-06 06:46:08 +01:00
};
2025-07-06 21:49:22 +01:00
homeManagerModules = import ./modules/home-manager;
homeConfigurations =
{
role = [
"desktop"
"minimal"
"server"
];
system = supportedSystems;
}
|> nixpkgs.lib.cartesianProduct
|> nixpkgs.lib.foldl' (
c: e:
c
// {
"irl-${e.role}-${e.system}" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit overlays;
system = e.system;
};
extraSpecialArgs = {
inherit outputs;
};
modules = [
./home-manager/irl.nix
{ role = "${e.role}"; }
];
};
}
) { };
}
// flake-utils.lib.eachSystem supportedSystems (system: {
2025-07-03 21:33:22 +01:00
formatter = nixpkgs.legacyPackages.${system}.nixfmt-tree;
2025-07-03 21:33:50 +01:00
})
// {
darwinConfigurations."irl-mac-mini" = nix-darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
./darwin/common.nix
2025-07-06 21:49:22 +01:00
./darwin/irl-mac-mini.nix
2025-07-03 21:33:50 +01:00
];
};
};
2025-06-06 06:46:08 +01:00
}