hyprshell 4.8.1

A modern GTK4-based window switcher and application launcher for Hyprland
{
  description = "hyprshell - A Rust-based GUI designed to enhance window management in hyprland";
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    flake-parts = {
      url = "github:hercules-ci/flake-parts";
      inputs.nixpkgs-lib.follows = "nixpkgs";
    };
    hyprland.url = "github:hyprwm/Hyprland";
    crane.url = "github:ipetkov/crane";
  };
  outputs =
    inputs@{
      self,
      nixpkgs,
      home-manager,
      flake-parts,
      hyprland,
      crane,
    }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      systems = [
        "aarch64-linux"
        "x86_64-linux"
      ];
      perSystem =
        { pkgs, self', ... }:
        let
          craneLib = crane.mkLib pkgs;
          buildLib = import ./nix/build.nix { inherit craneLib pkgs; };
        in
        {
          formatter = pkgs.nixfmt-tree;
          packages = rec {
            hyprshell = craneLib.buildPackage (
              buildLib.commonArgs
              // {
                cargoArtifacts = buildLib.cargoReleaseArtifacts;
                preFixup =
                  buildLib.addWrapWithGccArgs
                    inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default;
              }
            );
            hyprshell-nixpkgs = craneLib.buildPackage (
              buildLib.commonArgs
              // {
                cargoArtifacts = buildLib.cargoReleaseArtifacts;
                preFixup = buildLib.addWrapWithGccArgs pkgs.hyprland;
              }
            );
            hyprshell-slim = craneLib.buildPackage (
              buildLib.commonArgs
              // {
                cargoArtifacts = buildLib.cargoReleaseArtifacts;
                cargoExtraArgs = "--no-default-features --features slim";
                preFixup =
                  buildLib.addWrapWithGccArgs
                    inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default;
              }
            );
            hyprshell-slim-nixpkgs = craneLib.buildPackage (
              buildLib.commonArgs
              // {
                cargoArtifacts = buildLib.cargoReleaseArtifacts;
                cargoExtraArgs = "--no-default-features --features slim";
                preFixup = buildLib.addWrapWithGccArgs pkgs.hyprland;
              }
            );
            default = hyprshell;
          };
          checks = import ./nix/checks.nix {
            inherit
              self
              pkgs
              craneLib
              buildLib
              home-manager
              ;
          };
          devShells.default = craneLib.devShell {
            checks = self'.checks;
            stdenv = buildLib.stdenv;
            packages = [
              pkgs.rust-analyzer
            ];
          };
        };
      flake = {
        homeModules = rec {
          hyprshell = import ./nix/module.nix self;
          default = hyprshell;
        };
      };
    };
}