mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-02-24 06:19:02 +00:00
flake-parts/setups: move default specialArgs and modules to own
flake-parts module
This commit is contained in:
parent
16b3844fad
commit
90738d470f
@ -4,8 +4,13 @@
|
|||||||
./packages.nix
|
./packages.nix
|
||||||
./templates.nix
|
./templates.nix
|
||||||
|
|
||||||
|
# Here's where the shared setup configurations for this entire cluster came
|
||||||
|
# from.
|
||||||
|
./setups.nix
|
||||||
|
|
||||||
# Environment configurations.
|
# Environment configurations.
|
||||||
./disko.nix
|
./disko.nix
|
||||||
|
./flake-parts.nix
|
||||||
./home-manager.nix
|
./home-manager.nix
|
||||||
./nixos.nix
|
./nixos.nix
|
||||||
./nixvim.nix
|
./nixvim.nix
|
||||||
|
13
configs/flake-parts/flake-parts.nix
Normal file
13
configs/flake-parts/flake-parts.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# This is simply to make using my flake modules a bit easier for my private
|
||||||
|
# configurations.
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
flake.flakeModules = {
|
||||||
|
default = ../../modules/flake-parts;
|
||||||
|
|
||||||
|
# A little module to make it convenient for setting up the baseline of all
|
||||||
|
# of the configurations.
|
||||||
|
baseSetupsConfig = ./setups.nix;
|
||||||
|
};
|
||||||
|
}
|
53
configs/flake-parts/setups.nix
Normal file
53
configs/flake-parts/setups.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# The baseline configuration for all of the setup type in this cluster. Take
|
||||||
|
# note this is also exported as a flake-parts module to be easily used in
|
||||||
|
# private configurations.
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
homeManagerModules = ../../modules/home-manager;
|
||||||
|
nixosModules = ../../modules/nixos;
|
||||||
|
nixvimModules = ../../modules/nixvim;
|
||||||
|
wrapperManagerModules = ../../modules/wrapper-manager;
|
||||||
|
in {
|
||||||
|
setups.home-manager = {
|
||||||
|
sharedSpecialArgs = {
|
||||||
|
foodogsquaredModulesPath = builtins.toString homeManagerModules;
|
||||||
|
};
|
||||||
|
sharedModules = [
|
||||||
|
homeManagerModules
|
||||||
|
../../modules/home-manager/_private
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
setups.nixos = {
|
||||||
|
sharedSpecialArgs = {
|
||||||
|
foodogsquaredUtils =
|
||||||
|
import ../../lib/utils/nixos.nix { inherit lib; };
|
||||||
|
foodogsquaredModulesPath = builtins.toString nixosModules;
|
||||||
|
};
|
||||||
|
sharedModules = [
|
||||||
|
nixosModules
|
||||||
|
../../modules/nixos/_private
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
setups.nixvim = {
|
||||||
|
sharedSpecialArgs = {
|
||||||
|
foodogsquaredModulesPath = builtins.toString nixvimModules;
|
||||||
|
};
|
||||||
|
sharedModules = [
|
||||||
|
nixvimModules
|
||||||
|
../../modules/nixvim/_private
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
setups.wrapper-manager = {
|
||||||
|
sharedSpecialArgs = {
|
||||||
|
foodogsquaredModulesPath = builtins.toString wrapperManagerModules;
|
||||||
|
};
|
||||||
|
sharedModules = [
|
||||||
|
wrapperManagerModules
|
||||||
|
../../modules/wrapper-manager/_private
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -6,17 +6,13 @@
|
|||||||
let
|
let
|
||||||
cfg = config.setups.home-manager;
|
cfg = config.setups.home-manager;
|
||||||
partsConfig = config;
|
partsConfig = config;
|
||||||
homeManagerModules = ../../home-manager;
|
|
||||||
|
|
||||||
# A thin wrapper around the home-manager configuration function.
|
# A thin wrapper around the home-manager configuration function.
|
||||||
mkHome = { pkgs, lib ? pkgs.lib, system, homeManagerBranch ? "home-manager"
|
mkHome = { pkgs, lib ? pkgs.lib, system, homeManagerBranch ? "home-manager"
|
||||||
, extraModules ? [ ], specialArgs ? { } }:
|
, extraModules ? [ ], specialArgs ? { } }:
|
||||||
inputs.${homeManagerBranch}.lib.homeManagerConfiguration {
|
inputs.${homeManagerBranch}.lib.homeManagerConfiguration {
|
||||||
extraSpecialArgs = specialArgs // {
|
|
||||||
foodogsquaredModulesPath = builtins.toString homeManagerModules;
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit pkgs lib;
|
inherit pkgs lib;
|
||||||
|
extraSpecialArgs = specialArgs;
|
||||||
modules = extraModules;
|
modules = extraModules;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -219,6 +215,8 @@ in {
|
|||||||
config = let
|
config = let
|
||||||
hmUserConfig = partsConfig.setups.home-manager.configs.${name};
|
hmUserConfig = partsConfig.setups.home-manager.configs.${name};
|
||||||
in {
|
in {
|
||||||
|
# The rationale for this is we're making sure that it is
|
||||||
|
# synced with the NixOS user settings.
|
||||||
userConfig = {
|
userConfig = {
|
||||||
isNormalUser = lib.mkDefault true;
|
isNormalUser = lib.mkDefault true;
|
||||||
createHome = lib.mkDefault true;
|
createHome = lib.mkDefault true;
|
||||||
@ -348,17 +346,12 @@ in {
|
|||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.configs != { }) {
|
config = lib.mkMerge [
|
||||||
|
{
|
||||||
setups.home-manager.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
setups.home-manager.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
||||||
|
}
|
||||||
|
|
||||||
# Import our own home-manager modules.
|
(lib.mkIf (cfg.configs != { }) {
|
||||||
setups.home-manager.sharedModules = [
|
|
||||||
homeManagerModules
|
|
||||||
|
|
||||||
# Import our private modules...
|
|
||||||
../../home-manager/_private
|
|
||||||
];
|
|
||||||
|
|
||||||
flake = let
|
flake = let
|
||||||
# A quick data structure we can pass through multiple build pipelines.
|
# A quick data structure we can pass through multiple build pipelines.
|
||||||
pureHomeManagerConfigs = let
|
pureHomeManagerConfigs = let
|
||||||
@ -407,5 +400,6 @@ in {
|
|||||||
(name: configs: lib.mapAttrs' (generateDeployNode name) configs)
|
(name: configs: lib.mapAttrs' (generateDeployNode name) configs)
|
||||||
validConfigs;
|
validConfigs;
|
||||||
};
|
};
|
||||||
};
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
let
|
let
|
||||||
cfg = config.setups.nixos;
|
cfg = config.setups.nixos;
|
||||||
partsConfig = config;
|
partsConfig = config;
|
||||||
nixosModules = ../../nixos;
|
|
||||||
|
|
||||||
# A thin wrapper around the NixOS configuration function.
|
# A thin wrapper around the NixOS configuration function.
|
||||||
mkHost =
|
mkHost =
|
||||||
@ -17,12 +16,7 @@ let
|
|||||||
# on nixpkgs.lib.nixosSystem flake output.
|
# on nixpkgs.lib.nixosSystem flake output.
|
||||||
nixosSystem = args: import "${pkgs.path}/nixos/lib/eval-config.nix" args;
|
nixosSystem = args: import "${pkgs.path}/nixos/lib/eval-config.nix" args;
|
||||||
in (lib.makeOverridable nixosSystem) {
|
in (lib.makeOverridable nixosSystem) {
|
||||||
inherit pkgs;
|
inherit pkgs specialArgs;
|
||||||
specialArgs = specialArgs // {
|
|
||||||
foodogsquaredUtils =
|
|
||||||
import ../../../lib/utils/nixos.nix { inherit lib; };
|
|
||||||
foodogsquaredModulesPath = builtins.toString nixosModules;
|
|
||||||
};
|
|
||||||
modules = extraModules
|
modules = extraModules
|
||||||
++ [{ nixpkgs.hostPlatform = lib.mkForce system; }];
|
++ [{ nixpkgs.hostPlatform = lib.mkForce system; }];
|
||||||
|
|
||||||
@ -272,16 +266,12 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.configs != { }) {
|
config = lib.mkMerge [
|
||||||
|
{
|
||||||
setups.nixos.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
setups.nixos.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
||||||
|
}
|
||||||
|
|
||||||
setups.nixos.sharedModules = [
|
(lib.mkIf (cfg.configs != { }) {
|
||||||
# Import our own public NixOS modules.
|
|
||||||
nixosModules
|
|
||||||
|
|
||||||
# Import our private modules.
|
|
||||||
../../nixos/_private
|
|
||||||
];
|
|
||||||
|
|
||||||
flake = let
|
flake = let
|
||||||
# A quick data structure we can pass through multiple build pipelines.
|
# A quick data structure we can pass through multiple build pipelines.
|
||||||
@ -355,5 +345,6 @@ in {
|
|||||||
in lib.listToAttrs images;
|
in lib.listToAttrs images;
|
||||||
in lib.concatMapAttrs generateImages validImages;
|
in lib.concatMapAttrs generateImages validImages;
|
||||||
};
|
};
|
||||||
};
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -8,16 +8,13 @@
|
|||||||
let
|
let
|
||||||
partsConfig = config;
|
partsConfig = config;
|
||||||
cfg = config.setups.nixvim;
|
cfg = config.setups.nixvim;
|
||||||
nixvimModules = ../../nixvim;
|
|
||||||
|
|
||||||
mkNixvimConfig = { system, pkgs, nixvimBranch ? "nixvim", modules ? [ ]
|
mkNixvimConfig = { system, pkgs, nixvimBranch ? "nixvim", modules ? [ ]
|
||||||
, specialArgs ? { }, }:
|
, specialArgs ? { }, }:
|
||||||
inputs.${nixvimBranch}.legacyPackages.${system}.makeNixvimWithModule {
|
inputs.${nixvimBranch}.legacyPackages.${system}.makeNixvimWithModule {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
module = { imports = modules; };
|
module = { imports = modules; };
|
||||||
extraSpecialArgs = specialArgs // {
|
extraSpecialArgs = specialArgs;
|
||||||
foodogsquaredModulesPath = builtins.toString nixvimModules;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
modulesOption = lib.mkOption {
|
modulesOption = lib.mkOption {
|
||||||
@ -208,7 +205,7 @@ in {
|
|||||||
attrsOf (submodule [
|
attrsOf (submodule [
|
||||||
nixvimIntegrationModule
|
nixvimIntegrationModule
|
||||||
({ config, lib, ... }: {
|
({ config, lib, ... }: {
|
||||||
config.modules =
|
config.modules = lib.optionals (config.nixvim.instance != null)
|
||||||
[ inputs.${config.nixvim.branch}.nixosModules.nixvim ];
|
[ inputs.${config.nixvim.branch}.nixosModules.nixvim ];
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
@ -219,22 +216,18 @@ in {
|
|||||||
attrsOf (submodule [
|
attrsOf (submodule [
|
||||||
nixvimIntegrationModule
|
nixvimIntegrationModule
|
||||||
({ config, lib, ... }: {
|
({ config, lib, ... }: {
|
||||||
config.modules =
|
config.modules = lib.optionals (config.nixvim.instance != null)
|
||||||
[ inputs.${config.nixvim.branch}.homeManagerModules.nixvim ];
|
[ inputs.${config.nixvim.branch}.homeManagerModules.nixvim ];
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.configs != { }) {
|
config = lib.mkMerge [
|
||||||
|
{
|
||||||
setups.nixvim.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
setups.nixvim.sharedNixpkgsConfig = config.setups.sharedNixpkgsConfig;
|
||||||
|
}
|
||||||
|
|
||||||
setups.nixvim.sharedModules = [
|
(lib.mkIf (cfg.configs != { }) {
|
||||||
nixvimModules
|
|
||||||
|
|
||||||
# Import our private modules.
|
|
||||||
../../nixvim/_private
|
|
||||||
];
|
|
||||||
|
|
||||||
perSystem = { system, config, lib, ... }:
|
perSystem = { system, config, lib, ... }:
|
||||||
(let
|
(let
|
||||||
validConfigs =
|
validConfigs =
|
||||||
@ -273,5 +266,6 @@ in {
|
|||||||
name = "${name} configuration";
|
name = "${name} configuration";
|
||||||
})) nixvimConfigurations;
|
})) nixvimConfigurations;
|
||||||
});
|
});
|
||||||
};
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ systems }:
|
{ systems }:
|
||||||
|
|
||||||
{ lib, name, ... }: {
|
{ lib, name, config, ... }: {
|
||||||
options = {
|
options = {
|
||||||
systems = lib.mkOption {
|
systems = lib.mkOption {
|
||||||
type = with lib.types; listOf str;
|
type = with lib.types; listOf str;
|
||||||
@ -54,6 +54,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
config.modules = lib.singleton {
|
config.modules = lib.singleton {
|
||||||
_module.args = { inherit (config) firstSetupArgs; }
|
_module.args = { inherit (config) firstSetupArgs; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -156,13 +156,13 @@ in {
|
|||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.configs != { }) {
|
config = lib.mkMerge [
|
||||||
|
{
|
||||||
setups.wrapper-manager.sharedNixpkgsConfig =
|
setups.wrapper-manager.sharedNixpkgsConfig =
|
||||||
config.setups.sharedNixpkgsConfig;
|
config.setups.sharedNixpkgsConfig;
|
||||||
|
}
|
||||||
|
|
||||||
setups.wrapper-manager.sharedModules =
|
(lib.mkIf (cfg.configs != { }) {
|
||||||
[ ../../wrapper-manager ../../wrapper-manager/_private ];
|
|
||||||
|
|
||||||
perSystem = { system, config, lib, ... }:
|
perSystem = { system, config, lib, ... }:
|
||||||
let
|
let
|
||||||
validWrapperManagerConfigs =
|
validWrapperManagerConfigs =
|
||||||
@ -182,5 +182,6 @@ in {
|
|||||||
++ metadata.modules;
|
++ metadata.modules;
|
||||||
}) validWrapperManagerConfigs;
|
}) validWrapperManagerConfigs;
|
||||||
};
|
};
|
||||||
};
|
});
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user