atagen

monolith

public
Star0
Watch0
bbb50b4f27f74f8acfdd998ddc5b5a75cc2696f0
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 = ./.;
14c8fedad3a3atagen2026-10-16 22:30 UTC27
            filter = path: type: (craneLib.filterCargoSources path type) || lib.hasInfix "/shaders" path || lib.hasInfix "/res" 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;
14c8fedad3a3atagen2026-10-16 22:30 UTC60
              postInstall = ''
14c8fedad3a3atagen2026-10-16 22:30 UTC61
                install -Dm644 res/monolith-portals.conf -t $out/share/xdg-desktop-portal
14c8fedad3a3atagen2026-10-16 22:30 UTC62
                install -Dm644 res/monolith.desktop -t $out/share/wayland-sessions
14c8fedad3a3atagen2026-10-16 22:30 UTC63
              '';
57f44a63d99fatagen2026-10-16 05:34 UTC64
            }
57f44a63d99fatagen2026-10-16 05:34 UTC65
          );
57f44a63d99fatagen2026-10-16 05:34 UTC66
57f44a63d99fatagen2026-10-16 05:34 UTC67
          checks = {
57f44a63d99fatagen2026-10-16 05:34 UTC68
            clippy = craneLib.cargoClippy (
57f44a63d99fatagen2026-10-16 05:34 UTC69
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC70
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC71
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC72
                cargoClippyExtraArgs = "--all-targets -- --deny warnings";
57f44a63d99fatagen2026-10-16 05:34 UTC73
              }
57f44a63d99fatagen2026-10-16 05:34 UTC74
            );
b563d2da1c80atagen2026-10-16 08:25 UTC75
            fmt = craneLib.cargoFmt { inherit src; pname = "monolith"; version = "0.0.0"; };
57f44a63d99fatagen2026-10-16 05:34 UTC76
            test = craneLib.cargoTest (
57f44a63d99fatagen2026-10-16 05:34 UTC77
              commonArgs
57f44a63d99fatagen2026-10-16 05:34 UTC78
              // {
57f44a63d99fatagen2026-10-16 05:34 UTC79
                inherit cargoArtifacts;
57f44a63d99fatagen2026-10-16 05:34 UTC80
                VK_DRIVER_FILES = lavapipeIcd;
824bf02b6e55atagen2026-10-16 09:15 UTC81
                LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC82
              }
57f44a63d99fatagen2026-10-16 05:34 UTC83
            );
57f44a63d99fatagen2026-10-16 05:34 UTC84
          };
57f44a63d99fatagen2026-10-16 05:34 UTC85
        };
57f44a63d99fatagen2026-10-16 05:34 UTC86
    in
57f44a63d99fatagen2026-10-16 05:34 UTC87
    {
57f44a63d99fatagen2026-10-16 05:34 UTC88
      packages = forAllSystems (pkgs: {
57f44a63d99fatagen2026-10-16 05:34 UTC89
        default = (mkProject pkgs).package;
57f44a63d99fatagen2026-10-16 05:34 UTC90
      });
57f44a63d99fatagen2026-10-16 05:34 UTC91
57f44a63d99fatagen2026-10-16 05:34 UTC92
      checks = forAllSystems (pkgs: (mkProject pkgs).checks);
57f44a63d99fatagen2026-10-16 05:34 UTC93
57f44a63d99fatagen2026-10-16 05:34 UTC94
      devShells = forAllSystems (
57f44a63d99fatagen2026-10-16 05:34 UTC95
        pkgs:
57f44a63d99fatagen2026-10-16 05:34 UTC96
        let
57f44a63d99fatagen2026-10-16 05:34 UTC97
          project = mkProject pkgs;
57f44a63d99fatagen2026-10-16 05:34 UTC98
        in
57f44a63d99fatagen2026-10-16 05:34 UTC99
        {
57f44a63d99fatagen2026-10-16 05:34 UTC100
          default = project.craneLib.devShell {
57f44a63d99fatagen2026-10-16 05:34 UTC101
            inputsFrom = [ project.package ];
57f44a63d99fatagen2026-10-16 05:34 UTC102
            packages = with pkgs; [
57f44a63d99fatagen2026-10-16 05:34 UTC103
              rust-analyzer
57f44a63d99fatagen2026-10-16 05:34 UTC104
              vulkan-tools
57f44a63d99fatagen2026-10-16 05:34 UTC105
              vulkan-validation-layers
57f44a63d99fatagen2026-10-16 05:34 UTC106
              tracy
57f44a63d99fatagen2026-10-16 05:34 UTC107
            ];
57f44a63d99fatagen2026-10-16 05:34 UTC108
            LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.vulkan-loader ];
57f44a63d99fatagen2026-10-16 05:34 UTC109
            LAVAPIPE_ICD = project.lavapipeIcd;
57f44a63d99fatagen2026-10-16 05:34 UTC110
          };
57f44a63d99fatagen2026-10-16 05:34 UTC111
        }
57f44a63d99fatagen2026-10-16 05:34 UTC112
      );
57f44a63d99fatagen2026-10-16 05:34 UTC113
57f44a63d99fatagen2026-10-16 05:34 UTC114
      formatter = forAllSystems (pkgs: pkgs.nixfmt);
57f44a63d99fatagen2026-10-16 05:34 UTC115
    };
57f44a63d99fatagen2026-10-16 05:34 UTC116
}