dotfiles/flake.nix
2024-04-01 10:45:49 -05:00

89 lines
2.2 KiB
Nix

{
description = "My systems flake";
inputs = {
# Nix utility methods
nypkgs = {
url = "github:yunfachi/nypkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
# Secrets management for nix
ragenix = {
url = "github:yaxitech/ragenix";
inputs.nixpkgs.follows = "nixpkgs";
};
# Pinned nix version
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-23.11";
# TODO
# home-manager = { };
};
outputs = { self, nypkgs, nixpkgs, ... } @ inputs:
let
nixConfigs = [
{
name = "gpdPocket3";
opts = {
system = "x86_64-linux";
};
settings = {
user = {
username = "josh";
git = {
email = "ringofstorms@gmail.com";
name = "RingOfStorms (Joshua Bell)";
};
};
};
}
{
name = "joe";
opts = {
system = "x86_64-linux";
};
settings = {
user = {
username = "josh";
git = {
email = "ringofstorms@gmail.com";
name = "RingOfStorms (Joshua Bell)";
};
};
};
}
];
directories = {
flakeDir = ./.;
publicsDir = ./publics;
secretsDir = ./secrets;
systemsDir = ./systems;
usersDir = ./users;
};
in
{
nixosConfigurations = builtins.foldl'
(acc: nixConfig:
acc // {
"${nixConfig.name}" = nixpkgs.lib.nixosSystem
{
modules = [ ./systems/_common/configuration.nix ./systems/${nixConfig.name}/configuration.nix ];
specialArgs = inputs // {
ylib = nypkgs.legacyPackages.${nixConfig.opts.system}.lib;
settings = directories // nixConfig.settings // {
system = nixConfig.opts // {
hostname = nixConfig.name;
};
};
};
} // nixConfig.opts;
})
{ }
nixConfigs;
# homeConfigurations = { };
};
}