nix-infra/flake.nix

91 lines
2.9 KiB
Nix
Raw Normal View History

2023-12-17 13:33:15 +00:00
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-23.11";
nixpkgs-unstable.url = "nixpkgs/nixpkgs-unstable";
2024-03-24 18:02:28 +00:00
flake-utils.url = "github:numtide/flake-utils";
colmena.url = "github:zhaofengli/colmena";
colmena.inputs.nixpkgs.follows = "nixpkgs";
2023-12-17 13:33:15 +00:00
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};
};
2024-03-24 18:02:45 +00:00
outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, home-manager, colmena, ... }:
2024-03-24 18:02:29 +00:00
let
inherit (self) outputs;
2024-03-24 18:02:30 +00:00
systems = [ "aarch64-linux" "i686-linux" "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ];
2024-03-24 18:02:29 +00:00
forAllSystems = lib.genAttrs systems;
lib = nixpkgs.lib // home-manager.lib;
in
rec {
2024-03-24 18:02:29 +00:00
inherit lib;
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixpkgs-fmt);
2024-03-24 18:02:29 +00:00
devShells = forAllSystems (system:
2024-03-24 18:02:45 +00:00
let pkgs = import nixpkgs { system = system; }; in {
2024-03-24 18:02:32 +00:00
default = pkgs.mkShell {
nativeBuildInputs = [ pkgs.nix pkgs.colmena pkgs.git pkgs.home-manager pkgs.nixos-rebuild ];
shellHook = "exec $SHELL";
};
2024-03-24 18:02:30 +00:00
});
colmenaHive = colmena.lib.makeHive {
2024-03-24 18:02:30 +00:00
meta = {
description = "All my NixoS machines";
2024-03-24 18:02:32 +00:00
specialArgs = {
inherit inputs outputs;
pkgs-unstable = import nixpkgs-unstable { system = "x86_64-linux"; };
};
2024-03-24 18:02:30 +00:00
nixpkgs = import nixpkgs { system = "x86_64-linux"; };
2024-03-24 18:02:29 +00:00
};
2024-03-24 18:02:25 +00:00
2024-03-24 18:02:32 +00:00
defaults = { lib, config, name, ... }: {
2024-03-24 18:03:41 +00:00
imports = [ ./hosts/${name} ./hosts/common (import "${home-manager}/nixos") ];
2024-03-24 18:02:32 +00:00
deployment = {
targetUser = "sammy";
allowLocalDeployment = true;
};
home-manager.extraSpecialArgs = {
inherit inputs outputs;
pkgs-unstable = import nixpkgs-unstable { system = "x86_64-linux"; };
};
2024-03-24 18:03:41 +00:00
cherrykitten.hostname = name;
2024-03-24 18:02:32 +00:00
};
bengal = { };
2024-03-24 18:30:03 +00:00
ocelot = { };
2024-03-24 18:02:30 +00:00
};
nixosConfigurations = {
test = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs outputs; };
2024-03-24 18:03:41 +00:00
modules = [ ./hosts/test-vm ./hosts/common (import "${home-manager}/nixos") ];
};
} // colmenaHive.nodes;
2024-03-24 18:02:45 +00:00
2024-03-24 18:03:19 +00:00
homeConfigurations =
2024-03-24 18:02:30 +00:00
let
pkgs = import nixpkgs { system = "x86_64-linux"; };
2024-03-24 18:03:19 +00:00
mkHome = { user ? "sammy", hostname ? null }:
lib.homeManagerConfiguration {
inherit pkgs;
2024-03-24 18:03:41 +00:00
modules = [ ./users/${user}.nix ] ++ lib.optional (!isNull hostname) (./. + "/users/${user}@${hostname}.nix");
2024-03-24 18:03:19 +00:00
extraSpecialArgs = {
inherit inputs outputs;
pkgs-unstable = import nixpkgs-unstable { system = "x86_64-linux"; };
};
};
2024-03-24 18:02:30 +00:00
in
2024-03-24 18:03:19 +00:00
{
sammy = mkHome { };
"sammy@chansey" = mkHome { hostname = "chansey"; };
2024-03-24 18:02:30 +00:00
};
2023-12-17 13:33:15 +00:00
};
}