nixos_config/flake.nix
2025-12-06 23:47:07 +01:00

125 lines
4.2 KiB
Nix

{
description = "NixOS configuration for all hosts";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
nur-unstable = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixpkgs-unstable, nur, nur-unstable, home-manager, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
flake.setFlakeRegistry = true;
overlays = [ nur.overlays.default ];
};
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
flake.setFlakeRegistry = true;
overlays = [ nur-unstable.overlays.default ];
};
sharedSpecialArgs = {
inherit pkgs-unstable;
};
sharedModules = [
./hosts/common/base.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit (config.networking) hostName;
inherit pkgs pkgs-unstable;
}; # end extraSpecialArgs
home-manager.backupFileExtension = "backup";
}) # end home manager
]; # end sharedModules
in
{
nixosConfigurations = {
electra = nixpkgs.lib.nixosSystem {
inherit system;
inherit pkgs;
specialArgs = sharedSpecialArgs // {};
modules = sharedModules ++ [
./hosts/common/workstation.nix
./hosts/electra/configuration.nix
./hosts/common/wm/sway.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/workstation.nix
./home/wm/sway.nix
];
}) # end home-manager
]; # end modules
}; # end electra
tower = nixpkgs.lib.nixosSystem {
inherit system;
inherit pkgs;
specialArgs = sharedSpecialArgs // {};
modules = sharedModules ++ [
./hosts/common/workstation.nix
./hosts/tower/configuration.nix
./hosts/common/wm/sway.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/workstation.nix
./home/wm/sway.nix
];
}) # end home-manager
]; # end modules
}; # end tower
tesla-nixos = nixpkgs.lib.nixosSystem {
inherit system;
inherit pkgs;
specialArgs = sharedSpecialArgs // {};
modules = sharedModules ++ [
./hosts/common/server.nix
./hosts/tesla-nixos/configuration.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/server.nix
];
}) # end home-manager
]; # end modules
}; # end tesla-nixos
blogbox = nixpkgs.lib.nixosSystem {
inherit system;
inherit pkgs;
specialArgs = sharedSpecialArgs // {};
modules = sharedModules ++ [
./hosts/common/server.nix
./hosts/blogbox/configuration.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/server.nix
];
}) # end home-manager
]; # end modules
}; # end tesla-nixos
}; # end nixos conf
}; # end "in"
} # end file