{ description = "Frosted Flakes"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; # WARNING: Where possible, prefer the stable branch of nixpkgs as nixpkgs-unstable may have incompatable or vulnerable software. nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager/release-22.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-hardware = { url = "github:nixos/nixos-hardware"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprpaper = { url = "github:hyprwm/hyprpaper"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprpicker = { url = "github:hyprwm/hyprpicker"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, hyprland, hyprpaper, hyprpicker, ... }: let system = "aarch64-linux"; lib = import ./lib { inherit pkgs inputs; lib = nixpkgs.lib; }; inherit (lib._) mapModules mapModulesRec mkHost; mkPkgs = pkgs: overlays: import pkgs { inherit system; config.allowUnfree = true; overlays = overlays ++ (lib.attrValues self.overlays); }; pkgs = mkPkgs nixpkgs [ self.overlay ]; in { packages."${system}" = mapModules ./packages (p: pkgs.callPackage p {}); overlay = final: prev: { _ = self.packages."${system}"; unstable = mkPkgs nixpkgs-unstable []; }; overlays = mapModules ./overlays import; nixosModules = (mapModulesRec ./modules import) ++ [ hyprland.nixosModules.default ]; nixosConfigurations = mapModules ./hosts (host: mkHost host { inherit system; }); devShell."${system}" = import ./shell.nix { inherit pkgs; }; }; }