162 lines
4.3 KiB
Nix
162 lines
4.3 KiB
Nix
{
|
|
description = "NixOS configuration for all hosts";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
nur = {
|
|
url = "github:nix-community/NUR";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
stylix = {
|
|
url = "github:nix-community/stylix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
noctalia = {
|
|
url = "github:noctalia-dev/noctalia-shell";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.noctalia-qs.follows = "noctalia-qs";
|
|
};
|
|
noctalia-qs = {
|
|
url = "github:noctalia-dev/noctalia-qs";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
|
};
|
|
|
|
outputs = inputs @ {
|
|
self,
|
|
nixpkgs,
|
|
...
|
|
}:
|
|
let
|
|
system = "x86_64-linux";
|
|
repoLocalPath =
|
|
let
|
|
fromEnv = builtins.getEnv "NIXOS_CONFIG_ROOT";
|
|
in
|
|
if fromEnv != "" then fromEnv else "/home/alisceon/.nixos_config";
|
|
|
|
overlays = [
|
|
inputs.nur.overlays.default
|
|
(_final: prev: {
|
|
# openldap 2.6.13 currently flakes in its test suite when bottles pulls
|
|
# in the i686 variant for its multi-arch FHS environment.
|
|
openldap = prev.openldap.overrideAttrs (old: {
|
|
doCheck = if old.version == "2.6.13" then false else old.doCheck;
|
|
});
|
|
})
|
|
];
|
|
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
flake.setFlakeRegistry = true;
|
|
inherit overlays;
|
|
};
|
|
|
|
sharedSpecialArgs = {
|
|
inherit repoLocalPath;
|
|
repoRoot = self;
|
|
};
|
|
|
|
sharedModules = [
|
|
./nixos/modules/base.nix
|
|
inputs.stylix.nixosModules.stylix
|
|
inputs.home-manager.nixosModules.home-manager
|
|
({ ... }: {
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.extraSpecialArgs = {
|
|
inherit pkgs repoLocalPath;
|
|
repoRoot = self;
|
|
};
|
|
home-manager.backupFileExtension = "backup";
|
|
})
|
|
];
|
|
|
|
mkHost = {
|
|
hostName,
|
|
nixosModules ? [ ],
|
|
hmModules ? [ ],
|
|
extraModules ? [ ],
|
|
}:
|
|
nixpkgs.lib.nixosSystem {
|
|
inherit system pkgs;
|
|
specialArgs = sharedSpecialArgs;
|
|
modules =
|
|
sharedModules
|
|
++ [ (./nixos/hosts + "/${hostName}/configuration.nix") ]
|
|
++ nixosModules
|
|
++ extraModules
|
|
++ [
|
|
{
|
|
home-manager.users.alisceon.imports =
|
|
[
|
|
inputs.noctalia.homeModules.default
|
|
./home/profiles/base.nix
|
|
]
|
|
++ hmModules;
|
|
home-manager.users.root.imports = [
|
|
./home/users/root/default.nix
|
|
];
|
|
}
|
|
];
|
|
};
|
|
|
|
workstationModules = [
|
|
./nixos/modules/profiles/workstation.nix
|
|
./nixos/modules/wm/sway.nix
|
|
./nixos/modules/theme/stylix.nix
|
|
];
|
|
|
|
workstationHomeModules = [
|
|
./home/profiles/workstation.nix
|
|
./home/modules/wm/sway/default.nix
|
|
];
|
|
|
|
serverModules = [
|
|
./nixos/modules/profiles/server.nix
|
|
];
|
|
|
|
serverHomeModules = [ ];
|
|
in
|
|
{
|
|
nixosConfigurations = {
|
|
electra = mkHost {
|
|
hostName = "electra";
|
|
nixosModules = workstationModules;
|
|
hmModules = workstationHomeModules ++ [
|
|
./home/hosts/alisceon/electra.nix
|
|
];
|
|
};
|
|
|
|
tower = mkHost {
|
|
hostName = "tower";
|
|
nixosModules = workstationModules;
|
|
hmModules = workstationHomeModules ++ [
|
|
./home/hosts/alisceon/tower.nix
|
|
];
|
|
};
|
|
|
|
tesla-nixos = mkHost {
|
|
hostName = "tesla-nixos";
|
|
nixosModules = serverModules;
|
|
hmModules = serverHomeModules;
|
|
extraModules = [
|
|
inputs.nix-minecraft.nixosModules.minecraft-servers
|
|
{ nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; }
|
|
];
|
|
};
|
|
|
|
nuc = mkHost {
|
|
hostName = "nuc";
|
|
nixosModules = serverModules;
|
|
hmModules = serverHomeModules;
|
|
};
|
|
};
|
|
};
|
|
}
|