feat: add direnv for nix

feat: update nix flake to not rely on buildFHSUserEnv
This commit is contained in:
2024-01-02 13:10:54 +01:00
committed by Rainer Killinger
parent e8d72683ef
commit a4cc23e9a8
4 changed files with 106 additions and 72 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake

1
.gitignore vendored
View File

@@ -24,6 +24,7 @@ report-junit.xml
# NixOS flake # NixOS flake
result result
hsperfdata_root hsperfdata_root
.direnv/
# Directory for instrumented libs generated by jscoverage/JSCover # Directory for instrumented libs generated by jscoverage/JSCover
lib-cov lib-cov

34
flake.lock generated
View File

@@ -1,5 +1,23 @@
{ {
"nodes": { "nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1701626906, "lastModified": 1701626906,
@@ -18,8 +36,24 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@@ -1,21 +1,27 @@
{ {
description = "A Nix-flake-based development environment for OpenStApps"; description = "A Nix-flake-based development environment for OpenStApps";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; inputs = {
outputs = { self, nixpkgs }: nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
let flake-utils.url = "github:numtide/flake-utils";
buildToolsVersion = "30.0.3"; };
outputs = {
self,
nixpkgs,
flake-utils,
}: let
aapt2buildToolsVersion = "33.0.2";
in
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [ overlays = [
(final: prev: rec { (final: prev: rec {
nodejs = prev.nodejs-18_x; fontMin = prev.python311.withPackages (ps: with ps; [brotli fonttools] ++ (with fonttools.optional-dependencies; [woff]));
pnpm = prev.nodePackages.pnpm;
chrome = prev.google-chrome;
firefox = prev.firefox;
webkit = prev.epiphany; # Safari-ish browser
android = prev.androidenv.composeAndroidPackages { android = prev.androidenv.composeAndroidPackages {
buildToolsVersions = [ "${buildToolsVersion}" ]; buildToolsVersions = ["30.0.3" aapt2buildToolsVersion];
platformVersions = [ "33" ]; platformVersions = ["33"];
}; };
cypress = prev.cypress.overrideAttrs(cyPrev: rec { cypress = prev.cypress.overrideAttrs (cyPrev: rec {
version = "13.2.0"; version = "13.2.0";
src = prev.fetchzip { src = prev.fetchzip {
url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip"; url = "https://cdn.cypress.io/desktop/${version}/linux-x64/cypress.zip";
@@ -24,54 +30,46 @@
}); });
}) })
]; ];
# TODO: aarch64-linux, x68_64-darwin, aarch64-darwin
supportedSystems = [ "x86_64-linux" ];
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
pkgs = import nixpkgs {
inherit overlays system;
config = { config = {
allowUnfree = true; allowUnfree = true;
android_sdk.accept_license = true; android_sdk.accept_license = true;
}; };
}; };
}); androidFhs = pkgs.buildFHSUserEnv {
in name = "android-env";
{ targetPkgs = pkgs: with pkgs; [];
devShells = forEachSupportedSystem ({ pkgs }: runScript = "bash";
let profile = ''
python = (pkgs.python311.withPackages(ps: with ps; [ brotli fonttools ] ++ (with fonttools.optional-dependencies; [ ufo lxml unicode woff ]))); export ALLOW_NINJA_ENV=true
in export USE_CCACHE=1
{ export LD_LIBRARY_PATH=/usr/lib:/usr/lib32
default = (pkgs.buildFHSUserEnv { '';
name = "StApps Dev"; };
targetPkgs = pkgs: with pkgs; [ in {
nodejs devShell = pkgs.mkShell rec {
pnpm nativeBuildInputs = [androidFhs];
python buildInputs = with pkgs; [
docker nodejs-18_x
nodePackages.pnpm
# tools # tools
curl curl
jq jq
fontMin
# browsers # browsers
firefox firefox
chrome google-chrome
webkit epiphany # Safari-ish browser
cypress cypress
# android # android
jdk17 jdk17
android.androidsdk android.androidsdk
musl musl
]; ];
runScript = "bash"; ANDROID_JAVA_HOME = "${pkgs.jdk.home}";
profile = '' ANDROID_SDK_ROOT = "${pkgs.android.androidsdk}/libexec/android-sdk";
export CYPRESS_INSTALL_BINARY=0 GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${aapt2buildToolsVersion}/aapt2";
export CYPRESS_RUN_BINARY=${pkgs.cypress}/bin/Cypress CYPRESS_INSTALL_BINARY = "0";
export ANDROID_SDK_ROOT=${pkgs.android.androidsdk}/libexec/android-sdk CYPRESS_RUN_BINARY = "${pkgs.cypress}/bin/Cypress";
export ANDROID_JAVA_HOME=${pkgs.jdk.home}
export DOCKER_HOST=unix:///run/user/1000/docker.sock
{ dockerd-rootless & } 2>/dev/null
'';
}).env;
});
}; };
});
} }