refactor(flake): split root output wiring

This commit is contained in:
2026-09-19 15:31:06 -04:00
parent addcf7ca8e
commit c5d273fd4c
7 changed files with 81 additions and 49 deletions

View File

@@ -76,10 +76,10 @@
outputs =
{ self, nixpkgs, ... }@inputs:
import ./src/dotfiles {
import ./src/flake {
inherit inputs self;
inherit (nixpkgs) lib;
root = ./configs/nixos;
root = ./.;
system = "x86_64-linux";
};
}

View File

@@ -1,30 +0,0 @@
{
inputs,
lib,
formatter,
system,
}:
let
pkgs = inputs.nixpkgs.legacyPackages.${system};
in
{
fix = {
type = "app";
program = lib.getExe (
pkgs.writeShellApplication {
name = "fix";
runtimeInputs = [
formatter
pkgs.statix
pkgs.deadnix
];
text = ''
treefmt
statix fix .
deadnix --edit --exclude configs/nixos/hosts/*/hardware-configuration.nix -- .
treefmt
'';
}
);
};
}

View File

@@ -3,7 +3,6 @@
inputs,
self,
root,
system,
}:
let
util = import ./util.nix { inherit lib; };
@@ -41,20 +40,6 @@ let
};
in
{
formatter.${system} =
(import ./formatter.nix {
inherit inputs system;
}).config.build.wrapper;
apps.${system} = import ./apps.nix {
inherit
inputs
lib
system
;
formatter = self.formatter.${system};
};
nixosConfigurations = import ./hosts.nix {
inherit
inputs

41
src/flake/apps.nix Normal file
View File

@@ -0,0 +1,41 @@
{
inputs,
lib,
formatter,
system,
}:
let
pkgs = inputs.nixpkgs.legacyPackages.${system};
in
{
fix = {
type = "app";
program = lib.getExe (
pkgs.writeShellApplication {
name = "fix";
runtimeInputs = [
formatter
pkgs.statix
pkgs.deadnix
];
text = ''
treefmt
statix fix \
--ignore 'configs/nixos/hosts/*/hardware-configuration.nix' \
--ignore 'src/xatu/testdata/**' \
--ignore third_party \
.
deadnix --edit \
--exclude \
configs/nixos/hosts/neogaia/hardware-configuration.nix \
configs/nixos/hosts/pikachu/hardware-configuration.nix \
configs/nixos/hosts/zeus/hardware-configuration.nix \
src/xatu/testdata \
third_party \
-- .
treefmt
'';
}
);
};
}

33
src/flake/default.nix Normal file
View File

@@ -0,0 +1,33 @@
{
lib,
inputs,
self,
root,
system,
}:
let
dotfiles = import ../dotfiles {
inherit
inputs
lib
self
;
root = root + "/configs/nixos";
};
in
{
formatter.${system} =
(import ./formatter.nix {
inherit inputs system;
}).config.build.wrapper;
apps.${system} = import ./apps.nix {
inherit
inputs
lib
system
;
formatter = self.formatter.${system};
};
}
// dotfiles

View File

@@ -6,5 +6,7 @@ inputs.treefmt-nix.lib.evalModule inputs.nixpkgs.legacyPackages.${system} {
settings.formatter.nixfmt.excludes = [
"configs/nixos/hosts/*/hardware-configuration.nix"
"src/xatu/testdata/*.nix"
"third_party/**"
];
}

View File

@@ -5,8 +5,9 @@
### Rule
Add flake inputs in `flake.nix`.
Put new flake output implementation in `src/dotfiles/default.nix`.
Use `flake.nix` to pass inputs into that implementation.
Put root flake output implementation in `src/flake/default.nix`.
Put domain-specific output implementation near the domain it configures.
Use `flake.nix` to pass inputs into the root flake implementation.
### Rationale