dotfiles/nixos/flake.nix

161 lines
4.3 KiB
Nix
Raw Normal View History

2021-07-11 04:19:34 -06:00
{
inputs = {
nixos-hardware = { url = github:NixOS/nixos-hardware; };
2023-06-28 21:30:23 -06:00
nixpkgs = { url = github:NixOS/nixpkgs/nixos-unstable; };
home-manager = {
url = github:nix-community/home-manager;
2021-07-17 15:47:04 -06:00
inputs.nixpkgs.follows = "nixpkgs";
2021-07-11 04:19:34 -06:00
};
2021-07-11 04:19:34 -06:00
xmonad-contrib = {
2023-04-11 20:56:05 -06:00
url = github:IvanMalison/xmonad-contrib/withMyChanges;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
xmonad.follows = "xmonad";
};
2021-07-11 04:19:34 -06:00
};
2021-07-11 04:19:34 -06:00
xmonad = {
2023-06-13 22:19:09 -06:00
url = path:../dotfiles/config/xmonad/xmonad;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
2021-07-11 04:19:34 -06:00
};
taffybar = {
url = path:../dotfiles/config/taffybar/taffybar;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
xmonad.follows = "xmonad";
gtk-sni-tray.follows = "gtk-sni-tray";
gtk-strut.follows = "gtk-strut";
};
};
imalison-taffybar = {
url = path:../dotfiles/config/taffybar;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
xmonad.follows = "xmonad";
taffybar.follows = "taffybar";
};
2021-07-13 03:37:03 -06:00
};
2021-07-19 19:38:04 -06:00
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";
2021-07-19 19:38:04 -06:00
};
2022-10-07 18:42:34 -06:00
nix = {
url = github:IvanMalison/nix;
2023-06-13 22:19:09 -06:00
inputs.nixpkgs.follows = "nixpkgs";
2022-10-07 18:42:34 -06:00
};
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";
};
gtk-sni-tray = {
url = github:taffybar/gtk-sni-tray;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
status-notifier-item.follows = "status-notifier-item";
};
};
status-notifier-item = {
url = github:taffybar/status-notifier-item;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
};
gtk-strut = {
url = github:taffybar/gtk-strut;
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
};
nixpkgs-regression = { url = github:NixOS/nixpkgs; };
2021-07-11 04:19:34 -06:00
};
outputs = inputs@{
2022-09-16 16:28:56 -06:00
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad,
xmonad-contrib, notifications-tray-icon, nix, imalison-taffybar, ...
}:
2021-08-20 19:28:51 -06:00
let
mkConfig =
args@
{ system ? "x86_64-linux"
, baseModules ? []
, modules ? []
, specialArgs ? {}
, ...
}:
nixpkgs.lib.nixosSystem (args // {
inherit system;
modules = baseModules ++ modules;
2023-06-28 21:43:55 -06:00
specialArgs = {
inherit inputs;
myPackages = {
taffybar = inputs.imalison-taffybar.defaultPackage."${system}";
};
} // specialArgs;
2021-08-20 19:28:51 -06:00
});
machinesFilepath = ./machines;
machineFilenames = builtins.attrNames (builtins.readDir machinesFilepath);
2021-08-20 19:28:51 -06:00
machineNameFromFilename = filename: builtins.head (builtins.split "\\." filename);
mkConfigurationParams = filename: {
name = machineNameFromFilename filename;
value = {
modules = [ (machinesFilepath + ("/" + filename)) ./base.nix ];
2021-08-20 19:28:51 -06:00
};
};
2021-08-20 19:28:51 -06:00
defaultConfigurationParams =
builtins.listToAttrs (map mkConfigurationParams machineFilenames);
2023-06-28 21:43:55 -06:00
customParams = {
biskcomp = {
system = "aarch64-linux";
2021-08-20 19:28:51 -06:00
};
2023-06-28 21:43:55 -06:00
air-gapped-pi = {
system = "aarch64-linux";
};
};
2021-07-11 04:19:34 -06:00
in
{
nixosConfigurations = builtins.mapAttrs (machineName: params:
let machineParams =
if builtins.hasAttr machineName customParams
then (builtins.getAttr machineName customParams)
else {};
in mkConfig (params // machineParams)
) defaultConfigurationParams;
2021-07-11 04:19:34 -06:00
};
}