nix-dots/flake.nix

126 lines
2.7 KiB
Nix

{
description = "Michael Thomas's NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-21.11";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
nixos-wsl = {
url = "github:nix-community/NixOS-WSL";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
home-manager = {
url = "github:rycee/home-manager/release-21.11";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
};
outputs = { self, nixpkgs, unstable, nur, nixos-wsl, home-manager, ... }@inputs: {
# This repo's overlay plus any other overlays you use
# If you want to use packages from flakes that are not nixpkgs (such as NUR), add their overlays here.
overlays = import ./overlays // {
# Third party overlays here
};
overlaysModule = {
nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
};
nixosConfigurations = {
loft = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./modules/common.nix
./modules/containers.nix
./machines/loft/configuration.nix
];
specialArgs = { inherit inputs; };
};
kitchen = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
self.overlaysModule
./modules/common.nix
./modules/containers.nix
./machines/kitchen/configuration.nix
];
specialArgs = { inherit inputs; };
};
work = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
self.overlaysModule
{
nixpkgs.overlays = [
(import ./overlays/iptables)
];
}
./modules/containers.nix
./modules/nix.nix
./modules/vscode-server.nix
./machines/work/configuration.nix
];
specialArgs = { inherit inputs; };
};
};
homeConfigurations = {
nixos = inputs.home-manager.lib.homeManagerConfiguration {
system = "x86_64-linux";
homeDirectory = "/home/michael";
username = "michael";
stateVersion = "21.05";
configuration = { config, pkgs, ... }:
{
nixpkgs.config = {
allowUnfree = true;
};
nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
programs.home-manager.enable = true;
imports = [
./user/environments/nixos/home.nix
];
};
};
wsl = inputs.home-manager.lib.homeManagerConfiguration {
system = "x86_64-linux";
homeDirectory = "/home/michael";
username = "michael";
stateVersion = "21.05";
configuration = { config, pkgs, ... }:
{
nixpkgs.config = {
allowUnfree = true;
};
nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
programs.home-manager.enable = true;
imports = [
./user/environments/wsl/home.nix
];
};
};
};
};
}