Compare commits
2 Commits
feature/hy
...
742124d8e6
Author | SHA1 | Date | |
---|---|---|---|
742124d8e6 | |||
2e8930cf1d |
22
.github/workflows/flake-health-checks.yml
vendored
22
.github/workflows/flake-health-checks.yml
vendored
@@ -31,3 +31,25 @@ jobs:
|
||||
skip-push: "true"
|
||||
- uses: actions/checkout@v4
|
||||
- run: nix flake check --accept-flake-config
|
||||
- run: nix ./utils/attic-push.bash
|
||||
build-checks:
|
||||
name: "Build nix outputs"
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- uses: DeterminateSystems/nix-installer-action@main
|
||||
- name: Setup Attic cache
|
||||
uses: ryanccn/attic-action@v0
|
||||
with:
|
||||
endpoint: ${{ secrets.ATTIC_ENDPOINT }}
|
||||
cache: ${{ secrets.ATTIC_CACHE }}
|
||||
token: ${{ secrets.ATTIC_TOKEN }}
|
||||
skip-push: "true"
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build all outputs
|
||||
run: nix run git+https://nayeonie.com/ahuston-0/flake-update-diff -- --build .
|
||||
- name: Push to Attic
|
||||
run: nix ./utils/attic-push.bash
|
||||
continue-on-error: true
|
||||
|
3
.github/workflows/nix-fmt.yml
vendored
3
.github/workflows/nix-fmt.yml
vendored
@@ -28,3 +28,6 @@ jobs:
|
||||
skip-push: "true"
|
||||
- uses: actions/checkout@v4
|
||||
- run: nix fmt -- --check .
|
||||
- name: Push to Attic
|
||||
run: nix ./utils/attic-push.bash
|
||||
continue-on-error: true
|
||||
|
30
flake.lock
generated
30
flake.lock
generated
@@ -57,11 +57,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1747040834,
|
||||
"narHash": "sha256-iKQKoNlZmxQq+O2WfImm/jn97g5GZBVW5EZEoCTXZ3I=",
|
||||
"lastModified": 1744174375,
|
||||
"narHash": "sha256-oxI9TLgnQbQ/WL0tIwVSIooLbXq4PW1QUhf5aQmXFgk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e4f52f3ea82ddd3754b467e3fdc0d709685c9a05",
|
||||
"rev": "ef3a956f697525883b77192cbe208233ea0f8f79",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -80,11 +80,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746537231,
|
||||
"narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=",
|
||||
"lastModified": 1742649964,
|
||||
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969",
|
||||
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -106,11 +106,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1744599653,
|
||||
"narHash": "sha256-nysSwVVjG4hKoOjhjvE6U5lIKA8sEr1d1QzEfZsannU=",
|
||||
"lastModified": 1744284767,
|
||||
"narHash": "sha256-f0Z1OqugZjvofIud0Mpr+ySTJwyYR9UO7lSxY8jRd4g=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "build-system-pkgs",
|
||||
"rev": "7dba6dbc73120e15b558754c26024f6c93015dd7",
|
||||
"rev": "38947cfda923e44ce63db057e7772f4a48b7ebbd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -126,11 +126,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746540146,
|
||||
"narHash": "sha256-QxdHGNpbicIrw5t6U3x+ZxeY/7IEJ6lYbvsjXmcxFIM=",
|
||||
"lastModified": 1743438845,
|
||||
"narHash": "sha256-1GSaoubGtvsLRwoYwHjeKYq40tLwvuFFVhGrG8J9Oek=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "pyproject.nix",
|
||||
"rev": "e09c10c24ebb955125fda449939bfba664c467fd",
|
||||
"rev": "8063ec98edc459571d042a640b1c5e334ecfca1e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -174,11 +174,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746649034,
|
||||
"narHash": "sha256-gmv+ZiY3pQnwgI0Gm3Z1tNSux1CnOJ0De+xeDOol1+0=",
|
||||
"lastModified": 1744279763,
|
||||
"narHash": "sha256-0k6eJPWfI56e9WbjNFTKKYoP8YX31gXHOcKz/zeLdBs=",
|
||||
"owner": "pyproject-nix",
|
||||
"repo": "uv2nix",
|
||||
"rev": "fe540e91c26f378c62bf6da365a97e848434d0cd",
|
||||
"rev": "2b0fbb003988891c44b01b3e556f5fac817253ed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@@ -23,9 +23,7 @@ def build_output(path: str, output: str) -> str | None:
|
||||
"""
|
||||
logger.info(f"build {output}")
|
||||
logger.debug(f"outputting to {OUTPUT_DIR}/{output}.nixoutput")
|
||||
out = bash_wrapper(
|
||||
f"nix build {path}#{output} -o {OUTPUT_DIR}/{output}.nixoutput --accept-flake-config"
|
||||
)
|
||||
out = bash_wrapper(f"nix build {path}#{output} -o {OUTPUT_DIR}/{output}.nixoutput --accept-flake-config")
|
||||
logger.debug("output")
|
||||
logger.debug(out[0])
|
||||
logger.debug("error")
|
||||
|
@@ -53,9 +53,7 @@ def get_derivations_from_check(nix_path: str, path_to_flake: str) -> list[str]:
|
||||
:param path_to_flake: path to flake to be checked
|
||||
:returns a list of all valid derivations in the flake
|
||||
"""
|
||||
flake_check = bash_wrapper(
|
||||
f"{nix_path} flake check --verbose --keep-going --accept-flake-config", path=path_to_flake
|
||||
)
|
||||
flake_check = bash_wrapper(f"{nix_path} flake check --verbose --keep-going --accept-flake-config", path=path_to_flake)
|
||||
if flake_check[2] != 0:
|
||||
logger.warning(
|
||||
"nix flake check returned non-zero exit code, collecting all available outputs"
|
||||
@@ -73,9 +71,7 @@ def get_derivations_from_check(nix_path: str, path_to_flake: str) -> list[str]:
|
||||
return derivations
|
||||
|
||||
|
||||
def get_derivations(
|
||||
path_to_flake: str, *, allow_import_from_derivation: False = False
|
||||
) -> list[str]:
|
||||
def get_derivations(path_to_flake: str, *, allow_import_from_derivation: False = False) -> list[str]:
|
||||
"""Gets all derivations present in a flake.
|
||||
|
||||
:param path_to_flake: path to flake to be checked
|
||||
@@ -87,7 +83,7 @@ def get_derivations(
|
||||
if nix_path is None:
|
||||
status_msg = "nix is not available in the PATH, please verify that it is installed"
|
||||
raise RuntimeError(status_msg)
|
||||
cmd = f"{nix_path} flake show --json --accept-flake-config --all-systems"
|
||||
cmd = f"{nix_path} flake show --json --accept-flake-path"
|
||||
cmd += " --allow-import-from-derivation" if allow_import_from_derivation else ""
|
||||
flake_show = bash_wrapper(cmd, path=path_to_flake)
|
||||
if flake_show[2] != 0:
|
||||
|
@@ -99,8 +99,7 @@ def build_or_eval(args: Namespace) -> None:
|
||||
"""
|
||||
flake_path = args.flake_path
|
||||
derivations, hydra_jobs = partition(
|
||||
lambda s: s.startswith("hydraJobs"),
|
||||
get_derivations(flake_path, allow_import_from_derivation=args.allow_import_from_derivation),
|
||||
lambda s: s.startswith("hydraJobs"), get_derivations(flake_path, args["allow-import-from-derivation"])
|
||||
)
|
||||
derivations, hydra_jobs = list(derivations), list(hydra_jobs)
|
||||
logger.info(f"derivations: {list(derivations)}")
|
||||
|
@@ -19,6 +19,7 @@ let
|
||||
|
||||
prs = readJSONFile pulls;
|
||||
refs = readJSONFile branches;
|
||||
repo = "RAD-Development/flake-update-diff";
|
||||
|
||||
# template for creating a job
|
||||
makeJob =
|
||||
@@ -27,7 +28,6 @@ let
|
||||
keepnr ? 3,
|
||||
description,
|
||||
flake,
|
||||
enabled ? 1,
|
||||
}:
|
||||
{
|
||||
inherit
|
||||
@@ -35,39 +35,36 @@ let
|
||||
flake
|
||||
schedulingshares
|
||||
keepnr
|
||||
enabled
|
||||
;
|
||||
enabled = 1;
|
||||
type = 1;
|
||||
hidden = false;
|
||||
checkinterval = 300; # every 5 minutes
|
||||
checkinterval = 300; # every 6 months
|
||||
enableemail = false;
|
||||
emailoverride = "";
|
||||
};
|
||||
|
||||
giteaHost = "ssh://gitea@nayeonie.com:2222";
|
||||
repo = "ahuston-0/flake-update-diff";
|
||||
# # Create a hydra job for a branch
|
||||
# Create a hydra job for a branch
|
||||
jobOfRef =
|
||||
name:
|
||||
{ ref, ... }:
|
||||
if ((builtins.match "^refs/heads/(.*)$" ref) == null) then
|
||||
if (builtins.match "^refs/heads/(.*)$" ref) == null then
|
||||
null
|
||||
else
|
||||
{
|
||||
name = builtins.replaceStrings [ "/" ] [ "-" ] "branch-${name}";
|
||||
value = makeJob {
|
||||
description = "Branch ${name}";
|
||||
flake = "git+${giteaHost}/${repo}?ref=${ref}";
|
||||
flake = "git+ssh://git@github.com/${repo}?ref=${ref}";
|
||||
};
|
||||
};
|
||||
|
||||
# Create a hydra job for a PR
|
||||
jobOfPR = id: info: {
|
||||
name = if info.draft then "draft-${id}" else "pr-${id}";
|
||||
name = "pr-${id}";
|
||||
value = makeJob {
|
||||
description = "PR ${id}: ${info.title}";
|
||||
flake = "git+${giteaHost}/${repo}?ref=${info.head.ref}";
|
||||
enabled = info.state == "open";
|
||||
flake = "git+ssh://git@github.com/${info.head.repo.full_name}?ref=${info.head.ref}";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -77,7 +74,7 @@ let
|
||||
# wrapper function for reading json from file
|
||||
readJSONFile = f: builtins.fromJSON (builtins.readFile f);
|
||||
# remove null values from a set, in-case of branches that don't exist
|
||||
mapFilter = f: l: builtins.filter (x: (x != null)) (map f l);
|
||||
mapFilter = f: l: builtins.filter (x: x != null) (map f l);
|
||||
|
||||
# Create job set from PRs and branches
|
||||
jobs = makeSpec (
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"enabled": 1,
|
||||
"hidden": false,
|
||||
"description": "Flake Update Diff Tool (flupdt)",
|
||||
"description": "Flake update diff tool",
|
||||
"nixexprinput": "nixexpr",
|
||||
"nixexprpath": "hydra/jobsets.nix",
|
||||
"checkinterval": 60,
|
||||
@@ -12,23 +12,23 @@
|
||||
"type": 0,
|
||||
"inputs": {
|
||||
"nixexpr": {
|
||||
"value": "ssh://gitea@nayeonie.com:2222/ahuston-0/flake-update-diff.git main",
|
||||
"value": "https://github.com/RAD-Development/flake-update-diff main",
|
||||
"type": "git",
|
||||
"emailresponsible": false
|
||||
},
|
||||
"nixpkgs": {
|
||||
"value": "https://github.com/NixOS/nixpkgs nixos-unstable",
|
||||
"value": "https://github.com/NixOS/nixpkgs nixos-unstable-small",
|
||||
"type": "git",
|
||||
"emailresponsible": false
|
||||
},
|
||||
"pulls": {
|
||||
"type": "giteapulls",
|
||||
"value": "nayeonie.com ahuston-0 flake-update-diff https",
|
||||
"type": "githubpulls",
|
||||
"value": "RAD-Development flake-update-diff",
|
||||
"emailresponsible": false
|
||||
},
|
||||
"branches": {
|
||||
"type": "gitea_refs",
|
||||
"value": "nayeonie.com ahuston-0 flake-update-diff heads https -",
|
||||
"type": "github_refs",
|
||||
"value": "RAD-Development flake-update-diff heads -",
|
||||
"emailresponsible": false
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user