{ description = "nipsy's NixOS configuration"; inputs = { hardware.url = "github:nixos/nixos-hardware"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:NixOS/nixpkgs/release-23.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... } @ inputs: let inherit (self) outputs; lib = nixpkgs.lib // home-manager.lib; systems = [ "x86_64-linux" # "aarch64-linux" # "x86_64-darwin" #"aarch64-darwin" # "i686-linux" ]; forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system}); pkgsFor = lib.genAttrs systems (system: import nixpkgs { inherit system; config.allowUnfree = true; }); in { inherit lib; # Custom modules to enable special functionality for nixos or home-manager oriented configs. nixosModules = import ./modules/nixos; homeManagerModules = import ./modules/home-manager; # Custom modifications/overrides to upstream packages. overlays = import ./overlays { inherit inputs outputs; }; # Your custom packages meant to be shared or upstreamed. # Accessible through 'nix build', 'nix shell', etc packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); # nixos-rebuild switch --flake .#hostname' nixosConfigurations = { ginaz = nixpkgs-unstable.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ { nixpkgs.config.pkgs = import nixpkgs-unstable { inherit system; }; } ./hosts/ginaz ]; specialArgs = { inherit inputs outputs; }; }; }; # home-manager switch --flake .#primary-username@hostname' homeConfigurations = { "nipsy@ginaz" = lib.homeManagerConfiguration { modules = [ ./home/nipsy/ginaz.nix ]; pkgs = pkgsFor.x86_64-linux; extraSpecialArgs = { inherit inputs outputs; }; }; }; }; }