summaryrefslogtreecommitdiff
path: root/modules/flake/configs.nix
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-02 14:22:52 -0500
committerSeth Flynn <[email protected]>2025-02-02 14:31:11 -0500
commit26b52db5ca8d1483ca75f23b7b1a6fd5b2cf0e4d (patch)
treec6cba9cadb44129f220259023f47c49518d9f34b /modules/flake/configs.nix
parentb4276fb9c9a535b0ad81ab55dad4918e97b0dc3c (diff)
flake/configurations: better type out and share options
Diffstat (limited to 'modules/flake/configs.nix')
-rw-r--r--modules/flake/configs.nix214
1 files changed, 0 insertions, 214 deletions
diff --git a/modules/flake/configs.nix b/modules/flake/configs.nix
deleted file mode 100644
index 290255f..0000000
--- a/modules/flake/configs.nix
+++ /dev/null
@@ -1,214 +0,0 @@
-{
- config,
- lib,
- inputs,
- withSystem,
- ...
-}:
-let
- cfg = config.configurations;
-
- applySpecialArgs = lib.recursiveUpdate { inherit inputs; };
- applyModules = lib.concat (
- lib.toList (
- { pkgs, ... }:
- {
- _module.args.inputs' = withSystem pkgs.stdenv.hostPlatform.system ({ inputs', ... }: inputs');
- }
- )
- );
-
- nixosSystem =
- {
- nixpkgs,
- modules,
- specialArgs,
- ...
- }@args:
- nixpkgs.lib.nixosSystem (
- lib.removeAttrs args [ "nixpkgs" ]
- // {
- modules = applyModules modules;
- specialArgs = applySpecialArgs specialArgs;
- }
- );
-
- darwinSystem =
- {
- nix-darwin,
- modules,
- specialArgs,
- ...
- }@args:
- nix-darwin.lib.darwinSystem (
- lib.removeAttrs args [ "nix-darwin" ]
- // {
- modules = applyModules modules;
- specialArgs = applySpecialArgs specialArgs;
- }
- );
-
- homeManagerConfiguration =
- {
- home-manager,
- modules,
- extraSpecialArgs,
- ...
- }@args:
- home-manager.lib.homeManagerConfiguration (
- lib.removeAttrs args [ "home-manager" ]
- // {
- modules = applyModules modules;
- extraSpecialArgs = applySpecialArgs extraSpecialArgs;
- }
- );
-
- modulesType = lib.types.listOf lib.types.deferredModule;
-
- specialArgsOption = lib.mkOption {
- type = lib.types.lazyAttrsOf lib.types.raw;
- default = { };
- description = "Extra arguments to pass to all modules, that are available in `imports` but can not be extended or overridden by the `modules`.";
- example = lib.literalExpression ''
- { foo = "bar"; }
- '';
- };
-
- legacyPackagesType = lib.types.lazyAttrsOf lib.types.raw;
- flakeType = legacyPackagesType;
-
- freeformType = lib.types.attrsOf lib.types.any;
-
- nixosConfigurationSubmodule = {
- inherit freeformType;
-
- options = {
- nixpkgs = lib.mkOption {
- type = flakeType;
- default = inputs.nixpkgs or (throw "`nixpkgs` must be defined");
- defaultText = "inputs.nixpkgs";
- description = "A nixpkgs input.";
- example = lib.literalExpression "inputs.nixpkgs-stable";
- };
-
- modules = lib.mkOption {
- type = modulesType;
- default = [ ];
- description = "The NixOS modules to include in the system configuration.";
- example = lib.literalExpression ''
- [ ./configuration.nix ]
- '';
- };
-
- specialArgs = specialArgsOption;
- modulesLocation = lib.mkOption {
- type = lib.types.nullOr lib.types.path;
- default = null;
- description = "A default location for modules that aren't passed by path, used for error messages.";
- };
- };
- };
-
- darwinConfigurationSubmodule = {
- inherit freeformType;
-
- options = {
- nix-darwin = lib.mkOption {
- type = flakeType;
- default = inputs.nix-darwin or inputs.darwin or (throw "`nix-darwin` must be defined");
- defaultText = "inputs.nix-darwin or inputs.darwin";
- description = "A nix-darwin input.";
- example = lib.literalExpression "inputs.nix-darwin";
- };
-
- modules = lib.mkOption {
- type = modulesType;
- default = [ ];
- description = "The Darwin modules to include in the system configuration.";
- example = lib.literalExpression ''
- [ ./configuration.nix ]
- '';
- };
-
- specialArgs = specialArgsOption;
- };
- };
-
- homeConfigurationSubmodule = {
- inherit freeformType;
-
- options = {
- home-manager = lib.mkOption {
- type = flakeType;
- default = inputs.home-manager or (throw "`home-manager` must be defined");
- defaultText = "inputs.home-manager";
- description = "A home-manager input.";
- example = lib.literalExpression "inputs.hm";
- };
-
- pkgs = lib.mkOption {
- type = legacyPackagesType;
- description = "An instance of Nixpkgs to use in the configuration.";
- example = lib.literalExpression ''
- withSystem "x86_64-linux" ({ pkgs, ... }: pkgs)
- '';
- };
-
- modules = lib.mkOption {
- type = modulesType;
- default = [ ];
- description = "The home-manager modules to include in the configuration.";
- example = lib.literalExpression ''
- [ ./home.nix ]
- '';
- };
-
- extraSpecialArgs = specialArgsOption;
- };
- };
-in
-{
- options.configurations = {
- nixos = lib.mkOption {
- type = lib.types.attrsOf (lib.types.submodule nixosConfigurationSubmodule);
- default = { };
- apply = lib.mapAttrs (lib.const nixosSystem);
- description = "A map of configuration names and options for `nixosSystem`.";
- example = lib.literalExpression ''
- {
- my-machine = { modules = [ ./configuration.nix ]; }
- }
- '';
- };
-
- darwin = lib.mkOption {
- type = lib.types.attrsOf (lib.types.submodule darwinConfigurationSubmodule);
- default = { };
- apply = lib.mapAttrs (lib.const darwinSystem);
- description = "A map of configuration names and options for `darwinSystem`.";
- example = lib.literalExpression ''
- {
- my-mac = { modules = [ ./darwin-configuration.nix ]; }
- }
- '';
- };
-
- home = lib.mkOption {
- type = lib.types.attrsOf (lib.types.submodule homeConfigurationSubmodule);
- default = { };
- apply = lib.mapAttrs (lib.const homeManagerConfiguration);
- description = "A map of configuration names and options for `homeManagerConfiguration`.";
- example = lib.literalExpression ''
- {
- my-home = { modules = [ ./home.nix ]; }
- }
- '';
- };
- };
-
- config.flake = {
- nixosConfigurations = cfg.nixos;
- darwinConfigurations = cfg.darwin;
- homeConfigurations = cfg.home;
- };
-}