flake.nix refactor
This commit is contained in:
parent
1750b315b4
commit
e616d19a15
1 changed files with 27 additions and 28 deletions
55
flake.nix
55
flake.nix
|
@ -1,47 +1,46 @@
|
||||||
{ description = "niss's silly extra packages";
|
{ description = "niss's silly extra packages";
|
||||||
|
|
||||||
outputs = all@{ self, nixpkgs, ... }:
|
outputs = all@{ self, nixpkgs }:
|
||||||
let
|
let
|
||||||
inherit (nixpkgs.lib) genAttrs optionalAttrs systems;
|
inherit (nixpkgs.lib) genAttrs optionalAttrs systems defaultTo;
|
||||||
|
|
||||||
forAllSystems = genAttrs systems.flakeExposed;
|
forAllSystems = genAttrs systems.flakeExposed;
|
||||||
getCallPackage = system: nixpkgs.legacyPackages.${system}.callPackage;
|
|
||||||
ifLinux64 = system: attrs: optionalAttrs (system == "x86_64-linux") attrs;
|
|
||||||
|
|
||||||
linuxPackageNames = [
|
|
||||||
"multi-ghc"
|
packagesInDir = dir: names: pkgs:
|
||||||
"basilisk" "isabelle"
|
let inherit (pkgs) callPackage; in
|
||||||
|
genAttrs names (pkg: callPackage ./${dir}/${pkg}.nix {});
|
||||||
|
|
||||||
|
linuxPackages = packagesInDir "apps" [
|
||||||
|
"multi-ghc" "basilisk" "isabelle"
|
||||||
"firefox-esr-alias" "inkscape-xwayland"
|
"firefox-esr-alias" "inkscape-xwayland"
|
||||||
];
|
];
|
||||||
fontNames = [
|
|
||||||
|
fonts = packagesInDir "fonts" [
|
||||||
"constructium" "fairfax-hd" "kreative-square" "muller"
|
"constructium" "fairfax-hd" "kreative-square" "muller"
|
||||||
"pragmatapro" "teranoptia"
|
"pragmatapro" "teranoptia"
|
||||||
];
|
];
|
||||||
|
|
||||||
linuxAppNames = [
|
|
||||||
"basilisk" "isabelle" "firefox-esr-alias" "inkscape-xwayland"
|
makeApp = name: exe:
|
||||||
|
{ type = "app"; program = "${pkgs.${name}}/bin/${defaultTo name exe}"; };
|
||||||
|
|
||||||
|
linuxApps = pkgs: [
|
||||||
|
(makeApp "basilisk" null)
|
||||||
|
(makeApp "isabelle" null)
|
||||||
|
(makeApp "firefox-esr-alias" "firefox-esr")
|
||||||
|
(makeApp "inkscape-xwayland" "inkscape")
|
||||||
];
|
];
|
||||||
linuxAppExes = {
|
|
||||||
firefox-esr-alias = "firefox-esr";
|
|
||||||
inkscape-xwayland = "inkscape";
|
|
||||||
};
|
|
||||||
|
|
||||||
packagesInDir = names: dir: call:
|
|
||||||
genAttrs names (pkg: call ./${dir}/${pkg}.nix {});
|
|
||||||
|
|
||||||
linuxOnly = packagesInDir linuxPackageNames "apps";
|
ifLinux64 = f: pkgs: optionalAttrs (pkgs.system == "x86_64-linux") (f pkgs);
|
||||||
fonts = packagesInDir fontNames "fonts";
|
|
||||||
all = system: call: ifLinux64 system (linuxOnly call) // fonts call;
|
|
||||||
|
|
||||||
makeApp = pkgs: name: {
|
mkPackages = pkgs:
|
||||||
type = "app";
|
ifLinux64 linuxPackages pkgs // fonts pkgs;
|
||||||
program = "${pkgs.${name}}/bin/${linuxAppExes.${name} or name}";
|
|
||||||
};
|
|
||||||
|
|
||||||
linuxApps = call: genAttrs linuxAppNames (makeApp (linuxOnly call));
|
mkApps = pkgs: ifLinux64 linuxApps pkgs;
|
||||||
in {
|
in {
|
||||||
packages = forAllSystems (s: all s (getCallPackage s));
|
packages = forAllSystems (sys: mkPackages nixpkgs.legacyPackages.${sys});
|
||||||
apps = forAllSystems (s: ifLinux64 s (linuxApps (getCallPackage s)));
|
apps = forAllSystems (sys: mkApps nixpkgs.legacyPackages.${sys});
|
||||||
overlays = forAllSystems (s: final: prev: all s final.callPackage);
|
overlays = forAllSystems (sys: final: prev: mkApps final);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue