135 lines
3.7 KiB
Nix
135 lines
3.7 KiB
Nix
{
|
|
description = "NodeiWest company Nix SDK";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nix-darwin = {
|
|
url = "github:LnL7/nix-darwin";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
inputs@{
|
|
self,
|
|
nixpkgs,
|
|
...
|
|
}:
|
|
let
|
|
lib = nixpkgs.lib;
|
|
defaults = import ./lib/defaults.nix { inherit lib; };
|
|
inherit (defaults) forAllSystems supportedSystems;
|
|
|
|
shellFactories = {
|
|
default = args: import ./shells/default.nix args;
|
|
node = args: import ./shells/node.nix (args // { inherit lib; });
|
|
go = args: import ./shells/go.nix args;
|
|
rust = args: import ./shells/rust.nix (args // { inherit lib; });
|
|
};
|
|
|
|
profileModules = {
|
|
backend = import ./profiles/backend.nix;
|
|
frontend = import ./profiles/frontend.nix;
|
|
minimal = import ./profiles/minimal.nix;
|
|
};
|
|
|
|
darwinSystem = args: import ./systems/darwin/default.nix ({ inherit inputs; } // args);
|
|
linuxHome = args: import ./systems/linux/default.nix ({ inherit inputs; } // args);
|
|
in
|
|
{
|
|
lib = {
|
|
inherit (defaults) companySessionVariables forAllSystems supportedSystems;
|
|
mkProfile = import ./lib/mkProfile.nix;
|
|
mkSystem = import ./lib/mkSystem.nix {
|
|
systems = {
|
|
darwin = darwinSystem;
|
|
linux = linuxHome;
|
|
};
|
|
};
|
|
shells = shellFactories;
|
|
systems = {
|
|
darwin = darwinSystem;
|
|
linux = linuxHome;
|
|
};
|
|
};
|
|
|
|
homeManagerModules = {
|
|
base = {
|
|
nix = import ./modules/base/nix.nix;
|
|
core = import ./modules/base/core.nix;
|
|
shell = import ./modules/base/shell.nix;
|
|
fonts = import ./modules/base/fonts.nix;
|
|
};
|
|
|
|
dev = {
|
|
node = import ./modules/dev/node.nix;
|
|
go = import ./modules/dev/go.nix;
|
|
rust = import ./modules/dev/rust.nix;
|
|
docker = import ./modules/dev/docker.nix;
|
|
};
|
|
|
|
roles = {
|
|
backend = import ./modules/roles/backend.nix;
|
|
frontend = import ./modules/roles/frontend.nix;
|
|
infra = import ./modules/roles/infra.nix;
|
|
minimal = import ./modules/roles/minimal.nix;
|
|
};
|
|
|
|
services = {
|
|
tailscale = import ./modules/services/tailscale.nix;
|
|
ssh = import ./modules/services/ssh.nix;
|
|
gpg = import ./modules/services/gpg.nix;
|
|
};
|
|
|
|
secrets = {
|
|
env = import ./modules/secrets/env.nix;
|
|
openbao = import ./modules/secrets/openbao.nix;
|
|
};
|
|
|
|
optional = {
|
|
homebrew = import ./modules/optional/homebrew.nix;
|
|
gui = import ./modules/optional/gui.nix;
|
|
devtools = import ./modules/optional/devtools.nix;
|
|
};
|
|
|
|
profiles = profileModules;
|
|
|
|
default = import ./modules/home.nix;
|
|
};
|
|
|
|
devShells = forAllSystems (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
in
|
|
{
|
|
default = shellFactories.default { inherit pkgs; };
|
|
node = shellFactories.node { inherit pkgs; };
|
|
go = shellFactories.go { inherit pkgs; };
|
|
rust = shellFactories.rust { inherit pkgs; };
|
|
}
|
|
);
|
|
|
|
formatter = forAllSystems (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
in
|
|
pkgs.nixfmt
|
|
);
|
|
|
|
templates = {
|
|
user-flake = {
|
|
path = ./templates/user-flake;
|
|
description = "Starter personal flake wired to NodeiWest profiles.";
|
|
};
|
|
};
|
|
};
|
|
}
|