mirror of
https://github.com/NotAShelf/Basix.git
synced 2026-05-19 13:30:32 +00:00
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I136253e0d928e71e61824bc3f3b5a0726a6a6964
92 lines
2.8 KiB
Nix
92 lines
2.8 KiB
Nix
{
|
|
description = "Base16/Base24 schemes for Nix";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
flake-compat = {
|
|
url = "github:edolstra/flake-compat";
|
|
flake = false;
|
|
};
|
|
};
|
|
|
|
outputs = {
|
|
flake-parts,
|
|
self,
|
|
...
|
|
} @ inputs:
|
|
flake-parts.lib.mkFlake {inherit inputs;} (let
|
|
systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"];
|
|
|
|
# FWIW this could also be lib.extend but lib.extend itself claims that
|
|
# it should not be used, so we do this instead.
|
|
inherit (inputs.nixpkgs) lib;
|
|
basixLib = import ./lib.nix {inherit lib;};
|
|
|
|
mkThemeAttrSet = pkgs: schemes: let
|
|
mkGtkTheme = pkgs.callPackage ./packages/gtk/package.nix {basixLib = self.lib;};
|
|
mkQtctTheme = pkgs.callPackage ./packages/qtct/package.nix {basixLib = self.lib;};
|
|
mkKvantumTheme = pkgs.callPackage ./packages/kvantum/package.nix {basixLib = self.lib;};
|
|
in
|
|
lib.mapAttrs (slug: scheme:
|
|
pkgs.symlinkJoin {
|
|
name = "basix-theme-${self.lib.sanitizeSlug slug}";
|
|
paths = [
|
|
(mkGtkTheme {inherit slug scheme;})
|
|
(mkQtctTheme {inherit slug scheme;})
|
|
(mkKvantumTheme {inherit slug scheme;})
|
|
];
|
|
})
|
|
schemes;
|
|
|
|
mkSystemThemePackages = system: let
|
|
pkgs = import inputs.nixpkgs {inherit system;};
|
|
in {
|
|
base16 = mkThemeAttrSet pkgs self.schemeData.base16;
|
|
base24 = mkThemeAttrSet pkgs self.schemeData.base24;
|
|
};
|
|
in {
|
|
inherit systems;
|
|
perSystem = {
|
|
pkgs,
|
|
system,
|
|
...
|
|
}: let
|
|
themePackages = self.themePackages.${system};
|
|
in {
|
|
packages = {
|
|
# Converts YAML -> JSON
|
|
convert-scheme = pkgs.callPackage ./packages/convert-scheme/package.nix {};
|
|
|
|
# Theme collections
|
|
themes-base16 = pkgs.symlinkJoin {
|
|
name = "basix-themes-base16";
|
|
paths = lib.attrValues themePackages.base16;
|
|
};
|
|
|
|
themes-base24 = pkgs.symlinkJoin {
|
|
name = "basix-themes-base24";
|
|
paths = lib.attrValues themePackages.base24;
|
|
};
|
|
|
|
themes-all = pkgs.symlinkJoin {
|
|
name = "basix-themes-all-${system}";
|
|
paths = (lib.attrValues themePackages.base16) ++ (lib.attrValues themePackages.base24);
|
|
};
|
|
};
|
|
};
|
|
|
|
flake = let
|
|
inherit (basixLib) evalSchemeData;
|
|
in {
|
|
lib = basixLib;
|
|
|
|
schemeData = {
|
|
base16 = evalSchemeData "${self}/json/base16";
|
|
base24 = evalSchemeData "${self}/json/base24";
|
|
};
|
|
|
|
themePackages = lib.genAttrs systems mkSystemThemePackages;
|
|
};
|
|
});
|
|
}
|