From 1f209f64fb6c127a0a51932808a010c084adff74 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:23:27 -0400 Subject: [PATCH 1/8] build(xatu): add flake package --- src/flake/apps.nix | 3 +++ src/flake/default.nix | 10 ++++++++++ src/flake/packages.nix | 18 ++++++++++++++++++ src/xatu/package.nix | 30 ++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/flake/packages.nix create mode 100644 src/xatu/package.nix diff --git a/src/flake/apps.nix b/src/flake/apps.nix index 6f5212f..aa23908 100644 --- a/src/flake/apps.nix +++ b/src/flake/apps.nix @@ -3,6 +3,7 @@ lib, formatter, system, + xatu, }: let pkgs = inputs.nixpkgs.legacyPackages.${system}; @@ -17,6 +18,7 @@ in formatter pkgs.statix pkgs.deadnix + xatu ]; text = '' treefmt @@ -33,6 +35,7 @@ in src/xatu/testdata \ third_party \ -- . + xatu configs/nixos flake.nix src/dotfiles src/flake src/xatu/package.nix treefmt ''; } diff --git a/src/flake/default.nix b/src/flake/default.nix index a5938d9..1ff63e4 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -21,6 +21,15 @@ in inherit inputs system; }).config.build.wrapper; + packages.${system} = import ./packages.nix { + inherit + inputs + lib + root + system + ; + }; + apps.${system} = import ./apps.nix { inherit inputs @@ -28,6 +37,7 @@ in system ; formatter = self.formatter.${system}; + xatu = self.packages.${system}.xatu; }; inherit (dotfiles) nixosConfigurations; diff --git a/src/flake/packages.nix b/src/flake/packages.nix new file mode 100644 index 0000000..beb22d7 --- /dev/null +++ b/src/flake/packages.nix @@ -0,0 +1,18 @@ +{ + inputs, + lib, + root, + system, +}: +let + pkgs = inputs.nixpkgs.legacyPackages.${system}; +in +{ + xatu = import ../xatu/package.nix { + inherit + lib + pkgs + root + ; + }; +} diff --git a/src/xatu/package.nix b/src/xatu/package.nix new file mode 100644 index 0000000..8e42ad2 --- /dev/null +++ b/src/xatu/package.nix @@ -0,0 +1,30 @@ +{ + lib, + pkgs, + root, +}: +pkgs.rustPlatform.buildRustPackage { + pname = "xatu"; + version = "0.1.0"; + + src = lib.fileset.toSource { + inherit root; + fileset = lib.fileset.unions [ + (root + "/Cargo.lock") + (root + "/Cargo.toml") + (root + "/src/ariadne") + (root + "/src/machoke") + (root + "/src/monorepo") + (root + "/src/status") + (root + "/src/xatu") + ]; + }; + + cargoBuildFlags = [ + "-p" + "xatu" + "--bin" + "xatu" + ]; + cargoLock.lockFile = root + "/Cargo.lock"; +} -- 2.47.3 From 95e9ad562ebc5c420154773f9d67f652ff4141d3 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:25:45 -0400 Subject: [PATCH 2/8] fix(xatu): ignore testdata directories --- src/flake/apps.nix | 2 +- src/xatu/xatu_main.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/flake/apps.nix b/src/flake/apps.nix index aa23908..1ae96b4 100644 --- a/src/flake/apps.nix +++ b/src/flake/apps.nix @@ -35,7 +35,7 @@ in src/xatu/testdata \ third_party \ -- . - xatu configs/nixos flake.nix src/dotfiles src/flake src/xatu/package.nix + xatu . treefmt ''; } diff --git a/src/xatu/xatu_main.rs b/src/xatu/xatu_main.rs index 2a5c68c..5c50fe8 100644 --- a/src/xatu/xatu_main.rs +++ b/src/xatu/xatu_main.rs @@ -20,6 +20,7 @@ fn is_excluded_dir(path: &Path) -> bool { | "bazel-out" | "bazel-testlogs" | "target" + | "testdata" | "third_party" ) || name == "result" || name.starts_with("result-") -- 2.47.3 From 99f091e92ab4fca795f857069490be38e86de3a8 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:28:42 -0400 Subject: [PATCH 3/8] refactor(flake): discover project packages --- src/flake/packages.nix | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/flake/packages.nix b/src/flake/packages.nix index beb22d7..315526b 100644 --- a/src/flake/packages.nix +++ b/src/flake/packages.nix @@ -6,13 +6,33 @@ }: let pkgs = inputs.nixpkgs.legacyPackages.${system}; -in -{ - xatu = import ../xatu/package.nix { - inherit - lib - pkgs - root - ; + + packageDirs = + dir: + lib.flatten ( + lib.mapAttrsToList ( + name: type: + let + path = dir + "/${name}"; + in + if type == "directory" then + packageDirs path + else if type == "regular" && name == "package.nix" then + [ dir ] + else + [ ] + ) (builtins.readDir dir) + ); + + package = dir: { + name = builtins.baseNameOf (toString dir); + value = import (dir + "/package.nix") { + inherit + lib + pkgs + root + ; + }; }; -} +in +builtins.listToAttrs (map package (packageDirs (root + "/src"))) -- 2.47.3 From c5043a67be235cdd53c45748cffa2f6d12b120cd Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:29:53 -0400 Subject: [PATCH 4/8] refactor(flake): reuse package discovery utility --- src/flake/default.nix | 3 +++ src/flake/packages.nix | 28 ++++++++-------------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/flake/default.nix b/src/flake/default.nix index 1ff63e4..04f425d 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -6,6 +6,8 @@ system, }: let + util = import ../dotfiles/util.nix { inherit lib; }; + dotfiles = import ../dotfiles { inherit inputs @@ -27,6 +29,7 @@ in lib root system + util ; }; diff --git a/src/flake/packages.nix b/src/flake/packages.nix index 315526b..0498306 100644 --- a/src/flake/packages.nix +++ b/src/flake/packages.nix @@ -3,30 +3,18 @@ lib, root, system, + util, }: let pkgs = inputs.nixpkgs.legacyPackages.${system}; - packageDirs = - dir: - lib.flatten ( - lib.mapAttrsToList ( - name: type: - let - path = dir + "/${name}"; - in - if type == "directory" then - packageDirs path - else if type == "regular" && name == "package.nix" then - [ dir ] - else - [ ] - ) (builtins.readDir dir) - ); + packageFiles = builtins.filter (path: builtins.baseNameOf (toString path) == "package.nix") ( + util.collectNixFiles (root + "/src") + ); - package = dir: { - name = builtins.baseNameOf (toString dir); - value = import (dir + "/package.nix") { + package = packageFile: { + name = builtins.baseNameOf (toString (builtins.dirOf packageFile)); + value = import packageFile { inherit lib pkgs @@ -35,4 +23,4 @@ let }; }; in -builtins.listToAttrs (map package (packageDirs (root + "/src"))) +builtins.listToAttrs (map package packageFiles) -- 2.47.3 From 3e0bcbc0ee5201c616643983edd63af3d1c57ced Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:30:46 -0400 Subject: [PATCH 5/8] refactor(flake): move shared utility functions --- src/dotfiles/util.nix | 22 +++------------------- src/flake/default.nix | 2 +- src/flake/util.nix | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 src/flake/util.nix diff --git a/src/dotfiles/util.nix b/src/dotfiles/util.nix index 99e1ac2..4fa3d07 100644 --- a/src/dotfiles/util.nix +++ b/src/dotfiles/util.nix @@ -1,25 +1,9 @@ { lib }: let - collectNixFiles = - dir: - lib.flatten ( - lib.mapAttrsToList ( - name: type: - let - path = dir + "/${name}"; - in - if type == "directory" then - collectNixFiles path - else if type == "regular" && lib.hasSuffix ".nix" name then - [ path ] - else - [ ] - ) (builtins.readDir dir) - ); + flakeUtil = import ../flake/util.nix { inherit lib; }; in -{ - inherit collectNixFiles; - +flakeUtil +// { bridgeName = id: "br-vlan${toString id}"; deriveMac = diff --git a/src/flake/default.nix b/src/flake/default.nix index 04f425d..f3bed7b 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -6,7 +6,7 @@ system, }: let - util = import ../dotfiles/util.nix { inherit lib; }; + util = import ./util.nix { inherit lib; }; dotfiles = import ../dotfiles { inherit diff --git a/src/flake/util.nix b/src/flake/util.nix new file mode 100644 index 0000000..daecfdd --- /dev/null +++ b/src/flake/util.nix @@ -0,0 +1,22 @@ +{ lib }: +let + collectNixFiles = + dir: + lib.flatten ( + lib.mapAttrsToList ( + name: type: + let + path = dir + "/${name}"; + in + if type == "directory" then + collectNixFiles path + else if type == "regular" && lib.hasSuffix ".nix" name then + [ path ] + else + [ ] + ) (builtins.readDir dir) + ); +in +{ + inherit collectNixFiles; +} -- 2.47.3 From 91ffef19ea91fb515a1bede81273aaf9613d0628 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:33:34 -0400 Subject: [PATCH 6/8] refactor(dotfiles): accept shared flake utilities --- src/dotfiles/default.nix | 3 ++- src/dotfiles/util.nix | 5 +---- src/flake/default.nix | 1 + 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dotfiles/default.nix b/src/dotfiles/default.nix index 5b765e4..dfd5cce 100644 --- a/src/dotfiles/default.nix +++ b/src/dotfiles/default.nix @@ -2,10 +2,11 @@ lib, inputs, self, + flakeUtil, root, }: let - util = import ./util.nix { inherit lib; }; + util = import ./util.nix { inherit flakeUtil lib; }; registry = import ./registry.nix { inherit lib; diff --git a/src/dotfiles/util.nix b/src/dotfiles/util.nix index 4fa3d07..614ca48 100644 --- a/src/dotfiles/util.nix +++ b/src/dotfiles/util.nix @@ -1,7 +1,4 @@ -{ lib }: -let - flakeUtil = import ../flake/util.nix { inherit lib; }; -in +{ flakeUtil, lib }: flakeUtil // { bridgeName = id: "br-vlan${toString id}"; diff --git a/src/flake/default.nix b/src/flake/default.nix index f3bed7b..8ed104b 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -14,6 +14,7 @@ let lib self ; + flakeUtil = util; root = root + "/configs/nixos"; }; in -- 2.47.3 From 44fab7a24d80912779968d5667d8961f63797111 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:35:08 -0400 Subject: [PATCH 7/8] refactor(dotfiles): namespace shared flake utilities --- src/dotfiles/guests.nix | 2 +- src/dotfiles/modules.nix | 2 +- src/dotfiles/util.nix | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/dotfiles/guests.nix b/src/dotfiles/guests.nix index 4085661..a8e6998 100644 --- a/src/dotfiles/guests.nix +++ b/src/dotfiles/guests.nix @@ -275,7 +275,7 @@ let }; }; - files = util.collectNixFiles root; + files = util.flake.collectNixFiles root; guestFiles = lib.filterAttrs (file: type: type == "regular" && lib.hasSuffix ".nix" file) ( builtins.readDir root ); diff --git a/src/dotfiles/modules.nix b/src/dotfiles/modules.nix index 9dead8f..0e062de 100644 --- a/src/dotfiles/modules.nix +++ b/src/dotfiles/modules.nix @@ -3,5 +3,5 @@ util, }: { - imports = util.collectNixFiles root; + imports = util.flake.collectNixFiles root; } diff --git a/src/dotfiles/util.nix b/src/dotfiles/util.nix index 614ca48..6fad941 100644 --- a/src/dotfiles/util.nix +++ b/src/dotfiles/util.nix @@ -1,6 +1,7 @@ { flakeUtil, lib }: -flakeUtil -// { +{ + flake = flakeUtil; + bridgeName = id: "br-vlan${toString id}"; deriveMac = -- 2.47.3 From 2066f54c2249b9bf557aac3b3464e396b9eed9f2 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:38:10 -0400 Subject: [PATCH 8/8] build(xatu): limit package source closure --- src/xatu/package.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xatu/package.nix b/src/xatu/package.nix index 8e42ad2..bd6c624 100644 --- a/src/xatu/package.nix +++ b/src/xatu/package.nix @@ -12,14 +12,18 @@ pkgs.rustPlatform.buildRustPackage { fileset = lib.fileset.unions [ (root + "/Cargo.lock") (root + "/Cargo.toml") - (root + "/src/ariadne") - (root + "/src/machoke") (root + "/src/monorepo") (root + "/src/status") (root + "/src/xatu") ]; }; + postPatch = '' + substituteInPlace Cargo.toml \ + --replace-fail ' "src/ariadne",' "" \ + --replace-fail ' "src/machoke",' "" + ''; + cargoBuildFlags = [ "-p" "xatu" -- 2.47.3