#
# flake.nix *
# ├─ ./hosts
# │ └─ default.nix
# └─ ./nix
# └─ default.nix
#
{
description = "My Personal NixOS and Darwin System Flake Configuration";
inputs = # All flake references used to build my NixOS setup. These are dependencies.
{
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; # Default Stable Nix Packages
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # Unstable Nix Packages
home-manager = { # User Package Management
url = "github:nix-community/home-manager/release-23.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = { # NUR Packages
url = "github:nix-community/NUR"; # Add "nur.nixosModules.nur" to the host modules
};
nixgl = { # OpenGL
url = "github:guibou/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, home-manager, nur, nixgl, ... }: # Function that tells my flake which to use and what do what to do with the dependencies.
let # Variables that can be used in the config files.
user = "ruther";
location = "$HOME/.setup";
in # Use above variables in ...
{
nixosConfigurations = ( # NixOS configurations
import ./hosts { # Imports ./hosts/default.nix
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-unstable home-manager nur user location; # Also inherit home-manager so it does not need to be defined here.
}
);
homeConfigurations = ( # Non-NixOS configurations
import ./nix {
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-unstable home-manager nixgl user;
}
);
};
}