mirror of
https://github.com/readest/readest
synced 2026-04-21 13:37:44 +00:00
chore: add rust and node deps to the nix devshell (#2655)
This commit is contained in:
parent
1d1fbdffdb
commit
b425bfdc89
3 changed files with 187 additions and 60 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -43,3 +43,5 @@ fastlane/report.xml
|
|||
|
||||
*.koplugin.zip
|
||||
|
||||
# nix
|
||||
result*
|
||||
|
|
|
|||
|
|
@ -60,6 +60,27 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765003156,
|
||||
"narHash": "sha256-k4YrPUhRj7Ciq385vREU57RHiDFycY5RaJwdCOmsLhU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "e8361cc010853d17740a63aae00385061ac9de51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
|
|
@ -148,10 +169,28 @@
|
|||
"inputs": {
|
||||
"android": "android",
|
||||
"devshell": "devshell_2",
|
||||
"fenix": "fenix",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1764925941,
|
||||
"narHash": "sha256-zldc1SrUIhGMdQp+0woSqvBS51Mi8PW6JukONBQXZBY=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "2cbf3587d36dfc7b701ebb744d3dd5064355d04f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-lang",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
|
|
|
|||
206
ops/flake.nix
206
ops/flake.nix
|
|
@ -8,9 +8,13 @@
|
|||
android = {
|
||||
url = "github:tadfisher/android-nixpkgs/stable";
|
||||
};
|
||||
fenix = {
|
||||
url = "github:nix-community/fenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, android, devshell }:
|
||||
outputs = { self, nixpkgs, flake-utils, android, devshell, fenix }:
|
||||
{
|
||||
overlay = final: prev: {
|
||||
inherit (self.packages.${final.system}) android-sdk android-studio;
|
||||
|
|
@ -20,11 +24,15 @@
|
|||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
inherit (nixpkgs) lib;
|
||||
inherit (pkgs.lib) optionals;
|
||||
inherit (pkgs.stdenv) isDarwin;
|
||||
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
overlays = [
|
||||
devshell.overlays.default
|
||||
fenix.overlays.default
|
||||
self.overlay
|
||||
];
|
||||
};
|
||||
|
|
@ -32,76 +40,154 @@
|
|||
androidConditionalPackages = if pkgs.system != "aarch64-darwin" then [ pkgs.android-studio ] else [ ];
|
||||
commonPackages = with pkgs; [
|
||||
pnpm
|
||||
nodejs_22
|
||||
clang
|
||||
pkg-config
|
||||
(pkgs.fenix.complete.withComponents [
|
||||
"cargo"
|
||||
"clippy"
|
||||
"rust-src"
|
||||
"rustc"
|
||||
"rustfmt"
|
||||
])
|
||||
pkgs.rust-analyzer-nightly
|
||||
xdg-utils
|
||||
];
|
||||
mkCommonSHell = { name, extraPackages ? [], extraEnv ? [] }:
|
||||
|
||||
systemDeps = with pkgs; [
|
||||
at-spi2-atk
|
||||
atkmm
|
||||
cairo
|
||||
fontconfig
|
||||
fontconfig.out
|
||||
freetype
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk3
|
||||
gtk4
|
||||
harfbuzz
|
||||
librsvg
|
||||
libsoup_3
|
||||
openssl
|
||||
pango
|
||||
zlib
|
||||
] ++ (optionals (!isDarwin) [
|
||||
webkitgtk_4_1
|
||||
]) ++ (optionals isDarwin [
|
||||
darwin.libiconv
|
||||
]);
|
||||
getDev = pkg: if pkg ? dev then pkg.dev else pkg;
|
||||
getLib = pkg: if pkg ? lib then pkg.lib else pkg;
|
||||
|
||||
pkgConfigPath = lib.makeSearchPath "lib/pkgconfig" (map getDev systemDeps);
|
||||
libPath = lib.makeLibraryPath (map getLib systemDeps);
|
||||
|
||||
mkCommonShell =
|
||||
{ name
|
||||
, extraPackages ? [ ]
|
||||
, extraEnv ? [
|
||||
{
|
||||
name = "PKG_CONFIG_PATH";
|
||||
value = pkgConfigPath;
|
||||
}
|
||||
{
|
||||
name = "RUSTFLAGS";
|
||||
value = "-C link-arg=-Wl,-rpath,${libPath}";
|
||||
}
|
||||
{
|
||||
name = "LIBRARY_PATH";
|
||||
value = libPath;
|
||||
}
|
||||
] ++ (optionals isDarwin [
|
||||
{
|
||||
name = "RUSTFLAGS";
|
||||
eval = "\"-L framework=$DEVSHELL_DIR/Library/Frameworks\"";
|
||||
}
|
||||
{
|
||||
name = "RUSTDOCFLAGS";
|
||||
eval = "\"-L framework=$DEVSHELL_DIR/Library/Frameworks\"";
|
||||
}
|
||||
{
|
||||
name = "PATH";
|
||||
prefix =
|
||||
let
|
||||
inherit (pkgs) xcbuild;
|
||||
in
|
||||
lib.makeBinPath [
|
||||
xcbuild
|
||||
"${xcbuild}/Toolchains/XcodeDefault.xctoolchain"
|
||||
];
|
||||
}
|
||||
])
|
||||
}:
|
||||
pkgs.devshell.mkShell {
|
||||
inherit name;
|
||||
packages = commonPackages ++ extraPackages;
|
||||
env = extraEnv;
|
||||
};
|
||||
in
|
||||
{
|
||||
packages = {
|
||||
android-sdk = android.sdk.${system} (sdkPkgs: with sdkPkgs; [
|
||||
# Useful packages for building and testing.
|
||||
build-tools-34-0-0
|
||||
cmdline-tools-latest
|
||||
emulator
|
||||
platform-tools
|
||||
platforms-android-34
|
||||
ndk-26-1-10909125
|
||||
]
|
||||
++ lib.optionals (system == "aarch64-darwin") [
|
||||
system-images-android-34-google-apis-arm64-v8a
|
||||
system-images-android-34-google-apis-playstore-arm64-v8a
|
||||
]
|
||||
++ lib.optionals (system == "x86_64-darwin" || system == "x86_64-linux") [
|
||||
system-images-android-34-google-apis-x86-64
|
||||
system-images-android-34-google-apis-playstore-x86-64
|
||||
]);
|
||||
} // lib.optionalAttrs (system == "x86_64-linux") {
|
||||
# Android Studio in nixpkgs is currently packaged for x86_64-linux only.
|
||||
android-studio = pkgs.androidStudioPackages.stable;
|
||||
};
|
||||
|
||||
in {
|
||||
packages = {
|
||||
android-sdk = android.sdk.${system} (sdkPkgs: with sdkPkgs; [
|
||||
# Useful packages for building and testing.
|
||||
build-tools-34-0-0
|
||||
cmdline-tools-latest
|
||||
emulator
|
||||
platform-tools
|
||||
platforms-android-34
|
||||
ndk-26-1-10909125
|
||||
]
|
||||
++ lib.optionals (system == "aarch64-darwin") [
|
||||
system-images-android-34-google-apis-arm64-v8a
|
||||
system-images-android-34-google-apis-playstore-arm64-v8a
|
||||
]
|
||||
++ lib.optionals (system == "x86_64-darwin" || system == "x86_64-linux") [
|
||||
system-images-android-34-google-apis-x86-64
|
||||
system-images-android-34-google-apis-playstore-x86-64
|
||||
]);
|
||||
} // lib.optionalAttrs (system == "x86_64-linux") {
|
||||
# Android Studio in nixpkgs is currently packaged for x86_64-linux only.
|
||||
android-studio = pkgs.androidStudioPackages.stable;
|
||||
devShells = {
|
||||
web = mkCommonShell {
|
||||
name = "readest-dev";
|
||||
};
|
||||
|
||||
devShells = {
|
||||
web = mkCommonSHell {
|
||||
name = "readest-dev";
|
||||
};
|
||||
ios = mkCommonShell {
|
||||
name = "readest-ios";
|
||||
extraPackages = [ pkgs.cocoapods ];
|
||||
};
|
||||
|
||||
ios = mkCommonSHell {
|
||||
name = "readest-ios";
|
||||
extraPackages = [ pkgs.cocoapods ];
|
||||
};
|
||||
android = mkCommonShell {
|
||||
name = "readest-android";
|
||||
extraPackages = [
|
||||
pkgs.android-sdk
|
||||
pkgs.gradle
|
||||
pkgs.jdk
|
||||
] ++ androidConditionalPackages;
|
||||
extraEnv = [
|
||||
{
|
||||
name = "ANDROID_HOME";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk";
|
||||
}
|
||||
{
|
||||
name = "ANDROID_SDK_ROOT";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk";
|
||||
}
|
||||
{
|
||||
name = "NDK_HOME";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk/ndk/26.1.10909125";
|
||||
}
|
||||
{
|
||||
name = "JAVA_HOME";
|
||||
value = pkgs.jdk.home;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
android = mkCommonSHell {
|
||||
name = "readest-android";
|
||||
extraPackages = [
|
||||
pkgs.android-sdk
|
||||
pkgs.gradle
|
||||
pkgs.jdk
|
||||
] ++ androidConditionalPackages;
|
||||
extraEnv = [
|
||||
{
|
||||
name = "ANDROID_HOME";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk";
|
||||
}
|
||||
{
|
||||
name = "ANDROID_SDK_ROOT";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk";
|
||||
}
|
||||
{
|
||||
name = "NDK_HOME";
|
||||
value = "${pkgs.android-sdk}/share/android-sdk/ndk/26.1.10909125";
|
||||
}
|
||||
{
|
||||
name = "JAVA_HOME";
|
||||
value = pkgs.jdk.home;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
default = self.devShells.${system}.web;
|
||||
default = self.devShells.${system}.web;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue