feat(node): make function to make girs types and move it to lib

This commit is contained in:
matt1432 2024-09-24 16:12:57 -04:00
parent aa9723303b
commit 7a3ea83d40
7 changed files with 58 additions and 24 deletions

View file

@ -1,6 +1,7 @@
{ {
inputs ? {}, inputs ? {},
pkgs ? {}, pkgs ? {},
self ? {},
}: let }: let
lock = builtins.fromJSON (builtins.readFile ../flake.lock); lock = builtins.fromJSON (builtins.readFile ../flake.lock);
@ -9,11 +10,12 @@
sha256 = lock.nodes.nixpkgs.locked.narHash; sha256 = lock.nodes.nixpkgs.locked.narHash;
}}/lib"; }}/lib";
inherit (lib) optionalAttrs; inherit (lib) concatStringsSep optionalAttrs stringToCharacters substring tail toUpper;
mkVersion = src: "0.0.0+" + src.shortRev; mkVersion = src: "0.0.0+" + src.shortRev;
capitalise = str: (toUpper (substring 0 1 str) + (concatStringsSep "" (tail (stringToCharacters str))));
in in
{inherit lib mkVersion;} {inherit lib mkVersion capitalise;}
// (import ./inputs.nix lib lock) // (import ./inputs.nix lib lock)
// optionalAttrs (inputs != {}) (import ./flake-lib.nix inputs) // optionalAttrs (inputs != {}) (import ./flake-lib.nix inputs)
// optionalAttrs (pkgs != {}) (import ./pkgs.nix pkgs mkVersion) // optionalAttrs (pkgs != {}) (import ./pkgs.nix pkgs mkVersion capitalise self)

View file

@ -1,13 +1,16 @@
{ {
package, lib,
girName, pname,
withGirNames,
buildNpmPackage, buildNpmPackage,
ts-for-gir-src, ts-for-gir-src,
... ...
}: }: let
inherit (lib) concatMapStringsSep;
in
buildNpmPackage { buildNpmPackage {
pname = "${package.pname}-types"; pname = "${pname}-types";
inherit (package) version; version = "0.0.0";
npmDepsHash = "sha256-8De8tRUKzRhD1jyx0anYNPMhxZyIr2nI45HdK6nb8jI="; npmDepsHash = "sha256-8De8tRUKzRhD1jyx0anYNPMhxZyIr2nI45HdK6nb8jI=";
@ -15,8 +18,8 @@ buildNpmPackage {
dontNpmBuild = true; dontNpmBuild = true;
buildPhase = '' buildPhase = ''
npx @ts-for-gir/cli generate ${girName} \ npx @ts-for-gir/cli generate ${concatMapStringsSep " " (p: p.girName) withGirNames} \
-g ${package.dev}/share/gir-1.0 \ ${concatMapStringsSep "\n" (p: "-g ${p.package.dev}/share/gir-1.0 \\") withGirNames}
-g ${ts-for-gir-src}/girs \ -g ${ts-for-gir-src}/girs \
--ignoreVersionConflicts \ --ignoreVersionConflicts \
--package \ --package \

View file

@ -1,4 +1,4 @@
pkgs: mkVersion: { pkgs: mkVersion: capitalise: self: {
buildPlugin = pname: src: buildPlugin = pname: src:
pkgs.vimUtils.buildVimPlugin { pkgs.vimUtils.buildVimPlugin {
inherit pname src; inherit pname src;
@ -21,4 +21,29 @@ pkgs: mkVersion: {
dontNpmBuild = true; dontNpmBuild = true;
}) {}; }) {};
in "${pkg}/lib/node_modules/${pkg.pname}/node_modules"; in "${pkg}/lib/node_modules/${pkg.pname}/node_modules";
buildNodeTypes = {
configPath,
packages,
pname,
}: let
inherit (pkgs.lib) concatMapStrings elemAt length map optionalString splitString toLower;
withGirNames =
map (package: {
inherit package;
girName =
if package.pname == "astal-wireplumber"
then "AstalWp-0.1"
else (concatMapStrings capitalise (splitString "-" package.pname)) + "-0.1";
})
packages;
in {
"${configPath}${optionalString (length packages == 1) "/${toLower (elemAt withGirNames 0).girName}"}".source =
pkgs.callPackage
./mk-types {
inherit (self.inputs) ts-for-gir-src;
inherit pname withGirNames;
};
};
} }

View file

@ -4,10 +4,10 @@ self: {
pkgs, pkgs,
... ...
}: let }: let
inherit (self.inputs) ags astal gtk-session-lock ts-for-gir-src; inherit (self.inputs) ags astal gtk-session-lock;
in { in {
config = let config = let
inherit (lib) boolToString mkIf toLower; inherit (lib) boolToString mkIf;
# Configs # Configs
inherit (config.vars) hostName; inherit (config.vars) hostName;
@ -70,15 +70,11 @@ in {
home = { home = {
file = let file = let
inherit (import "${self}/lib" {inherit pkgs;}) buildNodeModules; inherit
(import "${self}/lib" {inherit pkgs self;})
mkType = package: girName: { buildNodeModules
"${agsConfigDir}/config/types/@girs/${toLower girName}".source = buildNodeTypes
pkgs.callPackage ;
./mk-types {
inherit ts-for-gir-src package girName;
};
};
in ( in (
{ {
# Generated types # Generated types
@ -87,8 +83,16 @@ in {
recursive = true; # To add other types inside the folder recursive = true; # To add other types inside the folder
}; };
} }
// (mkType gtkSessionLock "GtkSessionLock-0.1") // (buildNodeTypes {
// (mkType astalTray "AstalTray-0.1") pname = "gtk-session-lock";
configPath = "${agsConfigDir}/config/types/@girs";
packages = [gtkSessionLock];
})
// (buildNodeTypes {
pname = "astal-tray";
configPath = "${agsConfigDir}/config/types/@girs";
packages = [astalTray];
})
// { // {
# Out of store symlinks # Out of store symlinks
".config/ags".source = mkOutOfStoreSymlink "${flakeDir}/nixosModules/ags/config"; ".config/ags".source = mkOutOfStoreSymlink "${flakeDir}/nixosModules/ags/config";