From e3e77483820d139ee144bec4103333125a2a3d1b Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 20 Oct 2024 15:37:25 -0400 Subject: [PATCH 01/12] build(nix): create variant launch files --- all_seaing_bringup/launch/vehicle-nix-test.py | 133 +++++++++++++++++ all_seaing_bringup/launch/vehicle-nix.py | 140 ++++++++++++++++++ all_seaing_bringup/launch/vehicle-non-nix.py | 73 +++++++++ 3 files changed, 346 insertions(+) create mode 100644 all_seaing_bringup/launch/vehicle-nix-test.py create mode 100644 all_seaing_bringup/launch/vehicle-nix.py create mode 100644 all_seaing_bringup/launch/vehicle-non-nix.py diff --git a/all_seaing_bringup/launch/vehicle-nix-test.py b/all_seaing_bringup/launch/vehicle-nix-test.py new file mode 100644 index 00000000..2630ad2e --- /dev/null +++ b/all_seaing_bringup/launch/vehicle-nix-test.py @@ -0,0 +1,133 @@ +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +import launch_ros +import os +import yaml + + +def launch_setup(context, *args, **kwargs): + + bringup_prefix = get_package_share_directory("all_seaing_bringup") + driver_prefix = get_package_share_directory("all_seaing_driver") + + robot_localization_params = os.path.join( + bringup_prefix, "config", "localization", "localize_real.yaml" + ) + locations_file = os.path.join( + bringup_prefix, "config", "localization", "locations.yaml" + ) + + location = context.perform_substitution(LaunchConfiguration("location")) + + ekf_node = launch_ros.actions.Node( + package="robot_localization", + executable="ekf_node", + parameters=[robot_localization_params], + ) + + with open(locations_file, 'r') as f: + locations = yaml.safe_load(f) + lat = locations[location]["lat"] + lon = locations[location]["lon"] + navsat_node = launch_ros.actions.Node( + package="robot_localization", + executable="navsat_transform_node", + remappings=[("gps/fix", "/mavros/global_position/raw/fix")], + parameters=[ + robot_localization_params, + {"datum": [lat, lon, 0.0]}, + ], + ) + + controller_node = launch_ros.actions.Node( + package="all_seaing_controller", + executable="xdrive_controller.py", + parameters=[ + { + "front_right_xy": [0.5, -0.5], + "back_left_xy": [-0.5, 0.5], + "front_left_xy": [0.5, 0.5], + "back_right_xy": [-0.5, -0.5], + "thruster_angle": 45.0, + "drag_constants": [5.0, 5.0, 40.0], + "output_range": [1100.0, 1900.0], + "smoothing_factor": 0.8, + } + ], + ) + + thrust_commander_node = launch_ros.actions.Node( + package="all_seaing_driver", + executable="thrust_commander.py", + parameters=[ + { + "front_right_port": 2, + "front_left_port": 3, + "back_right_port": 4, + "back_left_port": 5, + } + ], + ) + + control_mux = launch_ros.actions.Node( + package="all_seaing_controller", + executable="control_mux.py", + ) + + controller_server = launch_ros.actions.Node( + package="all_seaing_controller", + executable="controller_server.py", + parameters=[ + {"global_frame_id": "odom"}, + {"Kpid_x": [1.0, 0.0, 0.0]}, + {"Kpid_y": [1.0, 0.0, 0.0]}, + {"Kpid_theta": [1.0, 0.0, 0.0]}, + {"max_vel": [2.0, 1.0, 0.8]}, + ], + output="screen", + ) + + waypoint_sender = launch_ros.actions.Node( + package="all_seaing_navigation", + executable="waypoint_sender.py", + parameters=[ + {"xy_threshold": 1.0}, + {"theta_threshold": 5.0}, + ], + output="screen", + ) + + mavros_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/mavros.launch.py", + ] + ), + launch_arguments={ + "port": "/dev/ttyACM0", + }.items(), + ) + + return [ + ekf_node, + navsat_node, + control_mux, + controller_node, + controller_server, + waypoint_sender, + thrust_commander_node, + mavros_ld, + ] + + +def generate_launch_description(): + return LaunchDescription( + [ + DeclareLaunchArgument("location", default_value="boathouse"), + OpaqueFunction(function=launch_setup), + ] + ) diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.py new file mode 100644 index 00000000..9924f5ff --- /dev/null +++ b/all_seaing_bringup/launch/vehicle-nix.py @@ -0,0 +1,140 @@ +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +import launch_ros +import os +import yaml + + +def launch_setup(context, *args, **kwargs): + + bringup_prefix = get_package_share_directory("all_seaing_bringup") + driver_prefix = get_package_share_directory("all_seaing_driver") + + robot_localization_params = os.path.join( + bringup_prefix, "config", "localization", "localize_real.yaml" + ) + locations_file = os.path.join( + bringup_prefix, "config", "localization", "locations.yaml" + ) + + location = context.perform_substitution(LaunchConfiguration("location")) + + ekf_node = launch_ros.actions.Node( + package="robot_localization", + executable="ekf_node", + parameters=[robot_localization_params], + ) + + with open(locations_file, 'r') as f: + locations = yaml.safe_load(f) + lat = locations[location]["lat"] + lon = locations[location]["lon"] + navsat_node = launch_ros.actions.Node( + package="robot_localization", + executable="navsat_transform_node", + remappings=[("gps/fix", "/mavros/global_position/raw/fix")], + parameters=[ + robot_localization_params, + {"datum": [lat, lon, 0.0]}, + ], + ) + + controller_node = launch_ros.actions.Node( + package="all_seaing_controller", + executable="xdrive_controller.py", + parameters=[ + { + "front_right_xy": [0.5, -0.5], + "back_left_xy": [-0.5, 0.5], + "front_left_xy": [0.5, 0.5], + "back_right_xy": [-0.5, -0.5], + "thruster_angle": 45.0, + "drag_constants": [5.0, 5.0, 40.0], + "output_range": [1100.0, 1900.0], + "smoothing_factor": 0.8, + } + ], + ) + + thrust_commander_node = launch_ros.actions.Node( + package="all_seaing_driver", + executable="thrust_commander.py", + parameters=[ + { + "front_right_port": 2, + "front_left_port": 3, + "back_right_port": 4, + "back_left_port": 5, + } + ], + ) + + control_mux = launch_ros.actions.Node( + package="all_seaing_controller", + executable="control_mux.py", + ) + + controller_server = launch_ros.actions.Node( + package="all_seaing_controller", + executable="controller_server.py", + parameters=[ + {"global_frame_id": "odom"}, + {"Kpid_x": [1.0, 0.0, 0.0]}, + {"Kpid_y": [1.0, 0.0, 0.0]}, + {"Kpid_theta": [1.0, 0.0, 0.0]}, + {"max_vel": [2.0, 1.0, 0.8]}, + ], + output="screen", + ) + + waypoint_sender = launch_ros.actions.Node( + package="all_seaing_navigation", + executable="waypoint_sender.py", + parameters=[ + {"xy_threshold": 1.0}, + {"theta_threshold": 5.0}, + ], + output="screen", + ) + + rover_lora_controller = launch_ros.actions.Node( + package="all_seaing_driver", + executable="rover_lora_controller.py", + output="screen", + ) + + mavros_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/mavros.launch.py", + ] + ), + launch_arguments={ + "port": "/dev/ttyACM0", + }.items(), + ) + + return [ + ekf_node, + navsat_node, + control_mux, + controller_node, + controller_server, + waypoint_sender, + rover_lora_controller, + thrust_commander_node, + mavros_ld, + ] + + +def generate_launch_description(): + return LaunchDescription( + [ + DeclareLaunchArgument("location", default_value="boathouse"), + OpaqueFunction(function=launch_setup), + ] + ) diff --git a/all_seaing_bringup/launch/vehicle-non-nix.py b/all_seaing_bringup/launch/vehicle-non-nix.py new file mode 100644 index 00000000..708299b7 --- /dev/null +++ b/all_seaing_bringup/launch/vehicle-non-nix.py @@ -0,0 +1,73 @@ +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +import launch_ros +import os +import yaml + + +def launch_setup(context, *args, **kwargs): + + bringup_prefix = get_package_share_directory("all_seaing_bringup") + driver_prefix = get_package_share_directory("all_seaing_driver") + + robot_localization_params = os.path.join( + bringup_prefix, "config", "localization", "localize_real.yaml" + ) + locations_file = os.path.join( + bringup_prefix, "config", "localization", "locations.yaml" + ) + + location = context.perform_substitution(LaunchConfiguration("location")) + + with open(locations_file, 'r') as f: + locations = yaml.safe_load(f) + lat = locations[location]["lat"] + lon = locations[location]["lon"] + + lidar_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/32e_points.launch.py", + ] + ) + ) + + ublox_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/ublox_gps.launch.py", + ] + ), + launch_arguments={ + "port": "/dev/ttyACM1", + }.items(), + ) + + zed_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/zed2i.launch.py", + ] + ) + ) + + return [ + lidar_ld, + ublox_ld, + zed_ld, + ] + + +def generate_launch_description(): + return LaunchDescription( + [ + DeclareLaunchArgument("location", default_value="boathouse"), + OpaqueFunction(function=launch_setup), + ] + ) From 6e3079dd495086e7649ce87d3bd600ecb9f0ea92 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 27 Oct 2024 16:10:18 -0400 Subject: [PATCH 02/12] fix(launch): correct nix files to include rviz renaming --- all_seaing_bringup/launch/vehicle-nix-test.py | 6 +++--- all_seaing_bringup/launch/vehicle-nix.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/all_seaing_bringup/launch/vehicle-nix-test.py b/all_seaing_bringup/launch/vehicle-nix-test.py index 2630ad2e..5ddb71fb 100644 --- a/all_seaing_bringup/launch/vehicle-nix-test.py +++ b/all_seaing_bringup/launch/vehicle-nix-test.py @@ -90,9 +90,9 @@ def launch_setup(context, *args, **kwargs): output="screen", ) - waypoint_sender = launch_ros.actions.Node( + rviz_waypoint_sender = launch_ros.actions.Node( package="all_seaing_navigation", - executable="waypoint_sender.py", + executable="rviz_waypoint_sender.py", parameters=[ {"xy_threshold": 1.0}, {"theta_threshold": 5.0}, @@ -118,7 +118,7 @@ def launch_setup(context, *args, **kwargs): control_mux, controller_node, controller_server, - waypoint_sender, + rviz_waypoint_sender, thrust_commander_node, mavros_ld, ] diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.py index 9924f5ff..11de7715 100644 --- a/all_seaing_bringup/launch/vehicle-nix.py +++ b/all_seaing_bringup/launch/vehicle-nix.py @@ -90,9 +90,9 @@ def launch_setup(context, *args, **kwargs): output="screen", ) - waypoint_sender = launch_ros.actions.Node( + rviz_waypoint_sender = launch_ros.actions.Node( package="all_seaing_navigation", - executable="waypoint_sender.py", + executable="rviz_waypoint_sender.py", parameters=[ {"xy_threshold": 1.0}, {"theta_threshold": 5.0}, @@ -124,7 +124,7 @@ def launch_setup(context, *args, **kwargs): control_mux, controller_node, controller_server, - waypoint_sender, + rviz_waypoint_sender, rover_lora_controller, thrust_commander_node, mavros_ld, From d61a1d2be07334cf6c42865429921d44dd1a181c Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 27 Oct 2024 16:22:40 -0400 Subject: [PATCH 03/12] feat(launch): `lidar_ld` works! --- all_seaing_bringup/launch/vehicle-nix-test.py | 10 ++++++++++ all_seaing_bringup/launch/vehicle-nix.py | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/all_seaing_bringup/launch/vehicle-nix-test.py b/all_seaing_bringup/launch/vehicle-nix-test.py index 5ddb71fb..a55155b8 100644 --- a/all_seaing_bringup/launch/vehicle-nix-test.py +++ b/all_seaing_bringup/launch/vehicle-nix-test.py @@ -100,6 +100,15 @@ def launch_setup(context, *args, **kwargs): output="screen", ) + lidar_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/32e_points.launch.py", + ] + ) + ) + mavros_ld = IncludeLaunchDescription( PythonLaunchDescriptionSource( [ @@ -121,6 +130,7 @@ def launch_setup(context, *args, **kwargs): rviz_waypoint_sender, thrust_commander_node, mavros_ld, + lidar_ld ] diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.py index 11de7715..892d4599 100644 --- a/all_seaing_bringup/launch/vehicle-nix.py +++ b/all_seaing_bringup/launch/vehicle-nix.py @@ -106,6 +106,15 @@ def launch_setup(context, *args, **kwargs): output="screen", ) + lidar_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/32e_points.launch.py", + ] + ) + ) + mavros_ld = IncludeLaunchDescription( PythonLaunchDescriptionSource( [ @@ -127,6 +136,7 @@ def launch_setup(context, *args, **kwargs): rviz_waypoint_sender, rover_lora_controller, thrust_commander_node, + lidar_ld, mavros_ld, ] From e2b2f13c576bf0039c33055f0e717db3ed04a328 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Thu, 14 Nov 2024 20:01:25 -0500 Subject: [PATCH 04/12] fix(pkg): add python-ultralytics --- all_seaing_perception/package.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/all_seaing_perception/package.xml b/all_seaing_perception/package.xml index f3c68671..b9756064 100644 --- a/all_seaing_perception/package.xml +++ b/all_seaing_perception/package.xml @@ -25,6 +25,8 @@ std_msgs visualization_msgs + python-ultralytics + ament_cmake From 47f5125b1edb25fdd5d743e69df75ccc6a88b0eb Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Thu, 14 Nov 2024 20:11:16 -0500 Subject: [PATCH 05/12] feat(nix): more launch files working --- all_seaing_bringup/launch/vehicle-nix.py | 13 ++++++ all_seaing_bringup/launch/vehicle-non-nix.py | 44 +------------------- 2 files changed, 14 insertions(+), 43 deletions(-) diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.py index 892d4599..85ffbb2c 100644 --- a/all_seaing_bringup/launch/vehicle-nix.py +++ b/all_seaing_bringup/launch/vehicle-nix.py @@ -126,6 +126,18 @@ def launch_setup(context, *args, **kwargs): "port": "/dev/ttyACM0", }.items(), ) + + ublox_ld = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + [ + driver_prefix, + "/launch/ublox_gps.launch.py", + ] + ), + launch_arguments={ + "port": "/dev/ttyACM1", + }.items(), + ) return [ ekf_node, @@ -138,6 +150,7 @@ def launch_setup(context, *args, **kwargs): thrust_commander_node, lidar_ld, mavros_ld, + ublox_ld ] diff --git a/all_seaing_bringup/launch/vehicle-non-nix.py b/all_seaing_bringup/launch/vehicle-non-nix.py index 708299b7..574b3a98 100644 --- a/all_seaing_bringup/launch/vehicle-non-nix.py +++ b/all_seaing_bringup/launch/vehicle-non-nix.py @@ -2,52 +2,12 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration -import launch_ros -import os -import yaml def launch_setup(context, *args, **kwargs): - bringup_prefix = get_package_share_directory("all_seaing_bringup") driver_prefix = get_package_share_directory("all_seaing_driver") - robot_localization_params = os.path.join( - bringup_prefix, "config", "localization", "localize_real.yaml" - ) - locations_file = os.path.join( - bringup_prefix, "config", "localization", "locations.yaml" - ) - - location = context.perform_substitution(LaunchConfiguration("location")) - - with open(locations_file, 'r') as f: - locations = yaml.safe_load(f) - lat = locations[location]["lat"] - lon = locations[location]["lon"] - - lidar_ld = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - [ - driver_prefix, - "/launch/32e_points.launch.py", - ] - ) - ) - - ublox_ld = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - [ - driver_prefix, - "/launch/ublox_gps.launch.py", - ] - ), - launch_arguments={ - "port": "/dev/ttyACM1", - }.items(), - ) - zed_ld = IncludeLaunchDescription( PythonLaunchDescriptionSource( [ @@ -58,9 +18,7 @@ def launch_setup(context, *args, **kwargs): ) return [ - lidar_ld, - ublox_ld, - zed_ld, + zed_ld ] From e16e44c8a35bdaa9a0468624e0cc4b2b5fd377fa Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Thu, 14 Nov 2024 20:43:06 -0500 Subject: [PATCH 06/12] fix(pkg): remove unnecessary ublox_ld --- all_seaing_bringup/launch/vehicle-nix.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.py index 85ffbb2c..c49c8b0e 100644 --- a/all_seaing_bringup/launch/vehicle-nix.py +++ b/all_seaing_bringup/launch/vehicle-nix.py @@ -126,18 +126,6 @@ def launch_setup(context, *args, **kwargs): "port": "/dev/ttyACM0", }.items(), ) - - ublox_ld = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - [ - driver_prefix, - "/launch/ublox_gps.launch.py", - ] - ), - launch_arguments={ - "port": "/dev/ttyACM1", - }.items(), - ) return [ ekf_node, @@ -149,8 +137,7 @@ def launch_setup(context, *args, **kwargs): rover_lora_controller, thrust_commander_node, lidar_ld, - mavros_ld, - ublox_ld + mavros_ld ] From 13fe8220df73b03501f9c8f5b06c5414df81c3de Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Thu, 30 Jan 2025 20:01:05 -0500 Subject: [PATCH 07/12] fix: add correct suffix to nix launch files --- .../launch/{vehicle-nix-test.py => vehicle-nix-test.launch.py} | 0 .../launch/{vehicle-nix.py => vehicle-nix.launch.py} | 0 .../launch/{vehicle-non-nix.py => vehicle-non-nix.launch.py} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename all_seaing_bringup/launch/{vehicle-nix-test.py => vehicle-nix-test.launch.py} (100%) rename all_seaing_bringup/launch/{vehicle-nix.py => vehicle-nix.launch.py} (100%) rename all_seaing_bringup/launch/{vehicle-non-nix.py => vehicle-non-nix.launch.py} (100%) diff --git a/all_seaing_bringup/launch/vehicle-nix-test.py b/all_seaing_bringup/launch/vehicle-nix-test.launch.py similarity index 100% rename from all_seaing_bringup/launch/vehicle-nix-test.py rename to all_seaing_bringup/launch/vehicle-nix-test.launch.py diff --git a/all_seaing_bringup/launch/vehicle-nix.py b/all_seaing_bringup/launch/vehicle-nix.launch.py similarity index 100% rename from all_seaing_bringup/launch/vehicle-nix.py rename to all_seaing_bringup/launch/vehicle-nix.launch.py diff --git a/all_seaing_bringup/launch/vehicle-non-nix.py b/all_seaing_bringup/launch/vehicle-non-nix.launch.py similarity index 100% rename from all_seaing_bringup/launch/vehicle-non-nix.py rename to all_seaing_bringup/launch/vehicle-non-nix.launch.py From 9c950dc815cf5072d9ec402f384a9270c31ac9b0 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 2 Feb 2025 17:30:12 -0500 Subject: [PATCH 08/12] chore(git): ignore nix package manifests --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 1464170e..c8774b01 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,7 @@ bag/ # Vim related .swp + +# Nix related +# ignore package.nix in favor of package.xml +package.nix From b973db163443e9bb512a92d98ac45210706803a3 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 2 Feb 2025 17:30:49 -0500 Subject: [PATCH 09/12] build(ci): test whether modules can be built --- .github/workflows/build.yml | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..6bc9ae75 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +name: build-modules +on: + workflow_dispatch: # allows manual triggering + push: + pull_request: + +jobs: + lockfile: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + - name: Setup CI binary cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: Launch Nix development environment and build Nix package manifests + run: cd .. + git clone https://github.com/ArcturusNavigation/arcturus_nix + cd arcturus_nix + chmod +x *.sh + chmod +x ci/*.sh + ci/pull.sh + cp -r ../all_seaing_vehicle dev_ws/src/ + nix develop -i --accept-flake-config --keep HOME --command bash -c "build;" + - name: Build modules and run nodes + run: cd ../arcturus_nix + nix develop -i --accept-flake-config --keep HOME --command bash -c " + ci/run.sh all_seaing_autonomy + ci/run.sh all_seaing_bringup + ci/run.sh all_seaing_common + ci/run.sh all_seaing_controller + ci/run.sh all_seaing_description + ci/run.sh all_seaing_driver + ci/run.sh all_seaing_interfaces + ci/run.sh all_seaing_navigation + ci/run.sh all_seaing_perception + ci/run.sh all_seaing_rviz_plugins + ci/run.sh all_seaing_utility + " From c774425d263bfe02c442da8da9fb9a2b495ed3bc Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 2 Feb 2025 17:34:21 -0500 Subject: [PATCH 10/12] fix(ci): correct builder --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bc9ae75..46a8ca18 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: pull_request: jobs: - lockfile: + build: runs-on: ubuntu-latest steps: - name: Checkout repository @@ -24,7 +24,7 @@ jobs: cp -r ../all_seaing_vehicle dev_ws/src/ nix develop -i --accept-flake-config --keep HOME --command bash -c "build;" - name: Build modules and run nodes - run: cd ../arcturus_nix + run: cd ../arcturus_nix; nix develop -i --accept-flake-config --keep HOME --command bash -c " ci/run.sh all_seaing_autonomy ci/run.sh all_seaing_bringup From d3fc6089f90a573cf85bbab468dd13e1919ecab3 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 2 Feb 2025 17:53:27 -0500 Subject: [PATCH 11/12] fix(ci): add semicolons to separate commands --- .github/workflows/build.yml | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 46a8ca18..e82a489d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,26 +15,26 @@ jobs: - name: Setup CI binary cache uses: DeterminateSystems/magic-nix-cache-action@main - name: Launch Nix development environment and build Nix package manifests - run: cd .. - git clone https://github.com/ArcturusNavigation/arcturus_nix - cd arcturus_nix - chmod +x *.sh - chmod +x ci/*.sh - ci/pull.sh - cp -r ../all_seaing_vehicle dev_ws/src/ - nix develop -i --accept-flake-config --keep HOME --command bash -c "build;" + run: cd ..; + git clone https://github.com/ArcturusNavigation/arcturus_nix; + cd arcturus_nix; + chmod +x *.sh; + chmod +x ci/*.sh; + ci/pull.sh; + cp -r ../all_seaing_vehicle dev_ws/src/; + nix develop -i --accept-flake-config --keep HOME --command bash -c "build;"; - name: Build modules and run nodes run: cd ../arcturus_nix; nix develop -i --accept-flake-config --keep HOME --command bash -c " - ci/run.sh all_seaing_autonomy - ci/run.sh all_seaing_bringup - ci/run.sh all_seaing_common - ci/run.sh all_seaing_controller - ci/run.sh all_seaing_description - ci/run.sh all_seaing_driver - ci/run.sh all_seaing_interfaces - ci/run.sh all_seaing_navigation - ci/run.sh all_seaing_perception - ci/run.sh all_seaing_rviz_plugins - ci/run.sh all_seaing_utility + ci/run.sh all_seaing_autonomy; + ci/run.sh all_seaing_bringup; + ci/run.sh all_seaing_common; + ci/run.sh all_seaing_controller; + ci/run.sh all_seaing_description; + ci/run.sh all_seaing_driver; + ci/run.sh all_seaing_interfaces; + ci/run.sh all_seaing_navigation; + ci/run.sh all_seaing_perception; + ci/run.sh all_seaing_rviz_plugins; + ci/run.sh all_seaing_utility; " From 3427f4ca5b9d73dadb43d45b19623ef3f87f2e41 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Tue, 11 Feb 2025 19:43:20 -0500 Subject: [PATCH 12/12] fix(ci): don't use alias for build command --- .github/workflows/build.yml | 2 +- .pre-commit-config.yaml | 1097 +++++++++++++++++++++++++++++++++++ 2 files changed, 1098 insertions(+), 1 deletion(-) create mode 100644 .pre-commit-config.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e82a489d..05ae7e27 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: chmod +x ci/*.sh; ci/pull.sh; cp -r ../all_seaing_vehicle dev_ws/src/; - nix develop -i --accept-flake-config --keep HOME --command bash -c "build;"; + nix develop -i --accept-flake-config --keep HOME --command bash -c "./build.sh;"; - name: Build modules and run nodes run: cd ../arcturus_nix; nix develop -i --accept-flake-config --keep HOME --command bash -c " diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..74ae61c1 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,1097 @@ +# DO NOT MODIFY +# This file was generated by git-hooks.nix +{ + "default_stages": [ + "pre-commit" + ], + "repos": [ + { + "hooks": [ + { + "always_run": false, + "args": [], + "entry": "/nix/store/5kgv7i5c4m2nb66gdvgyp6dwx26gn573-actionlint-1.7.3/bin/actionlint", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "^.github/workflows/", + "id": "actionlint", + "language": "system", + "name": "actionlint", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "yaml" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/75a424xwjywfbi22jmihpf6n01c7wvqd-bats-with-libraries-1.11.0/bin/bats -p", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "bats", + "language": "system", + "name": "bats", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "shell" + ], + "types_or": [ + "bats", + "bash" + ], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-builtin-literals", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-builtin-literals", + "language": "system", + "name": "check-builtin-literals", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-case-conflict", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-case-conflicts", + "language": "system", + "name": "check-case-conflicts", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-docstring-first", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-docstring-first", + "language": "system", + "name": "check-docstring-above", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-executables-have-shebangs", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-executables-have-shebangs", + "language": "system", + "name": "check-executables-have-shebangs", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit", + "pre-push", + "manual" + ], + "types": [ + "text", + "executable" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-json", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-json", + "language": "system", + "name": "check-json", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "json" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-merge-conflict", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-merge-conflicts", + "language": "system", + "name": "check-merge-conflicts", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-ast", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-python", + "language": "system", + "name": "check-python", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-shebang-scripts-are-executable", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-shebang-scripts-are-executable", + "language": "system", + "name": "check-shebang-scripts-are-executable", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit", + "pre-push", + "manual" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-symlinks", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-symlinks", + "language": "system", + "name": "check-symlinks", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "symlink" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-toml", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-toml", + "language": "system", + "name": "check-toml", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "toml" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-vcs-permalinks", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-vcs-permalinks", + "language": "system", + "name": "check-vcs-permalinks", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-xml", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-xml", + "language": "system", + "name": "check-xml", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "xml" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/check-yaml --multi", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "check-yaml", + "language": "system", + "name": "check-yaml", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "yaml" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/c4vp5xwlr38137nz4378axmrx53iprcz-checkmake-0.2.2/bin/checkmake", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "checkmake", + "language": "system", + "name": "checkmake", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "makefile" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/m10gp15s4yykb801p5y2yja6vsi8d3zy-clang-tools-19.1.1/bin/clang-format -style=file -i", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "clang-format", + "language": "system", + "name": "clang-format", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [ + "c", + "c++", + "c#", + "cuda", + "java", + "javascript", + "json", + "objective-c", + "proto" + ], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/m10gp15s4yykb801p5y2yja6vsi8d3zy-clang-tools-19.1.1/bin/clang-tidy --fix", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "clang-tidy", + "language": "system", + "name": "clang-tidy", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [ + "c", + "c++", + "c#", + "objective-c" + ], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/zlpxba0ak7rnx1y08xk4sdfx7cj14g05-cmake-format-0.6.13/bin/cmake-format --check ", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.cmake$|CMakeLists.txt", + "id": "cmake-format", + "language": "system", + "name": "cmake-format", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/k99hw9kchph0ssyndvqkcq3fwwnjgwsx-python3.12-commitizen-3.30.0/bin/cz check --allow-abort --commit-msg-file", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "commitizen", + "language": "system", + "name": "commitizen check", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "commit-msg" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/9s0qd3xlb8la3pnsym6qdq1dk6lmjzc5-deadnix-1.2.1/bin/deadnix --fail", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.nix$", + "id": "deadnix", + "language": "system", + "name": "deadnix", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/end-of-file-fixer", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "end-of-file-fixer", + "language": "system", + "name": "end-of-file-fixer", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/fix-byte-order-marker", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "fix-byte-order-marker", + "language": "system", + "name": "fix-byte-order-marker", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/fix-encoding-pragma", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "fix-encoding-pragma", + "language": "system", + "name": "fix-encoding-pragma", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/forbid-new-submodules", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "forbid-new-submodules", + "language": "system", + "name": "forbid-new-submodules", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "directory" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/8119zq9gykvzpcsshl43q3gfmvg1lyvs-hadolint-2.12.0/bin/hadolint", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "Dockerfile$", + "id": "hadolint", + "language": "system", + "name": "hadolint", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/mf0i6ws7a9vd4b37mihawjqhbj23vsnr-headache-stripped/bin/headache -h .header", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "(\\.ml[ily]?$)|(\\.fmli?$)|(\\.[chy]$)|(\\.tex$)|(Makefile)|(README)|(LICENSE)", + "id": "headache", + "language": "system", + "name": "headache", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/qylrvbizjnjqqkg89nvpflzkjagy98fn-python3.12-isort-5.13.2/bin/isort ", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "isort", + "language": "system", + "name": "isort", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file", + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/rsfdr721vkmcfbkb8ws75nyfghxyg3sr-markdownlint-cli-0.42.0/bin/markdownlint -c /nix/store/av4n7qmbh20030zxra404r99jwcg0aln-markdownlint.json", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.md$", + "id": "markdownlint", + "language": "system", + "name": "markdownlint", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/8rig09anr1vl2sc7ryhjb7pm3c9742a6-precommit-mdsh", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.md$", + "id": "mdsh", + "language": "system", + "name": "mdsh", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/mixed-line-ending", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "mixed-line-endings", + "language": "system", + "name": "mixed-line-endings", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/ksx2k09xxnpid0rvnsds7ka7zfwp8g8h-python3.12-mypy-1.11.2/bin/mypy", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.py$", + "id": "mypy", + "language": "system", + "name": "mypy", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/tests_should_end_in_test.py", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "(^|/)tests/.+\\.py$", + "id": "name-tests-test", + "language": "system", + "name": "mypy", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/rkgj11yr9y25m10jzwj7ixdn6h1w3p1z-precommit-nil", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.nix$", + "id": "nil", + "language": "system", + "name": "nil", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/lnpz4yysm5srb6yls9inw281rv981p8q-nixfmt-unstable-2024-08-16/bin/nixfmt ", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.nix$", + "id": "nixfmt-rfc-style", + "language": "system", + "name": "nixfmt-rfc-style", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/vaqkwld0yqj860kbp89fs0x4y6m7y5sw-pyright-1.1.382/bin/pyright", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.py$", + "id": "pyright", + "language": "system", + "name": "pyright", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/debug-statement-hook", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "python-debug-statements", + "language": "system", + "name": "python-debug-statements", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/sa74s7yp8mj78vqygvqn9z57d8w0m2s4-python3.12-pyupgrade-3.15.0/bin/pyupgrade", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "pyupgrade", + "language": "system", + "name": "pyupgrade", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/k1gvqsawi5q0xjyw0izdws1w0vwraj81-python3.12-ruff-0.7.2-bin/bin/ruff check --fix", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "ruff", + "language": "system", + "name": "ruff", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/k1gvqsawi5q0xjyw0izdws1w0vwraj81-python3.12-ruff-0.7.2-bin/bin/ruff format", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "ruff-format", + "language": "system", + "name": "ruff-format", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "python" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/n08cbsh7ns3836dbblby89gxwd1sjwvc-shfmt-3.10.0/bin/shfmt -w -l -s", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "shfmt", + "language": "system", + "name": "shfmt", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "shell" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/requirements-txt-fixer", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.*(requirements|constraints)\\.*\\.txt$", + "id": "sort-requirements-txt", + "language": "system", + "name": "sort-requirements.txt", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/gc7n02slbbxm7ix8x4l1i8lzfr779zza-statix-0.5.8/bin/statix check --format errfmt", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "\\.nix$", + "id": "statix", + "language": "system", + "name": "statix", + "pass_filenames": false, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/p4nig4rqhii5drvgf7x67x2cl2si53z0-tagref-1.10.0/bin/tagref", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "tagref", + "language": "system", + "name": "tagref", + "pass_filenames": false, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wyxj0lg2dkaylqdppybgc4rwisnmshxz-python3.12-pre-commit-hooks-4.6.0/bin/trailing-whitespace-fixer", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "trim-trailing-whitespace", + "language": "system", + "name": "trim-trailing-whitespace", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit", + "pre-push", + "manual" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/wvzmff9axk60csdk1d24rfb08fprg642-precommit-trufflehog", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "trufflehog", + "language": "system", + "name": "trufflehog", + "pass_filenames": false, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/rkna8qxnmwx8yalplxhcwm1lkx0xqjq0-typos-1.26.0/bin/typos ", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "typos", + "language": "system", + "name": "typos", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "text" + ], + "types_or": [], + "verbose": false + }, + { + "always_run": false, + "args": [], + "entry": "/nix/store/7yk80d3f9744cbsrj6qyb42akri9v645-yamlfmt-0.14.0/bin/yamlfmt -lint -quiet", + "exclude": "^$", + "exclude_types": [], + "fail_fast": false, + "files": "", + "id": "yamlfmt", + "language": "system", + "name": "yamlfmt", + "pass_filenames": true, + "require_serial": false, + "stages": [ + "pre-commit" + ], + "types": [ + "file", + "yaml" + ], + "types_or": [], + "verbose": false + } + ], + "repo": "local" + } + ] +}