123 lines
3.2 KiB
Nix
123 lines
3.2 KiB
Nix
{
|
|
inputs = {
|
|
nixos-hardware = {url = github:NixOS/nixos-hardware;};
|
|
|
|
nixpkgs = {url = github:NixOS/nixpkgs/nixos-unstable;};
|
|
|
|
home-manager = {
|
|
url = github:nix-community/home-manager;
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nix = {
|
|
url = github:IvanMalison/nix/my2.15.1;
|
|
};
|
|
|
|
flake-utils = {
|
|
url = github:numtide/flake-utils;
|
|
inputs.systems.follows = "systems";
|
|
};
|
|
|
|
systems = {url = github:nix-systems/default;};
|
|
|
|
git-ignore-nix = {
|
|
url = github:hercules-ci/gitignore.nix;
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nixos-wsl = {url = github:nix-community/NixOS-WSL;};
|
|
|
|
taffybar = {
|
|
url = "github:taffybar/taffybar";
|
|
inputs = {
|
|
nixpkgs.follows = "nixpkgs";
|
|
flake-utils.follows = "flake-utils";
|
|
git-ignore-nix.follows = "git-ignore-nix";
|
|
xmonad.follows = "xmonad";
|
|
};
|
|
};
|
|
|
|
xmonad = {
|
|
url = "github:xmonad/xmonad";
|
|
inputs = {
|
|
nixpkgs.follows = "nixpkgs";
|
|
flake-utils.follows = "flake-utils";
|
|
git-ignore-nix.follows = "git-ignore-nix";
|
|
};
|
|
};
|
|
|
|
xmonad-contrib = {
|
|
url = "github:xmonad/xmonad-contrib";
|
|
};
|
|
|
|
notifications-tray-icon = {
|
|
url = "github:IvanMalison/notifications-tray-icon";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.git-ignore-nix.follows = "git-ignore-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nixified-ai = {url = "github:nixified-ai/flake";};
|
|
};
|
|
|
|
outputs = inputs @ {
|
|
self,
|
|
nixpkgs,
|
|
nixos-hardware,
|
|
home-manager,
|
|
nix,
|
|
...
|
|
}: let
|
|
machinesPath = ../machines;
|
|
machineFilenames = builtins.attrNames (builtins.readDir machinesPath);
|
|
machineNameFromFilename = filename: builtins.head (builtins.split "\\." filename);
|
|
machineNames = map machineNameFromFilename machineFilenames;
|
|
mkConfigurationParams = filename: {
|
|
name = machineNameFromFilename filename;
|
|
value = {
|
|
modules = [(machinesPath + ("/" + filename))];
|
|
};
|
|
};
|
|
defaultConfigurationParams =
|
|
builtins.listToAttrs (map mkConfigurationParams machineFilenames);
|
|
customParams = {
|
|
biskcomp = {
|
|
system = "aarch64-linux";
|
|
};
|
|
air-gapped-pi = {
|
|
system = "aarch64-linux";
|
|
};
|
|
};
|
|
mkConfig = args @ {
|
|
system ? "x86_64-linux",
|
|
baseModules ? [],
|
|
modules ? [],
|
|
specialArgs ? {},
|
|
...
|
|
}:
|
|
nixpkgs.lib.nixosSystem (args
|
|
// {
|
|
inherit system;
|
|
modules = baseModules ++ modules;
|
|
specialArgs =
|
|
rec {
|
|
inherit inputs machineNames;
|
|
makeEnable = (import ../make-enable.nix) nixpkgs.lib;
|
|
realUsers = ["root" "imalison" "kat" "dean" "alex" "ben"];
|
|
}
|
|
// specialArgs // (import ../keys.nix);
|
|
});
|
|
in {
|
|
nixosConfigurations =
|
|
builtins.mapAttrs (
|
|
machineName: params: let
|
|
machineParams =
|
|
if builtins.hasAttr machineName customParams
|
|
then (builtins.getAttr machineName customParams)
|
|
else {};
|
|
in
|
|
mkConfig (params // machineParams)
|
|
)
|
|
defaultConfigurationParams;
|
|
};
|
|
}
|