nix: streamline plugin package generation

Simplifies nix code and gets rid of discouraged rec pattern in flake.nix
This commit is contained in:
NotAShelf
2024-06-03 19:45:35 +03:00
parent 658718b31c
commit cb6fdbcbaa

View File

@@ -22,8 +22,7 @@
system, system,
... ...
}: let }: let
inherit (inputs.nixpkgs) lib; inherit (pkgs) callPackage;
inherit (lib) getExe;
in { in {
# provide the formatter for nix fmt # provide the formatter for nix fmt
formatter = pkgs.alejandra; formatter = pkgs.alejandra;
@@ -45,78 +44,47 @@
packages = let packages = let
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
in rec {
anyrun = pkgs.callPackage ./nix/default.nix {inherit inputs lockFile;}; # Since all plugin derivations are called with the exact same arguments
# alias nix build .# to anyrun # it is possible to streamline calling packages with a single function
default = anyrun; # that takes name as an argument, and handles default inherits.
mkPlugin = name:
callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
inherit name;
};
in {
default = self'.packages.anyrun;
anyrun = callPackage ./nix/default.nix {inherit inputs lockFile;};
anyrun-with-all-plugins = pkgs.callPackage ./nix/default.nix { anyrun-with-all-plugins = pkgs.callPackage ./nix/default.nix {
inherit inputs lockFile; inherit inputs lockFile;
dontBuildPlugins = false; dontBuildPlugins = false;
}; };
# expose each plugin as a package # Expose each plugin as a separate package. This uses the mkPlugin function
applications = pkgs.callPackage ./nix/plugins/default.nix { # to call the same derivation with same default inherits and the name of the
inherit inputs lockFile; # plugin every time.
name = "applications"; applications = mkPlugin "applications";
}; dictionary = mkPlugin "dictionary";
kidex = mkPlugin "kidex";
dictionary = pkgs.callPackage ./nix/plugins/default.nix { randr = mkPlugin "randr";
inherit inputs lockFile; rink = mkPlugin "rink";
name = "dictionary"; shell = mkPlugin "shell";
}; stdin = mkPlugin "stdin";
symbols = mkPlugin "symbols";
kidex = pkgs.callPackage ./nix/plugins/default.nix { translate = mkPlugin "translate";
inherit inputs lockFile; websearch = mkPlugin "websearch";
name = "kidex";
};
randr = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "randr";
};
rink = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "rink";
};
shell = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "shell";
};
stdin = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "stdin";
};
symbols = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "symbols";
};
translate = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "translate";
};
websearch = pkgs.callPackage ./nix/plugins/default.nix {
inherit inputs lockFile;
name = "websearch";
};
}; };
# Set up an overlay from packages exposed by this flake # Set up an overlay from packages exposed by this flake
overlayAttrs = config.packages; overlayAttrs = config.packages;
}; };
flake = _: rec { flake = {self, ...}: {
nixosModules.home-manager = homeManagerModules.default; homeManagerModules = {
homeManagerModules = rec {
anyrun = import ./nix/hm-module.nix inputs.self; anyrun = import ./nix/hm-module.nix inputs.self;
default = anyrun; default = self.homeManagerModules.anyrun;
}; };
}; };
}; };