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/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 99e1ac2..6fad941 100644 --- a/src/dotfiles/util.nix +++ b/src/dotfiles/util.nix @@ -1,24 +1,6 @@ -{ 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 +{ flakeUtil, lib }: { - inherit collectNixFiles; + flake = flakeUtil; bridgeName = id: "br-vlan${toString id}"; diff --git a/src/flake/apps.nix b/src/flake/apps.nix index 6f5212f..1ae96b4 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 . treefmt ''; } diff --git a/src/flake/default.nix b/src/flake/default.nix index a5938d9..8ed104b 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -6,12 +6,15 @@ system, }: let + util = import ./util.nix { inherit lib; }; + dotfiles = import ../dotfiles { inherit inputs lib self ; + flakeUtil = util; root = root + "/configs/nixos"; }; in @@ -21,6 +24,16 @@ in inherit inputs system; }).config.build.wrapper; + packages.${system} = import ./packages.nix { + inherit + inputs + lib + root + system + util + ; + }; + apps.${system} = import ./apps.nix { inherit inputs @@ -28,6 +41,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..0498306 --- /dev/null +++ b/src/flake/packages.nix @@ -0,0 +1,26 @@ +{ + inputs, + lib, + root, + system, + util, +}: +let + pkgs = inputs.nixpkgs.legacyPackages.${system}; + + packageFiles = builtins.filter (path: builtins.baseNameOf (toString path) == "package.nix") ( + util.collectNixFiles (root + "/src") + ); + + package = packageFile: { + name = builtins.baseNameOf (toString (builtins.dirOf packageFile)); + value = import packageFile { + inherit + lib + pkgs + root + ; + }; + }; +in +builtins.listToAttrs (map package packageFiles) 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; +} diff --git a/src/xatu/package.nix b/src/xatu/package.nix new file mode 100644 index 0000000..bd6c624 --- /dev/null +++ b/src/xatu/package.nix @@ -0,0 +1,34 @@ +{ + 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/monorepo") + (root + "/src/status") + (root + "/src/xatu") + ]; + }; + + postPatch = '' + substituteInPlace Cargo.toml \ + --replace-fail ' "src/ariadne",' "" \ + --replace-fail ' "src/machoke",' "" + ''; + + cargoBuildFlags = [ + "-p" + "xatu" + "--bin" + "xatu" + ]; + cargoLock.lockFile = root + "/Cargo.lock"; +} 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-")