Initial commit

Signed-off-by: fly <merspieler@alwaysdata.com>
This commit is contained in:
fly 2024-05-31 11:47:34 +00:00
commit 02e1fad297
35 changed files with 1591 additions and 0 deletions

12
.gitignore vendored Normal file
View file

@ -0,0 +1,12 @@
*.swp
*.swo
# .fgfs stuff
fgfs/Aircraft/
fgfs/ai/
fgfs/aircraft-data/
fgfs/autosave_*.xml
fgfs/fgfs*.log
fgfs/fgfs_lock.pid
fgfs/navdata_*.cache
fgfs/FlightGear/

View file

@ -0,0 +1,37 @@
<?xml version="1.0"?>
<PropertyList>
<fadec>
<climb-b type="double">0.49</climb-b>
<climb-t type="double">0.51</climb-t>
<idle-t type="double">0.24</idle-t>
<mct-b type="double">0.72</mct-b>
<mct-t type="double">0.74</mct-t>
<toga-b type="double">0.95</toga-b>
</fadec>
<igniter-select-1 type="int">0</igniter-select-1>
<igniter-select-2 type="int">0</igniter-select-2>
<separate-tiller-axis type="bool">false</separate-tiller-axis>
<auto-ready-for-takeoff type="bool">true</auto-ready-for-takeoff>
<revision type="double">2481</revision>
<keyboard-mode type="double">0</keyboard-mode>
<fgcamera-keys-enabled type="double">0</fgcamera-keys-enabled>
<weight-kgs type="double">1</weight-kgs>
<adirs-skip type="double">0</adirs-skip>
<toggle-tooltips type="double">0</toggle-tooltips>
<allow-oil-consumption type="double">0</allow-oil-consumption>
<atis-server type="string">faa</atis-server>
<wxr-server type="string">noaa</wxr-server>
<welcome-skip type="double">1</welcome-skip>
<no-rendering-warn type="double">0</no-rendering-warn>
<save-state type="double">0</save-state>
<hide-canvas-outside type="double">0</hide-canvas-outside>
<nd-rate type="double">1</nd-rate>
<dcdu-rate type="double">1</dcdu-rate>
<autopush>
<show-route type="double">1</show-route>
<show-wingtip type="double">1</show-wingtip>
</autopush>
<fo-view type="bool">false</fo-view>
<simbrief-username type="string"></simbrief-username>
</PropertyList>

View file

@ -0,0 +1,3 @@
<?xml version="1.0"?>
<waypoints/>

View file

@ -0,0 +1,5 @@
045,008,FL50
-1,-1,
-1,-1,
-1,-1,
-1,-1,

View file

@ -0,0 +1,29 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">FLC Meow Pedestal box</name>
<debug-events type="bool">true</debug-events>
<nasal>
<open>
<![CDATA[
setprop("/FLC/Pedestal/backlight", 0);
var refreshPanels = func(){
setprop('/FLC/Pedestal/backlight', getprop('/controls/lighting/main-panel-norm') * 48000);
}
var lis1 = setlistener('/controls/lighting/main-panel-norm', refreshPanels);
]]>
</open>
</nasal>
<event>
<name>vendor-0</name>
<setting>
<property>/FLC/Pedestal/backlight</property>
</setting>
</event>
<event>
<name>vendor-1</name>
<setting>
<property>/test</property>
</setting>
</event>
</PropertyList>

View file

@ -0,0 +1,127 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">5-Axis,12-Button with POV </name>
<axis>
<desc type="string">Aileron</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/aileron[1]</property>
<factor type="double">1</factor>
<offset type="double">0</offset>
<power type="double">2</power>
</binding>
</axis>
<axis n="1">
<desc type="string">Elevator</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/elevator[1]</property>
<factor type="double">-1</factor>
<offset type="double">0</offset>
<power type="double">2</power>
</binding>
</axis>
<axis n="6">
<desc type="string">View (left/right)</desc>
<low>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/goal-heading-offset-deg</property>
<step type="double">1</step>
</binding>
</low>
<high>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/goal-heading-offset-deg</property>
<step type="double">-1</step>
</binding>
</high>
</axis>
<axis n="7">
<desc type="string">View (up/down)</desc>
<low>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">-1</step>
</binding>
</low>
<high>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">1</step>
</binding>
</high>
</axis>
<button>
<desc type="string">Trigger</desc>
<repeatable type="string">false</repeatable>
<binding>
<command type="string">nasal</command>
<script type="string">controls.trigger(1);</script>
</binding>
<mod-up>
<binding>
<command type="string">nasal</command>
<script type="string">controls.trigger(0);</script>
</binding>
</mod-up>
</button>
<button n="1">
<desc type="string">FGCom PTT</desc>
<repeatable type="string">false</repeatable>
<binding>
<command type="string">nasal</command>
<script type="string">controls.ptt(1);</script>
</binding>
<mod-up>
<binding>
<command type="string">nasal</command>
<script type="string">controls.ptt(0);</script>
</binding>
</mod-up>
</button>
<button n="2">
<desc type="string">Elevator Trim Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.elevatorTrim(-1);</script>
</binding>
<repeatable type="double">1</repeatable>
</button>
<button n="3">
<desc type="string">Custom</desc>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/field-of-view</property>
<step type="double">0.3</step>
<max type="string">179</max>
</binding>
</button>
<button n="4">
<desc type="string">Elevator Trim Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.elevatorTrim(1);</script>
</binding>
<repeatable type="double">1</repeatable>
</button>
<button n="5">
<desc type="string">Custom</desc>
<repeatable type="string">true</repeatable>
<binding>
<command type="string">property-adjust</command>
<property type="string">/sim/current-view/field-of-view</property>
<step type="double">-0.3</step>
<min type="string">1</min>
</binding>
</button>
</PropertyList>

View file

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">FLC Meow Pedestal box</name>
<axis>
<desc type="string">IntegLT</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/lighting/main-panel-knb</property>
<factor type="double">0.5</factor>
<offset type="double">1</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="1">
<desc type="string">FloodTL</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/lighting/main-flood-knb</property>
<factor type="double">0.5</factor>
<offset type="double">1</offset>
<power type="double">1</power>
</binding>
</axis>
<button>
<desc type="string">Ext Power</desc>
<repeatable type="string">false</repeatable>
<binding>
<command type="string">property-toggle</command>
<property>/controls/electrical/switches/ext-pwr</property>
</binding>
</button>
<button n="1">
<desc type="string">ENG Master 1</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/cutoff-switch</property>
<value>0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/cutoff-switch</property>
<value>1</value>
</binding>
</mod-up>
</button>
<button n="2">
<desc type="string">ENG Master 2</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/cutoff-switch</property>
<value>0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/cutoff-switch</property>
<value>1</value>
</binding>
</mod-up>
</button>
</PropertyList>

View file

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">Thrustmaster T-Rudder</name>
<axis>
<desc type="string">Brake Right</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/gear/brake-right</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="1">
<desc type="string">Brake Left</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/gear/brake-left</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="2">
<desc type="string">Rudder</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/rudder</property>
<factor type="double">1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<button>
<desc type="string">Brakes</desc>
<repeatable type="string">false</repeatable>
<binding>
<command type="string">nasal</command>
<script type="string">controls.applyBrakes(1);</script>
</binding>
<mod-up>
<binding>
<command type="string">nasal</command>
<script type="string">controls.applyBrakes(0);</script>
</binding>
</mod-up>
</button>
<button n="1">
<desc type="string">Elevator Trim Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.elevatorTrim(1);</script>
</binding>
<repeatable type="double">1</repeatable>
</button>
<button n="2">
<desc type="string">Elevator Trim Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.elevatorTrim(-1);</script>
</binding>
<repeatable type="double">1</repeatable>
</button>
</PropertyList>

View file

@ -0,0 +1,57 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">Thrustmaster T.A320 Copilot</name>
<axis>
<desc type="string">Aileron</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/aileron</property>
<factor type="double">1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="1">
<desc type="string">Elevator</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/elevator</property>
<factor type="double">-1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<button n="11">
<desc type="string">Flaps Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.flapsDown(1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="12">
<desc type="string">Flaps Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.flapsDown(-1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="13">
<desc type="string">Gear Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.gearDown(-1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="14">
<desc type="string">Gear Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.gearDown(1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
</PropertyList>

View file

@ -0,0 +1,230 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">Thrustmaster T.A320 Pilot</name>
<axis>
<desc type="string">Aileron</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/aileron</property>
<factor type="double">1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="1">
<desc type="string">Elevator</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">/controls/flight/elevator</property>
<factor type="double">-1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="2">
<desc type="string">Tiller</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">controls/gear/steering</property>
<factor type="double">1</factor>
<offset type="double">0</offset>
<power type="double">1</power>
</binding>
</axis>
<axis n="3">
<desc type="string">Speed Brake</desc>
<binding>
<command type="string">property-scale</command>
<property type="string">controls/flight/speedbrake</property>
<factor type="double">0.5</factor>
<offset type="double">1</offset>
</binding>
</axis>
<axis n="4">
<desc type="string">View (horizontal)</desc>
<low>
<binding>
<command type="string">nasal</command>
<script type="string">setprop("/sim/current-view/goal-heading-offset-deg", getprop("/sim/current-view/goal-heading-offset-deg") + 2);</script>
</binding>
<repeatable type="bool">true</repeatable>
</low>
<high>
<binding>
<command type="string">nasal</command>
<script type="string">setprop("/sim/current-view/goal-heading-offset-deg", getprop("/sim/current-view/goal-heading-offset-deg") - 2);</script>
</binding>
<repeatable type="bool">true</repeatable>
</high>
</axis>
<axis n="5">
<desc type="string">View (vertical)</desc>
<low>
<binding>
<command type="string">nasal</command>
<script type="string">setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/current-view/goal-pitch-offset-deg") + 1);</script>
</binding>
<repeatable type="bool">true</repeatable>
</low>
<high>
<binding>
<command type="string">nasal</command>
<script type="string">setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/current-view/goal-pitch-offset-deg") - 1);</script>
</binding>
<repeatable type="bool">true</repeatable>
</high>
</axis>
<button>
<desc type="string">FGCom PTT</desc>
<repeatable type="string">false</repeatable>
<binding>
<command type="string">nasal</command>
<script type="string">controls.ptt(1);</script>
</binding>
<mod-up>
<binding>
<command type="string">nasal</command>
<script type="string">controls.ptt(0);</script>
</binding>
</mod-up>
</button>
<button n="2">
<desc type="string">View Cycle Forwards</desc>
<binding>
<command type="string">nasal</command>
<script type="string">view.stepView(1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="3">
<desc type="string">Custom</desc>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
fcu.FCUController.APDisc(side=1, press=1);
}
</script>
<module type="string">__js3</module>
<offset type="double">1</offset>
</binding>
<mod-up>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
fcu.FCUController.APDisc(side=1, press=0);
}
</script>
<module type="string">__js3</module>
<offset type="double">1</offset>
</binding>
</mod-up>
<repeatable type="double">0</repeatable>
</button>
<button n="4">
<desc type="string">SPD BRK ARM</desc>
<binding>
<command>property-cycle</command>
<property>controls/flight/speedbrake-arm</property>
<value>0</value>
<value>1</value>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="5">
<desc type="string">Flaps Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.flapsDown(1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="6">
<desc type="string">Flaps Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.flapsDown(-1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="7">
<desc type="string">Gear Up</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.gearDown(-1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="8">
<desc type="string">Gear Down</desc>
<binding>
<command type="string">nasal</command>
<script type="string">controls.gearDown(1);</script>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="10">
<desc type="string">Strobe LT</desc>
<binding>
<command type="string">property-toggle</command>
<property>controls/switches/strobe</property>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="12">
<desc type="string">ATC Mode</desc>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
if(getprop("/controls/atc/mode-knob") == 0)
{
setprop("/controls/atc/mode-knob", 4);
atc.transponderPanel.modeSwitch(5);
}
else
{
setprop("/controls/atc/mode-knob", 0);
atc.transponderPanel.modeSwitch(1);
}
}
</script>
</binding>
</button>
<button n="13">
<desc type="string">Nose LT</desc>
<binding>
<command>property-cycle</command>
<property>controls/lighting/taxi-light-switch</property>
<value>0</value>
<value>0.5</value>
<value>1</value>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="14">
<desc type="string">LDG LT</desc>
<binding>
<command type="string">property-toggle</command>
<property>controls/switches/landing-lights-l</property>
</binding>
<binding>
<command type="string">property-toggle</command>
<property>controls/switches/landing-lights-r</property>
</binding>
<repeatable type="double">0</repeatable>
</button>
<button n="15">
<desc type="string">RWY Turnoff LT</desc>
<binding>
<command type="string">property-toggle</command>
<property>controls/lighting/turnoff-light-switch</property>
</binding>
<repeatable type="double">0</repeatable>
</button>
</PropertyList>

View file

@ -0,0 +1,326 @@
<?xml version="1.0"?>
<PropertyList>
<name type="string">Thrustmaster TCA Q-Eng 1&amp;2</name>
<axis>
<desc type="string">Throttle Engine 0</desc>
<!-- Single and dual ENG aircraft -->
<binding>
<!--condition>
<and>
<not-equals>
<property>/sim/aero/</property>
<value>A380_RJ</value>
</not-equals>
<not-equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</not-equals>
<not-equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</not-equals>
</and>
</condition-->
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[0]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<!-- quad ENG aircraft -->
<binding>
<condition>
<or>
<equals>
<property>/sim/aero/</property>
<value>A380</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</equals>
</or>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[0]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<binding>
<condition>
<or>
<equals>
<property>/sim/aero/</property>
<value>A380_RJ</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</equals>
</or>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[1]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<!-- Reverse zone -->
<binding>
<condition>
<equals>
<property>controls/engines/engine[0]/reverse-zone</property>
<value>1</value>
</equals>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[0]/reverse-lever</property>
<factor type="double">2</factor>
<offset type="double">-0.5</offset>
</binding>
</axis>
<axis n="1">
<desc type="string">Throttle Engine 1</desc>
<!-- Single and dual ENG aircraft -->
<binding>
<condition>
<and>
<not-equals>
<property>/sim/aero/</property>
<value>A380_RJ</value>
</not-equals>
<not-equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</not-equals>
<not-equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</not-equals>
</and>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[1]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<!-- quad ENG aircraft -->
<binding>
<condition>
<or>
<equals>
<property>/sim/aero/</property>
<value>A380_RJ</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</equals>
</or>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[2]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<binding>
<condition>
<or>
<equals>
<property>/sim/aero/</property>
<value>A380_RJ</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>MD-11F-GE</value>
</equals>
<equals>
<property>/sim/aero/</property>
<value>Tu-144D-jsbsim/Tu-144D</value>
</equals>
</or>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[3]/throttle</property>
<factor type="double">-0.5</factor>
<offset type="double">-1</offset>
</binding>
<!-- Reverse zone -->
<binding>
<condition>
<equals>
<property>controls/engines/engine[1]/reverse-zone</property>
<value>1</value>
</equals>
</condition>
<command type="string">property-scale</command>
<property type="string">/controls/engines/engine[1]/reverse-lever</property>
<factor type="double">2</factor>
<offset type="double">-0.5</offset>
</binding>
</axis>
<button>
<desc type="string">A/THR Disc</desc>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
fcu.FCUController.ATDisc();
}
</script>
</binding>
</button>
<button n="1">
<desc type="string">A/THR Disc</desc>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
fcu.FCUController.ATDisc();
}
</script>
</binding>
</button>
<button n="2">
<desc type="string">ENG Master 1</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/cutoff-switch</property>
<value>0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/cutoff-switch</property>
<value>1</value>
</binding>
</mod-up>
</button>
<button n="3">
<desc type="string">ENG Master 1</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/cutoff-switch</property>
<value>0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/cutoff-switch</property>
<value>1</value>
</binding>
</mod-up>
</button>
<button n="5">
<desc type="string">APU Start/Stop</desc>
<binding>
<command type="string">nasal</command>
<script type="string">
if (string.match(getprop("/sim/aero"), "A3[123458][0189]*"))
{
if(getprop("/systems/electrical/bus/dc-bat") >= 25)
{
if(getprop("/controls/apu/master") == 0)
{
setprop("/controls/apu/master", 1);
systems.APUController.APU.startCommand();
}
else
{
setprop("/controls/apu/master", 0);
}
}
}
</script>
</binding>
</button>
<button n="6">
<desc type="string">ENG Mode Crank</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/ignition/start-sw</property>
<value>0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/ignition/start-sw</property>
<value>1</value>
</binding>
</mod-up>
</button>
<button n="7">
<desc type="string">ENG Mode Start</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/ignition/start-sw</property>
<value>2</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/ignition/start-sw</property>
<value>1</value>
</binding>
</mod-up>
</button>
<button n="11">
<desc type="string">Rev Engaged</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/reverse-zone</property>
<value>1</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/reverse-zone</property>
<value>0</value>
</binding>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[0]/reverse-lever</property>
<value>0</value>
</binding>
</mod-up>
</button>
<button n="15">
<desc type="string">Rev Engaged</desc>
<repeatable type="string">false</repeatable>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/reverse-zone</property>
<value>1</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/reverse-zone</property>
<value>0</value>
</binding>
<binding>
<command>property-assign</command>
<property>controls/engines/engine[1]/reverse-lever</property>
<value>0</value>
</binding>
</mod-up>
</button>
</PropertyList>

128
nixos/configs/base.nix Normal file
View file

@ -0,0 +1,128 @@
{ config, pkgs, lib, ... }:
{
console = {
font = "Lat2-Terminus16";
keyMap = "de";
};
environment.systemPackages = with pkgs; [
wget
curl
htop
iotop
iftop
ranger
parallel
ncdu
zip
smartmontools
nmap
rsync
progress
perl
acpi
lm_sensors
torsocks
tmux
gnupg1
nix-index
hexedit
gdb
dig
(lib.lowPrio python311)
borgbackup
zip
unzip
p7zip
lsof
pciutils
usbutils
dmidecode
tree
gitui
git-lfs
gitFull
];
services = {
netdata = {
enable = true;
config = {
global = {
"memory mode" = "dbengine";
"page cache size" = "32";
"dbengine multihost disk space" = "4096";
};
ml = {
"enabled" = "no";
};
};
};
openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
Ciphers = [
"chacha20-poly1305@openssh.com"
"aes256-gcm@openssh.com"
"aes256-ctr"
];
KexAlgorithms = [
"sntrup761x25519-sha512@openssh.com"
"curve25519-sha256"
"curve25519-sha256@libssh.org"
];
};
openFirewall = true;
};
cron.enable = true;
fail2ban.enable = true;
# For SSDs
fstrim.enable = lib.mkDefault true;
};
users.users.fly = {
isNormalUser = true;
};
# to fix issue with iotop not showing IO times, see https://github.com/NixOS/nixpkgs/issues/160361#issuecomment-1246433671
boot.kernel.sysctl = { "kernel.task_delayacct" = 1; };
security.sudo.extraConfig = "Cmnd_Alias SHUTDOWN = /run/current-system/sw/bin/shutdown
Cmnd_Alias IOTOP = /run/current-system/sw/bin/iotop
Cmnd_Alias IFTOP = /run/current-system/sw/bin/iftop
Cmnd_Alias RPROF = /run/current-system/sw/bin/radeon-profile
Cmnd_Alias CCTRL = /run/current-system/sw/bin/corectrl
Cmnd_Alias LIGHT = /run/current-system/sw/bin/light
fly ALL=(ALL) NOPASSWD: SHUTDOWN,IOTOP,IFTOP,RPROF,CCTRL,LIGHT";
programs = {
vim.defaultEditor = true;
ssh = {
ciphers = [
"chacha20-poly1305@openssh.com"
"aes256-gcm@openssh.com"
"aes256-ctr"
];
kexAlgorithms = [
"sntrup761x25519-sha512@openssh.com"
"curve25519-sha256"
"curve25519-sha256@libssh.org"
];
};
};
nix.settings = {
experimental-features = [
"flakes"
"nix-command"
];
};
}

View file

@ -0,0 +1,33 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
firefox
arandr
ffmpeg
pavucontrol
vlc
xorg.xbacklight
];
# Enable sound.
sound.enable = true;
hardware.pulseaudio = {
enable = true;
};
services = {
# pipewire = {
# enable = true;
# pulse.enable = true;
# alsa.enable = true;
# wireplumber.enable = true;
# };
# Configure keymap in X11
xserver.layout = "de";
};
networking.networkmanager.enable = true;
users.users.fly.extraGroups = [ "networkmanager" ];
}

View file

@ -0,0 +1,18 @@
{ config, pkgs, ... }:
{
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.windowManager.i3.enable = true;
environment.systemPackages = with pkgs; [
i3blocks
i3lock
playerctl
xkblayout-state
gnome.gnome-terminal
dconf
pango
sysstat # for mpstat
];
}

View file

@ -0,0 +1,13 @@
let
pkgs = import <nixpkgs> {};
openxr-loader = pkgs.openxr-loader;
osgXR = pkgs.callPackage /home/fly/nix/programs/osgXR/default.nix {inherit openxr-loader;};
in pkgs.mkShell {
QT_PLUGIN_PATH = "${pkgs.libsForQt5.qt5.qtbase}/${pkgs.libsForQt5.qt5.qtbase.qtPluginPrefix}";
inputsFrom = [pkgs.flightgear];
packages = with pkgs; [
osgXR
pkgs.openxr-loader
pkgs.libsForQt5.qt5.wrapQtAppsHook
];
}

View file

@ -0,0 +1,17 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs;
let atools = pkgs.libsForQt5.callPackage ../programs/atools/default.nix {};
in [
(pkgs.libsForQt5.callPackage ../programs/littlenavmap/default.nix {inherit atools;})
# (pkgs.libsForQt5.callPackage ../programs/littlefgconnect/default.nix {inherit atools;})
(pkgs.libsForQt5.callPackage ../programs/fgqcanvas/default.nix {})
mangohud
flightgear
];
services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="27dd", MODE="0666"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="27dd", MODE="0666", TAG+="uaccess"
'';
}

27
nixos/flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1716361217,
"narHash": "sha256-mzZDr00WUiUXVm1ujBVv6A0qRd8okaITyUp4ezYRgc4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "46397778ef1f73414b03ed553a3368f0e7e33c2f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

15
nixos/flake.nix Normal file
View file

@ -0,0 +1,15 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
};
outputs = { self, nixpkgs, ... }: {
nixosConfigurations = {
simhost1 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./systems/simhost1/simhost1.nix
];
};
};
};
}

1
nixos/programs/atools/build Executable file
View file

@ -0,0 +1 @@
nix-build -E '(import <nixpkgs> {}).callPackage ./. {}'

View file

@ -0,0 +1,47 @@
{ fetchFromGitHub
, pkg-config
, stdenv
, lib
# Package dependencies
, libsForQt5
}:
stdenv.mkDerivation rec {
pname = "atools";
version = "4.0.6";
src = fetchFromGitHub {
owner = "albar965";
repo = "atools";
rev = "v${version}";
sha256 = "sha256-ieL7cGqXNmGMyTf8tXCSmwQFwyHyy8NwGJ+3Zg92nmM=";
};
dontWrapQtApps = true;
installPhase = ''
runHook preInstall
mkdir -p $out/include
mv libatools.a $out
cp -r * $out/include/
'';
nativeBuildInputs = [
libsForQt5.qmake
pkg-config
libsForQt5.qttools
];
buildInputs = [
libsForQt5.qtwebengine
];
meta = with lib; {
homepage = "https://github.com/albar965/atools";
description = "static library extending Qt for exception handling,
a log4j like logging framework, Flight Simulator related utilities like BGL reader
and more.";
license = licenses.asl20;
platforms = platforms.linux;
maintainers = with maintainers; [ nayala ];
};
}

View file

@ -0,0 +1 @@
/nix/store/58lmazbvfa9638rl0bfdw25yl1v1sn4v-atools-4.0.6

1
nixos/programs/fgqcanvas/build Executable file
View file

@ -0,0 +1 @@
nix-build -E 'let pkgs = import <nixpkgs> {}; in (import <nixpkgs> {}).libsForQt5.callPackage ./. {}'

View file

@ -0,0 +1,57 @@
{ qmake
, wrapQtAppsHook
, fetchgit
, pkg-config
, stdenv
, lib
, pkgs
# Package dependencies
, qttools
, qtwebsockets
}:
stdenv.mkDerivation rec {
pname = "fgqcanvas";
version = "0.1";
src = fetchgit {
url = "https://git.code.sf.net/p/flightgear/flightgear";
rev = "3168828949d6b42959ccee6c202b8895493edb2b";
sha256 = "sha256-QiIMkrzaB/ljVf6c+RJNFWKLZa84cIjYPO5nxEFDqjg=";
};
# patches = [];
nativeBuildInputs = [
wrapQtAppsHook
qmake
pkg-config
qttools
];
buildInputs = [
qtwebsockets
];
configurePhase = ''
cd utils/fgqcanvas/
mkdir -p build
cd build
qmake -makefile ../fgcanvas.pro CONFIG+="release" QMAKE_CXXFLAGS+=' -Wno-deprecated-copy -Wno-deprecated -Wno-deprecated-declarations'
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv fgqcanvas $out/bin/
runHook postInstall
'';
meta = with lib; {
homepage = "https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/utils/fgqcanvas/README.md";
description = "A Qt-based remote canvas application for FlightGear";
# license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [];
};
}

View file

@ -0,0 +1 @@
/nix/store/xqa9csszk2yg9p673wb3pf2s9dcbixla-fgqcanvas-0.1

1
nixos/programs/hidviz/build Executable file
View file

@ -0,0 +1 @@
nix-build -E '(import <nixpkgs> {}).callPackage ./. {}'

View file

@ -0,0 +1,58 @@
{ lib
, fetchFromGitHub
, cmake
, pkg-config
, stdenv
# Package dependencies
, qt6
, libusb1
, protobuf
, asio
}:
stdenv.mkDerivation rec {
pname = "hidviz";
version = "0.2";
src = fetchFromGitHub {
owner = "hidviz";
repo = pname;
rev = "v${version}";
sha256 = "sha256-9crHFYVNNxJjwJojwqB8qdAGyr1Ieux9qC3m3rpIJw0=";
};
#patches = [ ./fix_webkit_webengine.patch ];
dontWrapQtApps = true;
preConfigure = ''
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace '/usr/include/asio' '${lib.getDev asio}/include/asio'
'';
# installPhase = ''
# runHook preInstall
# mkdir -p $out/include
# mv libatools.a $out
# cp -r * $out/include/
# '';
nativeBuildInputs = [
cmake
pkg-config
qt6.qttools
];
buildInputs = [
qt6.qtwebengine
libusb1
protobuf
asio
];
meta = with lib; {
homepage = "https://github.com/hidviz/hidviz";
description = "A GUI application for in-depth analysis of USB HID class devices.";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [];
};
}

View file

@ -0,0 +1 @@
/nix/store/mbp2iaraz2xbb2drd68gsnf9iyxhm05b-hidviz-0.2

View file

@ -0,0 +1 @@
nix-build -E 'let pkgs = import <nixpkgs> {}; atools = pkgs.libsForQt5.callPackage ../atools/default.nix {}; in (import <nixpkgs> {}).libsForQt5.callPackage ./. {inherit atools;}'

View file

@ -0,0 +1,62 @@
{ qmake
, wrapQtAppsHook
, fetchFromGitHub
, pkg-config
, stdenv
, lib
, pkgs
# Package dependencies
, qttools
, atools
}:
stdenv.mkDerivation rec {
pname = "littlefgconnect";
version = "0.1";
src = fetchFromGitHub {
owner = "slawekmikula";
repo = pname;
rev = "f082b2fc7e2dbe61384dd1e362859f5309500859";
sha256 = "sha256-W7K3aAsmITOmX73z3nDzVPUWzgYf+FwHVpgz9Pwo13E=";
};
patches = [ ./fix-var-name.patch ];
ATOOLS_LIB_PATH = atools;
ATOOLS_INC_PATH = "${atools}/include/src";
nativeBuildInputs = [
wrapQtAppsHook
qmake
pkg-config
qttools
];
buildInputs = [
atools
];
buildPhase = ''
runHook preBuild
mkdir -p build
cd build
qmake ../littlefgconnect.pro CONFIG+="release" QMAKE_CXXFLAGS+=' -Wno-deprecated-copy -Wno-deprecated -Wno-deprecated-declarations'
make -j $(nproc)
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv littlefgconnect $out/bin/
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/slawekmikula/littlefgconnect";
description = "Connector between Littlenavmap and Flightgear";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [];
};
}

View file

@ -0,0 +1,13 @@
diff --git a/src/fgconnect.cpp b/src/fgconnect.cpp
index 0ccf479..2ad6292 100644
--- a/src/fgconnect.cpp
+++ b/src/fgconnect.cpp
@@ -225,7 +225,7 @@ bool XpConnect::fillSimConnectData(QString simData, atools::fs::sc::SimConnectDa
// userAircraft.wingSpanFt
// Set misc flags
- userAircraft.flags = atools::fs::sc::IS_USER | atools::fs::sc::SIM_XPLANE; // FIXME
+ userAircraft.flags = atools::fs::sc::IS_USER | atools::fs::sc::SIM_XPLANE11; // FIXME
if((int)altitudeAboveGroundFt == 0) {
userAircraft.flags |= atools::fs::sc::ON_GROUND;
}

View file

@ -0,0 +1 @@
nix-build -E 'let pkgs = import <nixpkgs> {}; atools = pkgs.callPackage ../atools/default.nix {}; in (import <nixpkgs> {}).libsForQt5.callPackage ./. {inherit atools;}'

View file

@ -0,0 +1,73 @@
{ fetchFromGitHub
, pkg-config
, stdenv
, lib
, pkgs
# Package dependencies
, libsForQt5
, atools
, plasma5Packages
}:
let
customMarble = plasma5Packages.marble.overrideAttrs (old: { src = fetchFromGitHub {
owner = "albar965";
repo = "marble";
rev = "722acf7f8d79023f6c6a761063645a1470bb3935"; # MUST be lnm/1.1 branch
sha256 = "sha256-5GSa+xIQS9EgJXxMFUOA5jTtHJ6Dl4C9yAkFPIOrgo8=";
}; preConfigure = ''
cmakeFlags+=" -DQTONLY=TRUE -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_INHIBIT_SCREENSAVER_PLUGIN=NO -DBUILD_MARBLE_APPS=NO -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_MARBLE_TESTS=NO -DBUILD_MARBLE_TOOLS=NO -DBUILD_TESTING=NO -DBUILD_WITH_DBUS=NO -DMARBLE_EMPTY_MAPTHEME=YES -DMOBILE=NO -DWITH_DESIGNER_PLUGIN=NO -DWITH_Phonon=NO -DWITH_Qt5Location=NO -DWITH_Qt5Positioning=NO -DWITH_Qt5SerialPort=NO -DWITH_ZLIB=NO -DWITH_libgps=NO -DWITH_libshp=NO -DWITH_libwlocate=NO -Wno-deprecated-copy -Wno-deprecated -Wno-deprecated-declarations -DINCLUDE_INSTALL_DIR=''${!outputDev}/include"
''; });
in
stdenv.mkDerivation rec {
pname = "littlenavmap";
version = "3.0.6";
src = fetchFromGitHub {
owner = "albar965";
repo = "littlenavmap";
rev = "v${version}";
sha256 = "sha256-u3H2U+8HZD18Yt6UB7QTTQOrrzN03PGolbFYddG8AIc=";
};
ATOOLS_LIB_PATH = atools;
ATOOLS_INC_PATH = "${atools}/include/src";
MARBLE_LIB_PATH = "${customMarble}/lib";
MARBLE_INC_PATH = "${customMarble}/include";
nativeBuildInputs = [
libsForQt5.wrapQtAppsHook
libsForQt5.qmake
pkg-config
libsForQt5.qttools
];
buildInputs = [
libsForQt5.qtwebengine
atools
customMarble
];
buildPhase = ''
runHook preBuild
mkdir -p build
cd build
qmake ../littlenavmap.pro CONFIG+="release" QMAKE_CXXFLAGS+=' -Wno-deprecated-copy -Wno-deprecated -Wno-deprecated-declarations'
make -j $(nproc)
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv littlenavmap customize data help translations plugins $out/bin/
runHook postInstall
'';
meta = with lib; {
homepage = "https://albar965.github.io/index.html";
description = "A free open source flight planner, navigation tool, moving map, airport search and airport information system";
license = licenses.asl20;
platforms = platforms.all;
maintainers = with maintainers; [];
};
}

View file

@ -0,0 +1 @@
/nix/store/57s1iay4mbbnaksqbni6hl76i6x56kj5-littlenavmap-3.0.6

View file

@ -0,0 +1,40 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/d490887c-cae0-4c5c-85b7-0c23b1c115a1";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/12CE-A600";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.virbr0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
../../configs/base.nix
../../configs/desktop-base.nix
../../configs/desktop-i3.nix
../../configs/flightgear.nix
];
environment.systemPackages = with pkgs; [
killall
];
boot.loader.grub.enable = true;
# boot.loader.grub.efiSupport = true;
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
networking.hostName = "simhost1";
system.stateVersion = "23.11"; # Did you read the comment?
}