Files
nix-config/flake.nix

127 lines
3.3 KiB
Nix

{
description = "A simple NixOS flake";
inputs = {
# NixOS official package source, using unstable here
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
catppuccin.url = "github:catppuccin/nix";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05";
home-manager-stable = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
};
outputs = {
self,
catppuccin,
nur,
plasma-manager,
...
} @ inputs: let
hosts = import ./hosts/hosts.nix;
# Make config for non-NixOS hosts
mkHomeConfiguration = {
host,
nixpkgs,
home-manager,
modules ? [],
}:
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
system = host.arch;
config = {
allowUnfree = true;
};
overlays = [
nur.overlay
];
};
modules =
[
./hosts/${host.dir}/home.nix
catppuccin.homeModules.catppuccin
]
++ modules;
};
# Make config for NixOS hosts
mkNixOSConfigurations = {
host,
nixpkgs,
home-manager,
modules ? [],
}:
nixpkgs.lib.nixosSystem {
system = host.arch;
specialArgs = {inherit inputs;};
modules =
[
./hosts/${host.dir}/configuration.nix
nur.modules.nixos.default
catppuccin.nixosModules.catppuccin
home-manager.nixosModules.home-manager
{
home-manager.backupFileExtension = "backup";
home-manager.useGlobalPkgs = true;
home-manager.users."${host.user}".imports = [
./hosts/${host.dir}/home.nix
catppuccin.homeModules.catppuccin
];
}
]
++ modules;
};
in {
# Please replace my-nixos with your hostname
nixosConfigurations = {
anzu = mkNixOSConfigurations {
host = hosts.anzu;
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
modules = [
{
home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager];
}
];
};
ichigo = mkNixOSConfigurations {
host = hosts.ichigo;
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
modules = [
{
home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager];
}
];
};
kuromi = mkNixOSConfigurations {
host = hosts.kuromi;
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
modules = [
{
home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager];
}
];
};
};
};
}