atagen

monolith

public
Star0
Watch0
0fb670484556007c060b1b67f0ddcbf0f32fcca1
1
ssh://brewery@pls.lobotomise.me:33/atagen/monolith.git

Blame: flake.nix

57f44a63d99fatagen2026-10-16 05:34 UTC1
{
57f44a63d99fatagen2026-10-16 05:34 UTC2
  inputs = {
57f44a63d99fatagen2026-10-16 05:34 UTC3
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
57f44a63d99fatagen2026-10-16 05:34 UTC4
    crane.url = "github:ipetkov/crane";
57f44a63d99fatagen2026-10-16 05:34 UTC5
  };
57f44a63d99fatagen2026-10-16 05:34 UTC6
57f44a63d99fatagen2026-10-16 05:34 UTC7
  outputs =
57f44a63d99fatagen2026-10-16 05:34 UTC8
    {
57f44a63d99fatagen2026-10-16 05:34 UTC9
      self,
57f44a63d99fatagen2026-10-16 05:34 UTC10
      nixpkgs,
57f44a63d99fatagen2026-10-16 05:34 UTC11
      crane,
57f44a63d99fatagen2026-10-16 05:34 UTC12
    }:
57f44a63d99fatagen2026-10-16 05:34 UTC13
    let
57f44a63d99fatagen2026-10-16 05:34 UTC14
      lib = nixpkgs.lib;
57f44a63d99fatagen2026-10-16 05:34 UTC15
      systems = [
57f44a63d99fatagen2026-10-16 05:34 UTC16
        "x86_64-linux"
57f44a63d99fatagen2026-10-16 05:34 UTC17
        "aarch64-linux"
57f44a63d99fatagen2026-10-16 05:34 UTC18
      ];
57f44a63d99fatagen2026-10-16 05:34 UTC19
      forAllSystems = f: lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
57f44a63d99fatagen2026-10-16 05:34 UTC20
57f44a63d99fatagen2026-10-16 05:34 UTC21
      mkProject =
57f44a63d99fatagen2026-10-16 05:34 UTC22
        pkgs:
57f44a63d99fatagen2026-10-16 05:34 UTC23
        let
57f44a63d99fatagen2026-10-16 05:34 UTC24
          craneLib = crane.mkLib pkgs;
824bf02b6e55atagen2026-10-16 09:15 UTC25
          src = lib.cleanSourceWith {
824bf02b6e55atagen2026-10-16 09:15 UTC26
            src = ./.;
824bf02b6e55atagen2026-10-16 09:15 UTC27
            filter = path: type: (craneLib.filterCargoSources path type) || lib.hasInfix "/shaders" path;
824bf02b6e55atagen2026-10-16 09:15 UTC28
            name = "source";
824bf02b6e55atagen2026-10-16 09:15 UTC29
          };
57f44a63d99fatagen2026-10-16 05:34 UTC30
          lavapipeIcd = "${pkgs.mesa}/share/vulkan/icd.d/lvp_icd.${pkgs.stdenv.hostPlatform.parsed.cpu.name}.json";
57f44a63d99fatagen2026-10-16 05:34 UTC31
          commonArgs = {
57f44a63d99fatagen2026-10-16 05:34 UTC32
            inherit src;
b563d2da1c80atagen2026-10-16 08:25 UTC33
            pname = "monolith";
b563d2da1c80atagen2026-10-16 08:25 UTC34
            version = "0.0.0";
57f44a63d99fatagen2026-10-16 05:34 UTC35
            strictDeps = true;
824bf02b6e55atagen2026-10-16 09:15 UTC36
            nativeBuildInputs = [
824bf02b6e55atagen2026-10-16 09:15 UTC37
              pkgs.pkg-config
824bf02b6e55atagen2026-10-16 09:15 UTC38
              pkgs.glslang
824bf02b6e55atagen2026-10-16 09:15 UTC39
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC40
            buildInputs = with pkgs; [
57f44a63d99fatagen2026-10-16 05:34 UTC41
              libxkbcommon
57f44a63d99fatagen2026-10-16 05:34 UTC42
              vulkan-loader
57f44a63d99fatagen2026-10-16 05:34 UTC43
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC44
          };
57f44a63d99fatagen2026-10-16 05:34 UTC45
          cargoArtifacts = craneLib.buildDepsOnly commonArgs;
57f44a63d99fatagen2026-10-16 05:34 UTC46
        in
57f44a63d99fatagen2026-10-16 05:34 UTC47
        {
57f44a63d99fatagen2026-10-16 05:34 UTC48
          inherit craneLib lavapipeIcd commonArgs;
57f44a63d99fatagen2026-10-16 05:34 UTC49
57f44a63d99fatagen2026-10-16 05:34 UTC50
          package = craneLib.buildPackage (
57f44a63d99fatagen2026-10-16 05:34 UTC51
            commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC52
            // {
57f44a63d99fatagen2026-10-16 05:34 UTC53
              inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC54
              doCheck = false;
57f44a63d99fatagen2026-10-16 05:34 UTC55
            }
57f44a63d99fatagen2026-10-16 05:34 UTC56
          );
57f44a63d99fatagen2026-10-16 05:34 UTC57
57f44a63d99fatagen2026-10-16 05:34 UTC58
          checks = {
57f44a63d99fatagen2026-10-16 05:34 UTC59
            clippy = craneLib.cargoClippy (
57f44a63d99fatagen2026-10-16 05:34 UTC60
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC61
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC62
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC63
                cargoClippyExtraArgs = "--all-targets -- --deny warnings";
57f44a63d99fatagen2026-10-16 05:34 UTC64
              }
57f44a63d99fatagen2026-10-16 05:34 UTC65
            );
b563d2da1c80atagen2026-10-16 08:25 UTC66
            fmt = craneLib.cargoFmt { inherit src; pname = "monolith"; version = "0.0.0"; };
57f44a63d99fatagen2026-10-16 05:34 UTC67
            test = craneLib.cargoTest (
57f44a63d99fatagen2026-10-16 05:34 UTC68
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC69
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC70
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC71
                VK_DRIVER_FILES = lavapipeIcd;
824bf02b6e55atagen2026-10-16 09:15 UTC72
                LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC73
              }
57f44a63d99fatagen2026-10-16 05:34 UTC74
            );
57f44a63d99fatagen2026-10-16 05:34 UTC75
          };
57f44a63d99fatagen2026-10-16 05:34 UTC76
        };
57f44a63d99fatagen2026-10-16 05:34 UTC77
    in
57f44a63d99fatagen2026-10-16 05:34 UTC78
    {
57f44a63d99fatagen2026-10-16 05:34 UTC79
      packages = forAllSystems (pkgs: {
57f44a63d99fatagen2026-10-16 05:34 UTC80
        default = (mkProject pkgs).package;
57f44a63d99fatagen2026-10-16 05:34 UTC81
      });
57f44a63d99fatagen2026-10-16 05:34 UTC82
57f44a63d99fatagen2026-10-16 05:34 UTC83
      checks = forAllSystems (pkgs: (mkProject pkgs).checks);
57f44a63d99fatagen2026-10-16 05:34 UTC84
57f44a63d99fatagen2026-10-16 05:34 UTC85
      devShells = forAllSystems (
57f44a63d99fatagen2026-10-16 05:34 UTC86
        pkgs:
57f44a63d99fatagen2026-10-16 05:34 UTC87
        let
57f44a63d99fatagen2026-10-16 05:34 UTC88
          project = mkProject pkgs;
57f44a63d99fatagen2026-10-16 05:34 UTC89
        in
57f44a63d99fatagen2026-10-16 05:34 UTC90
        {
57f44a63d99fatagen2026-10-16 05:34 UTC91
          default = project.craneLib.devShell {
57f44a63d99fatagen2026-10-16 05:34 UTC92
            inputsFrom = [ project.package ];
57f44a63d99fatagen2026-10-16 05:34 UTC93
            packages = with pkgs; [
57f44a63d99fatagen2026-10-16 05:34 UTC94
              rust-analyzer
57f44a63d99fatagen2026-10-16 05:34 UTC95
              vulkan-tools
57f44a63d99fatagen2026-10-16 05:34 UTC96
              vulkan-validation-layers
57f44a63d99fatagen2026-10-16 05:34 UTC97
              tracy
57f44a63d99fatagen2026-10-16 05:34 UTC98
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC99
            LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC100
            LAVAPIPE_ICD = project.lavapipeIcd;
57f44a63d99fatagen2026-10-16 05:34 UTC101
          };
57f44a63d99fatagen2026-10-16 05:34 UTC102
        }
57f44a63d99fatagen2026-10-16 05:34 UTC103
      );
57f44a63d99fatagen2026-10-16 05:34 UTC104
57f44a63d99fatagen2026-10-16 05:34 UTC105
      formatter = forAllSystems (pkgs: pkgs.nixfmt);
57f44a63d99fatagen2026-10-16 05:34 UTC106
    };
57f44a63d99fatagen2026-10-16 05:34 UTC107
}