mirror of
https://github.com/wentasah/ros2nix.git
synced 2025-06-09 15:52:23 +03:00
Allow overriding nix-ros-overlay version
This commit is contained in:
parent
c6b1a2c507
commit
8ca5a871ff
2 changed files with 40 additions and 9 deletions
|
@ -104,8 +104,8 @@ usage: ros2nix [-h]
|
||||||
[--extra-check-inputs DEP1,DEP2,...]
|
[--extra-check-inputs DEP1,DEP2,...]
|
||||||
[--extra-native-build-inputs DEP1,DEP2,...] [--flake]
|
[--extra-native-build-inputs DEP1,DEP2,...] [--flake]
|
||||||
[--default | --no-default] [--overlay | --no-overlay]
|
[--default | --no-default] [--overlay | --no-overlay]
|
||||||
[--nixfmt] [--compare] [--copyright-holder COPYRIGHT_HOLDER]
|
[--nix-ros-overlay FLAKEREF] [--nixfmt] [--compare]
|
||||||
[--license LICENSE]
|
[--copyright-holder COPYRIGHT_HOLDER] [--license LICENSE]
|
||||||
package.xml [package.xml ...]
|
package.xml [package.xml ...]
|
||||||
|
|
||||||
positional arguments:
|
positional arguments:
|
||||||
|
@ -165,6 +165,11 @@ options:
|
||||||
None)
|
None)
|
||||||
--overlay, --no-overlay
|
--overlay, --no-overlay
|
||||||
Generate overlay.nix (default: True)
|
Generate overlay.nix (default: True)
|
||||||
|
--nix-ros-overlay FLAKEREF
|
||||||
|
Flake reference of nix-ros-overlay. You may want to
|
||||||
|
change the branch from master to develop or use your
|
||||||
|
own fork. (default: github:lopsided98/nix-ros-
|
||||||
|
overlay/master)
|
||||||
--nixfmt Format the resulting expressions with nixfmt (default:
|
--nixfmt Format the resulting expressions with nixfmt (default:
|
||||||
False)
|
False)
|
||||||
--compare Don't write any file, but check whether writing the
|
--compare Don't write any file, but check whether writing the
|
||||||
|
|
|
@ -111,17 +111,37 @@ ros_distro_overlays_def = dedent(
|
||||||
).strip()
|
).strip()
|
||||||
|
|
||||||
|
|
||||||
|
def flakeref_to_expr(flakeref) -> str:
|
||||||
|
match flakeref[0]:
|
||||||
|
case '.' | '/':
|
||||||
|
expr = flakeref
|
||||||
|
case _:
|
||||||
|
match re.match("(?P<type>.*?):(?P<owner>.*?)/(?P<repo>.*?)(?:/(?P<ref>.*))?$", flakeref):
|
||||||
|
case None:
|
||||||
|
raise Exception(f'Unsupported flakeref: "{flakeref}"')
|
||||||
|
case parts:
|
||||||
|
match parts.groups():
|
||||||
|
case ('github', owner, repo, None):
|
||||||
|
expr = f'builtins.fetchTarball "https://github.com/{owner}/{repo}/archive/HEAD.tar.gz"'
|
||||||
|
case ('github', owner, repo, branch):
|
||||||
|
expr = f'builtins.fetchTarball "https://github.com/{owner}/{repo}/archive/{branch}.tar.gz"'
|
||||||
|
case _:
|
||||||
|
raise Exception(f'Unsupported flakeref: "{flakeref}"')
|
||||||
|
return expr
|
||||||
|
|
||||||
|
|
||||||
def generate_default(args):
|
def generate_default(args):
|
||||||
|
nix_ros_overlay = flakeref_to_expr(args.nix_ros_overlay)
|
||||||
with file_writer(f'{args.output_dir or "."}/default.nix', args.compare) as f:
|
with file_writer(f'{args.output_dir or "."}/default.nix', args.compare) as f:
|
||||||
f.write('''{
|
f.write(f'''{{
|
||||||
nix-ros-overlay ? builtins.fetchTarball "https://github.com/lopsided98/nix-ros-overlay/archive/master.tar.gz",
|
nix-ros-overlay ? {nix_ros_overlay},
|
||||||
}:
|
}}:
|
||||||
let
|
let
|
||||||
''' + indent(ros_distro_overlays_def, " ") + '''
|
{indent(ros_distro_overlays_def, " ")}
|
||||||
in
|
in
|
||||||
import nix-ros-overlay {
|
import nix-ros-overlay {{
|
||||||
overlays = [ rosDistroOverlays ];
|
overlays = [ rosDistroOverlays ];
|
||||||
}
|
}}
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +150,7 @@ def generate_flake(args):
|
||||||
f.write('''
|
f.write('''
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/master";
|
nix-ros-overlay.url = "''' + args.nix_ros_overlay + '''";
|
||||||
nixpkgs.follows = "nix-ros-overlay/nixpkgs"; # IMPORTANT!!!
|
nixpkgs.follows = "nix-ros-overlay/nixpkgs"; # IMPORTANT!!!
|
||||||
};
|
};
|
||||||
outputs = { self, nix-ros-overlay, nixpkgs }:
|
outputs = { self, nix-ros-overlay, nixpkgs }:
|
||||||
|
@ -266,6 +286,12 @@ def ros2nix(args):
|
||||||
default=True,
|
default=True,
|
||||||
help="Generate overlay.nix",
|
help="Generate overlay.nix",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--nix-ros-overlay",
|
||||||
|
metavar="FLAKEREF",
|
||||||
|
default="github:lopsided98/nix-ros-overlay/master",
|
||||||
|
help="Flake reference of nix-ros-overlay. You may want to change the branch from master to develop or use your own fork.",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--nixfmt",
|
"--nixfmt",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue