From 282a4f049af74df888c9871b340b2c4100650491 Mon Sep 17 00:00:00 2001 From: Thomas Honeyman Date: Wed, 9 Aug 2023 17:26:30 -0400 Subject: [PATCH] Add git-lfs dependency (#651) --- app/default.nix | 5 +++-- flake.nix | 9 ++++++++- nix/module.nix | 10 ++++++++-- scripts/default.nix | 9 +++++---- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/default.nix b/app/default.nix index 05544421..12cc7b1c 100644 --- a/app/default.nix +++ b/app/default.nix @@ -12,6 +12,7 @@ dhall, dhall-json, git, + git-lfs, licensee, coreutils, gzip, @@ -73,7 +74,7 @@ in { ''; postFixup = '' wrapProgram $out/bin/${name} \ - --set PATH ${lib.makeBinPath [compilers purs-versions dhall dhall-json licensee git coreutils gzip gnutar]} \ + --set PATH ${lib.makeBinPath [compilers purs-versions dhall dhall-json licensee git git-lfs coreutils gzip gnutar]} \ ''; }; @@ -106,7 +107,7 @@ in { ''; postFixup = '' wrapProgram $out/bin/${name} \ - --set PATH ${lib.makeBinPath [compilers purs-versions dhall dhall-json licensee git coreutils gzip gnutar]} \ + --set PATH ${lib.makeBinPath [compilers purs-versions dhall dhall-json licensee git git-lfs coreutils gzip gnutar]} \ ''; }; } diff --git a/flake.nix b/flake.nix index e413da82..11a7fba0 100644 --- a/flake.nix +++ b/flake.nix @@ -40,6 +40,11 @@ DHALL_TYPES = ./types; + # We disable git-lfs files explicitly, as this is intended for large files + # (typically >4GB), and source packgaes really ought not be shipping large + # files — just source code. + GIT_LFS_SKIP_SMUDGE = 1; + registryOverlay = final: prev: rec { nodejs = prev.nodejs_20; @@ -210,7 +215,7 @@ # A full set of environment variables, each set to their default values # according to the env.example file, or to the values explicitly set below # (e.g. DHALL_PRELUDE and DHALL_TYPES). - defaultEnv = parseEnv ./.env.example // {inherit DHALL_PRELUDE DHALL_TYPES;}; + defaultEnv = parseEnv ./.env.example // {inherit DHALL_PRELUDE DHALL_TYPES GIT_LFS_SKIP_SMUDGE;}; # Parse a .env file, skipping empty lines and comments, into Nix attrset parseEnv = path: let @@ -662,6 +667,7 @@ devShells = { default = pkgs.mkShell { + inherit GIT_LFS_SKIP_SMUDGE; name = "registry-dev"; packages = with pkgs; [ # All stable PureScript compilers @@ -678,6 +684,7 @@ nixFlakes nixfmt git + git-lfs bash nodejs jq diff --git a/nix/module.nix b/nix/module.nix index 429b951f..76580330 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -34,7 +34,7 @@ in { }; envVars = lib.mkOption { - type = lib.types.attrsOf (lib.types.either lib.types.str lib.types.path); + type = lib.types.attrsOf (lib.types.either lib.types.str (lib.types.either lib.types.int lib.types.path)); default = {}; description = "Environment variables to set for the registry server"; }; @@ -79,7 +79,13 @@ in { systemd.services = let # Print an attrset of env vars { ENV_VAR = "value"; } as a newline-delimited # string of "ENV_VAR=value" lines, then write the text to the Nix store. - defaultEnvFile = pkgs.writeText ".env" (pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (name: value: "${name}=${value}") cfg.envVars)); + defaultEnvFile = + pkgs.writeText ".env" + (pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (name: value: + if (builtins.typeOf value == "int") + then "${name}=${toString value}" + else "${name}=${value}") + cfg.envVars)); in { server = { description = "registry server"; diff --git a/scripts/default.nix b/scripts/default.nix index 17a2e839..60fe56f3 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -12,6 +12,7 @@ dhall-json, licensee, git, + git-lfs, coreutils, gzip, gnutar, @@ -23,8 +24,8 @@ stdenv.mkDerivation rec { inherit name; src = ./src; - nativeBuildInputs = [ esbuild makeWrapper ]; - buildInputs = [ nodejs ]; + nativeBuildInputs = [esbuild makeWrapper]; + buildInputs = [nodejs]; entrypoint = writeText "entrypoint.js" '' import { main } from "./output/Registry.Scripts.${module}"; main(); @@ -49,9 +50,9 @@ ''; postFixup = '' wrapProgram $out/bin/${name} \ - --set PATH ${lib.makeBinPath [ compilers purs-versions dhall dhall-json licensee git coreutils gzip gnutar ]} + --set PATH ${lib.makeBinPath [compilers purs-versions dhall dhall-json licensee git git-lfs coreutils gzip gnutar]} ''; - }; + }; in { legacy-importer = build-script "registry-legacy-importer" "LegacyImporter"; package-deleter = build-script "registry-package-deleter" "PackageDeleter";