nix-config/util/default.nix

129 lines
3.1 KiB
Nix

{inputs}: let
util = (import ./default.nix) {inherit inputs;};
outputs = inputs.self.outputs;
lib = inputs.lib;
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
nix-darwin = inputs.nix-darwin;
sops-nix = inputs.sops-nix;
nix-syncthing = inputs.nix-syncthing;
disko = inputs.disko;
impermanence = inputs.impermanence;
# lix-module = inputs.lix-module;
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
forEachSystem = nixpkgs.lib.genAttrs systems;
pkgsFor = system: nixpkgs.legacyPackages.${system};
common-modules = [
../modules/common-modules
];
home-manager-modules =
common-modules
++ [
sops-nix.homeManagerModules.sops
impermanence.homeManagerModules.impermanence
../modules/home-manager-modules
];
home-manager-config = nixpkgs: {
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.extraSpecialArgs = {
inherit inputs outputs util;
};
home-manager.users = import ../configurations/home-manager (nixpkgs
// {
osConfig = nixpkgs.config;
});
home-manager.sharedModules = home-manager-modules;
};
system-modules =
common-modules
++ [
home-manager-config
../modules/system-modules
];
in {
forEachPkgs = lambda: forEachSystem (system: lambda (pkgsFor system));
mkUnless = condition: yes: (lib.mkIf (!condition) yes);
mkIfElse = condition: yes: no:
lib.mkMerge [
(lib.mkIf condition yes)
(lib.mkUnless condition no)
];
mkNixosInstaller = host: userKeys:
nixpkgs.lib.nixosSystem {
modules = [
{
# TODO: authorized keys for all users and hosts
}
../configurations/nixos/${host}
];
};
mkNixosSystem = host:
nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs util;};
modules =
system-modules
++ [
sops-nix.nixosModules.sops
nix-syncthing.nixosModules.syncthing
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
disko.nixosModules.disko
# lix-module.nixosModules.default
../modules/nixos-modules
../configurations/nixos/${host}
];
};
mkDarwinSystem = host:
nix-darwin.lib.darwinSystem {
specialArgs = {inherit inputs outputs util;};
modules =
system-modules
++ [
sops-nix.darwinModules.sops
home-manager.darwinModules.home-manager
../modules/darwin-modules
../configurations/darwin/${host}
];
};
mkHome = {
user,
host,
system,
osConfig,
}:
home-manager.lib.homeManagerConfiguration {
pkgs = pkgsFor system;
extraSpecialArgs = {
inherit inputs util outputs osConfig;
};
modules =
home-manager-modules
++ [
../configurations/home-manager/${user}
];
};
syncthingConfiguration = nix-syncthing.lib.syncthingConfiguration {
modules = [
(import ../configurations/syncthing)
];
};
}