48 lines
1.5 KiB
Nix
48 lines
1.5 KiB
Nix
{ description = "niss's silly extra packages";
|
|
|
|
outputs = all@{ self, nixpkgs }:
|
|
let
|
|
inherit (nixpkgs.lib) genAttrs optionalAttrs systems defaultTo;
|
|
forAllSystems = genAttrs systems.flakeExposed;
|
|
|
|
|
|
packagesInDir = dir: names: pkgs:
|
|
let inherit (pkgs) callPackage; in
|
|
genAttrs names (pkg: callPackage ./${dir}/${pkg}.nix {});
|
|
|
|
linuxPackages = packagesInDir "apps" [
|
|
"multi-ghc" "basilisk" "isabelle"
|
|
"firefox-esr-alias" "inkscape-xwayland"
|
|
];
|
|
|
|
crossPlatformPackages = packagesInDir "scripts" [ "niss-misc" ];
|
|
|
|
fonts = packagesInDir "fonts" [
|
|
"constructium" "fairfax-hd" "kreative-square" "muller"
|
|
"pragmatapro" "teranoptia"
|
|
];
|
|
|
|
|
|
makeApp = pkgs: name: exe:
|
|
{ type = "app"; program = "${pkgs.${name}}/bin/${defaultTo name exe}"; };
|
|
|
|
linuxApps = pkgs: [
|
|
(makeApp pkgs "basilisk" null)
|
|
(makeApp pkgs "isabelle" null)
|
|
(makeApp pkgs "firefox-esr-alias" "firefox-esr")
|
|
(makeApp pkgs "inkscape-xwayland" "inkscape")
|
|
];
|
|
|
|
|
|
ifLinux64 = f: pkgs: optionalAttrs (pkgs.system == "x86_64-linux") (f pkgs);
|
|
|
|
mkPackages = pkgs:
|
|
ifLinux64 linuxPackages pkgs // crossPlatformPackages pkgs // fonts pkgs;
|
|
|
|
mkApps = pkgs: ifLinux64 linuxApps pkgs;
|
|
in {
|
|
packages = forAllSystems (sys: mkPackages nixpkgs.legacyPackages.${sys});
|
|
apps = forAllSystems (sys: mkApps nixpkgs.legacyPackages.${sys});
|
|
overlays = forAllSystems (sys: final: prev: mkApps final);
|
|
};
|
|
}
|