feat(apps): add to nixFastBuild and clean up nix code
All checks were successful
Discord / discord commits (push) Has been skipped

This commit is contained in:
matt1432 2024-11-15 13:39:20 -05:00
parent 655eac9ad6
commit a67f0fd422
19 changed files with 67 additions and 46 deletions

View file

@ -1,25 +1,31 @@
{ {
runtimeInputs,
npmDepsHash,
src,
lib, lib,
buildNpmPackage, buildNpmPackage,
callPackage,
makeWrapper, makeWrapper,
nodejs_latest, nodejs_latest,
jq,
... ...
}: let }: let
inherit (lib) concatMapStringsSep getBin; inherit (lib) concatMapStringsSep getBin;
packageJSON = builtins.fromJSON (builtins.readFile ./package.json); packageJSON = builtins.fromJSON (builtins.readFile "${src}/package.json");
in in
buildNpmPackage rec { buildNpmPackage rec {
pname = packageJSON.name; pname = packageJSON.name;
inherit (packageJSON) version; inherit (packageJSON) version;
src = ./.; inherit src runtimeInputs npmDepsHash;
npmDepsHash = "sha256-5miQfnSy559jVsqyZM5LqegMuIVsd+LOdsZ8FaHy24A=";
prePatch = ''
mv ./tsconfig.json ./project.json
sed 's/^ *\/\/.*//' ${./tsconfig.json} > ./base.json
${jq}/bin/jq -sr '.[0] * .[1] | del(.extends)' ./project.json ./base.json > ./tsconfig.json
rm base.json project.json
'';
runtimeInputs = [
(callPackage ../../nixosModules/docker/updateImage.nix {})
];
nativeBuildInputs = [makeWrapper]; nativeBuildInputs = [makeWrapper];
postInstall = '' postInstall = ''

View file

@ -3,13 +3,18 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (pkgs.lib) getExe; inherit (pkgs.lib) getExe listToAttrs nameValuePair;
buildApp = attrs: (pkgs.callPackage ./buildApp.nix ({} // inputs // attrs));
mkApp = file: { mkApp = file: {
program = getExe (pkgs.callPackage file ({} // inputs)); program = getExe (pkgs.callPackage file ({inherit buildApp;} // inputs));
type = "app"; type = "app";
}; };
in {
extract-subs = mkApp ./extract-subs; mkApps = apps: listToAttrs (map (x: nameValuePair x (mkApp ./${x})) apps);
updateFlake = mkApp ./update; in
} mkApps [
"extract-subs"
"update-sources"
]

View file

@ -1,32 +1,13 @@
{ {
lib, buildApp,
buildNpmPackage,
ffmpeg-full, ffmpeg-full,
makeWrapper,
nodejs_latest,
... ...
}: let }:
inherit (lib) concatMapStringsSep getBin; buildApp {
src = ./.;
npmDepsHash = "sha256-XflXVdlsTonDHiR70Th/V6KUf4KSvcwnDod2mkz7rHQ=";
packageJSON = builtins.fromJSON (builtins.readFile ./package.json); runtimeInputs = [
in ffmpeg-full
buildNpmPackage rec { ];
pname = packageJSON.name; }
inherit (packageJSON) version;
src = ./.;
npmDepsHash = "sha256-edIAvY03eA3hqPHjAXz8pq3M5NzekOAYAR4o7j/Wf5Y=";
runtimeInputs = [
ffmpeg-full
];
nativeBuildInputs = [makeWrapper];
postInstall = ''
wrapProgram $out/bin/${pname} \
--prefix PATH : ${concatMapStringsSep ":" (p: getBin p) runtimeInputs}
'';
nodejs = nodejs_latest;
meta.mainProgram = pname;
}

Binary file not shown.

View file

@ -7,14 +7,16 @@
"build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs" "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
}, },
"dependencies": { "dependencies": {
"@types/fluent-ffmpeg": "2.1.27",
"fluent-ffmpeg": "2.1.3"
},
"devDependencies": {
"@eslint/js": "9.14.0", "@eslint/js": "9.14.0",
"@stylistic/eslint-plugin": "2.10.1", "@stylistic/eslint-plugin": "2.10.1",
"@types/fluent-ffmpeg": "2.1.27",
"@types/node": "22.9.0", "@types/node": "22.9.0",
"esbuild": "0.24.0", "esbuild": "0.24.0",
"eslint": "9.14.0", "eslint": "9.14.0",
"eslint-plugin-jsdoc": "50.5.0", "eslint-plugin-jsdoc": "50.5.0",
"fluent-ffmpeg": "2.1.3",
"jiti": "2.4.0", "jiti": "2.4.0",
"typescript": "5.6.3", "typescript": "5.6.3",
"typescript-eslint": "8.14.0" "typescript-eslint": "8.14.0"

View file

@ -0,0 +1,13 @@
{
buildApp,
callPackage,
...
}:
buildApp {
src = ./.;
npmDepsHash = "sha256-zl/UIwBQqpV89Rvagyq3mQDJxkWM0h1evtKg9TiTdiw=";
runtimeInputs = [
(callPackage ../../nixosModules/docker/updateImage.nix {})
];
}

View file

@ -1,12 +1,12 @@
{ {
"name": "update-flake", "name": "update-sources",
"version": "0.0.0", "version": "0.0.0",
"bin": "out/bin/app.cjs", "bin": "out/bin/app.cjs",
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs" "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
}, },
"dependencies": { "devDependencies": {
"@eslint/js": "9.14.0", "@eslint/js": "9.14.0",
"@stylistic/eslint-plugin": "2.10.1", "@stylistic/eslint-plugin": "2.10.1",
"@types/node": "22.9.0", "@types/node": "22.9.0",

13
checks/apps.nix Normal file
View file

@ -0,0 +1,13 @@
{
pkgs,
self,
}: let
inherit (pkgs.lib) mapAttrs' nameValuePair removeAttrs removeSuffix;
in
mapAttrs'
(name: app:
nameValuePair "app-${name}" (pkgs.symlinkJoin {
name = "app-${name}";
paths = [(removeSuffix "/bin/${name}" (toString app.program))];
}))
(removeAttrs self.apps.${pkgs.system} ["genflake"])

View file

@ -2,6 +2,7 @@
pkgs, pkgs,
self, self,
}: let }: let
apps = import ./apps.nix {inherit pkgs self;};
nixosMachines = import ./machines.nix {inherit pkgs self;}; nixosMachines = import ./machines.nix {inherit pkgs self;};
in in
nixosMachines apps // nixosMachines