use experimental flags everywhere

This commit is contained in:
Jörg Thalheim 2023-09-15 16:22:05 +02:00
parent 447d071ea3
commit a65413c98e
5 changed files with 58 additions and 52 deletions

View File

@ -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",

View File

@ -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:

View File

@ -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,

View File

@ -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

View File

@ -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",