#
# 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-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.05";
semi-secrets = {
url = "git+ssh://git@github.com/Rutherther/nixos-semi-secrets";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { # User Package Management
url = "github:nix-community/home-manager/master";
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";
};
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware = {
url = "github:NixOS/nixos-hardware/master";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ { self, nixpkgs, nixpkgs-stable, nix-index-database, home-manager, nur, nixgl, nixos-hardware, ... }: # 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";
pkgs = import nixpkgs {
system = "x86_64-linux";
};
in # Use above variables in ...
{
nixosConfigurations = ( # NixOS configurations
import ./hosts { # Imports ./hosts/default.nix
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-stable nix-index-database home-manager nur user location;
}
);
homeConfigurations = ( # Non-NixOS configurations
import ./nix {
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-stable nix-index-database home-manager nixgl user location;
}
);
devShells.x86_64-linux.default = pkgs.mkShell {
packages = [
pkgs.nil
];
};
};
}