Apply nix fmt on setupNixInNixPython-only
This commit is contained in:
@@ -22,10 +22,15 @@ nixosLib.runTest (
|
|||||||
|
|
||||||
clan.test.fromFlake = ./.;
|
clan.test.fromFlake = ./.;
|
||||||
|
|
||||||
|
extraPythonPackages = _p: [
|
||||||
|
clan-core.legacyPackages.${hostPkgs.system}.setupNixInNixPythonPackage
|
||||||
|
];
|
||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
{ nodes, ... }:
|
{ nodes, ... }:
|
||||||
''
|
''
|
||||||
${clan-core.legacyPackages.${hostPkgs.system}.setupNixInNixPython}
|
from setup_nix_in_nix import setup_nix_in_nix # type: ignore[import-untyped]
|
||||||
|
setup_nix_in_nix()
|
||||||
|
|
||||||
def run_clan(cmd: list[str], **kwargs) -> str:
|
def run_clan(cmd: list[str], **kwargs) -> str:
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
perSystem = {
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
legacyPackages = {
|
legacyPackages = {
|
||||||
setupNixInNix = ''
|
setupNixInNix = ''
|
||||||
|
set -xeu -o pipefail
|
||||||
export HOME=$TMPDIR
|
export HOME=$TMPDIR
|
||||||
export NIX_STATE_DIR=$TMPDIR/nix
|
export NIX_STATE_DIR=$TMPDIR/nix
|
||||||
export NIX_CONF_DIR=$TMPDIR/etc
|
export NIX_CONF_DIR=$TMPDIR/etc
|
||||||
@@ -12,26 +15,63 @@
|
|||||||
mkdir -p "$CLAN_TEST_STORE/nix/store"
|
mkdir -p "$CLAN_TEST_STORE/nix/store"
|
||||||
mkdir -p "$CLAN_TEST_STORE/nix/var/nix/gcroots"
|
mkdir -p "$CLAN_TEST_STORE/nix/var/nix/gcroots"
|
||||||
if [[ -n "''${closureInfo-}" ]]; then
|
if [[ -n "''${closureInfo-}" ]]; then
|
||||||
xargs cp --recursive --target "$CLAN_TEST_STORE/nix/store" < "$closureInfo/store-paths"
|
# ${pkgs.findutils}/bin/xargs ${pkgs.xcp}/bin/xcp --recursive --target-directory "$CLAN_TEST_STORE/nix/store" < "$closureInfo/store-paths"
|
||||||
nix-store --load-db --store "$CLAN_TEST_STORE" < "$closureInfo/registration"
|
${pkgs.findutils}/bin/xargs ${pkgs.coreutils}/bin/cp --recursive --target "$CLAN_TEST_STORE/nix/store" < "$closureInfo/store-paths"
|
||||||
|
${pkgs.nix}/bin/nix-store --load-db --store "$CLAN_TEST_STORE" < "$closureInfo/registration"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
setupNixInNixPython = ''
|
|
||||||
|
setupNixInNixPythonPackage = pkgs.python3Packages.buildPythonPackage {
|
||||||
|
pname = "setup-nix-in-nix";
|
||||||
|
version = "1.0.0";
|
||||||
|
format = "other";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/${pkgs.python3.sitePackages}
|
||||||
|
cat > $out/${pkgs.python3.sitePackages}/setup_nix_in_nix.py << 'EOF'
|
||||||
from os import environ
|
from os import environ
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
def setup_nix_in_nix():
|
||||||
|
"""Set up a Nix store inside the test environment."""
|
||||||
environ['HOME'] = environ['TMPDIR']
|
environ['HOME'] = environ['TMPDIR']
|
||||||
environ['NIX_STATE_DIR'] = environ['TMPDIR'] + '/nix'
|
environ['NIX_STATE_DIR'] = environ['TMPDIR'] + '/nix'
|
||||||
environ['NIX_CONF_DIR'] = environ['TMPDIR'] + '/etc'
|
environ['NIX_CONF_DIR'] = environ['TMPDIR'] + '/etc'
|
||||||
environ['IN_NIX_SANDBOX'] = '1'
|
environ['IN_NIX_SANDBOX'] = '1'
|
||||||
environ['CLAN_TEST_STORE'] = environ['TMPDIR'] + '/store'
|
environ['CLAN_TEST_STORE'] = environ['TMPDIR'] + '/store'
|
||||||
environ['LOCK_NIX'] = environ['TMPDIR'] + '/nix_lock'
|
environ['LOCK_NIX'] = environ['TMPDIR'] + '/nix_lock'
|
||||||
|
|
||||||
Path(environ['CLAN_TEST_STORE'] + '/nix/store').mkdir(parents=True, exist_ok=True)
|
Path(environ['CLAN_TEST_STORE'] + '/nix/store').mkdir(parents=True, exist_ok=True)
|
||||||
Path(environ['CLAN_TEST_STORE'] + '/nix/var/nix/gcroots').mkdir(parents=True, exist_ok=True)
|
Path(environ['CLAN_TEST_STORE'] + '/nix/var/nix/gcroots').mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
if 'closureInfo' in environ:
|
if 'closureInfo' in environ:
|
||||||
subprocess.run(['cp', '--recursive', '--target', environ['CLAN_TEST_STORE'] + '/nix/store'] + environ['closureInfo'].split(), check=True)
|
# Read store paths from the closure info file
|
||||||
subprocess.run(['nix-store', '--load-db', '--store', environ['CLAN_TEST_STORE']] + ['<', environ['closureInfo'] + '/registration'], shell=True, check=True)
|
with open(environ['closureInfo'] + '/store-paths', 'r') as f:
|
||||||
|
store_paths = f.read().strip().split('\n')
|
||||||
|
|
||||||
|
# Copy store paths using absolute path to cp
|
||||||
|
subprocess.run(
|
||||||
|
['${pkgs.coreutils}/bin/cp', '--recursive', '--target', environ['CLAN_TEST_STORE'] + '/nix/store'] + store_paths,
|
||||||
|
check=True
|
||||||
|
)
|
||||||
|
|
||||||
|
# Load the nix database using absolute path to nix-store
|
||||||
|
with open(environ['closureInfo'] + '/registration', 'r') as f:
|
||||||
|
subprocess.run(
|
||||||
|
['${pkgs.nix}/bin/nix-store', '--load-db', '--store', environ['CLAN_TEST_STORE']],
|
||||||
|
input=f.read(),
|
||||||
|
text=True,
|
||||||
|
check=True
|
||||||
|
)
|
||||||
|
EOF
|
||||||
|
touch $out/${pkgs.python3.sitePackages}/py.typed
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user