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 Thea Schöbl
parent 123c50d1af
commit c8b260201c
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",

142
flake.nix
View File

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