mirror of
https://github.com/nix-community/flakelight.git
synced 2024-11-25 08:53:15 +01:00
76 lines
3.0 KiB
Nix
76 lines
3.0 KiB
Nix
|
# flakelite -- Framework for making flakes simple
|
||
|
# Copyright (C) 2023 Archit Gupta <archit@accelbread.com>
|
||
|
# SPDX-License-Identifier: MIT
|
||
|
|
||
|
{ config, src, lib, flakelite, ... }@args:
|
||
|
let
|
||
|
inherit (lib) isFunction mkOption mkIf mkMerge optionalAttrs;
|
||
|
inherit (flakelite) autoImport;
|
||
|
inherit (flakelite.types) path;
|
||
|
in
|
||
|
{
|
||
|
options.nixDir = mkOption {
|
||
|
type = path;
|
||
|
default = src + /nix;
|
||
|
};
|
||
|
|
||
|
config =
|
||
|
let
|
||
|
autoImport' = autoImport config.nixDir;
|
||
|
autoImportArgs = n:
|
||
|
let v = autoImport' n; in
|
||
|
if isFunction v then v args else v;
|
||
|
outputs = autoImportArgs "outputs";
|
||
|
perSystem = autoImport' "perSystem";
|
||
|
withOverlays = autoImport' "withOverlays";
|
||
|
package = autoImport' "package";
|
||
|
packages = autoImportArgs "packages";
|
||
|
overlays = autoImportArgs "overlays";
|
||
|
devShell = autoImportArgs "devShell";
|
||
|
devShells = autoImportArgs "devShells";
|
||
|
app = autoImport' "app";
|
||
|
apps = autoImport' "apps";
|
||
|
checks = autoImport' "checks";
|
||
|
nixosModule = autoImport' "nixosModule";
|
||
|
nixosModules = autoImportArgs "nixosModules";
|
||
|
nixosConfigurations = autoImportArgs [ "nixosConfigurations" "nixos" ];
|
||
|
homeModule = autoImport' "homeModule";
|
||
|
homeModules = autoImportArgs "homeModules";
|
||
|
homeConfigurations = autoImportArgs [ "homeConfigurations" "home" ];
|
||
|
template = autoImportArgs "template";
|
||
|
templates = autoImportArgs "templates";
|
||
|
formatters = autoImport' "formatters";
|
||
|
in
|
||
|
mkMerge [
|
||
|
(mkIf (outputs != null) { inherit outputs; })
|
||
|
(mkIf (perSystem != null) { inherit perSystem; })
|
||
|
(mkIf (withOverlays != null) { inherit withOverlays; })
|
||
|
(mkIf (package != null) { inherit package; })
|
||
|
(mkIf (packages != null) { inherit packages; })
|
||
|
(mkIf (overlays != null) { inherit overlays; })
|
||
|
(mkIf (devShell != null) {
|
||
|
devShell = optionalAttrs (devShell ? inputsFrom)
|
||
|
{ inherit (devShell) inputsFrom; }
|
||
|
// optionalAttrs (devShell ? packages)
|
||
|
{ inherit (devShell) packages; }
|
||
|
// optionalAttrs (devShell ? shellHook)
|
||
|
{ inherit (devShell) shellHook; }
|
||
|
// optionalAttrs (devShell ? env)
|
||
|
{ inherit (devShell) env; };
|
||
|
})
|
||
|
(mkIf (devShells != null) { inherit devShells; })
|
||
|
(mkIf (app != null) { inherit app; })
|
||
|
(mkIf (apps != null) { inherit apps; })
|
||
|
(mkIf (checks != null) { inherit checks; })
|
||
|
(mkIf (nixosModule != null) { inherit nixosModule; })
|
||
|
(mkIf (nixosModules != null) { inherit nixosModules; })
|
||
|
(mkIf (nixosConfigurations != null) { inherit nixosConfigurations; })
|
||
|
(mkIf (homeModule != null) { inherit homeModule; })
|
||
|
(mkIf (homeModules != null) { inherit homeModules; })
|
||
|
(mkIf (homeConfigurations != null) { inherit homeConfigurations; })
|
||
|
(mkIf (template != null) { inherit template; })
|
||
|
(mkIf (templates != null) { inherit templates; })
|
||
|
(mkIf (formatters != null) { inherit formatters; })
|
||
|
];
|
||
|
}
|