99 lines
2.3 KiB
Nix
99 lines
2.3 KiB
Nix
{ inputs }:
|
|
let
|
|
inherit (inputs.nixpkgs.lib) filterAttrs mapAttrs';
|
|
in
|
|
{
|
|
mkExtendedLib = flake: nixpkgs: nixpkgs.lib.extend (final: prev: {
|
|
mjallen = flake.mjallen-lib;
|
|
});
|
|
|
|
mkNixpkgsConfig = flake: {
|
|
overlays = builtins.attrValues flake.overlays;
|
|
config = {
|
|
allowAliases = false;
|
|
allowUnfree = true;
|
|
permittedInsecurePackages = [
|
|
# Add any permitted insecure packages here
|
|
];
|
|
};
|
|
};
|
|
|
|
mkHomeConfigs =
|
|
{
|
|
flake,
|
|
system,
|
|
hostname,
|
|
}:
|
|
let
|
|
inherit (flake.mjallen-lib.file) scanHomes;
|
|
homesPath = ../../homes;
|
|
allHomes = scanHomes homesPath;
|
|
in
|
|
filterAttrs (
|
|
_name: homeConfig: homeConfig.system == system && homeConfig.hostname == hostname
|
|
) allHomes;
|
|
|
|
mkHomeManagerConfig =
|
|
{
|
|
extendedLib,
|
|
inputs,
|
|
system,
|
|
matchingHomes,
|
|
isNixOS ? true,
|
|
}:
|
|
if matchingHomes != { } then
|
|
{
|
|
home-manager = {
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
extraSpecialArgs = {
|
|
inherit inputs system;
|
|
inherit (inputs) self;
|
|
lib = extendedLib;
|
|
};
|
|
sharedModules = [
|
|
{ _module.args.lib = extendedLib; }
|
|
]
|
|
++ (extendedLib.mjallen.file.importModulesRecursive ../../modules/home);
|
|
users = mapAttrs' (_name: homeConfig: {
|
|
name = homeConfig.username;
|
|
value = {
|
|
imports = [ homeConfig.path ];
|
|
home = {
|
|
inherit (homeConfig) username;
|
|
homeDirectory = inputs.nixpkgs.lib.mkDefault (
|
|
if isNixOS then "/home/${homeConfig.username}" else "/Users/${homeConfig.username}"
|
|
);
|
|
};
|
|
}
|
|
// (
|
|
if isNixOS then
|
|
{
|
|
_module.args.username = homeConfig.username;
|
|
}
|
|
else
|
|
{ }
|
|
);
|
|
}) matchingHomes;
|
|
};
|
|
}
|
|
else
|
|
{ };
|
|
|
|
mkSpecialArgs =
|
|
{
|
|
inputs,
|
|
hostname,
|
|
username,
|
|
extendedLib,
|
|
}:
|
|
{
|
|
inherit inputs hostname username;
|
|
inherit (inputs) self;
|
|
lib = extendedLib;
|
|
namespace = "mjallen";
|
|
format = "system";
|
|
host = hostname;
|
|
};
|
|
}
|