{ 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 config.flake.homeModules.home-manager-modules-all ]; 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 config.flake.commonModules.system-modules-all ]; 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 config.flake.nixosModules.nixos-modules-all ({ 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 config.flake.darwinModules.darwin-modules-all ({ 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 ''; }; }; }