{ description = "Joey's NixOS configuration"; inputs = { firefox-gnome-theme = { flake = false; url = "github:rafaelmardojai/firefox-gnome-theme"; }; home-manager = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/home-manager/release-24.05"; }; impermanence.url = "github:nix-community/impermanence"; lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1"; nix-flatpak.url = "github:gmodena/nix-flatpak/v0.4.1"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = inputs @ { self, ... }: let directories = rec { commonHomeModule = homeModules + "/common"; commonHostModule = hostModules + "/common"; customModules = self + "/modules"; customOptions = customModules + "/options"; homeModules = self + "/home"; hostModules = self + "/hosts"; userModules = customModules + "/users"; }; eachSystem = # Replacement for flake-utils.eachDefaultSystem with inputs.nixpkgs.lib; f: foldAttrs mergeAttrs { } ( map (s: mapAttrs (_: v: { ${s} = v; }) (f s)) systems.flakeExposed ); in eachSystem (system: let outputs = self.outputs // directories; pkgs = import ./custom-pkgs { inherit inputs pkgs system; }; in { packages = { homeConfigurations = import ./home.nix { inherit inputs outputs pkgs; }; nixosConfigurations = import ./nixos.nix { inherit inputs outputs pkgs system; }; }; }); }