nix-config/modules/parts.nix

123 lines
3.2 KiB
Nix

{
inputs,
config,
...
}: let
home-manager = inputs.home-manager;
sops-nix = inputs.sops-nix;
nix-syncthing = inputs.nix-syncthing;
disko = inputs.disko;
impermanence = inputs.impermanence;
common-modules = [
config.flake.commonModules.pkgs
config.flake.commonModules.overlays
];
home-manager-modules =
common-modules
++ [
sops-nix.homeManagerModules.sops
../legacy-modules/home-manager-modules
];
home-manager-base = _: {
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.extraSpecialArgs = {
inherit inputs;
};
home-manager.sharedModules = home-manager-modules;
};
system-modules =
common-modules
++ [
home-manager-base
../legacy-modules/system-modules
];
in {
systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
flake.homeModules.homeModules = {imports = home-manager-modules;};
flake.nixosModules.nixosModules = {
imports =
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
../legacy-modules/nixos-modules
({
lib,
config,
...
}: {
home-manager.users = {
leyla = lib.mkIf config.host.users.leyla.isNormalUser inputs.self.homeModules.leylaConfiguration;
eve = lib.mkIf config.host.users.eve.isNormalUser inputs.self.homeModules.eveConfiguration;
git = lib.mkIf (config.services.forgejo.enable or false) inputs.self.homeModules.gitConfiguration;
};
})
];
};
flake.darwinModules.darwinModules = {
imports =
system-modules
++ [
sops-nix.darwinModules.sops
home-manager.darwinModules.home-manager
../legacy-modules/darwin-modules
({
lib,
config,
...
}: {
home-manager.users = {
leyla = lib.mkIf config.host.users.leyla.isNormalUser inputs.self.homeModules.leylaConfiguration;
eve = lib.mkIf config.host.users.eve.isNormalUser inputs.self.homeModules.eveConfiguration;
};
})
];
};
perSystem = {
pkgs,
system,
...
}: {
formatter = pkgs.alejandra;
devShells.default = pkgs.mkShell {
packages = with pkgs; [
# for version controlling this repo
git
# for formatting code in this repo
alejandra
# for editing secrets in the secrets repo
sops
# for viewing configuration options defined in this repo
nix-inspect
# for installing flakes from this repo onto other systems
nixos-anywhere
# for updating disko configurations
pkgs.disko
# for viewing dconf entries
dconf-editor
# for MCP NixOS server support in development
inputs.mcp-nixos.packages.${system}.default
];
SOPS_AGE_KEY_DIRECTORY = import ../const/sops_age_key_directory.nix;
shellHook = ''
git config core.hooksPath .hooks
'';
};
};
}