diff options
| author | seth <[email protected]> | 2024-05-24 04:46:59 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2024-05-24 21:36:05 -0600 |
| commit | ef2b5ea9f2f9450eac7ac2a875a8f1c6599c1ed0 (patch) | |
| tree | 5d21686d2d34986c6fcdf23fcd8f3a3c176d53bd /modules/flake/configurations.nix | |
| parent | 5533072babca9fdefe45151ee834cdd14e1c679e (diff) | |
don't use flake module
Diffstat (limited to 'modules/flake/configurations.nix')
| -rw-r--r-- | modules/flake/configurations.nix | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/modules/flake/configurations.nix b/modules/flake/configurations.nix deleted file mode 100644 index 5b2d934..0000000 --- a/modules/flake/configurations.nix +++ /dev/null @@ -1,186 +0,0 @@ -{ - config, - lib, - flake-parts-lib, - inputs, - self, - moduleLocation, - withSystem, - ... -}: let - inherit (flake-parts-lib) mkSubmoduleOptions; - - inherit - (builtins) - attrValues - mapAttrs - removeAttrs - ; - - inherit - (lib) - const - literalExpression - mkOption - recursiveUpdate - types - ; - - kernelFor = { - nixos = "linux"; - darwin = "darwin"; - }; - - applySpecialArgsFor = system: - recursiveUpdate { - inherit inputs; - inputs' = withSystem system ({inputs', ...}: inputs'); - }; - - toSystem = type: { - modules ? [], - system, - specialArgs ? {}, - ... - } @ args: - args.builder ( - removeAttrs args ["builder"] - // { - modules = modules ++ attrValues (self."${type}Modules" or {}); - specialArgs = applySpecialArgsFor system specialArgs; - } - ); - - toUser = { - extraSpecialArgs ? {}, - modules ? [], - pkgs, - } @ args: - inputs.home-manager.lib.homeManagerConfiguration ( - args - // { - modules = modules ++ attrValues (self.homeManagerModules or {}); - extraSpecialArgs = applySpecialArgsFor pkgs.stdenv.hostPlatform.system extraSpecialArgs; - } - ); - - mapSystems = type: mapAttrs (const (toSystem type)); - mapUsers = mapAttrs (const toUser); - mapNixOS = mapSystems "nixos"; - mapDarwin = mapSystems "darwin"; - - systemsSubmodule = type: { - freeformType = types.attrsOf types.anything; - - options = { - builder = let - error = throw "System configuration of type `${type}` is not supported!"; - in - mkOption { - type = types.functionTo (types.lazyAttrsOf types.raw); - default = - { - nixos = inputs.nixpkgs.lib.nixosSystem; - darwin = inputs.nix-darwin.lib.darwinSystem; - } - .${type} - or error; - example = literalExpression ( - { - nixos = "inputs.nixpkgs.lib.nixosSystem"; - darwin = "inputs.nix-darwin.lib.darwinSystem"; - } - .${type} - or error - ); - description = '' - Function to build this ${type}Configuration with - ''; - }; - - system = mkOption { - type = types.str; - default = "x86_64-" + kernelFor.${type}; - example = literalExpression ("aarch64-" + kernelFor.${type}); - description = '' - System to build this ${type}Configuration for - ''; - }; - }; - }; - - usersSubmodule = { - freeformType = types.attrsOf types.anything; - - options = { - pkgs = mkOption { - type = types.lazyAttrsOf types.raw; - default = inputs.nixpkgs.legacyPackages.x86_64-linux; - defaultText = "inputs.nixpkgs.legacyPackages.x86_64-linux"; - example = literalExpression "inputs.nixpkgs.legacyPackages.aarch64-linux"; - description = '' - Instance of nixpkgs to use in this homeConfiguration - ''; - }; - }; - }; - - mkSystemOptions = type: - mkOption { - type = types.attrsOf (types.submodule (systemsSubmodule type)); - default = {}; - example = literalExpression '' - { - myComputer = { - system = "aarch64${kernelFor type}"; - }; - } - ''; - description = '' - Attribute set of `lib.${type}System` options. The names of - each attribute will be used to import files in the `systems/` - directory - ''; - }; -in { - options = { - flake = mkSubmoduleOptions { - darwinModules = mkOption { - type = types.lazyAttrsOf types.unspecified; - default = {}; - apply = mapAttrs (name: value: { - _file = "${toString moduleLocation}#darwinModules.${name}"; - imports = [value]; - }); - }; - }; - - configurations = { - nixos = mkSystemOptions "nixos"; - darwin = mkSystemOptions "darwin"; - - home = mkOption { - type = types.attrsOf (types.submodule usersSubmodule); - default = {}; - example = literalExpression '' - { - john = { - pkgs = inputs.nixpkgs.legacyPackages.aarch64-linux; - }; - } - ''; - description = '' - Attribute set of `lib.homeManagerConfiguration` arguments. The - name of each attribute will be used to import files in the `users/` - directory. - ''; - }; - }; - }; - - config.flake = { - nixosConfigurations = mapNixOS config.configurations.nixos; - darwinConfigurations = mapDarwin config.configurations.darwin; - homeConfigurations = mapUsers config.configurations.home; - }; -} |
