feat: rework to modular
This commit is contained in:
133
flake.nix
133
flake.nix
@@ -1,14 +1,16 @@
|
||||
{
|
||||
description = "NodeiWest employee and workstation flake";
|
||||
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";
|
||||
};
|
||||
deployment = {
|
||||
url = "git+file:../nix-deployment";
|
||||
|
||||
nix-darwin = {
|
||||
url = "github:LnL7/nix-darwin";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
@@ -17,33 +19,116 @@
|
||||
inputs@{
|
||||
self,
|
||||
nixpkgs,
|
||||
deployment,
|
||||
...
|
||||
}:
|
||||
let
|
||||
lib = nixpkgs.lib;
|
||||
supportedSystems = [
|
||||
"aarch64-darwin"
|
||||
"x86_64-darwin"
|
||||
"x86_64-linux"
|
||||
];
|
||||
forAllSystems = lib.genAttrs supportedSystems;
|
||||
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
|
||||
{
|
||||
homeManagerModules.default = ./modules/home.nix;
|
||||
homeManagerModules.helpers = ./modules/helpers/home.nix;
|
||||
|
||||
packages = forAllSystems (system: {
|
||||
nodeiwest-helper = deployment.packages.${system}.nodeiwest-helper;
|
||||
default = self.packages.${system}.nodeiwest-helper;
|
||||
});
|
||||
|
||||
apps = forAllSystems (system: {
|
||||
nodeiwest-helper = {
|
||||
type = "app";
|
||||
program = "${self.packages.${system}.nodeiwest-helper}/bin/nodeiwest";
|
||||
lib = {
|
||||
inherit (defaults) companySessionVariables forAllSystems supportedSystems;
|
||||
mkProfile = import ./lib/mkProfile.nix;
|
||||
mkSystem = import ./lib/mkSystem.nix {
|
||||
systems = {
|
||||
darwin = darwinSystem;
|
||||
linux = linuxHome;
|
||||
};
|
||||
};
|
||||
default = self.apps.${system}.nodeiwest-helper;
|
||||
});
|
||||
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.";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user