mirror of
https://github.com/donovanglover/nix-config.git
synced 2025-06-20 09:47:57 +02:00
feat(flake.nix): Separate outputs logic from variables
Reduces complexity and makes things easier to reason about.
This commit is contained in:
parent
dd6ab4cc97
commit
1558b77796
12
flake.nix
12
flake.nix
@ -24,6 +24,10 @@
|
|||||||
outputs = { self, nixpkgs, home-manager, stylix, ... } @ attrs: let
|
outputs = { self, nixpkgs, home-manager, stylix, ... } @ attrs: let
|
||||||
inherit (nixpkgs.lib) nixosSystem;
|
inherit (nixpkgs.lib) nixosSystem;
|
||||||
inherit (nixpkgs.legacyPackages.x86_64-linux) nixpkgs-fmt callPackage;
|
inherit (nixpkgs.legacyPackages.x86_64-linux) nixpkgs-fmt callPackage;
|
||||||
|
|
||||||
|
flakeOutputs = [ "overlays" "nixosModules" "homeManagerModules" "packages" ];
|
||||||
|
flakeDirectories = [ "overlays" "modules" "home" "packages" ];
|
||||||
|
packageDirectory = "packages";
|
||||||
in {
|
in {
|
||||||
formatter.x86_64-linux = nixpkgs-fmt;
|
formatter.x86_64-linux = nixpkgs-fmt;
|
||||||
|
|
||||||
@ -57,14 +61,14 @@
|
|||||||
(attributeName: {
|
(attributeName: {
|
||||||
name = attributeName;
|
name = attributeName;
|
||||||
value = let
|
value = let
|
||||||
directory = builtins.replaceStrings ["nixosModules" "homeManagerModules"] ["modules" "home"] attributeName;
|
directory = builtins.replaceStrings flakeOutputs flakeDirectories attributeName;
|
||||||
attributeValue = (builtins.listToAttrs
|
attributeValue = (builtins.listToAttrs
|
||||||
(builtins.map
|
(builtins.map
|
||||||
(file: {
|
(file: {
|
||||||
name = builtins.replaceStrings [".nix"] [""] file;
|
name = builtins.replaceStrings [".nix"] [""] file;
|
||||||
value = if directory == "packages" then callPackage ./${directory}/${file} { } else import ./${directory}/${file}; })
|
value = if directory == packageDirectory then callPackage ./${directory}/${file} { } else import ./${directory}/${file}; })
|
||||||
(builtins.attrNames (builtins.readDir ./${directory}))));
|
(builtins.attrNames (builtins.readDir ./${directory}))));
|
||||||
attributeSet = if directory == "packages" then { x86_64-linux = attributeValue; } else attributeValue;
|
attributeSet = if directory == packageDirectory then { x86_64-linux = attributeValue; } else attributeValue;
|
||||||
in (attributeSet); })
|
in (attributeSet); })
|
||||||
["overlays" "nixosModules" "homeManagerModules" "packages"]));
|
(flakeOutputs)));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user