104 lines
3.0 KiB
Nix
104 lines
3.0 KiB
Nix
{
|
|
description = "A wayland native, highly customizable runner.";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
systems.url = "github:nix-systems/default-linux";
|
|
flake-parts = {
|
|
url = "github:hercules-ci/flake-parts";
|
|
inputs.nixpkgs-lib.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
flake-parts,
|
|
systems,
|
|
...
|
|
} @ inputs:
|
|
flake-parts.lib.mkFlake {inherit inputs;} {
|
|
imports = [flake-parts.flakeModules.easyOverlay];
|
|
systems = import systems;
|
|
|
|
perSystem = {
|
|
self',
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (pkgs) callPackage;
|
|
in {
|
|
packages = let
|
|
lockFile = ./Cargo.lock;
|
|
|
|
# Since all plugin derivations are called with the exact same arguments
|
|
# it is possible to streamline calling packages with a single function
|
|
# that takes name as an argument, and handles default inherits.
|
|
mkPlugin = name:
|
|
callPackage ./nix/packages/plugin.nix {
|
|
inherit inputs lockFile;
|
|
inherit name;
|
|
};
|
|
in {
|
|
default = self'.packages.anyrun;
|
|
|
|
# By default the anyrun package is built without any plugins
|
|
# as per the `dontBuildPlugins` arg.
|
|
anyrun = callPackage ./nix/packages/anyrun.nix {inherit inputs lockFile;};
|
|
anyrun-with-all-plugins = callPackage ./nix/packages/anyrun.nix {
|
|
inherit inputs lockFile;
|
|
dontBuildPlugins = false;
|
|
};
|
|
|
|
# Expose each plugin as a separate package. This uses the mkPlugin function
|
|
# to call the same derivation with same default inherits and the name of the
|
|
# plugin every time.
|
|
applications = mkPlugin "applications";
|
|
dictionary = mkPlugin "dictionary";
|
|
kidex = mkPlugin "kidex";
|
|
randr = mkPlugin "randr";
|
|
rink = mkPlugin "rink";
|
|
shell = mkPlugin "shell";
|
|
stdin = mkPlugin "stdin";
|
|
symbols = mkPlugin "symbols";
|
|
translate = mkPlugin "translate";
|
|
websearch = mkPlugin "websearch";
|
|
};
|
|
|
|
# Set up an overlay from packages exposed by this flake
|
|
overlayAttrs = config.packages;
|
|
|
|
devShells = {
|
|
default = pkgs.mkShell {
|
|
inputsFrom = builtins.attrValues self'.packages;
|
|
packages = with pkgs; [
|
|
rustc
|
|
gcc
|
|
cargo
|
|
clippy
|
|
rustfmt
|
|
];
|
|
};
|
|
|
|
nix = pkgs.mkShellNoCC {
|
|
packages = with pkgs; [
|
|
alejandra # formatter
|
|
statix # linter
|
|
deadnix # dead-code finder
|
|
];
|
|
};
|
|
};
|
|
|
|
# provide the formatter for nix fmt
|
|
formatter = pkgs.alejandra;
|
|
};
|
|
|
|
flake = {
|
|
homeManagerModules = {
|
|
anyrun = import ./nix/modules/home-manager.nix self;
|
|
default = self.homeManagerModules.anyrun;
|
|
};
|
|
};
|
|
};
|
|
}
|