use experimental flags everywhere
This commit is contained in:
@@ -3,18 +3,22 @@ import argparse
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from .nix import nix_command
|
||||
|
||||
|
||||
def create(args: argparse.Namespace) -> None:
|
||||
os.makedirs(args.folder, exist_ok=True)
|
||||
# TODO create clan template in flake
|
||||
subprocess.run(
|
||||
[
|
||||
"nix",
|
||||
"flake",
|
||||
"init",
|
||||
"-t",
|
||||
"git+https://git.clan.lol/clan/clan-core#new-clan",
|
||||
]
|
||||
nix_command(
|
||||
[
|
||||
"flake",
|
||||
"init",
|
||||
"-t",
|
||||
"git+https://git.clan.lol/clan/clan-core#new-clan",
|
||||
]
|
||||
),
|
||||
check=True,
|
||||
)
|
||||
|
||||
|
||||
@@ -24,7 +28,7 @@ def register_parser(parser: argparse.ArgumentParser) -> None:
|
||||
"-f",
|
||||
"--folder",
|
||||
help="the folder where the clan is defined, default to the current folder",
|
||||
default=os.environ["PWD"],
|
||||
default=os.getcwd(),
|
||||
)
|
||||
subparser = parser.add_subparsers(
|
||||
title="command",
|
||||
|
||||
@@ -3,7 +3,8 @@ import subprocess
|
||||
from pathlib import Path
|
||||
from typing import Any, Optional, Type, Union
|
||||
|
||||
from clan_cli.errors import ClanError
|
||||
from ..errors import ClanError
|
||||
from ..nix import nix_eval
|
||||
|
||||
script_dir = Path(__file__).parent
|
||||
|
||||
@@ -30,11 +31,9 @@ def schema_from_module_file(
|
||||
slib.parseModule {absolute_path}
|
||||
"""
|
||||
# run the nix expression and parse the output as json
|
||||
return json.loads(
|
||||
subprocess.check_output(
|
||||
["nix", "eval", "--impure", "--json", "--expr", nix_expr]
|
||||
)
|
||||
)
|
||||
cmd = nix_eval(["--expr", nix_expr])
|
||||
proc = subprocess.run(cmd, stdout=subprocess.PIPE, check=True)
|
||||
return json.loads(proc.stdout)
|
||||
|
||||
|
||||
def subtype_from_schema(schema: dict[str, Any]) -> Type:
|
||||
|
||||
@@ -5,7 +5,7 @@ import subprocess
|
||||
from typing import Optional
|
||||
|
||||
from ..dirs import get_clan_flake_toplevel
|
||||
from ..nix import nix_eval
|
||||
from ..nix import nix_command, nix_eval
|
||||
from ..secrets.generate import generate_secrets
|
||||
from ..secrets.upload import upload_secrets
|
||||
from ..ssh import Host, HostGroup, HostKeyCheck
|
||||
@@ -22,7 +22,7 @@ def deploy_nixos(hosts: HostGroup) -> None:
|
||||
env = os.environ.copy()
|
||||
env["NIX_SSHOPTS"] = ssh_arg
|
||||
res = h.run_local(
|
||||
["nix", "flake", "archive", "--to", f"ssh://{target}", "--json"],
|
||||
nix_command(["flake", "archive", "--to", f"ssh://{target}", "--json"]),
|
||||
check=True,
|
||||
stdout=subprocess.PIPE,
|
||||
extra_env=env,
|
||||
|
||||
@@ -4,28 +4,35 @@ import tempfile
|
||||
from .dirs import nixpkgs_flake, nixpkgs_source, unfree_nixpkgs
|
||||
|
||||
|
||||
def nix_command(flags: list[str]) -> list[str]:
|
||||
return ["nix", "--experimental-features", "nix-command flakes"] + flags
|
||||
|
||||
|
||||
def nix_build(
|
||||
flags: list[str],
|
||||
) -> list[str]:
|
||||
return [
|
||||
"nix",
|
||||
"build",
|
||||
"--no-link",
|
||||
"--print-out-paths",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
] + flags
|
||||
return (
|
||||
nix_command(
|
||||
[
|
||||
"build",
|
||||
"--no-link",
|
||||
"--print-out-paths",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
]
|
||||
)
|
||||
+ flags
|
||||
)
|
||||
|
||||
|
||||
def nix_eval(flags: list[str]) -> list[str]:
|
||||
default_flags = [
|
||||
"nix",
|
||||
"eval",
|
||||
"--show-trace",
|
||||
"--json",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
]
|
||||
default_flags = nix_command(
|
||||
[
|
||||
"eval",
|
||||
"--show-trace",
|
||||
"--json",
|
||||
]
|
||||
)
|
||||
if os.environ.get("IN_NIX_SANDBOX"):
|
||||
with tempfile.TemporaryDirectory() as nix_store:
|
||||
return (
|
||||
@@ -51,14 +58,13 @@ def nix_shell(packages: list[str], cmd: list[str]) -> list[str]:
|
||||
return cmd
|
||||
wrapped_packages = [f"nixpkgs#{p}" for p in packages]
|
||||
return (
|
||||
[
|
||||
"nix",
|
||||
"shell",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
"--inputs-from",
|
||||
f"{str(nixpkgs_flake())}",
|
||||
]
|
||||
nix_command(
|
||||
[
|
||||
"shell",
|
||||
"--inputs-from",
|
||||
f"{str(nixpkgs_flake())}",
|
||||
]
|
||||
)
|
||||
+ wrapped_packages
|
||||
+ ["-c"]
|
||||
+ cmd
|
||||
@@ -69,14 +75,13 @@ def unfree_nix_shell(packages: list[str], cmd: list[str]) -> list[str]:
|
||||
if os.environ.get("IN_NIX_SANDBOX"):
|
||||
return cmd
|
||||
return (
|
||||
[
|
||||
"nix",
|
||||
"shell",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
"-f",
|
||||
str(unfree_nixpkgs()),
|
||||
]
|
||||
nix_command(
|
||||
[
|
||||
"shell",
|
||||
"-f",
|
||||
str(unfree_nixpkgs()),
|
||||
]
|
||||
)
|
||||
+ packages
|
||||
+ ["-c"]
|
||||
+ cmd
|
||||
|
||||
@@ -30,9 +30,8 @@ def test_ssh_no_pass(
|
||||
monkeypatch.delenv("IN_NIX_SANDBOX")
|
||||
cmd: list[Union[str, utils.Any]] = [
|
||||
"nix",
|
||||
fp.any(),
|
||||
"shell",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
fp.any(),
|
||||
"-c",
|
||||
"torify",
|
||||
@@ -61,9 +60,8 @@ def test_ssh_with_pass(
|
||||
monkeypatch.delenv("IN_NIX_SANDBOX")
|
||||
cmd: list[Union[str, utils.Any]] = [
|
||||
"nix",
|
||||
fp.any(),
|
||||
"shell",
|
||||
"--extra-experimental-features",
|
||||
"nix-command flakes",
|
||||
fp.any(),
|
||||
"-c",
|
||||
"torify",
|
||||
|
||||
Reference in New Issue
Block a user