Merge staging-next into staging
This commit is contained in:
commit
857d0ab18b
@ -1917,12 +1917,6 @@
|
||||
githubId = 7745457;
|
||||
name = "Astavie";
|
||||
};
|
||||
astindev = {
|
||||
email = "astindev@pm.me";
|
||||
github = "astindev";
|
||||
githubId = 52360869;
|
||||
name = "Astin";
|
||||
};
|
||||
astro = {
|
||||
email = "astro@spaceboyz.net";
|
||||
github = "astro";
|
||||
@ -5234,6 +5228,12 @@
|
||||
github = "diniamo";
|
||||
githubId = 55629891;
|
||||
};
|
||||
diogomdp = {
|
||||
email = "me@diogodp.dev";
|
||||
github = "diogomdp";
|
||||
githubId = 52360869;
|
||||
name = "Diogo";
|
||||
};
|
||||
diogotcorreia = {
|
||||
name = "Diogo Correia";
|
||||
email = "me@diogotc.com";
|
||||
|
@ -1019,7 +1019,7 @@ in {
|
||||
vault-agent = handleTest ./vault-agent.nix {};
|
||||
vault-dev = handleTest ./vault-dev.nix {};
|
||||
vault-postgresql = handleTest ./vault-postgresql.nix {};
|
||||
vaultwarden = handleTest ./vaultwarden.nix {};
|
||||
vaultwarden = discoverTests (import ./vaultwarden.nix);
|
||||
vector = handleTest ./vector {};
|
||||
vengi-tools = handleTest ./vengi-tools.nix {};
|
||||
victoriametrics = handleTest ./victoriametrics.nix {};
|
||||
|
@ -1,38 +1,94 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, config ? { }
|
||||
, pkgs ? import ../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
# These tests will:
|
||||
# * Set up a vaultwarden server
|
||||
# * Have Firefox use the web vault to create an account, log in, and save a password to the valut
|
||||
# * Have Firefox use the web vault to create an account, log in, and save a password to the vault
|
||||
# * Have the bw cli log in and read that password from the vault
|
||||
#
|
||||
# Note that Firefox must be on the same machine as the server for WebCrypto APIs to be available (or HTTPS must be configured)
|
||||
#
|
||||
# The same tests should work without modification on the official bitwarden server, if we ever package that.
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
with pkgs.lib;
|
||||
let
|
||||
backends = [ "sqlite" "mysql" "postgresql" ];
|
||||
makeVaultwardenTest = name: {
|
||||
backend ? name,
|
||||
withClient ? true,
|
||||
testScript ? null,
|
||||
}: import ./make-test-python.nix ({ lib, pkgs, ...}: let
|
||||
dbPassword = "please_dont_hack";
|
||||
userEmail = "meow@example.com";
|
||||
userPassword = "also_super_secret_ZJWpBKZi668QGt"; # Must be complex to avoid interstitial warning on the signup page
|
||||
storedPassword = "seeeecret";
|
||||
|
||||
dbPassword = "please_dont_hack";
|
||||
testRunner = pkgs.writers.writePython3Bin "test-runner" {
|
||||
libraries = [ pkgs.python3Packages.selenium ];
|
||||
flakeIgnore = [ "E501" ];
|
||||
} ''
|
||||
|
||||
userEmail = "meow@example.com";
|
||||
userPassword = "also_super_secret_ZJWpBKZi668QGt"; # Must be complex to avoid interstitial warning on the signup page
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver import Firefox
|
||||
from selenium.webdriver.firefox.options import Options
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
storedPassword = "seeeecret";
|
||||
options = Options()
|
||||
options.add_argument('--headless')
|
||||
driver = Firefox(options=options)
|
||||
|
||||
driver.implicitly_wait(20)
|
||||
driver.get('http://localhost/#/register')
|
||||
|
||||
wait = WebDriverWait(driver, 10)
|
||||
|
||||
wait.until(EC.title_contains("Vaultwarden Web"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_email').send_keys(
|
||||
'${userEmail}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_name').send_keys(
|
||||
'A Cat'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_confirm-master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
if driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').is_selected():
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').click()
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Create account')]").click()
|
||||
|
||||
wait.until_not(EC.title_contains("Create account"))
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Continue')]").click()
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#login_input_master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Log in')]").click()
|
||||
|
||||
wait.until(EC.title_contains("Vaults"))
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'New item')]").click()
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#name').send_keys(
|
||||
'secrets'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#loginPassword').send_keys(
|
||||
'${storedPassword}'
|
||||
)
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Save')]").click()
|
||||
'';
|
||||
in {
|
||||
inherit name;
|
||||
|
||||
makeVaultwardenTest = backend: makeTest {
|
||||
name = "vaultwarden-${backend}";
|
||||
meta = {
|
||||
maintainers = with pkgs.lib.maintainers; [ jjjollyjim ];
|
||||
maintainers = with pkgs.lib.maintainers; [ dotlambda SuperSandro2000 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server = { pkgs, ... }:
|
||||
let backendConfig = {
|
||||
server = { pkgs, ... }: lib.mkMerge [
|
||||
{
|
||||
mysql = {
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
@ -53,113 +109,47 @@ let
|
||||
postgresql = {
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
initialScript = pkgs.writeText "postgresql-init.sql" ''
|
||||
CREATE USER bitwardenuser WITH PASSWORD '${dbPassword}';
|
||||
CREATE DATABASE bitwarden WITH OWNER bitwardenuser;
|
||||
'';
|
||||
ensureDatabases = [ "vaultwarden" ];
|
||||
ensureUsers = [{
|
||||
name = "vaultwarden";
|
||||
ensureDBOwnership = true;
|
||||
}];
|
||||
};
|
||||
|
||||
services.vaultwarden.config.databaseUrl = "postgresql://bitwardenuser:${dbPassword}@localhost/bitwarden";
|
||||
services.vaultwarden.config.databaseUrl = "postgresql:///vaultwarden?host=/run/postgresql";
|
||||
|
||||
systemd.services.vaultwarden.after = [ "postgresql.service" ];
|
||||
};
|
||||
|
||||
sqlite = { };
|
||||
};
|
||||
in
|
||||
mkMerge [
|
||||
backendConfig.${backend}
|
||||
{
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
dbBackend = backend;
|
||||
config = {
|
||||
rocketAddress = "0.0.0.0";
|
||||
rocketPort = 80;
|
||||
};
|
||||
};
|
||||
sqlite = {
|
||||
services.vaultwarden.backupDir = "/var/lib/vaultwarden/backups";
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
environment.systemPackages = [ pkgs.sqlite ];
|
||||
};
|
||||
}.${backend}
|
||||
|
||||
environment.systemPackages =
|
||||
let
|
||||
testRunner = pkgs.writers.writePython3Bin "test-runner"
|
||||
{
|
||||
libraries = [ pkgs.python3Packages.selenium ];
|
||||
flakeIgnore = [
|
||||
"E501"
|
||||
];
|
||||
} ''
|
||||
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver import Firefox
|
||||
from selenium.webdriver.firefox.options import Options
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
options = Options()
|
||||
options.add_argument('--headless')
|
||||
driver = Firefox(options=options)
|
||||
|
||||
driver.implicitly_wait(20)
|
||||
driver.get('http://localhost/#/register')
|
||||
|
||||
wait = WebDriverWait(driver, 10)
|
||||
|
||||
wait.until(EC.title_contains("Vaultwarden Web"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_email').send_keys(
|
||||
'${userEmail}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_name').send_keys(
|
||||
'A Cat'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_confirm-master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
if driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').is_selected():
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').click()
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Create account')]").click()
|
||||
|
||||
wait.until_not(EC.title_contains("Create account"))
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Continue')]").click()
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#login_input_master-password').send_keys(
|
||||
'${userPassword}'
|
||||
)
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Log in')]").click()
|
||||
|
||||
wait.until(EC.title_contains("Vaults"))
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'New item')]").click()
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#name').send_keys(
|
||||
'secrets'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, 'input#loginPassword').send_keys(
|
||||
'${storedPassword}'
|
||||
)
|
||||
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Save')]").click()
|
||||
'';
|
||||
in
|
||||
[ pkgs.firefox-unwrapped pkgs.geckodriver testRunner ];
|
||||
|
||||
}
|
||||
];
|
||||
|
||||
client = { pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.bitwarden-cli ];
|
||||
};
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
dbBackend = backend;
|
||||
config = {
|
||||
rocketAddress = "0.0.0.0";
|
||||
rocketPort = 80;
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
|
||||
environment.systemPackages = [ pkgs.firefox-unwrapped pkgs.geckodriver testRunner ];
|
||||
}
|
||||
];
|
||||
} // lib.optionalAttrs withClient {
|
||||
client = { pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.bitwarden-cli ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
testScript = if testScript != null then testScript else ''
|
||||
start_all()
|
||||
server.wait_for_unit("vaultwarden.service")
|
||||
server.wait_for_open_port(80)
|
||||
@ -184,15 +174,37 @@ let
|
||||
client.succeed(f"bw --nointeraction --raw --session {key} sync -f")
|
||||
|
||||
with subtest("get the password with the cli"):
|
||||
password = client.succeed(
|
||||
f"bw --nointeraction --raw --session {key} list items | ${pkgs.jq}/bin/jq -r .[].login.password"
|
||||
password = client.wait_until_succeeds(
|
||||
f"bw --nointeraction --raw --session {key} list items | ${pkgs.jq}/bin/jq -r .[].login.password",
|
||||
timeout=60
|
||||
)
|
||||
assert password.strip() == "${storedPassword}"
|
||||
'';
|
||||
};
|
||||
});
|
||||
in
|
||||
builtins.listToAttrs (
|
||||
map
|
||||
(backend: { name = backend; value = makeVaultwardenTest backend; })
|
||||
backends
|
||||
)
|
||||
builtins.mapAttrs (k: v: makeVaultwardenTest k v) {
|
||||
mysql = {};
|
||||
postgresql = {};
|
||||
sqlite = {};
|
||||
sqlite-backup = {
|
||||
backend = "sqlite";
|
||||
withClient = false;
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
server.wait_for_unit("vaultwarden.service")
|
||||
server.wait_for_open_port(80)
|
||||
|
||||
with subtest("Set up vaultwarden"):
|
||||
server.succeed("PYTHONUNBUFFERED=1 test-runner | systemd-cat -t test-runner")
|
||||
|
||||
with subtest("Run the backup script"):
|
||||
server.start_job("backup-vaultwarden.service")
|
||||
|
||||
with subtest("Check that backup exists"):
|
||||
server.succeed('[ -d "/var/lib/vaultwarden/backups" ]')
|
||||
server.succeed('[ -f "/var/lib/vaultwarden/backups/db.sqlite3" ]')
|
||||
server.succeed('[ -d "/var/lib/vaultwarden/backups/attachments" ]')
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -5327,6 +5327,18 @@ final: prev:
|
||||
meta.homepage = "https://github.com/folke/lazy.nvim/";
|
||||
};
|
||||
|
||||
lazydev-nvim = buildVimPlugin {
|
||||
pname = "lazydev-nvim";
|
||||
version = "2024-06-09";
|
||||
src = fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "lazydev.nvim";
|
||||
rev = "7cbb524c85f87017df9c1ea2377a1d840ad8ed51";
|
||||
sha256 = "034abfj3rskgqqcynw6mz61bhjmq8x8qn6f4lq6wvyhzhkfplaqb";
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/lazydev.nvim/";
|
||||
};
|
||||
|
||||
lazygit-nvim = buildVimPlugin {
|
||||
pname = "lazygit.nvim";
|
||||
version = "2024-05-13";
|
||||
|
@ -451,6 +451,7 @@ https://github.com/sk1418/last256/,,
|
||||
https://github.com/latex-box-team/latex-box/,,
|
||||
https://github.com/dundalek/lazy-lsp.nvim/,HEAD,
|
||||
https://github.com/folke/lazy.nvim/,HEAD,
|
||||
https://github.com/folke/lazydev.nvim/,,
|
||||
https://github.com/kdheepak/lazygit.nvim/,,
|
||||
https://github.com/Julian/lean.nvim/,,
|
||||
https://github.com/leanprover/lean.vim/,,
|
||||
|
@ -1291,7 +1291,7 @@ let
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=discloud.discloud";
|
||||
homepage = "https://github.com/discloud/vscode-discloud";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = [ lib.maintainers.astindev ];
|
||||
maintainers = [ lib.maintainers.diogomdp ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -53,6 +53,6 @@ buildGoModule rec {
|
||||
description = "A terminal based Matrix client written in Go";
|
||||
mainProgram = "gomuks";
|
||||
license = licenses.agpl3Plus;
|
||||
maintainers = with maintainers; [ chvp emily ];
|
||||
maintainers = with maintainers; [ chvp ];
|
||||
};
|
||||
}
|
||||
|
@ -20,6 +20,6 @@ stdenv.mkDerivation rec {
|
||||
description = "Autosort is a weechat script to automatically or manually keep your buffers sorted";
|
||||
homepage = "https://github.com/de-vri-es/weechat-autosort";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ emily flokli ];
|
||||
maintainers = with maintainers; [ flokli ];
|
||||
};
|
||||
}
|
||||
|
@ -99,6 +99,6 @@ in buildPythonPackage {
|
||||
homepage = "https://github.com/poljar/weechat-matrix";
|
||||
license = licenses.isc;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ tilpner emily ];
|
||||
maintainers = with maintainers; [ tilpner ];
|
||||
};
|
||||
}
|
||||
|
@ -5,13 +5,13 @@ rec {
|
||||
|
||||
thunderbird-115 = (buildMozillaMach rec {
|
||||
pname = "thunderbird";
|
||||
version = "115.11.1";
|
||||
version = "115.12.0";
|
||||
application = "comm/mail";
|
||||
applicationName = "Mozilla Thunderbird";
|
||||
binaryName = pname;
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
|
||||
sha512 = "1a1f438c7047908788bc983aa681c3293ce02da006477b491a49ced5941433ca3381e01f76afc6bb5572415025acfd0fa657f063ef26b3a63646594c27202717";
|
||||
sha512 = "d262ec2cea3fd003e66974b0bd8d61fb268ad2a233e54a6aea4803c5520e235ea308267f0484581ce235063c4fb90e621cdc1eea3f62212574b90427ede1c289";
|
||||
};
|
||||
extraPatches = [
|
||||
# The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`.
|
||||
|
@ -6,16 +6,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "rclone";
|
||||
version = "1.66.0";
|
||||
version = "1.67.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rclone";
|
||||
repo = "rclone";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-75RnAROICtRUDn95gSCNO0F6wes4CkJteNfUN38GQIY=";
|
||||
hash = "sha256-rTibyh5z89QuPgZMvv3Y6FCugxMIytAg1gdCxE3+QLE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-zGBwgIuabLDqWbutvPHDbPRo5Dd9kNfmgToZXy7KVgI=";
|
||||
vendorHash = "sha256-Sw9zZf0rup+VyncIpJHp9PKUp60lv+TV4wbWtVTTK3w=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
@ -97,7 +97,7 @@
|
||||
, libetonyek
|
||||
, liborcus
|
||||
, libpng
|
||||
, langs ? [ "ar" "ca" "cs" "da" "de" "en-GB" "en-US" "eo" "es" "fi" "fr" "hu" "it" "ja" "nl" "pl" "pt" "pt-BR" "ro" "ru" "sl" "tr" "uk" "zh-CN" ]
|
||||
, langs ? [ "ar" "ca" "cs" "da" "de" "en-GB" "en-US" "eo" "es" "fi" "fr" "hu" "it" "ja" "nl" "pl" "pt" "pt-BR" "ro" "ru" "sk" "sl" "tr" "uk" "zh-CN" ]
|
||||
, withHelp ? true
|
||||
, kdeIntegration ? false
|
||||
, qtbase ? null
|
||||
|
@ -55,7 +55,7 @@ stdenv.mkDerivation {
|
||||
description = "Tooling for Yosys-based verification flows";
|
||||
homepage = "https://symbiyosys.readthedocs.io/";
|
||||
license = lib.licenses.isc;
|
||||
maintainers = with lib.maintainers; [ thoughtpolice emily ];
|
||||
maintainers = with lib.maintainers; [ thoughtpolice ];
|
||||
mainProgram = "sby";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
|
@ -14,16 +14,28 @@
|
||||
|
||||
# absolutely no mac support for now
|
||||
|
||||
{ pubGetScript ? "flutter pub get"
|
||||
{ pubGetScript ? null
|
||||
, flutterBuildFlags ? [ ]
|
||||
, targetFlutterPlatform ? "linux"
|
||||
, extraWrapProgramArgs ? ""
|
||||
, flutterMode ? null
|
||||
, ...
|
||||
}@args:
|
||||
|
||||
let
|
||||
hasEngine = flutter ? engine && flutter.engine != null && flutter.engine.meta.available;
|
||||
flutterMode = args.flutterMode or (if hasEngine then flutter.engine.runtimeMode else "release");
|
||||
|
||||
flutterFlags = lib.optional hasEngine "--local-engine host_${flutterMode}${lib.optionalString (!flutter.engine.isOptimized) "_unopt"}";
|
||||
|
||||
flutterBuildFlags = [
|
||||
"--${flutterMode}"
|
||||
] ++ (args.flutterBuildFlags or []) ++ flutterFlags;
|
||||
|
||||
builderArgs = rec {
|
||||
universal = args // {
|
||||
inherit flutterMode flutterFlags flutterBuildFlags;
|
||||
|
||||
sdkSetupScript = ''
|
||||
# Pub needs SSL certificates. Dart normally looks in a hardcoded path.
|
||||
# https://github.com/dart-lang/sdk/blob/3.1.0/runtime/bin/security_context_linux.cc#L48
|
||||
@ -46,11 +58,11 @@ let
|
||||
''}/bin/dart"
|
||||
|
||||
export HOME="$NIX_BUILD_TOP"
|
||||
flutter config --no-analytics &>/dev/null # mute first-run
|
||||
flutter config --enable-linux-desktop >/dev/null
|
||||
flutter config $flutterFlags --no-analytics &>/dev/null # mute first-run
|
||||
flutter config $flutterFlags --enable-linux-desktop >/dev/null
|
||||
'';
|
||||
|
||||
inherit pubGetScript;
|
||||
pubGetScript = args.pubGetScript or "flutter${lib.optionalString hasEngine " --local-engine $flutterMode"} pub get";
|
||||
|
||||
sdkSourceBuilders = {
|
||||
# https://github.com/dart-lang/pub/blob/68dc2f547d0a264955c1fa551fa0a0e158046494/lib/src/sdk/flutter.dart#L81
|
||||
@ -122,7 +134,7 @@ let
|
||||
|
||||
mkdir -p build/flutter_assets/fonts
|
||||
|
||||
flutter build linux -v --release --split-debug-info="$debug" ${builtins.concatStringsSep " " (map (flag: "\"${flag}\"") flutterBuildFlags)}
|
||||
flutter build linux -v --split-debug-info="$debug" $flutterBuildFlags
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
@ -131,7 +143,7 @@ let
|
||||
installPhase = universal.installPhase or ''
|
||||
runHook preInstall
|
||||
|
||||
built=build/linux/*/release/bundle
|
||||
built=build/linux/*/$flutterMode/bundle
|
||||
|
||||
mkdir -p $out/bin
|
||||
mv $built $out/app
|
||||
@ -173,7 +185,7 @@ let
|
||||
|
||||
mkdir -p build/flutter_assets/fonts
|
||||
|
||||
flutter build web -v --release ${builtins.concatStringsSep " " (map (flag: "\"${flag}\"") flutterBuildFlags)}
|
||||
flutter build web -v $flutterBuildFlags
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
@ -25,7 +25,8 @@ in {
|
||||
|
||||
tar --strip-components=1 -xf ${yarnpkg-lockfile-tar} package/index.js
|
||||
mv index.js $out/libexec/yarnpkg-lockfile.js
|
||||
cp ${./.}/common.js ${./.}/index.js $out/libexec/
|
||||
cp ${./common.js} $out/libexec/common.js
|
||||
cp ${./index.js} $out/libexec/index.js
|
||||
|
||||
patchShebangs $out/libexec
|
||||
makeWrapper $out/libexec/index.js $out/bin/prefetch-yarn-deps \
|
||||
@ -53,7 +54,8 @@ in {
|
||||
|
||||
tar --strip-components=1 -xf ${yarnpkg-lockfile-tar} package/index.js
|
||||
mv index.js $out/libexec/yarnpkg-lockfile.js
|
||||
cp ${./.}/common.js ${./.}/fixup.js $out/libexec/
|
||||
cp ${./common.js} $out/libexec/common.js
|
||||
cp ${./fixup.js} $out/libexec/fixup.js
|
||||
|
||||
patchShebangs $out/libexec
|
||||
makeWrapper $out/libexec/fixup.js $out/bin/fixup-yarn-lock
|
||||
@ -97,7 +99,7 @@ in {
|
||||
'';
|
||||
|
||||
outputHashMode = "recursive";
|
||||
} // hash_ // (removeAttrs args ["src" "name" "hash" "sha256"]));
|
||||
} // hash_ // (removeAttrs args (["name" "hash" "sha256"] ++ (lib.optional (src == null) "src"))));
|
||||
|
||||
in lib.setFunctionArgs f (lib.functionArgs f) // {
|
||||
inherit tests;
|
||||
|
@ -6,13 +6,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "epoll-shim";
|
||||
version = "0.0.20230411";
|
||||
version = "0.0.20240608";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jiixyj";
|
||||
repo = finalAttrs.pname;
|
||||
repo = "epoll-shim";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-TOfybtUEp+EtY2l/UGwVFIESDe9kELJCZHlcz22Cmi8=";
|
||||
hash = "sha256-PIVzVjXOECGv41KtAUmGzUiQ+4lVIyzGEOzVQQ1Pc54=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
@ -12,17 +12,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "just";
|
||||
version = "1.28.0";
|
||||
version = "1.29.1";
|
||||
outputs = [ "out" "man" "doc" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "casey";
|
||||
repo = pname;
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-GdDpFY9xdjA60zr+i5O9wBWF682tvi4N/pxEob5tYoA=";
|
||||
hash = "sha256-R797aRLsaDjNSaYVFUSmKCUr+HQ5xarrssHJe3fwhTw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-Cvl4EY57TanJK1XGVahPHGtuEAIR44qwGEPDkXfgw5I=";
|
||||
cargoHash = "sha256-DVjhmJPyIRHwKTBWoIBYMJbigLpakDrXeCHQ9Y8/T48=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles mdbook ];
|
||||
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
|
@ -94,13 +94,33 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
llama-cpp-rpc = (llama-cpp-grpc.overrideAttrs (prev: {
|
||||
name = "llama-cpp-rpc";
|
||||
cmakeFlags = prev.cmakeFlags ++ [
|
||||
(lib.cmakeBool "LLAMA_AVX" false)
|
||||
(lib.cmakeBool "LLAMA_AVX2" false)
|
||||
(lib.cmakeBool "LLAMA_AVX512" false)
|
||||
(lib.cmakeBool "LLAMA_FMA" false)
|
||||
(lib.cmakeBool "LLAMA_F16C" false)
|
||||
(lib.cmakeBool "LLAMA_RPC" true)
|
||||
];
|
||||
postPatch = prev.postPatch + ''
|
||||
sed -i examples/rpc/CMakeLists.txt \
|
||||
-e '$a\install(TARGETS rpc-server RUNTIME)'
|
||||
'';
|
||||
})).override {
|
||||
cudaSupport = false;
|
||||
openclSupport = false;
|
||||
blasSupport = true; # TODO: set to false, when dropping 23.11 support
|
||||
};
|
||||
|
||||
llama-cpp-grpc = (llama-cpp.overrideAttrs (final: prev: {
|
||||
name = "llama-cpp-grpc";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggerganov";
|
||||
repo = "llama.cpp";
|
||||
rev = "c12452c7aec8a02264afc00196a13caa591a13ac";
|
||||
hash = "sha256-Kji8dlz7OfhPeNXnYgBHzpGGMhCsRLJ9d+EFf77Q6Co=";
|
||||
rev = "74f33adf5f8b20b08fc5a6aa17ce081abe86ef2f";
|
||||
hash = "sha256-hSdHhsC5Q8pLEC2bj8Gke4/ffCts5l7LtYa9RDrpGBI=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
postPatch = prev.postPatch + ''
|
||||
@ -253,8 +273,8 @@ let
|
||||
src = fetchFromGitHub {
|
||||
owner = "ggerganov";
|
||||
repo = "whisper.cpp";
|
||||
rev = "73d13ad19a8c9c4da4f405088a85169b1a171e66";
|
||||
hash = "sha256-7g/J3a3behGgcJXy9ryAYXxgOYnsRMlGmux13re28AY=";
|
||||
rev = "22d46b7ba4620e2db1281e210d0186863cffcec0";
|
||||
hash = "sha256-JC3GHRBjFvfQSUWRdAcMc0pol54RsqUF1+zIZYAsbC4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ]
|
||||
@ -285,8 +305,8 @@ let
|
||||
src = fetchFromGitHub {
|
||||
owner = "go-skynet";
|
||||
repo = "go-bert.cpp";
|
||||
rev = "6abe312cded14042f6b7c3cd8edf082713334a4d";
|
||||
hash = "sha256-lh9cvXc032Eq31kysxFOkRd0zPjsCznRl0tzg9P2ygo=";
|
||||
rev = "710044b124545415f555e4260d16b146c725a6e4";
|
||||
hash = "sha256-UNrs3unYjvSzCVaVISFFBDD+s37lmN6/7ajmGNcYgrU=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
buildFlags = [ "libgobert.a" ];
|
||||
@ -372,18 +392,18 @@ let
|
||||
stdenv;
|
||||
|
||||
pname = "local-ai";
|
||||
version = "2.15.0";
|
||||
version = "2.16.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "go-skynet";
|
||||
repo = "LocalAI";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-AjNgfZjVxlw0LtPbUTbJuLcUfqJdPzn6vOmUDz/v7Jc=";
|
||||
hash = "sha256-3SfU68wGyYIX0haKfuHGKHhthuDSeSdr18ReDkFzhH0=";
|
||||
};
|
||||
|
||||
self = buildGoModule.override { stdenv = effectiveStdenv; } {
|
||||
inherit pname version src;
|
||||
|
||||
vendorHash = "sha256-+ZPZkOpaTsKrL2HDOEtAr8sT6uqTiQXo/XS+MBNZq5E=";
|
||||
vendorHash = "sha256-UjqEsgRZ+xv4Thwh4u3juvg3JI3+RdGyCZlsk7ddgTU=";
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString with_stablediffusion " -isystem ${opencv}/include/opencv4";
|
||||
|
||||
@ -403,12 +423,20 @@ let
|
||||
-e 's;git clone.*go-tiny-dream$;${cp} ${if with_tinydream then go-tiny-dream else go-tiny-dream.src} sources/go-tiny-dream;' \
|
||||
-e 's, && git checkout.*,,g' \
|
||||
-e '/mod download/ d' \
|
||||
-e '/^ALL_GRPC_BACKENDS+=backend-assets\/grpc\/llama-cpp-/ d' \
|
||||
-e '/^ALL_GRPC_BACKENDS+=backend-assets\/grpc\/llama-cpp-fallback/ d' \
|
||||
-e '/^ALL_GRPC_BACKENDS+=backend-assets\/grpc\/llama-cpp-avx/ d' \
|
||||
-e '/^ALL_GRPC_BACKENDS+=backend-assets\/grpc\/llama-cpp-cuda/ d' \
|
||||
|
||||
'';
|
||||
|
||||
postConfigure = ''
|
||||
shopt -s extglob
|
||||
mkdir -p backend-assets/grpc
|
||||
cp ${llama-cpp-grpc}/bin/*grpc-server backend-assets/grpc/llama-cpp
|
||||
cp ${llama-cpp-grpc}/bin/?(llama-cpp-)grpc-server backend-assets/grpc/llama-cpp-avx2
|
||||
cp ${llama-cpp-rpc}/bin/?(llama-cpp-)grpc-server backend-assets/grpc/llama-cpp-grpc
|
||||
|
||||
mkdir -p backend-assets/util
|
||||
cp ${llama-cpp-rpc}/bin/?(llama-cpp-)rpc-server backend-assets/util/llama-cpp-rpc-server
|
||||
'';
|
||||
|
||||
buildInputs = [ ]
|
||||
@ -496,7 +524,7 @@ let
|
||||
inherit
|
||||
go-tiny-dream go-rwkv go-bert go-llama gpt4all go-piper
|
||||
llama-cpp-grpc whisper-cpp go-tiny-dream-ncnn espeak-ng' piper-phonemize
|
||||
piper-tts';
|
||||
piper-tts' llama-cpp-rpc;
|
||||
};
|
||||
|
||||
passthru.features = {
|
||||
|
@ -89,6 +89,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/yosyshq/nextpnr";
|
||||
license = licenses.isc;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ thoughtpolice emily ];
|
||||
maintainers = with maintainers; [ thoughtpolice ];
|
||||
};
|
||||
}
|
||||
|
40
pkgs/by-name/nr/nrf-udev/package.nix
Normal file
40
pkgs/by-name/nr/nrf-udev/package.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "nrf-udev";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NordicSemiconductor";
|
||||
repo = "nrf-udev";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-bEIAsz9ZwX6RTzhv5/waFZ5a3KlnwX4kQs29+475zN0=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp -r nrf-udev_*/lib $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Udev rules for nRF (Nordic Semiconductor) development kits";
|
||||
homepage = "https://github.com/NordicSemiconductor/nrf-udev";
|
||||
changelog = "https://github.com/NordicSemiconductor/nrf-udev/releases/tag/${finalAttrs.src.rev}";
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ h7x4 ];
|
||||
};
|
||||
})
|
@ -1,13 +1,13 @@
|
||||
{ lib, stdenv, fetchFromGitHub }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pdpmake";
|
||||
version = "1.4.2";
|
||||
version = "1.4.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rmyorston";
|
||||
repo = "pdpmake";
|
||||
rev = version;
|
||||
hash = "sha256-zp2o/wFYvUbCRwxHbggcGMwoCMNEJuwen8HYkn7AEwc=";
|
||||
hash = "sha256-drHo8IUC3xQ/O6T4xCMQSK9m+O/6hTOJSw0OMl1W9WA=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "arc-icon-theme";
|
||||
version = "2016-11-22";
|
||||
version = "20161122";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "horst3180";
|
||||
repo = pname;
|
||||
rev = "55a575386a412544c3ed2b5617a61f842ee4ec15";
|
||||
sha256 = "1ch3hp08qri93510hypzz6m2x4xgg2h15wvnhjwh1x1s1b7jvxjd";
|
||||
repo = "arc-icon-theme";
|
||||
rev = version;
|
||||
hash = "sha256-TfYtzwo69AC5hHbzEqB4r5Muqvn/eghCGSlmjMCFA7I=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ callPackage, fetchzip, fetchFromGitHub, dart, lib, stdenv }:
|
||||
{ useNixpkgsEngine ? false, callPackage, fetchzip, fetchFromGitHub, dart, lib, stdenv }@args:
|
||||
let
|
||||
mkCustomFlutter = args: callPackage ./flutter.nix args;
|
||||
wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; };
|
||||
@ -8,6 +8,8 @@ let
|
||||
mkFlutter =
|
||||
{ version
|
||||
, engineVersion
|
||||
, engineHashes
|
||||
, enginePatches
|
||||
, dartVersion
|
||||
, flutterHash
|
||||
, dartHash
|
||||
@ -15,10 +17,10 @@ let
|
||||
, pubspecLock
|
||||
, artifactHashes
|
||||
, channel
|
||||
}:
|
||||
}@fargs:
|
||||
let
|
||||
args = {
|
||||
inherit version engineVersion patches pubspecLock artifactHashes channel;
|
||||
inherit version engineVersion engineHashes enginePatches patches pubspecLock artifactHashes useNixpkgsEngine channel;
|
||||
|
||||
dart = dart.override {
|
||||
version = dartVersion;
|
||||
@ -64,6 +66,7 @@ let
|
||||
in
|
||||
lib.nameValuePair "v${version}" (wrapFlutter (mkFlutter ({
|
||||
patches = (getPatches ./patches) ++ (getPatches (versionDir + "/patches"));
|
||||
enginePatches = (getPatches ./engine/patches) ++ (getPatches (versionDir + "/engine/patches"));
|
||||
} // data))))
|
||||
(builtins.readDir ./versions);
|
||||
|
||||
|
41
pkgs/development/compilers/flutter/engine/constants.nix
Normal file
41
pkgs/development/compilers/flutter/engine/constants.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ lib, targetPlatform }:
|
||||
rec {
|
||||
os =
|
||||
if targetPlatform.isLinux then
|
||||
"linux"
|
||||
else if targetPlatform.isDarwin then
|
||||
"macos"
|
||||
else if targetPlatform.isWindows then
|
||||
"windows"
|
||||
else
|
||||
throw "Unsupported OS \"${targetPlatform.parsed.kernel.name}\"";
|
||||
|
||||
arch =
|
||||
if targetPlatform.isx86_64 then
|
||||
"amd64"
|
||||
else if targetPlatform.isx86 && targetPlatform.is32bit then
|
||||
"386"
|
||||
else if targetPlatform.isAarch64 then
|
||||
"arm64"
|
||||
else if targetPlatform.isMips && targetPlatform.parsed.cpu.significantByte == "littleEndian" then
|
||||
"mipsle"
|
||||
else if targetPlatform.isMips64 then
|
||||
"mips64${lib.optionalString (targetPlatform.parsed.cpu.significantByte == "littleEndian") "le"}"
|
||||
else if targetPlatform.isPower64 then
|
||||
"ppc64${lib.optionalString (targetPlatform.parsed.cpu.significantByte == "littleEndian") "le"}"
|
||||
else if targetPlatform.isS390x then
|
||||
"s390x"
|
||||
else
|
||||
throw "Unsupported CPU \"${targetPlatform.parsed.cpu.name}\"";
|
||||
|
||||
alt-arch =
|
||||
if targetPlatform.isx86_64 then
|
||||
"x64"
|
||||
else if targetPlatform.isAarch64 then
|
||||
"arm64"
|
||||
else
|
||||
targetPlatform.parsed.cpu.name;
|
||||
|
||||
platform = "${os}-${arch}";
|
||||
alt-platform = "${os}-${alt-arch}";
|
||||
}
|
74
pkgs/development/compilers/flutter/engine/default.nix
Normal file
74
pkgs/development/compilers/flutter/engine/default.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
callPackage,
|
||||
dartSdkVersion,
|
||||
flutterVersion,
|
||||
version,
|
||||
hashes,
|
||||
url,
|
||||
patches,
|
||||
runtimeModes,
|
||||
isOptimized ? true,
|
||||
lib,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
mainRuntimeMode = builtins.elemAt runtimeModes 0;
|
||||
altRuntimeMode = builtins.elemAt runtimeModes 1;
|
||||
|
||||
runtimeModesBuilds = lib.genAttrs runtimeModes (
|
||||
runtimeMode:
|
||||
callPackage ./package.nix {
|
||||
inherit
|
||||
dartSdkVersion
|
||||
flutterVersion
|
||||
version
|
||||
hashes
|
||||
url
|
||||
patches
|
||||
runtimeMode
|
||||
isOptimized
|
||||
;
|
||||
}
|
||||
);
|
||||
in
|
||||
stdenv.mkDerivation (
|
||||
{
|
||||
pname = "flutter-engine";
|
||||
inherit url runtimeModes;
|
||||
inherit (runtimeModesBuilds.${mainRuntimeMode})
|
||||
meta
|
||||
src
|
||||
version
|
||||
dartSdkVersion
|
||||
isOptimized
|
||||
runtimeMode
|
||||
;
|
||||
inherit altRuntimeMode;
|
||||
|
||||
dontUnpack = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p $out/out
|
||||
|
||||
for dir in $(find $src/src -mindepth 1 -maxdepth 1); do
|
||||
ln -sf $dir $out/$(basename $dir)
|
||||
done
|
||||
|
||||
''
|
||||
+ lib.concatMapStrings (
|
||||
runtimeMode:
|
||||
let
|
||||
runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
|
||||
runtimeModeOut = "host_${runtimeMode}${
|
||||
lib.optionalString (!runtimeModeBuild.isOptimized) "_unopt"
|
||||
}";
|
||||
in
|
||||
''
|
||||
ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
|
||||
''
|
||||
) runtimeModes;
|
||||
}
|
||||
// runtimeModesBuilds
|
||||
)
|
311
pkgs/development/compilers/flutter/engine/package.nix
Normal file
311
pkgs/development/compilers/flutter/engine/package.nix
Normal file
@ -0,0 +1,311 @@
|
||||
{
|
||||
lib,
|
||||
callPackage,
|
||||
writeText,
|
||||
symlinkJoin,
|
||||
targetPlatform,
|
||||
hostPlatform,
|
||||
darwin,
|
||||
clang,
|
||||
llvm,
|
||||
tools ? callPackage ./tools.nix { inherit hostPlatform; },
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
runCommand,
|
||||
patchelf,
|
||||
xorg,
|
||||
libglvnd,
|
||||
libepoxy,
|
||||
wayland,
|
||||
freetype,
|
||||
pango,
|
||||
glib,
|
||||
harfbuzz,
|
||||
cairo,
|
||||
gdk-pixbuf,
|
||||
at-spi2-atk,
|
||||
zlib,
|
||||
gtk3,
|
||||
pkg-config,
|
||||
ninja,
|
||||
python3,
|
||||
git,
|
||||
version,
|
||||
flutterVersion,
|
||||
dartSdkVersion,
|
||||
hashes,
|
||||
patches,
|
||||
url,
|
||||
runtimeMode ? "release",
|
||||
isOptimized ? true,
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
expandSingleDep =
|
||||
dep: lib.optionals (lib.isDerivation dep) ([ dep ] ++ map (output: dep.${output}) dep.outputs);
|
||||
|
||||
expandDeps = deps: flatten (map expandSingleDep deps);
|
||||
|
||||
constants = callPackage ./constants.nix { inherit targetPlatform; };
|
||||
|
||||
src = callPackage ./source.nix {
|
||||
inherit
|
||||
tools
|
||||
version
|
||||
hashes
|
||||
url
|
||||
;
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "flutter-engine-${runtimeMode}${lib.optionalString (!isOptimized) "-unopt"}";
|
||||
inherit
|
||||
version
|
||||
runtimeMode
|
||||
patches
|
||||
isOptimized
|
||||
dartSdkVersion
|
||||
src;
|
||||
|
||||
toolchain = symlinkJoin {
|
||||
name = "flutter-engine-toolchain-${version}";
|
||||
|
||||
paths =
|
||||
expandDeps (
|
||||
optionals (stdenv.isLinux) [
|
||||
gtk3
|
||||
wayland
|
||||
libepoxy
|
||||
libglvnd
|
||||
freetype
|
||||
at-spi2-atk
|
||||
glib
|
||||
gdk-pixbuf
|
||||
harfbuzz
|
||||
pango
|
||||
cairo
|
||||
xorg.libxcb
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXrandr
|
||||
xorg.libXrender
|
||||
xorg.libXinerama
|
||||
xorg.libXi
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXxf86vm
|
||||
xorg.xorgproto
|
||||
zlib
|
||||
]
|
||||
++ optionals (stdenv.isDarwin) [
|
||||
clang
|
||||
llvm
|
||||
]
|
||||
)
|
||||
++ [
|
||||
stdenv.cc.libc_dev
|
||||
stdenv.cc.libc_lib
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
ln -s /nix $out/nix
|
||||
'';
|
||||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
python3
|
||||
(tools.vpython python3)
|
||||
git
|
||||
pkg-config
|
||||
ninja
|
||||
]
|
||||
++ lib.optionals (stdenv.isLinux) [ patchelf ]
|
||||
++ optionals (stdenv.isDarwin) [
|
||||
darwin.system_cmds
|
||||
darwin.xcode
|
||||
tools.xcode-select
|
||||
]
|
||||
++ lib.optionals (stdenv.cc.libc ? bin) [ stdenv.cc.libc.bin ];
|
||||
|
||||
buildInputs = [ gtk3 ];
|
||||
|
||||
patchtools =
|
||||
let
|
||||
buildtoolsPath =
|
||||
if lib.versionAtLeast flutterVersion "3.21" then "flutter/buildtools" else "buildtools";
|
||||
in
|
||||
[
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-apply-replacements"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-doc"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-format"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-include-fixer"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-refactor"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-scan-deps"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clang-tidy"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/clangd"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/dsymutil"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/find-all-symbols"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/lld"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ar"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-bolt"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-cov"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-cxxfilt"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-debuginfod-find"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-dwarfdump"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-dwp"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-gsymutil"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ifs"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-libtool-darwin"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-lipo"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-ml"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-mt"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-nm"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-objcopy"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-objdump"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-pdbutil"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-profdata"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-rc"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-readobj"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-size"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-symbolizer"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-undname"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm-xray"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/llvm"
|
||||
"${buildtoolsPath}/${constants.alt-platform}/clang/bin/sancov"
|
||||
"flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dartaotruntime"
|
||||
"flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dart"
|
||||
"flutter/third_party/gn/gn"
|
||||
"third_party/dart/tools/sdks/dart-sdk/bin/dart"
|
||||
];
|
||||
|
||||
dontPatch = true;
|
||||
|
||||
patchgit = [
|
||||
"third_party/dart"
|
||||
"flutter"
|
||||
"."
|
||||
] ++ lib.optional (lib.versionAtLeast flutterVersion "3.21") "flutter/third_party/skia";
|
||||
|
||||
postUnpack = ''
|
||||
pushd ${src.name}
|
||||
${lib.optionalString (stdenv.isLinux) ''
|
||||
for patchtool in ''${patchtools[@]}; do
|
||||
patchelf src/$patchtool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
|
||||
done
|
||||
''}
|
||||
|
||||
for dir in ''${patchgit[@]}; do
|
||||
pushd src/$dir
|
||||
rev=$(cat .git/HEAD)
|
||||
rm -rf .git
|
||||
git init
|
||||
git add .
|
||||
git config user.name "nobody"
|
||||
git config user.email "nobody@local.host"
|
||||
git commit -a -m "$rev"
|
||||
popd
|
||||
done
|
||||
|
||||
src/flutter/prebuilts/${constants.alt-platform}/dart-sdk/bin/dart src/third_party/dart/tools/generate_package_config.dart
|
||||
cp ${./pkg-config.py} src/build/config/linux/pkg-config.py
|
||||
echo "${dartSdkVersion}" >src/third_party/dart/sdk/version
|
||||
|
||||
rm -rf src/third_party/angle/.git
|
||||
python3 src/flutter/tools/pub_get_offline.py
|
||||
|
||||
pushd src/flutter
|
||||
|
||||
for p in ''${patches[@]}; do
|
||||
patch -p1 -i $p
|
||||
done
|
||||
|
||||
popd
|
||||
popd
|
||||
'';
|
||||
|
||||
configureFlags =
|
||||
[
|
||||
"--no-prebuilt-dart-sdk"
|
||||
"--embedder-for-target"
|
||||
"--no-goma"
|
||||
]
|
||||
++ optionals (targetPlatform.isx86_64 == false) [
|
||||
"--linux"
|
||||
"--linux-cpu ${constants.alt-arch}"
|
||||
];
|
||||
|
||||
# NOTE: Once https://github.com/flutter/flutter/issues/127606 is fixed, use "--no-prebuilt-dart-sdk"
|
||||
configurePhase =
|
||||
''
|
||||
runHook preConfigure
|
||||
|
||||
export PYTHONPATH=$src/src/build
|
||||
''
|
||||
+ lib.optionalString stdenv.isDarwin ''
|
||||
export PATH=${darwin.xcode}/Contents/Developer/usr/bin/:$PATH
|
||||
''
|
||||
+ ''
|
||||
python3 ./src/flutter/tools/gn $configureFlags \
|
||||
--runtime-mode $runtimeMode \
|
||||
--out-dir $out \
|
||||
--target-sysroot $toolchain \
|
||||
--target-dir host_$runtimeMode${lib.optionalString (!isOptimized) "_unopt --unoptimized"} \
|
||||
--verbose
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
export TERM=dumb
|
||||
for tool in flatc scenec gen_snapshot dart impellerc shader_archiver gen_snapshot_product; do
|
||||
ninja -C $out/out/host_$runtimeMode${
|
||||
lib.optionalString (!isOptimized) "_unopt"
|
||||
} -j$NIX_BUILD_CORES $tool
|
||||
${lib.optionalString (stdenv.isLinux) ''
|
||||
patchelf $out/out/host_$runtimeMode${
|
||||
lib.optionalString (!isOptimized) "_unopt"
|
||||
}/$tool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
|
||||
''}
|
||||
done
|
||||
|
||||
ninja -C $out/out/host_$runtimeMode${lib.optionalString (!isOptimized) "_unopt"} -j$NIX_BUILD_CORES
|
||||
|
||||
${lib.optionalString (stdenv.isLinux) ''
|
||||
patchelf $out/out/host_$runtimeMode${
|
||||
lib.optionalString (!isOptimized) "_unopt"
|
||||
}/dart-sdk/bin/dartaotruntime \
|
||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)
|
||||
''}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
# Link sources so we can set $FLUTTER_ENGINE to this derivation
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
for dir in $(find $src/src -mindepth 1 -maxdepth 1); do
|
||||
ln -sf $dir $out/$(basename $dir)
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
# Very broken on Darwin
|
||||
broken = stdenv.isDarwin;
|
||||
description = "The Flutter engine";
|
||||
homepage = "https://flutter.dev";
|
||||
maintainers = with maintainers; [ RossComputerGuy ];
|
||||
license = licenses.bsd3;
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
};
|
||||
}
|
247
pkgs/development/compilers/flutter/engine/pkg-config.py
Normal file
247
pkgs/development/compilers/flutter/engine/pkg-config.py
Normal file
@ -0,0 +1,247 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import re
|
||||
from optparse import OptionParser
|
||||
|
||||
# This script runs pkg-config, optionally filtering out some results, and
|
||||
# returns the result.
|
||||
#
|
||||
# The result will be [ <includes>, <cflags>, <libs>, <lib_dirs>, <ldflags> ]
|
||||
# where each member is itself a list of strings.
|
||||
#
|
||||
# You can filter out matches using "-v <regexp>" where all results from
|
||||
# pkgconfig matching the given regular expression will be ignored. You can
|
||||
# specify more than one regular expression my specifying "-v" more than once.
|
||||
#
|
||||
# You can specify a sysroot using "-s <sysroot>" where sysroot is the absolute
|
||||
# system path to the sysroot used for compiling. This script will attempt to
|
||||
# generate correct paths for the sysroot.
|
||||
#
|
||||
# When using a sysroot, you must also specify the architecture via
|
||||
# "-a <arch>" where arch is either "x86" or "x64".
|
||||
#
|
||||
# CrOS systemroots place pkgconfig files at <systemroot>/usr/share/pkgconfig
|
||||
# and one of <systemroot>/usr/lib/pkgconfig or <systemroot>/usr/lib64/pkgconfig
|
||||
# depending on whether the systemroot is for a 32 or 64 bit architecture. They
|
||||
# specify the 'lib' or 'lib64' of the pkgconfig path by defining the
|
||||
# 'system_libdir' variable in the args.gn file. pkg_config.gni communicates this
|
||||
# variable to this script with the "--system_libdir <system_libdir>" flag. If no
|
||||
# flag is provided, then pkgconfig files are assumed to come from
|
||||
# <systemroot>/usr/lib/pkgconfig.
|
||||
#
|
||||
# Additionally, you can specify the option --atleast-version. This will skip
|
||||
# the normal outputting of a dictionary and instead print true or false,
|
||||
# depending on the return value of pkg-config for the given package.
|
||||
|
||||
|
||||
def SetConfigPath(options):
|
||||
"""Set the PKG_CONFIG_LIBDIR environment variable.
|
||||
|
||||
This takes into account any sysroot and architecture specification from the
|
||||
options on the given command line.
|
||||
"""
|
||||
|
||||
sysroot = options.sysroot
|
||||
assert sysroot
|
||||
|
||||
# Compute the library path name based on the architecture.
|
||||
arch = options.arch
|
||||
if sysroot and not arch:
|
||||
print("You must specify an architecture via -a if using a sysroot.")
|
||||
sys.exit(1)
|
||||
|
||||
libdir = sysroot + '/' + options.system_libdir + '/pkgconfig'
|
||||
libdir += ':' + sysroot + '/share/pkgconfig'
|
||||
os.environ['PKG_CONFIG_LIBDIR'] = libdir
|
||||
return libdir
|
||||
|
||||
|
||||
def GetPkgConfigPrefixToStrip(options, args):
|
||||
"""Returns the prefix from pkg-config where packages are installed.
|
||||
|
||||
This returned prefix is the one that should be stripped from the beginning of
|
||||
directory names to take into account sysroots.
|
||||
"""
|
||||
# Some sysroots, like the Chromium OS ones, may generate paths that are not
|
||||
# relative to the sysroot. For example,
|
||||
# /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all
|
||||
# paths relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr)
|
||||
# instead of relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr).
|
||||
# To support this correctly, it's necessary to extract the prefix to strip
|
||||
# from pkg-config's |prefix| variable.
|
||||
prefix = subprocess.check_output([options.pkg_config,
|
||||
"--variable=prefix"] + args, env=os.environ).decode('utf-8')
|
||||
return prefix
|
||||
|
||||
|
||||
def MatchesAnyRegexp(flag, list_of_regexps):
|
||||
"""Returns true if the first argument matches any regular expression in the
|
||||
given list."""
|
||||
for regexp in list_of_regexps:
|
||||
if regexp.search(flag) != None:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def RewritePath(path, strip_prefix, sysroot):
|
||||
"""Rewrites a path by stripping the prefix and prepending the sysroot."""
|
||||
if os.path.isabs(path) and not path.startswith(sysroot):
|
||||
if path.startswith(strip_prefix):
|
||||
path = path[len(strip_prefix):]
|
||||
path = path.lstrip('/')
|
||||
return os.path.join(sysroot, path)
|
||||
else:
|
||||
return path
|
||||
|
||||
|
||||
def main():
|
||||
# If this is run on non-Linux platforms, just return nothing and indicate
|
||||
# success. This allows us to "kind of emulate" a Linux build from other
|
||||
# platforms.
|
||||
if "linux" not in sys.platform:
|
||||
print("[[],[],[],[],[]]")
|
||||
return 0
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option('-d', '--debug', action='store_true')
|
||||
parser.add_option('-p', action='store', dest='pkg_config', type='string',
|
||||
default='pkg-config')
|
||||
parser.add_option('-v', action='append', dest='strip_out', type='string')
|
||||
parser.add_option('-s', action='store', dest='sysroot', type='string')
|
||||
parser.add_option('-a', action='store', dest='arch', type='string')
|
||||
parser.add_option('--system_libdir', action='store', dest='system_libdir',
|
||||
type='string', default='lib')
|
||||
parser.add_option('--atleast-version', action='store',
|
||||
dest='atleast_version', type='string')
|
||||
parser.add_option('--libdir', action='store_true', dest='libdir')
|
||||
parser.add_option('--dridriverdir', action='store_true', dest='dridriverdir')
|
||||
parser.add_option('--version-as-components', action='store_true',
|
||||
dest='version_as_components')
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
# Make a list of regular expressions to strip out.
|
||||
strip_out = []
|
||||
if options.strip_out != None:
|
||||
for regexp in options.strip_out:
|
||||
strip_out.append(re.compile(regexp))
|
||||
|
||||
if options.sysroot:
|
||||
libdir = SetConfigPath(options)
|
||||
if options.debug:
|
||||
sys.stderr.write('PKG_CONFIG_LIBDIR=%s\n' % libdir)
|
||||
prefix = GetPkgConfigPrefixToStrip(options, args)
|
||||
else:
|
||||
prefix = ''
|
||||
|
||||
if options.atleast_version:
|
||||
# When asking for the return value, just run pkg-config and print the return
|
||||
# value, no need to do other work.
|
||||
if not subprocess.call([options.pkg_config,
|
||||
"--atleast-version=" + options.atleast_version] +
|
||||
args):
|
||||
print("true")
|
||||
else:
|
||||
print("false")
|
||||
return 0
|
||||
|
||||
if options.version_as_components:
|
||||
cmd = [options.pkg_config, "--modversion"] + args
|
||||
try:
|
||||
version_string = subprocess.check_output(cmd).decode('utf-8')
|
||||
except:
|
||||
sys.stderr.write('Error from pkg-config.\n')
|
||||
return 1
|
||||
print(json.dumps(list(map(int, version_string.strip().split(".")))))
|
||||
return 0
|
||||
|
||||
|
||||
if options.libdir:
|
||||
cmd = [options.pkg_config, "--variable=libdir"] + args
|
||||
if options.debug:
|
||||
sys.stderr.write('Running: %s\n' % cmd)
|
||||
try:
|
||||
libdir = subprocess.check_output(cmd).decode('utf-8')
|
||||
except:
|
||||
print("Error from pkg-config.")
|
||||
return 1
|
||||
sys.stdout.write(libdir.strip())
|
||||
return 0
|
||||
|
||||
if options.dridriverdir:
|
||||
cmd = [options.pkg_config, "--variable=dridriverdir"] + args
|
||||
if options.debug:
|
||||
sys.stderr.write('Running: %s\n' % cmd)
|
||||
try:
|
||||
dridriverdir = subprocess.check_output(cmd).decode('utf-8')
|
||||
except:
|
||||
print("Error from pkg-config.")
|
||||
return 1
|
||||
sys.stdout.write(dridriverdir.strip())
|
||||
return
|
||||
|
||||
cmd = [options.pkg_config, "--cflags", "--libs"] + args
|
||||
if options.debug:
|
||||
sys.stderr.write('Running: %s\n' % ' '.join(cmd))
|
||||
|
||||
try:
|
||||
flag_string = subprocess.check_output(cmd).decode('utf-8')
|
||||
except:
|
||||
sys.stderr.write('Could not run pkg-config.\n')
|
||||
return 1
|
||||
|
||||
# For now just split on spaces to get the args out. This will break if
|
||||
# pkgconfig returns quoted things with spaces in them, but that doesn't seem
|
||||
# to happen in practice.
|
||||
all_flags = flag_string.strip().split(' ')
|
||||
|
||||
|
||||
sysroot = options.sysroot
|
||||
if not sysroot:
|
||||
sysroot = ''
|
||||
|
||||
includes = []
|
||||
cflags = []
|
||||
libs = []
|
||||
lib_dirs = []
|
||||
|
||||
for flag in all_flags[:]:
|
||||
if len(flag) == 0 or MatchesAnyRegexp(flag, strip_out):
|
||||
continue;
|
||||
|
||||
if flag[:2] == '-l':
|
||||
libs.append(RewritePath(flag[2:], prefix, sysroot))
|
||||
elif flag[:2] == '-L':
|
||||
lib_dirs.append(RewritePath(flag[2:], prefix, sysroot))
|
||||
elif flag[:2] == '-I':
|
||||
includes.append(RewritePath(flag[2:], prefix, sysroot))
|
||||
elif flag[:3] == '-Wl':
|
||||
# Don't allow libraries to control ld flags. These should be specified
|
||||
# only in build files.
|
||||
pass
|
||||
elif flag == '-pthread':
|
||||
# Many libs specify "-pthread" which we don't need since we always include
|
||||
# this anyway. Removing it here prevents a bunch of duplicate inclusions
|
||||
# on the command line.
|
||||
pass
|
||||
else:
|
||||
cflags.append(flag)
|
||||
|
||||
# Output a GN array, the first one is the cflags, the second are the libs. The
|
||||
# JSON formatter prints GN compatible lists when everything is a list of
|
||||
# strings.
|
||||
print(json.dumps([includes, cflags, libs, lib_dirs]))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
78
pkgs/development/compilers/flutter/engine/source.nix
Normal file
78
pkgs/development/compilers/flutter/engine/source.nix
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
callPackage,
|
||||
hostPlatform,
|
||||
targetPlatform,
|
||||
tools ? callPackage ./tools.nix { inherit hostPlatform; },
|
||||
curl,
|
||||
pkg-config,
|
||||
git,
|
||||
python3,
|
||||
runCommand,
|
||||
writeText,
|
||||
cacert,
|
||||
version,
|
||||
hashes,
|
||||
url,
|
||||
}:
|
||||
let
|
||||
constants = callPackage ./constants.nix { inherit targetPlatform; };
|
||||
in
|
||||
runCommand "flutter-engine-source-${version}-${targetPlatform.system}"
|
||||
{
|
||||
pname = "flutter-engine-source";
|
||||
inherit version;
|
||||
|
||||
inherit (tools) depot_tools;
|
||||
|
||||
nativeBuildInputs = [
|
||||
curl
|
||||
pkg-config
|
||||
git
|
||||
tools.cipd
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
httplib2
|
||||
six
|
||||
]
|
||||
))
|
||||
];
|
||||
|
||||
gclient = writeText "flutter-engine-${version}.gclient" ''
|
||||
solutions = [{
|
||||
"managed": False,
|
||||
"name": "src/flutter",
|
||||
"url": "${url}",
|
||||
}]
|
||||
'';
|
||||
|
||||
NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
DEPOT_TOOLS_UPDATE = "0";
|
||||
DEPOT_TOOLS_COLLECT_METRICS = "0";
|
||||
PYTHONDONTWRITEBYTECODE = "1";
|
||||
|
||||
outputHashAlgo = "sha256";
|
||||
outputHashMode = "recursive";
|
||||
outputHash = hashes.${targetPlatform.system} or (throw "Hash not set for ${targetPlatform.system}");
|
||||
}
|
||||
''
|
||||
source ${../../../../build-support/fetchgit/deterministic-git}
|
||||
export -f clean_git
|
||||
export -f make_deterministic_repo
|
||||
|
||||
mkdir -p $out
|
||||
cp $gclient $out/.gclient
|
||||
cd $out
|
||||
|
||||
export PATH=$PATH:$depot_tools
|
||||
python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks
|
||||
find $out -name '.git' -exec dirname {} \; | xargs bash -c 'make_deterministic_repo $@' _
|
||||
find $out -path '*/.git/*' ! -name 'HEAD' -prune -exec rm -rf {} \;
|
||||
find $out -name '.git' -exec mkdir {}/logs \;
|
||||
find $out -name '.git' -exec cp {}/HEAD {}/logs/HEAD \;
|
||||
|
||||
python3 src/build/linux/sysroot_scripts/install-sysroot.py --arch=${constants.arch}
|
||||
|
||||
rm -rf $out/.cipd $out/.gclient $out/.gclient_entries $out/.gclient_previous_custom_vars $out/.gclient_previous_sync_commits
|
||||
''
|
62
pkgs/development/compilers/flutter/engine/tools.nix
Normal file
62
pkgs/development/compilers/flutter/engine/tools.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
callPackage,
|
||||
fetchgit,
|
||||
fetchurl,
|
||||
writeText,
|
||||
runCommand,
|
||||
hostPlatform,
|
||||
darwin,
|
||||
writeShellScriptBin,
|
||||
depot_toolsCommit ? "7d95eb2eb054447592585c73a8ff7adad97ecba1",
|
||||
depot_toolsHash ? "sha256-F7KDuVg11qLKkohIjuXpNdxpnSsT6Z3hE9+wFIG2sSk=",
|
||||
cipdCommit ? "89ada246fcbf10f330011e4991d017332af2365b",
|
||||
cipdHashes ? {
|
||||
"linux-386" = "7f264198598af2ef9d8878349d33c1940f1f3739e46d986962c352ec4cce2690";
|
||||
"linux-amd64" = "2ada6b46ad1cd1350522c5c05899d273f5c894c7665e30104e7f57084a5aeeb9";
|
||||
"linux-arm64" = "96eca7e49f6732c50122b94b793c3a5e62ed77bce1686787a8334906791b4168";
|
||||
"linux-armv6l" = "06394601130652c5e1b055a7e4605c21fc7c6643af0b3b3cac8d2691491afa81";
|
||||
"linux-mips64" = "f3eda6542b381b7aa8f582698498b0e197972c894590ec35f18faa467c868f5c";
|
||||
"linux-mips64le" = "74229ada8e2afd9c8e7c58991126869b2880547780d4a197a27c1dfa96851622";
|
||||
"linux-mipsle" = "2f3c18ec0ad48cd44a9ff39bb60e9afded83ca43fb9c7a5ea9949f6fdd4e1394";
|
||||
"linux-ppc64" = "79425c0795fb8ba12b39a8856bf7ccb853e85def4317aa6413222f307d4c2dbd";
|
||||
"linux-ppc64le" = "f9b3d85dde70f1b78cd7a41d2477834c15ac713a59317490a4cdac9f8f092325";
|
||||
"linux-riscv64" = "bd695164563a66e8d3799e8835f90a398fbae9a4eec24e876c92d5f213943482";
|
||||
"linux-s390x" = "6f501af80541e733fda23b4208a21ea05919c95d236036a2121e6b6334a2792c";
|
||||
"macos-amd64" = "41d05580c0014912d6c32619c720646fd136e4557c9c7d7571ecc8c0462733a1";
|
||||
"macos-arm64" = "dc672bd16d9faf277dd562f1dc00644b10c03c5d838d3cc3d3ea29925d76d931";
|
||||
"windows-386" = "fa6ed0022a38ffc51ff8a927e3947fe7e59a64b2019dcddca9d3afacf7630444";
|
||||
"windows-amd64" = "b5423e4b4429837f7fe4d571ce99c068aa0ccb37ddbebc1978a423fd2b0086df";
|
||||
},
|
||||
}:
|
||||
let
|
||||
constants = callPackage ./constants.nix { targetPlatform = hostPlatform; };
|
||||
in
|
||||
{
|
||||
depot_tools = fetchgit {
|
||||
url = "https://chromium.googlesource.com/chromium/tools/depot_tools.git";
|
||||
rev = depot_toolsCommit;
|
||||
hash = depot_toolsHash;
|
||||
};
|
||||
|
||||
cipd =
|
||||
runCommand "cipd-${cipdCommit}"
|
||||
{
|
||||
unwrapped = fetchurl {
|
||||
name = "cipd-${cipdCommit}-unwrapped";
|
||||
url = "https://chrome-infra-packages.appspot.com/client?platform=${constants.platform}&version=git_revision:${cipdCommit}";
|
||||
sha256 = cipdHashes.${constants.platform};
|
||||
};
|
||||
}
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
install -m755 $unwrapped $out/bin/cipd
|
||||
'';
|
||||
|
||||
vpython =
|
||||
pythonPkg:
|
||||
runCommand "vpython3" { } "mkdir -p $out/bin && ln -s ${pythonPkg}/bin/python $out/bin/vpython3";
|
||||
|
||||
xcode-select = writeShellScriptBin "xcode-select" ''
|
||||
echo ${darwin.xcode}/Contents/Developer
|
||||
'';
|
||||
}
|
@ -1,5 +1,10 @@
|
||||
{ version
|
||||
{ useNixpkgsEngine ? false
|
||||
, version
|
||||
, engineVersion
|
||||
, engineHashes ? {}
|
||||
, engineUrl ? "https://github.com/flutter/engine.git@${engineVersion}"
|
||||
, enginePatches ? []
|
||||
, engineRuntimeModes ? [ "release" "debug" ]
|
||||
, patches
|
||||
, channel
|
||||
, dart
|
||||
@ -21,9 +26,20 @@
|
||||
inherit pubspecLock;
|
||||
systemPlatform = stdenv.hostPlatform.system;
|
||||
}
|
||||
}:
|
||||
}@args:
|
||||
|
||||
let
|
||||
engine = if args.useNixpkgsEngine or false then
|
||||
callPackage ./engine/default.nix {
|
||||
dartSdkVersion = dart.version;
|
||||
flutterVersion = version;
|
||||
version = engineVersion;
|
||||
hashes = engineHashes;
|
||||
url = engineUrl;
|
||||
patches = enginePatches;
|
||||
runtimeModes = engineRuntimeModes;
|
||||
} else null;
|
||||
|
||||
unwrapped =
|
||||
stdenv.mkDerivation {
|
||||
name = "flutter-${version}-unwrapped";
|
||||
@ -125,12 +141,15 @@ let
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
# TODO: rely on engine.version instead of engineVersion
|
||||
inherit dart engineVersion artifactHashes channel;
|
||||
tools = flutterTools;
|
||||
# The derivation containing the original Flutter SDK files.
|
||||
# When other derivations wrap this one, any unmodified files
|
||||
# found here should be included as-is, for tooling compatibility.
|
||||
sdk = unwrapped;
|
||||
} // lib.optionalAttrs (engine != null && engine.meta.available) {
|
||||
inherit engine;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -0,0 +1,23 @@
|
||||
{ callPackage, symlinkJoin, lib }:
|
||||
let
|
||||
nixpkgsRoot = "@nixpkgs_root@";
|
||||
engineVersion = "@engine_version@";
|
||||
|
||||
systemPlatforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
derivations = builtins.map
|
||||
(systemPlatform: callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/engine/source.nix" {
|
||||
targetPlatform = lib.systems.elaborate systemPlatform;
|
||||
version = engineVersion;
|
||||
url = "https://github.com/flutter/engine.git@${engineVersion}";
|
||||
hashes."${systemPlatform}" = lib.fakeSha256;
|
||||
})
|
||||
systemPlatforms;
|
||||
in
|
||||
symlinkJoin {
|
||||
name = "evaluate-derivations";
|
||||
paths = derivations;
|
||||
}
|
@ -85,6 +85,32 @@ def nix_build_to_fail(code):
|
||||
return stderr
|
||||
|
||||
|
||||
def get_engine_hashes(engine_version):
|
||||
code = load_code("get-engine-hashes.nix",
|
||||
nixpkgs_root=NIXPKGS_ROOT,
|
||||
engine_version=engine_version)
|
||||
|
||||
stderr = nix_build_to_fail(code)
|
||||
|
||||
pattern = re.compile(
|
||||
r"/nix/store/.*-flutter-engine-source-(.+?)-(.+?).drv':\n\s+specified: .*\n\s+got:\s+(.+?)\n")
|
||||
matches = pattern.findall(stderr)
|
||||
result_dict = {}
|
||||
|
||||
for match in matches:
|
||||
_, system, got = match
|
||||
result_dict[system] = got
|
||||
|
||||
def sort_dict_recursive(d):
|
||||
return {
|
||||
k: sort_dict_recursive(v) if isinstance(
|
||||
v, dict) else v for k, v in sorted(
|
||||
d.items())}
|
||||
result_dict = sort_dict_recursive(result_dict)
|
||||
|
||||
return result_dict
|
||||
|
||||
|
||||
def get_artifact_hashes(flutter_compact_version):
|
||||
code = load_code("get-artifact-hashes.nix",
|
||||
nixpkgs_root=NIXPKGS_ROOT,
|
||||
@ -180,6 +206,7 @@ def write_data(
|
||||
flutter_version,
|
||||
channel,
|
||||
engine_hash,
|
||||
engine_hashes,
|
||||
dart_version,
|
||||
dart_hash,
|
||||
flutter_hash,
|
||||
@ -190,6 +217,7 @@ def write_data(
|
||||
"version": flutter_version,
|
||||
"engineVersion": engine_hash,
|
||||
"channel": channel,
|
||||
"engineHashes": engine_hashes,
|
||||
"dartVersion": dart_version,
|
||||
"dartHash": dart_hash,
|
||||
"flutterHash": flutter_hash,
|
||||
@ -205,7 +233,9 @@ def update_all_packages():
|
||||
int(x.split('_')[0]), int(x.split('_')[1])), reverse=True)
|
||||
|
||||
new_content = [
|
||||
"flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { });",
|
||||
"flutterPackages-bin = recurseIntoAttrs (callPackage ../development/compilers/flutter { });",
|
||||
"flutterPackages-source = recurseIntoAttrs (callPackage ../development/compilers/flutter { useNixpkgsEngine = true; });",
|
||||
"flutterPackages = flutterPackages-bin;"
|
||||
"flutter = flutterPackages.stable;",
|
||||
] + [f"flutter{version.replace('_', '')} = flutterPackages.v{version};" for version in versions]
|
||||
|
||||
@ -215,7 +245,7 @@ def update_all_packages():
|
||||
start = -1
|
||||
end = -1
|
||||
for i, line in enumerate(lines):
|
||||
if "flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { });" in line:
|
||||
if "flutterPackages-bin = recurseIntoAttrs (callPackage ../development/compilers/flutter { });" in line:
|
||||
start = i
|
||||
if start != -1 and len(line.strip()) == 0:
|
||||
end = i
|
||||
@ -329,6 +359,7 @@ def main():
|
||||
write_data(
|
||||
pubspec_lock={},
|
||||
artifact_hashes={},
|
||||
engine_hashes={},
|
||||
**common_data_args)
|
||||
|
||||
pubspec_lock = get_pubspec_lock(flutter_compact_version, flutter_src)
|
||||
@ -336,6 +367,7 @@ def main():
|
||||
write_data(
|
||||
pubspec_lock=pubspec_lock,
|
||||
artifact_hashes={},
|
||||
engine_hashes={},
|
||||
**common_data_args)
|
||||
|
||||
artifact_hashes = get_artifact_hashes(flutter_compact_version)
|
||||
@ -343,6 +375,15 @@ def main():
|
||||
write_data(
|
||||
pubspec_lock=pubspec_lock,
|
||||
artifact_hashes=artifact_hashes,
|
||||
engine_hashes={},
|
||||
**common_data_args)
|
||||
|
||||
engine_hashes = get_engine_hashes(engine_hash)
|
||||
|
||||
write_data(
|
||||
pubspec_lock=pubspec_lock,
|
||||
artifact_hashes=artifact_hashes,
|
||||
engine_hashes=engine_hashes,
|
||||
**common_data_args)
|
||||
|
||||
|
||||
|
@ -2,6 +2,9 @@
|
||||
"version": "3.13.8",
|
||||
"engineVersion": "767d8c75e898091b925519803830fc2721658d07",
|
||||
"channel": "stable",
|
||||
"engineHashes": {
|
||||
"aarch64-linux": "sha256-1s7I+AWb2kNDzJ5k2XYm7rSK8yj1wqTjPUuS0f85Jig="
|
||||
},
|
||||
"dartVersion": "3.1.4",
|
||||
"dartHash": {
|
||||
"x86_64-linux": "sha256-42wrqzjRcFDWw2aEY6+/faX+QE9PA8FmRWP4M/NkgBE=",
|
||||
|
@ -2,6 +2,9 @@
|
||||
"version": "3.16.7",
|
||||
"engineVersion": "4a585b79294e830fa89c24924d58a27cc8fbf406",
|
||||
"channel": "stable",
|
||||
"engineHashes": {
|
||||
"aarch64-linux": "sha256-xqniT1rYrzCuq6542KfqWRigYtLnmaT0z5Es/59iFMw="
|
||||
},
|
||||
"dartVersion": "3.2.4",
|
||||
"dartHash": {
|
||||
"x86_64-linux": "sha256-qslf+wgmNz9r+e45o3Bg9/vDj75GkM9gQE2tb5rbIvw=",
|
||||
|
@ -2,6 +2,11 @@
|
||||
"version": "3.19.4",
|
||||
"engineVersion": "a5c24f538d05aaf66f7972fb23959d8cafb9f95a",
|
||||
"channel": "stable",
|
||||
"engineHashes": {
|
||||
"x86_64-linux": "sha256-xhihh4v9bh2ZxAewKEdhpXerLDoXFm8YO72+tGRnkCw=",
|
||||
"aarch64-linux": "sha256-mUimQRg0UqvTueuDWO8Isy0FKOxJLvVZrehv4SMj0XY=",
|
||||
"aarch64-darwin": "sha256-5DcD7ebrANznB++QOQOoynr1aOgJqTF8QfSihQnghoY="
|
||||
},
|
||||
"dartVersion": "3.3.2",
|
||||
"dartHash": {
|
||||
"x86_64-linux": "sha256-eO8qcSQNWGEz/5oVaJ5tjRMnGy2aq3PbcF15z/Pi3xQ=",
|
||||
|
@ -0,0 +1,41 @@
|
||||
From dd74740ddceac81e748a7e7834c28135abc59454 Mon Sep 17 00:00:00 2001
|
||||
From: Brandon DeRosier <bdero@google.com>
|
||||
Date: Tue, 16 Jan 2024 11:00:34 -0800
|
||||
Subject: [PATCH] [Flutter GPU] Fix playground shader paths. (#49790)
|
||||
|
||||
Resolves https://github.com/flutter/flutter/issues/140969.
|
||||
|
||||
Makes the shader paths absolute to prevent issues caused by the working
|
||||
directory differing across build environments.
|
||||
---
|
||||
impeller/fixtures/BUILD.gn | 3 ++-
|
||||
impeller/tools/impeller.gni | 2 +-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/impeller/fixtures/BUILD.gn b/impeller/fixtures/BUILD.gn
|
||||
index 9165f06542a2a..5ea90ab3969f3 100644
|
||||
--- a/impeller/fixtures/BUILD.gn
|
||||
+++ b/impeller/fixtures/BUILD.gn
|
||||
@@ -131,7 +131,8 @@
|
||||
"flutter_gpu_texture.vert",
|
||||
]
|
||||
shader_target_flags = [ "--runtime-stage-metal" ]
|
||||
- shader_bundle = "{\"UnlitFragment\": {\"type\": \"fragment\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_unlit.frag\"}, \"UnlitVertex\": {\"type\": \"vertex\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_unlit.vert\"}, \"TextureFragment\": {\"type\": \"fragment\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_texture.frag\"}, \"TextureVertex\": {\"type\": \"vertex\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_texture.vert\"}}"
|
||||
+ fixtures = rebase_path("//flutter/impeller/fixtures")
|
||||
+ shader_bundle = "{\"UnlitFragment\": {\"type\": \"fragment\", \"file\": \"${fixtures}/flutter_gpu_unlit.frag\"}, \"UnlitVertex\": {\"type\": \"vertex\", \"file\": \"${fixtures}/flutter_gpu_unlit.vert\"}, \"TextureFragment\": {\"type\": \"fragment\", \"file\": \"${fixtures}/flutter_gpu_texture.frag\"}, \"TextureVertex\": {\"type\": \"vertex\", \"file\": \"${fixtures}/flutter_gpu_texture.vert\"}}"
|
||||
shader_bundle_output = "playground.shaderbundle"
|
||||
}
|
||||
|
||||
diff --git a/impeller/tools/impeller.gni b/impeller/tools/impeller.gni
|
||||
index 6541c3b12173b..2ab7ec0f0b07a 100644
|
||||
--- a/impeller/tools/impeller.gni
|
||||
+++ b/impeller/tools/impeller.gni
|
||||
@@ -313,7 +313,7 @@
|
||||
if (defined(invoker.shader_bundle)) {
|
||||
assert(
|
||||
defined(invoker.shader_bundle_output),
|
||||
- "When shader_bundle is specified, shader_output_bundle must also be specified.")
|
||||
+ "When shader_bundle is specified, shader_bundle_output must also be specified.")
|
||||
}
|
||||
|
||||
sksl = false
|
@ -2,6 +2,10 @@
|
||||
"version": "3.22.2",
|
||||
"engineVersion": "edd8546116457bdf1c5bdfb13ecb9463d2bb5ed4",
|
||||
"channel": "stable",
|
||||
"engineHashes": {
|
||||
"aarch64-linux": "sha256-xPVhLxO9AgXC2+Hwm1lWRfNZhLwZHdKW92WXgv3ImZk=",
|
||||
"x86_64-linux": "sha256-klODJpmlWynYx+MqqGGeTzzPtmQTEUV47hnzjIVDCK8="
|
||||
},
|
||||
"dartVersion": "3.4.3",
|
||||
"dartHash": {
|
||||
"x86_64-linux": "sha256-wDIdoWoKlutP8kixd12Lppzv2aYeiTJ1A1Sy6lguXgg=",
|
||||
|
@ -2,6 +2,9 @@
|
||||
"version": "3.23.0-0.1.pre",
|
||||
"engineVersion": "bb10c5466638e963479ba5e64e601e42d1a43447",
|
||||
"channel": "beta",
|
||||
"engineHashes": {
|
||||
"aarch64-linux": "sha256-WHWxYOHd3jxE5CQNt0+9qxlsCLK5y9iJsVERtJ4Ylbk="
|
||||
},
|
||||
"dartVersion": "3.5.0-180.3.beta",
|
||||
"dartHash": {
|
||||
"x86_64-linux": "sha256-DXGyUTu9I602lLnDz9BKLfHEAeaMKtbZjxgmPPSTEv0=",
|
||||
|
@ -145,7 +145,10 @@ in
|
||||
mkdir -p $out/bin
|
||||
makeWrapper '${immutableFlutter}' $out/bin/flutter \
|
||||
--set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
|
||||
--suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \
|
||||
'' + lib.optionalString (flutter ? engine && flutter.engine.meta.available) ''
|
||||
--set-default FLUTTER_ENGINE "${flutter.engine}" \
|
||||
--add-flags "--local-engine-host host_${flutter.engine.runtimeMode}${lib.optionalString (!flutter.engine.isOptimized) "_unopt"}" \
|
||||
'' + '' --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \
|
||||
--suffix PKG_CONFIG_PATH : "$FLUTTER_PKG_CONFIG_PATH" \
|
||||
--suffix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \
|
||||
--prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCxxFlags)}' \
|
||||
|
@ -171,6 +171,6 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
homepage = "https://yosyshq.net/yosys/";
|
||||
license = licenses.isc;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ shell thoughtpolice emily Luflosi ];
|
||||
maintainers = with maintainers; [ shell thoughtpolice Luflosi ];
|
||||
};
|
||||
})
|
||||
|
@ -73,7 +73,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://github.com/blacksphere/blackmagic";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ pjones emily sorki ];
|
||||
maintainers = with maintainers; [ pjones sorki ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://github.com/YosysHQ/icestorm/";
|
||||
license = lib.licenses.isc;
|
||||
maintainers = with lib.maintainers; [ shell thoughtpolice emily ];
|
||||
maintainers = with lib.maintainers; [ shell thoughtpolice ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ with python3Packages; buildPythonApplication rec {
|
||||
homepage = "https://github.com/tinyfpga/TinyFPGA-Bootloader/tree/master/programmer";
|
||||
description = "Programmer for FPGA boards using the TinyFPGA USB Bootloader";
|
||||
mainProgram = "tinyprog";
|
||||
maintainers = with maintainers; [ emily ];
|
||||
maintainers = with maintainers; [ ];
|
||||
license = licenses.asl20;
|
||||
};
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ in stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://github.com/YosysHQ/prjtrellis";
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ q3k thoughtpolice emily rowanG077 ];
|
||||
maintainers = with maintainers; [ q3k thoughtpolice rowanG077 ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -419,8 +419,8 @@ let
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "andy128k";
|
||||
repo = "cl-gobject-introspection";
|
||||
rev = "83beec4492948b52aae4d4152200de5d5c7ac3e9";
|
||||
sha256 = "sha256-g/FwWE+Rzmzm5Y+irvd1AJodbp6kPHJIFOFDPhaRlXc=";
|
||||
rev = "4908a84c16349929b309c50409815ff81fb9b3c4";
|
||||
sha256 = "sha256-krVU5TQsVAbglxXMq29WJriWBIgQDLy1iCvB5iNziEc=";
|
||||
};}))
|
||||
(cl-webkit2.overrideAttrs (final: prev: {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
@ -882,6 +882,64 @@ let
|
||||
meta.mainProgram = "qlot";
|
||||
};
|
||||
|
||||
misc-extensions = super.misc-extensions.overrideLispAttrs (old: rec {
|
||||
version = "4.0.3";
|
||||
src = pkgs.fetchFromGitLab {
|
||||
domain = "gitlab.common-lisp.net";
|
||||
owner = "misc-extensions";
|
||||
repo = "misc-extensions";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-bDNI4mIaNw/rf7ZwvwolKo6+mUUxsgubGUd/988sHAo=";
|
||||
};
|
||||
});
|
||||
|
||||
fset = super.fset.overrideLispAttrs (old: rec {
|
||||
version = "1.4.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "slburson";
|
||||
repo = "fset";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-alO8Ek5Xpyl5N99/LgyIZ50aoRbY7bKh3XBntFV6Q5k=";
|
||||
};
|
||||
lispLibs = with super; [
|
||||
self.misc-extensions
|
||||
mt19937
|
||||
named-readtables
|
||||
];
|
||||
meta = {
|
||||
description = "functional collections library";
|
||||
homepage = "https://gitlab.common-lisp.net/fset/fset/-/wikis/home";
|
||||
license = pkgs.lib.licenses.llgpl21;
|
||||
};
|
||||
});
|
||||
|
||||
coalton = build-asdf-system {
|
||||
pname = "coalton";
|
||||
version = "trunk";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "coalton-lang";
|
||||
repo = "coalton";
|
||||
rev = "05111b8a59e3f7346b175ce1ec621bff588e1e1f";
|
||||
hash = "sha256-L9o7Y3zDx9qLXGe/70c1LWEKUWsSRgBQru66mIuaCFw=";
|
||||
};
|
||||
lispLibs = with super; [
|
||||
alexandria
|
||||
eclector-concrete-syntax-tree
|
||||
fiasco
|
||||
float-features
|
||||
self.fset
|
||||
named-readtables
|
||||
trivial-garbage
|
||||
];
|
||||
nativeLibs = [ pkgs.mpfr ];
|
||||
systems = [ "coalton" "coalton/tests" ];
|
||||
meta = {
|
||||
description = "statically typed functional programming language that supercharges Common Lisp";
|
||||
homepage = "https://coalton-lang.github.io";
|
||||
license = pkgs.lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
in packages
|
||||
|
@ -45,7 +45,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/amaranth-lang/amaranth-boards";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [
|
||||
emily
|
||||
thoughtpolice
|
||||
pbsds
|
||||
];
|
||||
|
@ -38,7 +38,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/amaranth-lang/amaranth-soc";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [
|
||||
emily
|
||||
thoughtpolice
|
||||
pbsds
|
||||
];
|
||||
|
@ -58,7 +58,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://amaranth-lang.org/docs/amaranth";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [
|
||||
emily
|
||||
thoughtpolice
|
||||
pbsds
|
||||
];
|
||||
|
@ -46,6 +46,6 @@ buildPythonPackage rec {
|
||||
mainProgram = "fx2tool";
|
||||
homepage = "https://github.com/whitequark/libfx2";
|
||||
license = licenses.bsd0;
|
||||
maintainers = with maintainers; [ emily ];
|
||||
maintainers = with maintainers; [ ];
|
||||
};
|
||||
}
|
||||
|
@ -26,6 +26,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/avian2/jsonmerge";
|
||||
changelog = "https://github.com/avian2/jsonmerge/blob/jsonmerge-${version}/ChangeLog";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ emily ];
|
||||
maintainers = with maintainers; [ ];
|
||||
};
|
||||
}
|
||||
|
@ -112,7 +112,6 @@ buildPythonPackage rec {
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [
|
||||
tilpner
|
||||
emily
|
||||
symphorien
|
||||
];
|
||||
};
|
||||
|
@ -32,7 +32,6 @@ buildPythonPackage rec {
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [
|
||||
sb0
|
||||
emily
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -50,6 +50,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/florisla/stm32loader";
|
||||
changelog = "https://github.com/florisla/stm32loader/blob/v${version}/CHANGELOG.md";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ emily ];
|
||||
maintainers = with maintainers; [ ];
|
||||
};
|
||||
}
|
||||
|
@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ libxcrypt ];
|
||||
|
||||
CFLAGS = "-std=gnu89";
|
||||
|
||||
preConfigure = ''
|
||||
sed -re 's/-[og] 0//g' -i Makefile*
|
||||
'';
|
||||
|
@ -7,13 +7,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "basnijholt";
|
||||
domain = "adaptive_lighting";
|
||||
version = "1.19.1";
|
||||
version = "1.22.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "basnijholt";
|
||||
repo = "adaptive-lighting";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-AZsloE1vNQ9o2pg878J6I5qYXyI4fqYEvr18SrTocWo=";
|
||||
hash = "sha256-k5pCgPM5xjVfWjOcr0UDFzYl/8z7yUwgYdBmC3+2F5k=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -55,6 +55,6 @@ callPackage ../nginx/generic.nix args rec {
|
||||
homepage = "https://openresty.org";
|
||||
license = lib.licenses.bsd2;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ thoughtpolice lblasc emily ];
|
||||
maintainers = with lib.maintainers; [ thoughtpolice lblasc ];
|
||||
};
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
description = "Software for Glasgow, a digital interface multitool";
|
||||
homepage = "https://github.com/GlasgowEmbedded/Glasgow";
|
||||
license = licenses.bsd0;
|
||||
maintainers = with maintainers; [ emily thoughtpolice ];
|
||||
maintainers = with maintainers; [ thoughtpolice ];
|
||||
mainProgram = "glasgow";
|
||||
};
|
||||
}
|
||||
|
@ -15370,7 +15370,9 @@ with pkgs;
|
||||
|
||||
fluidd = callPackage ../applications/misc/fluidd { };
|
||||
|
||||
flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { });
|
||||
flutterPackages-bin = recurseIntoAttrs (callPackage ../development/compilers/flutter { });
|
||||
flutterPackages-source = recurseIntoAttrs (callPackage ../development/compilers/flutter { useNixpkgsEngine = true; });
|
||||
flutterPackages = flutterPackages-bin;
|
||||
flutter = flutterPackages.stable;
|
||||
flutter323 = flutterPackages.v3_23;
|
||||
flutter322 = flutterPackages.v3_22;
|
||||
@ -20571,8 +20573,6 @@ with pkgs;
|
||||
|
||||
entt = callPackage ../development/libraries/entt { };
|
||||
|
||||
epoll-shim = callPackage ../development/libraries/epoll-shim { };
|
||||
|
||||
libepoxy = callPackage ../development/libraries/libepoxy {
|
||||
inherit (darwin.apple_sdk.frameworks) Carbon OpenGL;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user