Signed-off-by: Christoph Schmatzler <christoph@schmatzler.com>
This commit is contained in:
2025-08-27 20:17:55 +00:00
parent 4eac15ffc7
commit 7809180a15
3 changed files with 27 additions and 14 deletions

View File

@@ -31,12 +31,21 @@
}; };
outputs = inputs @ {flake-parts, ...}: outputs = inputs @ {flake-parts, ...}:
let
loadOverlays = path: with builtins;
map (n: import (path + ("/" + n)))
(filter (n: match ".*\\.nix" n != null)
(attrNames (readDir path)));
in
flake-parts.lib.mkFlake {inherit inputs;} ( flake-parts.lib.mkFlake {inherit inputs;} (
let let
constants = import ./lib/constants.nix; constants = import ./lib/constants.nix;
user = constants.user; user = constants.user;
darwinHosts = builtins.attrNames (builtins.readDir ./hosts/darwin); darwinHosts = builtins.attrNames (builtins.readDir ./hosts/darwin);
nixosHosts = builtins.attrNames (builtins.readDir ./hosts/nixos); nixosHosts = builtins.attrNames (builtins.readDir ./hosts/nixos);
commonOverlays = loadOverlays ./overlays;
darwinOverlays = loadOverlays ./overlays/darwin;
in { in {
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
@@ -45,11 +54,10 @@
flake.darwinConfigurations = inputs.nixpkgs.lib.genAttrs darwinHosts ( flake.darwinConfigurations = inputs.nixpkgs.lib.genAttrs darwinHosts (
hostname: let hostname: let
syncthingOverlay = import ./overlays/syncthing-darwin.nix; syncthingOverlay = builtins.filter (o: o ? darwinSyncthingModule) darwinOverlays;
syncthingModule = (syncthingOverlay null {}).darwinSyncthingModule; darwinModules = if syncthingOverlay != []
zjstatusOverlay = final: prev: { then [((builtins.head syncthingOverlay) null {}).darwinSyncthingModule]
zjstatus = inputs.zjstatus.packages.${prev.system}.default; else [];
};
in in
inputs.darwin.lib.darwinSystem { inputs.darwin.lib.darwinSystem {
system = "aarch64-darwin"; system = "aarch64-darwin";
@@ -61,10 +69,15 @@
modules = [ modules = [
inputs.home-manager.darwinModules.home-manager inputs.home-manager.darwinModules.home-manager
inputs.nix-homebrew.darwinModules.nix-homebrew inputs.nix-homebrew.darwinModules.nix-homebrew
syncthingModule ]
++ darwinModules
++ [
{ {
nixpkgs.overlays = [syncthingOverlay zjstatusOverlay]; nixpkgs.overlays = commonOverlays ++ darwinOverlays ++ [
(final: prev: {
zjstatus = inputs.zjstatus.packages.${prev.system}.default;
})
];
nix-homebrew = { nix-homebrew = {
inherit user; inherit user;
@@ -83,11 +96,7 @@
); );
flake.nixosConfigurations = inputs.nixpkgs.lib.genAttrs nixosHosts ( flake.nixosConfigurations = inputs.nixpkgs.lib.genAttrs nixosHosts (
hostname: let hostname:
zjstatusOverlay = final: prev: {
zjstatus = inputs.zjstatus.packages.${prev.system}.default;
};
in
inputs.nixpkgs.lib.nixosSystem { inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = specialArgs =
@@ -98,7 +107,11 @@
modules = [ modules = [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
{ {
nixpkgs.overlays = [zjstatusOverlay]; nixpkgs.overlays = commonOverlays ++ [
(final: prev: {
zjstatus = inputs.zjstatus.packages.${prev.system}.default;
})
];
} }
./hosts/nixos/${hostname} ./hosts/nixos/${hostname}
]; ];