refactor(flake): split root output wiring
This commit is contained in:
@@ -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";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
'';
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
@@ -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
41
src/flake/apps.nix
Normal 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
33
src/flake/default.nix
Normal 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
|
||||
@@ -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/**"
|
||||
];
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user