mirror of
https://github.com/NotAShelf/Basix.git
synced 2026-05-19 21:46:38 +00:00
nix: minor flake refactor; provide GTK and QT theme packages
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I136253e0d928e71e61824bc3f3b5a0726a6a6964
This commit is contained in:
parent
3f1f0ddc17
commit
571f60b1a0
5 changed files with 346 additions and 21 deletions
85
flake.nix
85
flake.nix
|
|
@ -2,48 +2,91 @@
|
|||
description = "Base16/Base24 schemes for Nix";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-compat = {
|
||||
url = "github:edolstra/flake-compat";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs @ {
|
||||
outputs = {
|
||||
flake-parts,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"];
|
||||
perSystem = {pkgs, ...}: {
|
||||
} @ 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 (inputs.nixpkgs) lib;
|
||||
evalSchemeData = lib.flip lib.pipe [
|
||||
builtins.unsafeDiscardStringContext
|
||||
lib.filesystem.listFilesRecursive
|
||||
(builtins.filter (lib.hasSuffix ".json"))
|
||||
(map (n: {
|
||||
name = lib.removePrefix ((dirOf n) + "/") (lib.removeSuffix ".json" n);
|
||||
value = lib.importJSON n;
|
||||
}))
|
||||
lib.listToAttrs
|
||||
];
|
||||
inherit (basixLib) evalSchemeData;
|
||||
in {
|
||||
lib = {
|
||||
inherit evalSchemeData;
|
||||
};
|
||||
lib = basixLib;
|
||||
|
||||
schemeData = {
|
||||
base16 = evalSchemeData "${self}/json/base16";
|
||||
base24 = evalSchemeData "${self}/json/base24";
|
||||
};
|
||||
|
||||
themePackages = lib.genAttrs systems mkSystemThemePackages;
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue