mirror of
https://github.com/srid/nixos-config.git
synced 2025-12-26 23:14:57 +08:00
52 lines
1.4 KiB
Nix
52 lines
1.4 KiB
Nix
# An opinionated module that creates flake outputs based on a known directory structure.
|
|
#
|
|
# cf. Convention over configuration
|
|
#
|
|
# TODO: Upstream this in some fashion. To srid/nixos-flake?
|
|
# cf. https://github.com/juspay/nix-dev-home/issues/86
|
|
{ inputs, self, ... }:
|
|
let
|
|
inherit (inputs.nixpkgs) lib;
|
|
forAllNixFiles = dir: f:
|
|
lib.pipe dir [
|
|
builtins.readDir
|
|
(lib.filterAttrs (_: type: type == "regular"))
|
|
(lib.mapAttrs' (fn: _:
|
|
let name = lib.removeSuffix ".nix" fn; in
|
|
lib.nameValuePair name (f "${dir}/${fn}")
|
|
))
|
|
];
|
|
in
|
|
{
|
|
flake = {
|
|
darwinConfigurations =
|
|
forAllNixFiles "${self}/configurations/darwin"
|
|
(fn: self.nixos-flake.lib.mkMacosSystem { home-manager = true; } fn);
|
|
|
|
nixosConfigurations =
|
|
forAllNixFiles "${self}/configurations/nixos"
|
|
(fn: self.nixos-flake.lib.mkLinuxSystem { home-manager = true; } fn);
|
|
|
|
darwinModules =
|
|
forAllNixFiles "${self}/modules/darwin"
|
|
(fn: fn);
|
|
|
|
nixosModules =
|
|
forAllNixFiles "${self}/modules/nixos"
|
|
(fn: fn);
|
|
|
|
homeModules =
|
|
forAllNixFiles "${self}/modules/home"
|
|
(fn: fn);
|
|
|
|
overlays =
|
|
forAllNixFiles "${self}/overlays"
|
|
(fn: import fn self.nixos-flake.lib.specialArgsFor.common);
|
|
};
|
|
|
|
perSystem = { pkgs, ... }: {
|
|
legacyPackages.homeConfigurations =
|
|
forAllNixFiles "${self}/configurations/home"
|
|
(fn: self.nixos-flake.lib.mkHomeConfiguration pkgs fn);
|
|
};
|
|
}
|