atagen

monolith

public
Star0
Watch0
8f52f17d6892c803e75eb78109e0c810e55aa391
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
0c1685f1d412atagen2026-10-16 12:18 UTC43
              libinput
0c1685f1d412atagen2026-10-16 12:18 UTC44
              seatd
0c1685f1d412atagen2026-10-16 12:18 UTC45
              libgbm
0c1685f1d412atagen2026-10-16 12:18 UTC46
              libdrm
0c1685f1d412atagen2026-10-16 12:18 UTC47
              udev
57f44a63d99fatagen2026-10-16 05:34 UTC48
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC49
          };
57f44a63d99fatagen2026-10-16 05:34 UTC50
          cargoArtifacts = craneLib.buildDepsOnly commonArgs;
57f44a63d99fatagen2026-10-16 05:34 UTC51
        in
57f44a63d99fatagen2026-10-16 05:34 UTC52
        {
57f44a63d99fatagen2026-10-16 05:34 UTC53
          inherit craneLib lavapipeIcd commonArgs;
57f44a63d99fatagen2026-10-16 05:34 UTC54
57f44a63d99fatagen2026-10-16 05:34 UTC55
          package = craneLib.buildPackage (
57f44a63d99fatagen2026-10-16 05:34 UTC56
            commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC57
            // {
57f44a63d99fatagen2026-10-16 05:34 UTC58
              inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC59
              doCheck = false;
57f44a63d99fatagen2026-10-16 05:34 UTC60
            }
57f44a63d99fatagen2026-10-16 05:34 UTC61
          );
57f44a63d99fatagen2026-10-16 05:34 UTC62
57f44a63d99fatagen2026-10-16 05:34 UTC63
          checks = {
57f44a63d99fatagen2026-10-16 05:34 UTC64
            clippy = craneLib.cargoClippy (
57f44a63d99fatagen2026-10-16 05:34 UTC65
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC66
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC67
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC68
                cargoClippyExtraArgs = "--all-targets -- --deny warnings";
57f44a63d99fatagen2026-10-16 05:34 UTC69
              }
57f44a63d99fatagen2026-10-16 05:34 UTC70
            );
b563d2da1c80atagen2026-10-16 08:25 UTC71
            fmt = craneLib.cargoFmt { inherit src; pname = "monolith"; version = "0.0.0"; };
57f44a63d99fatagen2026-10-16 05:34 UTC72
            test = craneLib.cargoTest (
57f44a63d99fatagen2026-10-16 05:34 UTC73
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC74
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC75
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC76
                VK_DRIVER_FILES = lavapipeIcd;
824bf02b6e55atagen2026-10-16 09:15 UTC77
                LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC78
              }
57f44a63d99fatagen2026-10-16 05:34 UTC79
            );
57f44a63d99fatagen2026-10-16 05:34 UTC80
          };
57f44a63d99fatagen2026-10-16 05:34 UTC81
        };
57f44a63d99fatagen2026-10-16 05:34 UTC82
    in
57f44a63d99fatagen2026-10-16 05:34 UTC83
    {
57f44a63d99fatagen2026-10-16 05:34 UTC84
      packages = forAllSystems (pkgs: {
57f44a63d99fatagen2026-10-16 05:34 UTC85
        default = (mkProject pkgs).package;
57f44a63d99fatagen2026-10-16 05:34 UTC86
      });
57f44a63d99fatagen2026-10-16 05:34 UTC87
57f44a63d99fatagen2026-10-16 05:34 UTC88
      checks = forAllSystems (pkgs: (mkProject pkgs).checks);
57f44a63d99fatagen2026-10-16 05:34 UTC89
57f44a63d99fatagen2026-10-16 05:34 UTC90
      devShells = forAllSystems (
57f44a63d99fatagen2026-10-16 05:34 UTC91
        pkgs:
57f44a63d99fatagen2026-10-16 05:34 UTC92
        let
57f44a63d99fatagen2026-10-16 05:34 UTC93
          project = mkProject pkgs;
57f44a63d99fatagen2026-10-16 05:34 UTC94
        in
57f44a63d99fatagen2026-10-16 05:34 UTC95
        {
57f44a63d99fatagen2026-10-16 05:34 UTC96
          default = project.craneLib.devShell {
57f44a63d99fatagen2026-10-16 05:34 UTC97
            inputsFrom = [ project.package ];
57f44a63d99fatagen2026-10-16 05:34 UTC98
            packages = with pkgs; [
57f44a63d99fatagen2026-10-16 05:34 UTC99
              rust-analyzer
57f44a63d99fatagen2026-10-16 05:34 UTC100
              vulkan-tools
57f44a63d99fatagen2026-10-16 05:34 UTC101
              vulkan-validation-layers
57f44a63d99fatagen2026-10-16 05:34 UTC102
              tracy
57f44a63d99fatagen2026-10-16 05:34 UTC103
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC104
            LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC105
            LAVAPIPE_ICD = project.lavapipeIcd;
57f44a63d99fatagen2026-10-16 05:34 UTC106
          };
57f44a63d99fatagen2026-10-16 05:34 UTC107
        }
57f44a63d99fatagen2026-10-16 05:34 UTC108
      );
57f44a63d99fatagen2026-10-16 05:34 UTC109
57f44a63d99fatagen2026-10-16 05:34 UTC110
      formatter = forAllSystems (pkgs: pkgs.nixfmt);
57f44a63d99fatagen2026-10-16 05:34 UTC111
    };
57f44a63d99fatagen2026-10-16 05:34 UTC112
}