├── .gitignore ├── LICENSE ├── README.md ├── assets ├── Griddle.SC2Hotkeys ├── Hotkeys.SC2Hotkeys ├── background.jpg └── ley.toml ├── common ├── bedrock-server │ └── default.nix ├── chromium │ ├── brave.nix │ └── default.nix ├── default.nix ├── deluge │ ├── auth │ └── default.nix ├── fonts │ └── default.nix ├── ftp │ └── default.nix ├── games │ ├── README.md │ ├── default.nix │ ├── diablo │ │ └── default.nix │ ├── doom │ │ └── default.nix │ ├── mangos-classic │ │ └── default.nix │ ├── minecraft │ │ └── default.nix │ ├── misc.nix │ └── xvt.nix ├── git │ └── default.nix ├── graphical │ └── default.nix ├── laptop │ └── default.nix ├── network │ ├── README.md │ ├── bluetooth.nix │ ├── default.nix │ ├── mdns.nix │ ├── wg-quick.nix │ ├── wired.nix │ └── wireless.nix ├── nix-ld │ └── default.nix ├── slade │ └── default.nix ├── ssh │ └── default.nix ├── sunshine │ └── default.nix ├── users │ ├── alacritty │ │ └── default.nix │ ├── bottom │ │ └── default.nix │ ├── default.nix │ ├── dev │ │ ├── default.nix │ │ ├── rust │ │ │ └── default.nix │ │ └── zellij │ │ │ ├── default.nix │ │ │ ├── keybinds.kdl │ │ │ ├── layout.kdl │ │ │ ├── layout.swap.kdl │ │ │ └── themes.kdl │ ├── games │ │ ├── default.nix │ │ ├── doomrl │ │ │ ├── config.lua │ │ │ ├── default.nix │ │ │ └── keybindings.lua │ │ ├── dosbox │ │ │ ├── README.md │ │ │ ├── default.conf │ │ │ ├── default.nix │ │ │ ├── dosbox-staging.conf │ │ │ ├── gauntlet.conf │ │ │ ├── mk1.conf │ │ │ ├── mk1.map │ │ │ ├── mk2.conf │ │ │ ├── mk2.map │ │ │ ├── mk3.conf │ │ │ ├── mk3.map │ │ │ ├── tie.conf │ │ │ └── tie.map │ │ ├── dwarf-fortress │ │ │ └── default.nix │ │ ├── k_lite.verb │ │ └── nethack │ │ │ ├── default.nix │ │ │ └── nethackrc │ ├── gammastep │ │ └── default.nix │ ├── graphical │ │ └── default.nix │ ├── helix │ │ └── default.nix │ ├── nushell │ │ ├── config.nu │ │ ├── default.nix │ │ └── env.nu │ ├── sway │ │ ├── README.md │ │ └── default.nix │ └── themes │ │ ├── README.md │ │ ├── gruvbox │ │ ├── default.nix │ │ ├── gtk-2.0 │ │ └── gtk-3.0 │ │ ├── nord │ │ ├── default.nix │ │ ├── gtk-2.0 │ │ └── gtk-3.0 │ │ └── tokyonight │ │ └── default.nix ├── virt │ ├── default.nix │ └── virst │ │ ├── .gitignore │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── default.nix │ │ └── src │ │ ├── cli.rs │ │ ├── lib.rs │ │ └── main.rs └── waydroid │ ├── README.md │ └── default.nix ├── flake.lock ├── flake.nix ├── hosts ├── README.md ├── antimond │ ├── README.md │ ├── configuration.nix │ ├── hardware-configuration.nix │ └── users │ │ └── zaechus.nix ├── cybros │ ├── README.md │ ├── configuration.nix │ ├── hardware-configuration.nix │ └── users │ │ ├── lizzie.nix │ │ └── zaechus.nix ├── gantrithor │ ├── README.md │ ├── configuration.nix │ ├── hardware-configuration.nix │ └── users │ │ └── zaechus.nix └── telperion │ ├── configuration.nix │ └── hardware-configuration.nix ├── install.sh ├── mnt.sh ├── modules ├── alacritty │ └── default.nix ├── bat │ └── default.nix ├── bottom │ └── default.nix ├── default.nix ├── git │ └── default.nix ├── helix │ └── default.nix ├── nushell │ └── default.nix ├── sway │ └── default.nix ├── theme.nix └── zellij │ └── default.nix ├── pkgs ├── RBDOOM-3-BFG │ ├── README.md │ └── default.nix ├── TheForceEngine │ └── default.nix ├── UltimateDoomBuilder │ └── default.nix ├── adom │ └── default.nix ├── adom1 │ └── default.nix ├── adom2 │ └── default.nix ├── adom3 │ └── default.nix ├── angband │ └── default.nix ├── bin2iso │ └── default.nix ├── default.nix ├── devilutionx │ └── default.nix ├── dosbox-staging │ └── default.nix ├── doukutsu-rs │ └── default.nix ├── ley │ └── default.nix ├── mangos-classic │ └── default.nix ├── rpcs3 │ └── default.nix ├── rustatus │ └── default.nix ├── thorium │ └── default.nix ├── tiny │ └── default.nix ├── xdvdfs-cli │ └── default.nix └── zinfo │ └── default.nix └── setup.sh /.gitignore: -------------------------------------------------------------------------------- 1 | Session.vim 2 | result 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Maxwell Anderson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nixos-config 2 | 3 | [![](https://img.shields.io/badge/OS-NixOS-6e9bcb?logo=NixOS)](https://nixos.org) 4 | 5 | My NixOS configuration 6 | 7 | ## [NixOS Installation](https://nixos.org/download.html#nixos-iso) 8 | ```sh 9 | sudo ./install.sh 10 | sudo nixos-install --flake .# 11 | ``` 12 | 13 | ### Get Without Git 14 | ```sh 15 | curl -OL https://github.com/Zaechus/nixos-config/archive/main.tar.gz 16 | tar xzf main.tar.gz 17 | cd nixos-config-main 18 | ``` 19 | 20 | ### Configuration Setup 21 | ```sh 22 | ./setup.sh $HOST 23 | passwd $USER 24 | ``` 25 | -------------------------------------------------------------------------------- /assets/Griddle.SC2Hotkeys: -------------------------------------------------------------------------------- 1 | [Settings] 2 | Grid=1 3 | Suffix=_GLS 4 | 5 | [Hotkeys] 6 | PTT=0 7 | MenuAchievements= 8 | AlertRecall=Backspace 9 | ArmySelect=H 10 | CameraCenter=Control+C 11 | CommanderAbility2=Control+F 12 | ControlGroupAppend0=Shift+Grave 13 | ControlGroupAppendAndSteal0=Shift+Alt+Grave 14 | ControlGroupAssign0=Control+Grave 15 | ControlGroupAssignAndSteal0=Alt+Grave 16 | ControlGroupRecall0=Grave 17 | HeroSelect0= 18 | HeroSelect1= 19 | HeroSelect2= 20 | HeroSelect3= 21 | HeroSelect4= 22 | HeroSelect5= 23 | IdleWorker=N 24 | TargetChoose=LeftMouseButton,Z,X,C,V,Q,W,E,R,A,S 25 | TownCamera=Space 26 | CommandButtonAlt04= 27 | CommandButtonAlt08= 28 | CommandButtonAlt09= 29 | CameraSave0=Shift+F2 30 | CameraSave1=Shift+F3 31 | CameraSave2=Shift+F4 32 | CameraSave3=Shift+F5 33 | CameraSave4=Shift+F6 34 | CameraSave5=Shift+F7 35 | CameraSave6=Shift+F8 36 | CameraSave7=Shift+F9 37 | CameraView0=F2 38 | CameraView1=F3 39 | CameraView2=F4 40 | CameraView3=F5 41 | CameraView4=F6 42 | CameraView5=F7 43 | CameraView6=F8 44 | CameraView7=F9 45 | 46 | [Commands] 47 | 48 | -------------------------------------------------------------------------------- /assets/Hotkeys.SC2Hotkeys: -------------------------------------------------------------------------------- 1 | [Settings] 2 | 3 | [Hotkeys] 4 | PTT=K 5 | MenuAchievements= 6 | AlertRecall=Backspace 7 | ArmySelect=H 8 | CameraCenter=Control+C 9 | CommanderAbility2= 10 | ControlGroupAppend0=Shift+Grave 11 | ControlGroupAppendAndSteal0=Shift+Alt+Grave 12 | ControlGroupAssign0=Control+Grave 13 | ControlGroupAssignAndSteal0=Alt+Grave 14 | ControlGroupRecall0=Grave 15 | ControlGroupRecall9=CapsLock 16 | IdleWorker=N 17 | TargetChoose=LeftMouseButton,U,Z,R,F,T,V,G 18 | TownCamera=Space 19 | WarpIn=Y 20 | CameraSave0=Shift+F2 21 | CameraSave1=Shift+F3 22 | CameraSave2=Shift+F4 23 | CameraSave3=Shift+F5 24 | CameraSave4=Shift+F6 25 | CameraSave5=Shift+F7 26 | CameraSave6=Shift+F8 27 | CameraSave7=Shift+F9 28 | CameraView0=F2 29 | CameraView1=F3 30 | CameraView2=F4 31 | CameraView3=F5 32 | CameraView4=F6 33 | CameraView5=F7 34 | CameraView6=F8 35 | CameraView7=F9 36 | 37 | [Commands] 38 | AWrp=V 39 | AdeptHallucination/Sentry=E 40 | AdeptPhaseShift/Adept=Z,U 41 | AdeptResearchPiercingUpgrade/TwilightCouncil=E 42 | AmorphousArmorcloud/Infestor=Z 43 | AnionPulseCrystals/FleetBeacon=Q 44 | ArchonHallucination/Sentry=S 45 | ArmorpiercingMode=Z,U 46 | Armory/SCV=S 47 | AssaultMode=X 48 | Assimilator/Probe=W 49 | Attack=T 50 | AutoTurret/Raven=Z,U 51 | Baneling/Zergling=Z 52 | BanelingNest/Drone=F 53 | Banshee/Starport=T 54 | BansheeSpeed/StarportTechLab=E 55 | Barracks/SCV=A 56 | BatteryOvercharge/Nexus=C 57 | Battlecruiser/Starport=A 58 | BlindingCloud/Viper=C,U 59 | Blink/Stalker=Z,U 60 | BroodLord/Corruptor=X 61 | BuildCreepTumor/Queen=Z 62 | BuildCreepTumorPropagate/CreepTumorBurrowed=Z,U 63 | BuildCyclone/Factory=E 64 | BuildTechLabFactory/FactoryFlying=Z 65 | BuildTechLabStarport/StarportFlying=Z 66 | Bunker/SCV=Z 67 | BunkerLoad=C 68 | BunkerUnloadAll=V 69 | BurrowDown=C 70 | BurrowLurkerMP=C 71 | BurrowUp=V 72 | CalldownMULE/OrbitalCommand=Z,U 73 | Cancel=B 74 | Carrier/Stargate=T 75 | CausticSpray/Corruptor=Z,U 76 | ChannelSnipe/Ghost=Z 77 | Charge/Zealot=Z,U 78 | ChronoBoostEnergyCost/Nexus=Z 79 | CloakOff=V 80 | Colossus/RoboticsFacility=R 81 | CommandCenter/SCV=Q 82 | CommandCenterLoad=C 83 | CommandCenterUnloadAll=X 84 | Contaminate/Overseer=V 85 | Corruptor/Larva=D 86 | CyberneticsCore/Probe=D 87 | CycloneResearchLockOnDamageUpgrade/FactoryTechLab=W 88 | DarkShrine/Probe=X 89 | DarkTemplar=G 90 | DarkTemplarBlink/DarkTemplar=Z,U 91 | DisableBuildingAttack/Baneling=X 92 | DisruptorHallucination/Sentry=V 93 | Drone/Larva=Q 94 | EMP/Ghost=X,U 95 | EnableBuildingAttack/Baneling=Z 96 | EngineeringBay/SCV=S 97 | EvolutionChamber/Drone=S 98 | EvolveAnabolicSynthesis2/UltraliskCavern=W 99 | EvolveCentrificalHooks/BanelingNest=Q 100 | EvolveChitinousPlating/UltraliskCavern=Q 101 | EvolveDiggingClaws/LurkerDenMP=Q 102 | EvolveGlialRegeneration/RoachWarren=Q 103 | EvolveGroovedSpines/HydraliskDen=Q 104 | EvolveInfestorEnergyUpgrade/InfestationPit=Q 105 | EvolveMuscularAugments/HydraliskDen=W 106 | EvolveTunnelingClaws/RoachWarren=W 107 | Explode/Baneling=D 108 | ExplosiveMode=X 109 | Extractor/Drone=W 110 | FaceEmbrace/Viper=X 111 | Factory/SCV=A 112 | Feedback/HighTemplar=Z 113 | FighterMode=Z 114 | FleetBeacon/Probe=S 115 | ForceField/Sentry=Z,U 116 | Forge/Probe=S 117 | FungalGrowth/Infestor=X,U 118 | FusionCore/SCV=X 119 | Gateway/Probe=A 120 | GatherProt=A 121 | GenerateCreep/Overlord=X 122 | GenerateCreep/OverlordTransport=X 123 | Ghost/Barracks=R 124 | GhostAcademy/SCV=Q 125 | GhostHoldFire/Ghost=D 126 | GravitonBeam/Phoenix=Z,U 127 | GreaterSpire/Spire=Z 128 | GuardianShield/Sentry=X 129 | Halt=V 130 | Hatchery/Drone=Q 131 | Heal/Medivac=Z 132 | Hellion/Factory=Q 133 | HellionTank/Factory=A 134 | HighTemplar=V 135 | HighTemplarHallucination/Sentry=A 136 | Hive/Lair=Z 137 | Hydralisk/Larva=A 138 | HydraliskDen/Drone=Q 139 | Hyperjump/Battlecruiser=X 140 | Immortal/RoboticsFacility=E 141 | ImmortalHallucination/Sentry=T 142 | InfestationPit/Drone=W 143 | Interceptor/Carrier=Z,U 144 | KD8Charge/Reaper=Z,U 145 | Lair/Hatchery=Z 146 | Land=V 147 | Larva=Q 148 | Liberator/Starport=E 149 | LiberatorAAMode/Liberator=X 150 | LiberatorAGMode/Liberator=Z,U 151 | Lift=V 152 | LockOn/Cyclone=Z,U 153 | LocustMPFlyingSwoop/LocustMPFlying=Z,U 154 | Lower/SupplyDepot=Z 155 | LurkerBurrowUp=V 156 | LurkerMP/Hydralisk=Z,U 157 | Marauder/Barracks=E 158 | Marine/Barracks=Q 159 | MassRecall/Mothership=Z 160 | Medivac/Starport=W 161 | MedivacSpeedBoost/Medivac=X,U 162 | MissileTurret/SCV=X 163 | MorphBackToGateway/WarpGate=J 164 | MorphMorphalisk/Queen=X,U 165 | MorphToHellion/Hellion=Z 166 | MorphToHellionTank/Hellion=X 167 | MorphToOverseer/Overlord=Z 168 | MorphToOverseer/OverlordTransport=Z 169 | MorphtoObserver/Observer=X 170 | MorphtoObserverSiege/Observer=Z 171 | MorphtoOverlordTransport/Overlord=C 172 | MorphtoOverseerNormal/Overseer=X 173 | MorphtoOverseerSiege/Overseer=Z 174 | Mothership/Nexus=W 175 | Move=Q 176 | MoveHoldPosition=E 177 | MovePatrol=R 178 | Mutalisk/Larva=S 179 | MutateintoLurkerDen/Drone=E 180 | NeuralParasite/Infestor=D 181 | Nexus/Probe=Q 182 | NexusMassRecall/Nexus=X 183 | NukeArm/GhostAcademy=Z 184 | NukeCalldown/Ghost=A 185 | NydusNetwork/Drone=S 186 | Observer/RoboticsFacility=Q 187 | Oracle/Stargate=W 188 | OracleAttack=T 189 | OracleBuildStasisTrap/Oracle=X 190 | OracleHallucination/Sentry=X 191 | OracleRevelation/Oracle=Z,U 192 | OracleWeaponOff/Oracle=V 193 | OrbitalCommand/CommandCenter=R 194 | Overlord/Larva=W 195 | ParasiticBomb/Viper=V 196 | PhasingMode/WarpPrism=Z 197 | Phoenix/Stargate=Q 198 | PhoenixHallucination/Sentry=F 199 | PhotonCannon/Probe=X 200 | Probe/Nexus=Q 201 | ProbeHallucination/Sentry=Q 202 | ProtossAirArmorLevel1/CyberneticsCore=W 203 | ProtossAirWeaponsLevel1/CyberneticsCore=Q 204 | ProtossBuild/Probe=Z 205 | ProtossBuildAdvanced/Probe=X 206 | ProtossGroundArmorLevel1/Forge=W 207 | ProtossGroundWeaponsLevel1/Forge=Q 208 | ProtossShieldsLevel1/Forge=E 209 | PsiStorm/HighTemplar=X,U 210 | PurificationNovaTargeted/Disruptor=Z,U 211 | Queen=W 212 | Raise/SupplyDepotLowered=X 213 | Rally=SemiColon 214 | RallyEgg=F 215 | Ravager/Roach=Z,U 216 | RavagerCorrosiveBile/Ravager=Z,U 217 | RavenScramblerMissile/Raven=X 218 | RavenShredderMissile/Raven=C 219 | Reactor/Barracks=X 220 | Reactor/BarracksFlying=X 221 | Reactor/Factory=X 222 | Reactor/FactoryFlying=X 223 | Reactor/Starport=X 224 | Reactor/StarportFlying=X 225 | Reaper/Barracks=W 226 | Refinery/SCV=W 227 | Repair=C 228 | ResearchBallisticRange/FusionCore=E 229 | ResearchBansheeCloak/StarportTechLab=W 230 | ResearchBattlecruiserSpecializations/FusionCore=Q 231 | ResearchBurrow=T 232 | ResearchCharge/TwilightCouncil=Q 233 | ResearchDarkTemplarBlink/DarkShrine=Q 234 | ResearchDrillClaws/FactoryTechLab=E 235 | ResearchEnhancedShockwaves/GhostAcademy=W 236 | ResearchGraviticBooster/RoboticsBay=Q 237 | ResearchGraviticDrive/RoboticsBay=W 238 | ResearchHiSecAutoTracking/EngineeringBay=A 239 | ResearchHighCapacityBarrels/FactoryTechLab=Q 240 | ResearchLurkerRange/LurkerDenMP=W 241 | ResearchNeuralParasite/InfestationPit=W 242 | ResearchPersonalCloaking/GhostAcademy=Q 243 | ResearchPsiStorm/TemplarArchive=Q 244 | ResearchPunisherGrenades/BarracksTechLab=E 245 | ResearchRapidReignitionSystem/FusionCore=W 246 | ResearchRavenEnergyUpgrade/StarportTechLab=Q 247 | ResearchShieldWall/BarracksTechLab=Q 248 | ResearchSmartServos/FactoryTechLab=R 249 | ResearchStalkerTeleport/TwilightCouncil=W 250 | ResearchVoidRaySpeedUpgrade/FleetBeacon=W 251 | ResearchWarpGate/CyberneticsCore=Z 252 | ReturnCargo=S 253 | RoachWarren/Drone=D 254 | RoboticsBay/Probe=D 255 | RoboticsFacility/Probe=E 256 | SCV=Q 257 | Salvage/Bunker=X 258 | SelectBuilder=F 259 | SensorTower/SCV=C 260 | Sentry=R 261 | ShieldBattery/Probe=C 262 | ShieldBatteryRecharge/ShieldBattery=Q 263 | SiegeMode=Z,U 264 | SiegeTank/Factory=R 265 | SpawningPool/Drone=A 266 | SpineCrawler/Drone=Z 267 | SpineCrawlerRoot/SpineCrawlerUprooted=Z 268 | SpineCrawlerUproot/SpineCrawlerUprooted=X 269 | Spire/Drone=A 270 | SporeCrawler/Drone=X 271 | SporeCrawlerRoot/SporeCrawlerUprooted=Z 272 | SporeCrawlerUproot/SporeCrawlerUprooted=X 273 | Spray=L 274 | Stalker=F 275 | StalkerHallucination/Sentry=R 276 | Stargate/Probe=W 277 | Starport/SCV=Z 278 | Stim=Z,U 279 | Stimpack/BarracksTechLab=W 280 | Stop=W 281 | StopGenerateCreep=X 282 | StopPlanetaryFortress/PlanetaryFortress=R 283 | SummonNydusWorm/NydusNetwork=A 284 | SupplyDepot/SCV=E 285 | SwarmHostBurrowDown=C 286 | SwarmHostMP/Larva=G 287 | TechLabBarracks/Barracks=Z 288 | TechLabBarracks/BarracksFlying=Z 289 | TechLabFactory/Factory=Z 290 | TechLabStarport/Starport=Z 291 | Tempest/Stargate=R 292 | TempestResearchGroundAttackUpgrade/FleetBeacon=E 293 | TemplarArchive/Probe=A 294 | TemporalField/Mothership=X,U 295 | TerranBuild/SCV=Z 296 | TerranBuildAdvanced/SCV=X 297 | TerranInfantryArmorLevel1/EngineeringBay=W 298 | TerranInfantryWeaponsLevel1/EngineeringBay=Q 299 | TerranShipWeaponsLevel1/Armory=A 300 | TerranVehicleAndShipPlatingLevel1/Armory=W 301 | TerranVehicleWeaponsLevel1/Armory=Q 302 | Thor/Factory=S 303 | Transfusion/Queen=D 304 | TransportMode/WarpPrism=X 305 | TwilightCouncil/Probe=Q 306 | Ultralisk/Larva=X 307 | UltraliskCavern/Drone=Z 308 | Unsiege=X 309 | UpgradeBuildingArmorLevel1/EngineeringBay=S 310 | UpgradeToPlanetaryFortress/CommandCenter=T 311 | UpgradeToWarpGate/Gateway=Q 312 | VikingFighter/Starport=Q 313 | Viper/Larva=Z 314 | ViperConsume/Viper=Z 315 | VoidRay/Stargate=E 316 | VoidRayHallucination/Sentry=D 317 | VoidRaySwarmDamageBoost/VoidRay=Z,U 318 | VoidSwarmHostSpawnLocust/SwarmHostMP=Z,U 319 | WarpInAdept/Gateway=T 320 | WarpInAdept/WarpGate=T 321 | WarpPrism/RoboticsFacility=W 322 | WarpPrismHallucination/Sentry=Z 323 | WarpinDisruptor/RoboticsFacility=T 324 | WeaponsFree/Ghost=F 325 | WidowMine/Factory=W 326 | WidowMineBurrow/WidowMine=Z 327 | WidowMineUnburrow/WidowMine=X 328 | YamatoGun=Z,U 329 | ZealotHallucination/Sentry=W 330 | ZergBuild/Drone=Z 331 | ZergBuildAdvanced/Drone=X 332 | Zergling/Larva=E 333 | overlordspeed=A 334 | zergflyerarmor1=W 335 | zergflyerattack1=Q 336 | zerggroundarmor1/EvolutionChamber=E 337 | zerglingattackspeed/SpawningPool=W 338 | zerglingmovementspeed/SpawningPool=Q 339 | zergmeleeweapons1/EvolutionChamber=Q 340 | zergmissileweapons1/EvolutionChamber=W 341 | 342 | -------------------------------------------------------------------------------- /assets/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zaechus/nixos-config/23a85ea404ba495d573f927c72531838c5fd19d9/assets/background.jpg -------------------------------------------------------------------------------- /assets/ley.toml: -------------------------------------------------------------------------------- 1 | [albion-online] 2 | pre = "steam-run" 3 | exe = "~/Games/albiononline/Albion-Online" 4 | 5 | [amnesia] 6 | pre = "steam-run" 7 | exe = "~/Games/Amnesia The Dark Descent/start.sh" 8 | 9 | [battlefront-ii] 10 | prefix = "~/Games/star-wars-battlefront-ii" 11 | runner = "wine" 12 | exe = "~/Games/star-wars-battlefront-ii/drive_c/GOG Games/Star Wars - Battlefront 2/SWB2Launcher.exe" 13 | 14 | [battlefront] 15 | prefix = "~/Games/star-wars-battlefront" 16 | runner = "wine" 17 | exe = "~/Games/star-wars-battlefront/drive_c/GOG Games/Star Wars - Battlefront/LaunchBF.exe" 18 | 19 | [caesar3] 20 | prefix = "~/Games/caesar3" 21 | runner = "wine" 22 | exe = "~/Games/caesar3/drive_c/GOG Games/Caesar 3/c3.exe" 23 | res = "1024x768" 24 | scale = "1.40625" 25 | winetricks = [ 26 | "grabfullscreen=y", 27 | "vd=1024x768", 28 | ] 29 | 30 | [cuphead] 31 | prefix = "~/Games/cuphead" 32 | runner = "wine" 33 | exe = "~/Games/cuphead/drive_c/GOG Games/Cuphead/Cuphead.exe" 34 | 35 | [dark-souls] 36 | prefix = "~/Games/dark-souls" 37 | runner = "wine" 38 | exe = "~/Games/dark-souls/drive_c/DarkSouls/DARKSOULS.exe" 39 | winetricks = [ 40 | "d3dx9", 41 | "vd=1024x720", 42 | "~/.config/ley/k_lite.verb" 43 | ] 44 | 45 | [dead-space] 46 | prefix = "~/Games/dead-space" 47 | runner = "wine" 48 | exe = "~/Games/dead-space/drive_c/GOG Games/Dead Space/Dead Space.exe" 49 | 50 | [diablo-hellfire] 51 | dir = "~/.local/share/diasurgical/devilution/hellfire" 52 | runner = "devilutionx" 53 | args = ["--hellfire"] 54 | 55 | [diablo] 56 | dir = "~/.local/share/diasurgical/devilution" 57 | runner = "devilutionx" 58 | 59 | [dishonored] 60 | prefix = "~/Games/dishonored" 61 | runner = "wine" 62 | exe = "~/Games/dishonored/drive_c/GOG Games/Dishonored/Binaries/Win32/Dishonored.exe" 63 | args = ["-nostartupmovies"] 64 | 65 | [doom2016] 66 | prefix = "~/Games/doom-2016" 67 | runner = "wine" 68 | exe = "/home/zaechus/Games/doom-2016/drive_c/GOG Games/DOOM (2016)/DOOMx64vk.exe" 69 | args = ["+com_skipIntroVideo", "1"] 70 | winetricks = [ 71 | "mfc140", 72 | ] 73 | 74 | [doom2] 75 | dir = "~/dosgames/doom2" 76 | runner = "crispy-doom" 77 | 78 | [doom3] 79 | dir = "~/.local/share/dhewm3" 80 | runner = "dhewm3" 81 | 82 | [doom64] 83 | prefix = "~/Games/doom-64" 84 | runner = "wine" 85 | exe = "~/Games/doom-64/drive_c/GOG Games/DOOM 64/DOOM64_x64.exe" 86 | args = ["-skipmovies"] 87 | 88 | [doom] 89 | dir = "~/dosgames/doom" 90 | runner = "crispy-doom" 91 | 92 | [doomrl] 93 | pre = "steam-run" 94 | exe = "~/Games/doomrl-linux-x64-0997/doomrl" 95 | 96 | [empire-earth] 97 | prefix = "~/Games/empire-earth" 98 | arch = "win32" 99 | runner = "wine" 100 | exe = "~/Games/empire-earth/drive_c/GOG Games/Empire Earth Gold/Empire Earth/Empire Earth.exe" 101 | winetricks = [ 102 | "directmusic", 103 | "vd=1920x1080", 104 | ] 105 | 106 | [gog-galaxy] 107 | # https://content-system.gog.com/open_link/download?path=/open/galaxy/client/2.0.73.27/setup_galaxy_2.0.73.27.exe 108 | prefix = "~/Games/gog-galaxy" 109 | wine = "wine-9.20-staging-amd64-wow64" 110 | exe = "~/Games/gog-galaxy/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe" 111 | args = ["/runWithoutUpdating", "/deelevated"] 112 | winetricks = [ 113 | "corefonts", 114 | "mfc140", 115 | "win10", 116 | ] 117 | 118 | [halo] 119 | prefix = "~/Games/halo" 120 | wine = "lutris-GE-Proton8-26-x86_64" 121 | exe = "~/Games/halo/drive_c/Program Files (x86)/Microsoft Games/Halo/halo.exe" 122 | winetricks = [ 123 | "grabfullscreen=y", 124 | "mfc42", 125 | "winxp", 126 | ] 127 | 128 | [heroes-of-the-storm] 129 | env = {WINE_SIMULATE_WRITECOPY=1, STAGING_SHARED_MEMORY=1, __GL_DXVK_OPTIMIZATIONS=1, __GL_SHADER_DISK_CACHE=1} 130 | prefix = "~/Games/heroes-of-the-storm" 131 | runner = "wine" 132 | exe = "~/Games/heroes-of-the-storm/drive_c/Program Files (x86)/Heroes of the Storm/Heroes of the Storm.exe" 133 | winetricks = [ 134 | "arial", 135 | "d3dcompiler_43", 136 | "d3dcompiler_47", 137 | "d3dx11_42", 138 | "d3dx9_42", 139 | "dxvk_nvapi0061", 140 | "grabfullscreen=y", 141 | "ucrtbase2019", 142 | "vd=2560x1600", 143 | "vkd3d", 144 | ] 145 | 146 | [heroes3] 147 | prefix = "~/Games/heroes-of-might-and-magic-3-complete" 148 | runner = "wine" 149 | exe = "~/Games/heroes-of-might-and-magic-3-complete/drive_c/GOG Games/HoMM 3 Complete/Heroes3.exe" 150 | res = "800x600" 151 | 152 | [hollow-knight] 153 | pre = "steam-run" 154 | exe = "~/Games/hollow-knight/start.sh" 155 | 156 | [hotline-miami] 157 | pre = "steam-run" 158 | exe = "~/Games/Hotline Miami/start.sh" 159 | 160 | [ihnm] 161 | dir = "~/Games/i-have-no-mouth-and-i-must-scream" 162 | runner = "scummvm" 163 | args = ["-c", "ihnm.ini", "--themepath=scummvm"] 164 | 165 | [ksp] 166 | pre = "steam-run" 167 | exe = "~/Games/kerbal-space-program/start.sh" 168 | 169 | [lsl1] 170 | dir = "~/Games/Leisure Suit Larry" 171 | runner = "scummvm" 172 | args = ["-c", "lsl1.ini", "--themepath=scummvm"] 173 | 174 | [master] 175 | dir = "~/dosgames/master/wads" 176 | runner = "crispy-doom" 177 | args = ["-iwad", "~/dosgames/doom2/DOOM2.WAD"] 178 | 179 | [noita] 180 | prefix = "~/Games/noita" 181 | runner = "wine" 182 | exe = "~/Games/noita/drive_c/GOG Games/Noita/noita.exe" 183 | 184 | [openttd] 185 | pre = "steam-run" 186 | exe = "~/Games/OpenTTD/start.sh" 187 | 188 | [original-war] 189 | prefix = "~/Games/original-war" 190 | runner = "wine" 191 | exe = "~/Games/original-war/drive_c/GOG Games/Original War/OwarFull.exe" 192 | 193 | [plutonia] 194 | dir = "~/Games/final-doom/Plutonia" 195 | runner = "crispy-doom" 196 | 197 | [quake-enhanced] 198 | prefix = "~/Games/quake-enhanced" 199 | wine = "lutris-GE-Proton8-26-x86_64" 200 | exe = "~/Games/quake-enhanced/drive_c/Quake Enhanced/Quake_Shipping_Playfab_GOG_x64.exe" 201 | args = ["+g_showintromovie", "0"] 202 | 203 | [quake-hipnotic] 204 | dir = "~/dosgames/quake" 205 | runner = "quake" 206 | args = ["-hipnotic"] 207 | 208 | [quake-rogue] 209 | dir = "~/dosgames/quake" 210 | runner = "quake" 211 | args = ["-rogue"] 212 | 213 | [quake] 214 | dir = "~/dosgames/quake" 215 | runner = "quake" 216 | 217 | [rimworld] 218 | pre = "steam-run" 219 | exe = "~/Games/rimworld/start.sh" 220 | 221 | [slay-the-princess] 222 | pre = "steam-run" 223 | exe = "~/Games/Slay the Princess The Pristine Cut/start.sh" 224 | 225 | [starcraft-ii] 226 | prefix = "~/Games/starcraft-ii" 227 | runner = "wine" 228 | exe = "~/Games/starcraft-ii/drive_c/Program Files (x86)/StarCraft II/StarCraft II.exe" 229 | winetricks = [ 230 | "arial", 231 | "grabfullscreen=y", 232 | "tahoma", 233 | "vd=2560x1600", 234 | ] 235 | 236 | [starcraft-remastered] 237 | prefix = "~/Games/starcraft-remastered" 238 | runner = "wine" 239 | exe = "~/Games/starcraft-remastered/drive_c/Program Files (x86)/StarCraft/StarCraft Launcher.exe" 240 | winetricks = [ 241 | "grabfullscreen=y", 242 | ] 243 | 244 | [starcraft] 245 | prefix = "~/Games/starcraft" 246 | wine = "wine-9.20-staging-amd64-wow64" 247 | exe = "~/Games/starcraft/drive_c/Program Files (x86)/Starcraft/StarCraft.exe" 248 | res = "640x480" 249 | scale = "2.25" 250 | # mouse_speed = "-0.55" 251 | winetricks = [ 252 | "grabfullscreen=y", 253 | "vd=640x480", 254 | "winxp", 255 | ] 256 | 257 | [stardew-valley] 258 | pre = "steam-run" 259 | exe = "~/Games/Stardew Valley/start.sh" 260 | 261 | [stronghold] 262 | prefix = "~/Games/stronghold" 263 | runner = "wine" 264 | exe = "~/Games/stronghold/drive_c/GOG Games/Stronghold HD/Stronghold.exe" 265 | winetricks = [ 266 | "directplay", 267 | "vd=1920x1080", 268 | ] 269 | 270 | [swat4] 271 | prefix = "~/Games/swat4" 272 | runner = "wine" 273 | exe = "~/Games/swat4/drive_c/GOG Games/SWAT 4/Content/System/Swat4.exe" 274 | 275 | [swat4x] 276 | prefix = "~/Games/swat4" 277 | runner = "wine" 278 | exe = "~/Games/swat4/drive_c/GOG Games/SWAT 4/ContentExpansion/System/Swat4X.exe" 279 | 280 | [swgb] 281 | prefix = "~/Games/star-wars-galactic-battlegrounds" 282 | runner = "wine" 283 | exe = "~/Games/star-wars-galactic-battlegrounds/drive_c/GOG Games/Star Wars - Galactic Battlegrounds/swgbg.exe" 284 | res = "1280x1024" 285 | scale = "1.054" 286 | winetricks = [ 287 | "directplay", 288 | "grabfullscreen=y", 289 | "vd=1280x1024", 290 | ] 291 | 292 | [terraria] 293 | pre = "steam-run" 294 | exe = "~/Games/Terraria/start.sh" 295 | 296 | [tnt] 297 | dir = "~/Games/final-doom/TNT" 298 | runner = "crispy-doom" 299 | 300 | [vvvvvv] 301 | pre = "steam-run" 302 | exe = "~/Games/VVVVVV/start.sh" 303 | 304 | [wow] 305 | prefix = "~/Games/world-of-warcraft" 306 | runner = "wine" 307 | exe = "~/Games/world-of-warcraft/drive_c/WoW/WoW.exe" 308 | winetricks = [ 309 | "grabfullscreen=y", 310 | ] 311 | 312 | [x-wing-alliance] 313 | prefix = "~/Games/star-wars-x-wing-alliance" 314 | runner = "wine" 315 | exe = "~/Games/star-wars-x-wing-alliance/drive_c/GOG Games/Star Wars - X-Wing Alliance/Alliance.EXE" 316 | esync = false 317 | res = "800x600" 318 | scale = "1.8" 319 | winetricks = [ 320 | "directplay", 321 | "vd=800x600", 322 | "winxp", 323 | ] 324 | 325 | [xvt] 326 | prefix = "~/Games/sw-xvt" 327 | runner = "wine" 328 | exe = "~/Games/sw-xvt/drive_c/GOG Games/Star Wars - XvT/XWINGTIE.EXE" 329 | res = "640x480" 330 | scale = "2.25" 331 | winetricks = [ 332 | "directplay", 333 | "vd=640x480", 334 | "winxp", 335 | ] 336 | -------------------------------------------------------------------------------- /common/bedrock-server/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | # https://www.minecraft.net/en-us/download/server/bedrock 4 | { 5 | systemd.services.bedrock-server = { 6 | after = [ "network.target" ]; 7 | description = "Bedrock Dedicated Server"; 8 | wantedBy = [ "multi-user.target" ]; 9 | environment = { LD_LIBRARY_PATH = "/home/bedrockserver/bedrock-server"; }; 10 | serviceConfig = { 11 | WorkingDirectory = "/home/bedrockserver/bedrock-server"; 12 | ExecStart = "${pkgs.steam-run}/bin/steam-run /home/bedrockserver/bedrock-server/bedrock_server"; # lol 13 | User = "bedrockserver"; 14 | Group = "bedrockserver"; 15 | }; 16 | unitConfig = { 17 | ConditionPathExists = "/home/bedrockserver/bedrock-server"; 18 | }; 19 | }; 20 | 21 | users.users.bedrockserver = { 22 | isSystemUser = true; 23 | group = "bedrockserver"; 24 | home = "/home/bedrockserver"; 25 | homeMode = "770"; 26 | createHome = true; 27 | }; 28 | users.groups.bedrockserver.name = "bedrockserver"; 29 | 30 | networking.firewall.allowedUDPPorts = [ 19132 19133 ]; 31 | } 32 | -------------------------------------------------------------------------------- /common/chromium/brave.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ ../chromium ]; 5 | 6 | environment.systemPackages = with pkgs; [ 7 | brave 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /common/chromium/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.chromium = { 3 | enable = true; 4 | extensions = [ 5 | "eimadpbcbfnmbkopoojfekhnkhdbieeh" # Dark Reader 6 | "nngceckbapebfimnlniiiahkandclblb" # Bitwarden 7 | ]; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /common/default.nix: -------------------------------------------------------------------------------- 1 | { config, pkgs, lib, ... }: 2 | 3 | { 4 | imports = [ 5 | ../modules 6 | ./git 7 | ]; 8 | 9 | boot.consoleLogLevel = 2; 10 | boot.loader = { 11 | timeout = 1; 12 | systemd-boot.editor = false; 13 | }; 14 | boot.tmp = { 15 | useTmpfs = true; 16 | cleanOnBoot = true; 17 | }; 18 | zramSwap = { 19 | enable = true; 20 | algorithm = "zstd"; 21 | }; 22 | 23 | nix = { 24 | extraOptions = '' 25 | experimental-features = nix-command flakes 26 | ''; 27 | settings.auto-optimise-store = true; 28 | gc = { 29 | automatic = true; 30 | dates = "weekly"; 31 | options = "--delete-older-than 32d"; 32 | }; 33 | }; 34 | 35 | nixpkgs.config.allowUnfree = true; 36 | environment.systemPackages = with pkgs; [ 37 | bottom 38 | fd 39 | file 40 | ouch 41 | pciutils 42 | ripgrep 43 | usbutils 44 | 45 | my.zinfo 46 | ]; 47 | environment.defaultPackages = [ pkgs.helix ]; 48 | environment.sessionVariables.EDITOR = "hx"; 49 | 50 | users.defaultUserShell = pkgs.nushell; 51 | environment.shells = [ pkgs.nushell ]; 52 | 53 | environment.localBinInPath = true; 54 | 55 | security.sudo.execWheelOnly = true; 56 | 57 | services.getty = { 58 | greetingLine = "NixOS ${builtins.substring 0 5 config.system.nixos.label} (\\m) - \\l"; 59 | helpLine = lib.mkForce ""; 60 | }; 61 | users.motd = "\nHello, sailor!\n\n"; 62 | 63 | services.nscd.enableNsncd = true; 64 | 65 | console.keyMap = "us"; 66 | console.font = "Lat2-Terminus16"; 67 | console.colors = [ 68 | "282828" 69 | "cc241d" 70 | "98971a" 71 | "d79921" 72 | "458588" 73 | "b16286" 74 | "689d6a" 75 | "a89984" 76 | "928374" 77 | "fb4934" 78 | "b8bb26" 79 | "fabd2f" 80 | "83a598" 81 | "d3869b" 82 | "8ec07c" 83 | "ebdbb2" 84 | ]; 85 | 86 | programs.bat.enable = true; 87 | 88 | environment.shellAliases = { 89 | diff = "diff --color"; 90 | doas = "sudo"; 91 | ip = "ip -c"; 92 | 93 | ls = "ls"; 94 | l = "ls"; 95 | la = "l -a"; 96 | ll = "l -l"; 97 | lal = "l -al"; 98 | 99 | pp = "ping 1.1.1.1"; 100 | x = "xdg-open"; 101 | }; 102 | } 103 | -------------------------------------------------------------------------------- /common/deluge/auth: -------------------------------------------------------------------------------- 1 | localclient:deluge:10 2 | -------------------------------------------------------------------------------- /common/deluge/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.deluge = { 3 | enable = true; 4 | declarative = true; 5 | authFile = ./auth; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /common/fonts/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | fonts = { 5 | packages = with pkgs; [ 6 | dejavu_fonts 7 | fira 8 | fira-code 9 | font-awesome 10 | iosevka 11 | ]; 12 | 13 | fontconfig = { 14 | defaultFonts.monospace = [ "Iosevka Extended" ]; 15 | hinting.enable = false; 16 | subpixel.lcdfilter = "light"; # fix for status bar characters 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /common/ftp/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.vsftpd = { 3 | enable = true; 4 | anonymousUser = true; 5 | extraConfig = '' 6 | pasv_min_port=40000; 7 | pasv_max_port=50000; 8 | ''; 9 | }; 10 | 11 | networking.firewall.allowedTCPPorts = [ 20 21 ]; 12 | networking.firewall.allowedTCPPortRanges = [ 13 | { from = 40000; to = 50000; } 14 | ]; 15 | } 16 | -------------------------------------------------------------------------------- /common/games/README.md: -------------------------------------------------------------------------------- 1 | # Games 2 | 3 | ## Retroarch 4 | 5 | ### N64 6 | `mupen64plus-parallel-rdp-deinterlace-method = "Weave"` is helpful for screenshake. 7 | 8 | ## rpcs3 9 | Try enabling Write Color Buffers 10 | 11 | ## xemu 12 | Try disabling Hard FPU emulation 13 | -------------------------------------------------------------------------------- /common/games/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | innoextract # extract GOG offline installers 6 | my.ley 7 | (retroarch.withCores (cores: with cores; [ 8 | beetle-psx-hw # playstation 9 | # bluemsx # colecovision 10 | # dolphin # gamecube (outdated) 11 | # fbneo # arcade (potentially bugged?) 12 | # freeintv # intellivision 13 | gambatte # game boy / gbc 14 | genesis-plus-gx # genesis 15 | mesen # nes 16 | mgba # gba 17 | mupen64plus # n64 18 | prosystem # atari 7800 19 | snes9x # snes 20 | stella # atari 2600 21 | ])) 22 | wineWowPackages.staging 23 | winetricks 24 | ]; 25 | 26 | programs.steam.enable = true; # includes steam-run for dumb binaries 27 | 28 | # LAN game ports 29 | networking.firewall.allowedUDPPortRanges = [ 30 | { from = 6110; to = 6120; } # blizzard 31 | ]; 32 | 33 | networking.firewall.allowedTCPPorts = [ 34 | 55435 # retroarch netplay 35 | ]; 36 | 37 | environment.sessionVariables = { 38 | SDL_GAMECONTROLLER_IGNORE_DEVICES = "0x32ac/0x0012,0x32ac/0x0014"; # for some reason, the Framework Laptop 16 input modules are detected as evdev joysticks 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /common/games/diablo/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | my.devilutionx # diablo 6 | ]; 7 | 8 | networking.firewall.allowedTCPPorts = [ 6112 ]; 9 | } 10 | -------------------------------------------------------------------------------- /common/games/doom/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | crispyDoom 6 | ]; 7 | 8 | networking.firewall.allowedUDPPorts = [ 2342 ]; 9 | } 10 | -------------------------------------------------------------------------------- /common/games/mangos-classic/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | my.mangos-classic 6 | ]; 7 | 8 | services.mysql = { 9 | enable = true; 10 | package = pkgs.mariadb; 11 | }; 12 | 13 | networking.firewall.allowedTCPPorts = [ 14 | 3724 15 | 8085 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /common/games/minecraft/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: { 2 | environment.systemPackages = with pkgs; [ 3 | prismlauncher 4 | ]; 5 | 6 | networking.firewall.allowedTCPPortRanges = [ 7 | { from = 33097; to = 45923; } 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /common/games/misc.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | # appimage-run # mcpelauncher 6 | bchunk # quake music tracks 7 | # cataclysmDDA.stable.curses # apparently this is separate and doesn't compile... 8 | dhewm3 # doom 3 9 | # dolphin-emu # gamecube 10 | # duckstation # playstation 11 | # ecwolf # wolf3d 12 | ironwail # quake 13 | # minetest 14 | # ppsspp # playstation portable 15 | # my.rpcs3 # ps3 16 | ruffle # flash 17 | # scrcpy # android 18 | # wesnoth 19 | # my.xdvdfs # pack xiso 20 | # xemu # xbox 21 | # zeroad # 0ad 22 | ]; 23 | 24 | networking.firewall.allowedUDPPorts = [ 25 | 7551 # Halo 26 | 7777 # Terraria 27 | 24642 # Stardew Valley 28 | 47584 # Dark Souls 29 | ]; 30 | 31 | networking.firewall.allowedTCPPorts = [ 32 | 7777 # Terraria 33 | 47584 # Dark Souls 34 | ]; 35 | 36 | programs.steam = { 37 | package = (pkgs.steam.override { 38 | extraPkgs = pkgs: with pkgs; [ 39 | openssl_1_1 # for Stardew Valley 40 | ]; 41 | }); 42 | }; 43 | 44 | nixpkgs.config.permittedInsecurePackages = [ 45 | "openssl-1.1.1w" # for inclusion in steam-run 46 | ]; 47 | } 48 | -------------------------------------------------------------------------------- /common/games/xvt.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Star Wars: X-Wing vs. TIE Fighter 3 | 4 | networking.firewall.allowedTCPPorts = [ 5 | 47624 6 | ]; 7 | 8 | networking.firewall.allowedUDPPorts = [ 9 | 6073 10 | ]; 11 | 12 | networking.firewall.allowedTCPPortRanges = [ 13 | { from = 2300; to = 2400; } 14 | ]; 15 | networking.firewall.allowedUDPPortRanges = [ 16 | { from = 2300; to = 2400; } 17 | ]; 18 | } 19 | -------------------------------------------------------------------------------- /common/git/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | programs.git = { 5 | enable = true; 6 | lfs.enable = true; 7 | config = { 8 | core.pager = "${pkgs.delta}/bin/delta"; 9 | delta.line-numbers = true; 10 | init.defaultBranch = "main"; 11 | pull.ff = "only"; 12 | }; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /common/graphical/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ../chromium/brave.nix 6 | ../fonts 7 | ]; 8 | 9 | environment.systemPackages = with pkgs; [ 10 | alsa-utils 11 | imv 12 | mpv 13 | xdg-utils # need this for copy/paste images and other stuff 14 | ]; 15 | 16 | services.udisks2 = { 17 | enable = true; 18 | settings."mount_options.conf" = { 19 | defaults = { 20 | btrfs_defaults = "compress=zstd"; 21 | }; 22 | }; 23 | }; 24 | 25 | # Wayland/Vulkan 26 | hardware.graphics = { 27 | enable = true; 28 | enable32Bit = true; 29 | }; 30 | 31 | xdg = { 32 | # Make things like screen capture work 33 | portal = { 34 | enable = true; 35 | wlr.enable = true; 36 | }; 37 | 38 | mime = { 39 | enable = true; 40 | defaultApplications = { 41 | "image/jpg" = "imv.desktop"; 42 | "image/jpeg" = "imv.desktop"; 43 | "image/png" = "imv.desktop"; 44 | }; 45 | }; 46 | }; 47 | 48 | # Enable sound 49 | security.rtkit.enable = true; 50 | services.pipewire = { 51 | enable = true; 52 | alsa.enable = true; 53 | alsa.support32Bit = true; 54 | pulse.enable = true; 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /common/laptop/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.auto-cpufreq.enable = true; 3 | 4 | services.logind = { 5 | lidSwitch = "suspend"; 6 | lidSwitchExternalPower = "suspend"; 7 | lidSwitchDocked = "ignore"; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /common/network/README.md: -------------------------------------------------------------------------------- 1 | # network 2 | 3 | Check open ports 4 | ```sh 5 | sudo ss -tunlp 6 | ``` 7 | 8 | Check allowed ports: 9 | ```sh 10 | sudo iptables -nL 11 | ``` 12 | 13 | Disable firewall: 14 | ```nix 15 | networking.firewall.enable = false; 16 | ``` 17 | -------------------------------------------------------------------------------- /common/network/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { 2 | hardware.bluetooth = { 3 | enable = true; 4 | settings.General.Experimental = true; # battery level feature 5 | }; 6 | 7 | # fix bluetooth xinput controllers 8 | boot.extraModprobeConfig = '' 9 | options bluetooth disable_ertm=1 10 | ''; 11 | } 12 | -------------------------------------------------------------------------------- /common/network/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./mdns.nix 4 | ]; 5 | 6 | networking = { 7 | useNetworkd = true; 8 | 9 | nameservers = [ 10 | "1.1.1.1" 11 | "1.0.0.1" 12 | "2606:4700:4700::1111" 13 | "2606:4700:4700::1001" 14 | ]; 15 | }; 16 | 17 | services.resolved = { 18 | enable = true; 19 | dnssec = "true"; 20 | dnsovertls = "true"; 21 | }; 22 | 23 | systemd.network = { 24 | enable = true; 25 | wait-online.anyInterface = true; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /common/network/mdns.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.network = { 3 | networks."99-ethernet-default-dhcp" = { 4 | networkConfig = { 5 | MulticastDNS = true; 6 | }; 7 | linkConfig = { 8 | Multicast = true; 9 | }; 10 | }; 11 | 12 | networks."99-wireless-client-dhcp" = { 13 | networkConfig = { 14 | MulticastDNS = true; 15 | }; 16 | linkConfig = { 17 | Multicast = true; 18 | }; 19 | }; 20 | }; 21 | 22 | networking.firewall.allowedUDPPorts = [ 5353 ]; 23 | } 24 | -------------------------------------------------------------------------------- /common/network/wg-quick.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | wireguard-tools 6 | ]; 7 | 8 | # https://github.com/WireGuard/wireguard-tools/blob/master/src/systemd/wg-quick%40.service 9 | systemd.services.wg-quick = { 10 | description = "WireGuard via wg-quick(8) for wg0"; 11 | # wantedBy = [ "multi-user.target" ]; 12 | after = [ "network-online.target" "nss-lookup.target" ]; 13 | wants = [ "network-online.target" "nss-lookup.target" ]; 14 | serviceConfig = { 15 | Type = "oneshot"; 16 | RemainAfterExit = "yes"; 17 | ExecStart = "${pkgs.wireguard-tools}/bin/wg-quick up wg0"; 18 | ExecStartPost = "resolvectl dnsovertls wg0 no"; 19 | ExecStop = "${pkgs.wireguard-tools}/bin/wg-quick down wg0"; 20 | ExecReload = "${pkgs.bash}/bin/bash -c 'exec ${pkgs.wireguard-tools}/bin/wg syncconf wg0 <(exec ${pkgs.wireguard-tools}/bin/wg-quick strip wg0)'"; 21 | Environment = "WG_ENDPOINT_RESOLUTION_RETRIES=infinity"; 22 | }; 23 | unitConfig = { 24 | ConditionPathExists = "/etc/wireguard/wg0.conf"; 25 | }; 26 | }; 27 | 28 | systemd.network.config.networkConfig.ManageForeignRoutingPolicyRules = false; 29 | } 30 | -------------------------------------------------------------------------------- /common/network/wired.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./. 4 | ]; 5 | 6 | systemd.network.networks."99-ethernet-default-dhcp" = { 7 | dhcpV4Config = { 8 | UseDNS = false; 9 | }; 10 | dhcpV6Config = { 11 | UseDNS = false; 12 | }; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /common/network/wireless.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./. 4 | ]; 5 | 6 | networking.wireless.iwd = { 7 | enable = true; 8 | # settings.General.EnableNetworkConfiguration = true; # AP mode 9 | }; 10 | 11 | systemd.network.networks."99-wireless-client-dhcp" = { 12 | dhcpV4Config = { 13 | UseDNS = false; 14 | }; 15 | dhcpV6Config = { 16 | UseDNS = false; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /common/nix-ld/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | programs.nix-ld.enable = true; 5 | 6 | programs.nix-ld.libraries = with pkgs; [ 7 | alsa-lib 8 | at-spi2-atk 9 | at-spi2-core 10 | atk 11 | cairo 12 | cups 13 | curl 14 | dbus 15 | expat 16 | fontconfig 17 | freetype 18 | fuse3 19 | gdk-pixbuf 20 | glib 21 | gtk3 22 | icu 23 | libGL 24 | libappindicator-gtk3 25 | libdrm 26 | libglvnd 27 | libnotify 28 | libpulseaudio 29 | libunwind 30 | libusb1 31 | libuuid 32 | libxkbcommon 33 | mesa 34 | nspr 35 | nss 36 | openssl 37 | pango 38 | pipewire 39 | stdenv.cc.cc 40 | systemd 41 | vulkan-loader 42 | xorg.libX11 43 | xorg.libXScrnSaver 44 | xorg.libXcomposite 45 | xorg.libXcursor 46 | xorg.libXdamage 47 | xorg.libXext 48 | xorg.libXfixes 49 | xorg.libXi 50 | xorg.libXrandr 51 | xorg.libXrender 52 | xorg.libXtst 53 | xorg.libxcb 54 | xorg.libxkbfile 55 | xorg.libxshmfence 56 | zlib 57 | ]; 58 | } 59 | -------------------------------------------------------------------------------- /common/slade/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: { 2 | environment.systemPackages = with pkgs; [ 3 | chocolateDoom 4 | sladeUnstable 5 | zdbsp 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /common/ssh/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.openssh = { 3 | enable = true; 4 | settings = { 5 | PermitRootLogin = "prohibit-password"; 6 | LogLevel = "VERBOSE"; 7 | }; 8 | }; 9 | 10 | services.fail2ban = { 11 | enable = true; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /common/sunshine/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.sunshine = { 3 | enable = true; 4 | autoStart = false; 5 | capSysAdmin = true; 6 | openFirewall = true; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /common/users/alacritty/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | users.users.${username} = { config, ... }: { 5 | programs.alacritty = { 6 | enable = true; 7 | settings = { 8 | cursor.style.shape = "Block"; 9 | colors = { 10 | primary = { 11 | background = config.theme.bg; 12 | foreground = config.theme.fg; 13 | }; 14 | 15 | normal = with config.theme; { 16 | inherit black red green yellow blue magenta cyan white; 17 | }; 18 | 19 | bright = with config.theme.bright; { 20 | inherit black red green yellow blue magenta cyan white; 21 | }; 22 | }; 23 | 24 | font = { 25 | normal = { 26 | family = "Iosevka Extended"; 27 | style = "Term"; 28 | }; 29 | size = 10.0; 30 | }; 31 | }; 32 | }; 33 | 34 | programs.sway.config.terminal = "alacritty msg create-window || alacritty"; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /common/users/bottom/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | users.users.${username}.programs.bottom = { 5 | enable = true; 6 | settings.flags = { 7 | battery = true; 8 | regex = true; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /common/users/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | imports = [ 5 | (import ./bottom { inherit username; }) 6 | (import ./helix { inherit username; }) 7 | (import ./nushell { inherit username; }) 8 | ]; 9 | 10 | users.users.${username} = { 11 | programs.bat.enable = true; 12 | programs.git.enable = true; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /common/users/dev/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | users.users.${username}.packages = with pkgs; [ 5 | nil # Nix LSP 6 | tokei 7 | ]; 8 | 9 | networking.firewall.allowedTCPPorts = [ 7878 ]; 10 | } 11 | -------------------------------------------------------------------------------- /common/users/dev/rust/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | imports = [ (import ../default.nix { inherit username; }) ]; 5 | 6 | users.users.${username} = { 7 | packages = with pkgs; [ 8 | cargo 9 | clang 10 | clippy 11 | # lldb # FIXME 12 | mold 13 | rust-analyzer 14 | rustc 15 | rustfmt 16 | ]; 17 | 18 | files.".cargo/config.toml".text = '' 19 | [target.x86_64-unknown-linux-gnu] 20 | linker = "clang" 21 | rustflags = ["-C", "link-arg=-fuse-ld=${pkgs.mold}/bin/mold"] 22 | 23 | [registries.crates-io] 24 | protocol = "sparse" 25 | ''; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /common/users/dev/zellij/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { config, lib, pkgs, ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | packages = with pkgs; [ zellij ]; 6 | 7 | programs.zellij.settings = { 8 | default_layout = "layout"; 9 | default_shell = lib.mkDefault "nu"; 10 | pane_frames = false; 11 | scrollback_editor = lib.mkDefault "hx"; 12 | simplified_ui = true; 13 | 14 | keybinds = builtins.readFile ./keybinds.kdl; 15 | }; 16 | 17 | files.".config/zellij/layouts/layout.kdl".source = ./layout.kdl; 18 | files.".config/zellij/layouts/layout.swap.kdl".source = ./layout.swap.kdl; 19 | 20 | # TODO 21 | files.".config/zellij/config.kdl".text = with config.users.users.${username}.programs.zellij.settings; '' 22 | show_startup_tips false 23 | default_layout "${default_layout}" 24 | default_shell "${default_shell}" 25 | pane_frames ${if pane_frames then "true" else "false"} 26 | scrollback_editor "${scrollback_editor}" 27 | simplified_ui ${if simplified_ui then "true" else "false"} 28 | 29 | keybinds { 30 | ${builtins.replaceStrings ["\n"] ["\n\t"] (lib.removeSuffix "\n" keybinds)} 31 | } 32 | '' + 33 | (if builtins.hasAttr "theme" config.users.users.${username}.programs.zellij.settings then "\ntheme \"${theme}\"\n\n" else "") + 34 | builtins.readFile ./themes.kdl; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /common/users/dev/zellij/keybinds.kdl: -------------------------------------------------------------------------------- 1 | normal { 2 | unbind "Ctrl h" "Ctrl n" "Ctrl o" "Ctrl p" "Ctrl s" 3 | bind "Ctrl y" { SwitchToMode "Move"; } 4 | bind "Ctrl b" { SwitchToMode "Resize"; } 5 | bind "Ctrl q" { SwitchToMode "Session"; } 6 | bind "Ctrl f" { SwitchToMode "Pane"; } 7 | bind "Ctrl x" { SwitchToMode "Scroll"; } 8 | } 9 | scroll { 10 | bind "i" { SwitchToMode "Normal"; } 11 | } 12 | session { 13 | bind "Ctrl q" { "Detach"; } 14 | bind "x" { "Quit"; } 15 | } 16 | tab { 17 | unbind "Ctrl n" 18 | } 19 | -------------------------------------------------------------------------------- /common/users/dev/zellij/layout.kdl: -------------------------------------------------------------------------------- 1 | layout { 2 | pane size=1 borderless=true { 3 | plugin location="zellij:compact-bar" 4 | } 5 | pane 6 | } 7 | -------------------------------------------------------------------------------- /common/users/dev/zellij/layout.swap.kdl: -------------------------------------------------------------------------------- 1 | // https://github.com/zellij-org/zellij/blob/main/zellij-utils/assets/layouts/compact.swap.kdl 2 | 3 | // the main change is moving `children` under the compact-bar pane 4 | tab_template name="ui" { 5 | pane size=1 borderless=true { 6 | plugin location="zellij:compact-bar" 7 | } 8 | children 9 | } 10 | 11 | // an additional 2x2 layout 12 | swap_tiled_layout name="grid" { 13 | ui exact_panes=5 { 14 | pane split_direction="vertical" { 15 | pane 16 | pane 17 | } 18 | pane split_direction="vertical" { 19 | pane 20 | pane 21 | } 22 | } 23 | } 24 | 25 | // an additional trifold layout 26 | swap_tiled_layout name="tri" { 27 | ui exact_panes=4 split_direction="vertical" { 28 | pane split_direction="vertical" { 29 | pane 30 | pane 31 | pane 32 | } 33 | } 34 | } 35 | 36 | swap_tiled_layout name="vertical" { 37 | ui max_panes=4 { 38 | pane split_direction="vertical" { 39 | pane 40 | pane { children; } 41 | } 42 | } 43 | ui max_panes=7 { 44 | pane split_direction="vertical" { 45 | pane { children; } 46 | pane { pane; pane; pane; pane; } 47 | } 48 | } 49 | ui max_panes=11 { 50 | pane split_direction="vertical" { 51 | pane { children; } 52 | pane { pane; pane; pane; pane; } 53 | pane { pane; pane; pane; pane; } 54 | } 55 | } 56 | } 57 | 58 | swap_tiled_layout name="horizontal" { 59 | ui max_panes=3 { 60 | pane 61 | pane 62 | } 63 | ui max_panes=7 { 64 | pane { 65 | pane split_direction="vertical" { children; } 66 | pane split_direction="vertical" { pane; pane; pane; pane; } 67 | } 68 | } 69 | ui max_panes=11 { 70 | pane { 71 | pane split_direction="vertical" { children; } 72 | pane split_direction="vertical" { pane; pane; pane; pane; } 73 | pane split_direction="vertical" { pane; pane; pane; pane; } 74 | } 75 | } 76 | } 77 | 78 | swap_tiled_layout name="stacked" { 79 | ui min_panes=4 { 80 | pane split_direction="vertical" { 81 | pane 82 | pane stacked=true { children; } 83 | } 84 | } 85 | } 86 | 87 | swap_floating_layout name="staggered" { 88 | floating_panes 89 | } 90 | 91 | swap_floating_layout name="enlarged" { 92 | floating_panes max_panes=10 { 93 | pane { x "5%"; y 1; width "90%"; height "90%"; } 94 | pane { x "5%"; y 2; width "90%"; height "90%"; } 95 | pane { x "5%"; y 3; width "90%"; height "90%"; } 96 | pane { x "5%"; y 4; width "90%"; height "90%"; } 97 | pane { x "5%"; y 5; width "90%"; height "90%"; } 98 | pane { x "5%"; y 6; width "90%"; height "90%"; } 99 | pane { x "5%"; y 7; width "90%"; height "90%"; } 100 | pane { x "5%"; y 8; width "90%"; height "90%"; } 101 | pane { x "5%"; y 9; width "90%"; height "90%"; } 102 | pane focus=true { x 10; y 10; width "90%"; height "90%"; } 103 | } 104 | } 105 | 106 | swap_floating_layout name="spread" { 107 | floating_panes max_panes=1 { 108 | pane {y "50%"; x "50%"; } 109 | } 110 | floating_panes max_panes=2 { 111 | pane { x "1%"; y "25%"; width "45%"; } 112 | pane { x "50%"; y "25%"; width "45%"; } 113 | } 114 | floating_panes max_panes=3 { 115 | pane focus=true { y "55%"; width "45%"; height "45%"; } 116 | pane { x "1%"; y "1%"; width "45%"; } 117 | pane { x "50%"; y "1%"; width "45%"; } 118 | } 119 | floating_panes max_panes=4 { 120 | pane { x "1%"; y "55%"; width "45%"; height "45%"; } 121 | pane focus=true { x "50%"; y "55%"; width "45%"; height "45%"; } 122 | pane { x "1%"; y "1%"; width "45%"; height "45%"; } 123 | pane { x "50%"; y "1%"; width "45%"; height "45%"; } 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /common/users/dev/zellij/themes.kdl: -------------------------------------------------------------------------------- 1 | themes { 2 | // https://github.com/zellij-org/zellij/blob/main/zellij-utils/assets/themes/gruvbox.kdl 3 | gruvbox { 4 | fg 213 196 161 5 | bg 40 40 40 6 | // black 60 56 54 7 | black 40 40 40 8 | red 204 36 29 9 | green 152 151 26 10 | yellow 215 153 33 11 | blue 69 133 136 12 | magenta 177 98 134 13 | cyan 104 157 106 14 | white 251 241 199 15 | orange 214 93 14 16 | } 17 | 18 | nord { 19 | fg 216 222 233 20 | bg 46 52 64 21 | black 59 66 82 22 | red 191 97 106 23 | green 163 190 140 24 | yellow 235 203 139 25 | blue 129 161 193 26 | magenta 180 142 173 27 | cyan 136 192 208 28 | white 229 233 240 29 | orange 208 135 112 30 | } 31 | 32 | tokyonight-storm { 33 | fg 169 177 214 34 | bg 36 40 59 35 | black 56 62 90 36 | red 249 51 87 37 | green 158 206 106 38 | yellow 224 175 104 39 | blue 122 162 247 40 | magenta 187 154 247 41 | cyan 42 195 222 42 | white 192 202 245 43 | orange 255 158 100 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /common/users/games/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | users.users.${username}.files.".config/ley/k_lite.verb".source = ./k_lite.verb; 5 | } 6 | -------------------------------------------------------------------------------- /common/users/games/doomrl/config.lua: -------------------------------------------------------------------------------- 1 | -- ---------------------------------------------------------------------- 2 | -- This is the DoomRL initialization file. Modify at your own risk :). 3 | -- If you mess up something overwrite with a new config.lua. 4 | -- ---------------------------------------------------------------------- 5 | 6 | dofile "colors.lua" 7 | 8 | -- pick here what music set to use (see music.lua and musicmp3.lua) 9 | dofile "musichq.lua" 10 | dofile "soundhq.lua" 11 | 12 | dofile "keybindings.lua" 13 | 14 | -- Graphics mode. Can be CONSOLE for raw console, or TILES for graphical 15 | -- tiles. Overriden by -graphics and -console command line parameters. 16 | Graphics = "TILES" 17 | 18 | -- Sound engine, by default is FMOD on Windows, SDL on *nix. To use SDL on 19 | -- Windows you'll need SDL_mixer.dll and smpeg.dll from SDL_mixer website. 20 | -- For using FMOD on *nix systems you'll need the proper packages. 21 | -- Possible values are FMOD, SDL, NONE, DEFAULT 22 | SoundEngine = "DEFAULT" 23 | 24 | -- SDL sound only options. See SDL_mixer manual on what to put here if 25 | -- defaults don't get you working audio. Format needs to be decoded because 26 | -- Lua doesn't support hex notation. 27 | SDLMixerFreq = 44100 28 | SDLMixerFormat = 32784 29 | SDLMixerChunkSize = 1024 30 | 31 | -- Windows and GFX mode only: 32 | -- Set to false to turn off the Fullscreen query at run time. If false you 33 | -- can use StartFullscreen to control fullscreen at startup. 34 | FullscreenQuery = false 35 | 36 | -- whether to start in fullscreen mode, use ALT-Enter to toggle, only 37 | -- used when FullscreenQuery is set to false 38 | StartFullscreen = true 39 | 40 | -- Windowed sizes 41 | WindowedWidth = 800 42 | WindowedHeight = 600 43 | -- Multiplication values of font and tile display - use at most 2 44 | WindowedFontMult = 1 45 | WindowedTileMult = 1 46 | -- minimap size multiplication, set to 0 to remove minimap, -1 is auto 47 | -- choice based on resolution 48 | WindowedMiniMapSize = -1 49 | 50 | -- Fullscreen resolution sizes 51 | -- -1 means auto-detection of screen size, and fontmult and tilemult and 52 | -- minimap based on it 53 | FullscreenWidth = 1920 54 | FullscreenHeight = 1080 55 | FullscreenFontMult = -1 56 | FullscreenTileMult = -1 57 | FullscreenMiniMapSize = -1 58 | 59 | -- Whether to allow high-ASCII signs. Set to false if you see weird signs 60 | -- on the screen. Not setting it at all will use the default which 61 | -- is true on Windows and false on OS X and Linux 62 | -- AllowHighAscii = true 63 | 64 | -- Setting to true will skip name entry procedure and choose a random name 65 | -- instead 66 | AlwaysRandomName = false 67 | 68 | -- Specifies wether items in inventory and equipment should be colored 69 | ColoredInventory = true 70 | 71 | -- Menu styles can be LETTER for letter choince only menus, CHOICE for only arrow 72 | -- selection or HYBRID for both. Note that additional commands (like BACKSPACE for 73 | -- in-menu drop and TAB for swap) wont work in the LETTER mode. 74 | InvMenuStyle = "HYBRID" 75 | EqMenuStyle = "HYBRID" 76 | HelpMenuStyle = "HYBRID" 77 | 78 | -- Setting this to anything except "" will always use that as the name. 79 | -- Warning - no error checking, so don't use too long names, or especially 80 | -- the "@" sign (it's a control char). This setting overrides the one above! 81 | AlwaysName = "" 82 | 83 | -- Setting to true will skip the intro 84 | SkipIntro = false 85 | 86 | -- Setting to true will remove the bloodslide effect 87 | NoBloodSlides = false 88 | 89 | -- Setting to true will remove the flashing effect 90 | NoFlashing = false 91 | 92 | -- Setting to true will make the run command not stop on items 93 | RunOverItems = false 94 | 95 | -- Setting to false will turn off music during gameplay 96 | GameMusic = true 97 | 98 | -- Setting to false will turn off sounds during gameplay 99 | GameSound = true 100 | 101 | -- Setting to false will turn off Menu change/select sound 102 | MenuSound = true 103 | 104 | -- Setting to true will turn on enhancements for blind people playing 105 | -- DoomRL using a screen reader. Yes, some do. 106 | BlindMode = false 107 | 108 | -- Setting to true will turn on enhancements for colorblind people. 109 | ColorBlindMode = false 110 | 111 | -- Setting to true will make old messages disappear from the screen 112 | -- (useful in BlindMode) 113 | ClearMessages = false 114 | 115 | -- Setting to false will prevent DoomRL from waiting for confirmation 116 | -- when too many messages are printed in a turn. Usefull for Speedrunning. 117 | MorePrompt = true 118 | 119 | -- Setting to true will make the game wait for an enter/space key if 120 | -- trying to fire an empty weapon. 121 | EmptyConfirm = false 122 | 123 | -- If set to true, pickup sound will be used for quickkeys and weapon 124 | -- swapping. 125 | SoundEquipPickup = false 126 | 127 | -- Controls whether gameplay hints appear on the intro level. Once you learn 128 | -- to use the game, you can safely turn it off! 129 | Hints = true 130 | 131 | -- Sets the delay value when running. Value is in milliseconds. Set to 0 for no delay. 132 | RunDelay = 20 133 | 134 | -- Music volume in the range of 0..25 135 | MusicVolume = 12 136 | 137 | -- Sound volume in the range of 0..25 138 | SoundVolume = 20 139 | 140 | -- Handles what should be done in case of trying to unwield an item when inventory 141 | -- is full : if set to false will ask the player if he wants to drop it. If set 142 | -- to true will drop it without questions. 143 | InvFullDrop = false 144 | 145 | -- Messages held in the message buffer. 146 | MessageBuffer = 100 147 | 148 | -- Sets wether message coloring will be enabled. Needs [messages] section. 149 | MessageColoring = true 150 | 151 | -- If set to true will archive EVERY mortem.txt produced in the mortem subfolder. 152 | -- The amount of files can get big after a while :) 153 | MortemArchive = true 154 | 155 | -- Sets the amount of player.wad backups. Set 0 to turn off. At most one backup 156 | -- is held for a given day. 157 | PlayerBackups = 7 158 | 159 | -- Sets the amount of score.wad backups. Set 0 to turn off. At most one backup 160 | -- is held for a given day. 161 | ScoreBackups = 7 162 | 163 | -- If set to false DoomRL will quit on death and quitting. Normally it will go back 164 | -- to the main menu. 165 | MenuReturn = true 166 | 167 | -- Defines the maximum repeat for the run command. Setting it to larger than 80 168 | -- basically means no limit. 169 | MaxRun = 100 170 | 171 | -- Defines the maximum repeat for the run command when waiting. 172 | MaxWait = 20 173 | 174 | -- Windows only - disables Ctrl-C/Ctrl-Break closing of program. 175 | -- true by default. 176 | LockBreak = true 177 | 178 | -- Windows only - Disables closing of DoomRL by console close button. 179 | -- true by default. 180 | LockClose = true 181 | 182 | -- Sets the color of intuition effect for beings 183 | IntuitionColor = LIGHTMAGENTA 184 | 185 | -- Sets the char of intuition effect for beings 186 | IntuitionChar = "*" 187 | 188 | -- Mortem and screenshot timestamp format 189 | -- Format : http://www.freepascal.org/docs-html/rtl/sysutils/formatchars.html 190 | -- note that / and : will be converted to "-" due to filesystem issues 191 | TimeStamp = "yyyy-mm-dd hh:nn:ss" 192 | 193 | -- Controls whether the game will attempt to save the game on crash, set to false 194 | -- to turn this off 195 | SaveOnCrash = true 196 | 197 | -- This is the global internet connection switch, allowing DoomRL 198 | -- to use internet connection features. Think twice before disabling 199 | -- it, or you'll loose the features listed below and MOTD and ModServer 200 | -- support! 201 | NetworkConnection = false 202 | 203 | -- Should DoomRL check if there's a new version at runtime. If 204 | -- NetworkConnection is set to true this check is made regardless, 205 | -- but there will be no alert if set to false. 206 | VersionCheck = true 207 | 208 | -- Should DoomRL check if there's a new BETA version at runtime. If 209 | -- NetworkConnection is set to true this check is made regardless, 210 | -- but there will be no alert if set to false. BETA versions are only 211 | -- available to Supporters, but why not hop in and join the fun? 212 | -- By default it's set to VERSION_BETA which is true for beta releases 213 | -- and false for stable releases. Set to true, to get notified of the 214 | -- next BETA batch! 215 | BetaCheck = VERSION_BETA 216 | 217 | -- Should DoomRL check for other alerts. Sometimes we will want to 218 | -- point you out to a major ChaosForge release or news flash. This feature 219 | -- will not be abused, and each alert will be displayed only once, so 220 | -- please consider leaving this set to true! :) 221 | AlertCheck = true 222 | 223 | -- DoomRL by default uses it's own mod server, where we host only screened 224 | -- mods from the DoomRL community. A day may come when there will be an 225 | -- unofficial server, for example for mods in testing. You can specify it 226 | -- here. Note that this overrides the default server. 227 | CustomModServer = '' 228 | 229 | -- Message coloring system. Works only if MessageColoring 230 | -- variable is set to true. Use basic color names available in 231 | -- colors.lua. 232 | -- As for the string, it's case sensitive, but you may use 233 | -- the wildcard characters * and ?. 234 | 235 | -- Unsure how these work and want to fiddle with them? 236 | -- Head over to http://forum.chaosforge.org/ for more info. 237 | Messages = { 238 | ["Warning!*"] = RED, 239 | ["Your * destroyed!"] = RED, 240 | ["You die*"] = RED, 241 | ["Your * damaged!"] = BROWN, 242 | ["You feel relatively safe now."] = BLUE 243 | } 244 | -------------------------------------------------------------------------------- /common/users/games/doomrl/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | files.".config/doomrl/config.lua".source = ./config.lua; 6 | files.".config/doomrl/keybindings.lua".source = ./keybindings.lua; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /common/users/games/doomrl/keybindings.lua: -------------------------------------------------------------------------------- 1 | COMMAND_WALKNORTH = 2; 2 | COMMAND_WALKSOUTH = 3; 3 | COMMAND_WALKEAST = 4; 4 | COMMAND_WALKWEST = 5; 5 | COMMAND_WALKNE = 6; 6 | COMMAND_WALKSE = 7; 7 | COMMAND_WALKNW = 8; 8 | COMMAND_WALKSW = 9; 9 | COMMAND_WAIT = 10; 10 | COMMAND_ESCAPE = 11; 11 | COMMAND_OK = 12; 12 | COMMAND_ENTER = 13; 13 | COMMAND_UNLOAD = 14; 14 | COMMAND_PICKUP = 15; 15 | COMMAND_DROP = 16; 16 | COMMAND_INVENTORY = 17; 17 | COMMAND_EQUIPMENT = 18; 18 | COMMAND_OPEN = 19; 19 | COMMAND_CLOSE = 20; 20 | COMMAND_LOOK = 21; 21 | COMMAND_ALTFIRE = 23; 22 | COMMAND_FIRE = 24; 23 | COMMAND_USE = 25; 24 | COMMAND_PLAYERINFO = 26; 25 | COMMAND_SAVE = 27; 26 | COMMAND_TACTIC = 28; 27 | COMMAND_RUNMODE = 29; 28 | COMMAND_MORE = 31; 29 | COMMAND_EXAMINENPC = 32; 30 | COMMAND_EXAMINEITEM = 33; 31 | COMMAND_SWAPWEAPON = 34; 32 | COMMAND_TRAITS = 39; 33 | COMMAND_GRIDTOGGLE = 40; 34 | 35 | COMMAND_SOUNDTOGGLE = 86; 36 | COMMAND_MUSICTOGGLE = 87; 37 | 38 | Keybindings = { 39 | ["LEFT"] = COMMAND_WALKWEST, 40 | ["RIGHT"] = COMMAND_WALKEAST, 41 | ["UP"] = COMMAND_WALKNORTH, 42 | ["DOWN"] = COMMAND_WALKSOUTH, 43 | ["H"] = COMMAND_WALKWEST, 44 | ["L"] = COMMAND_WALKEAST, 45 | ["K"] = COMMAND_WALKNORTH, 46 | ["J"] = COMMAND_WALKSOUTH, 47 | ["U"] = COMMAND_WALKNE, 48 | ["N"] = COMMAND_WALKSE, 49 | ["Y"] = COMMAND_WALKNW, 50 | ["B"] = COMMAND_WALKSW, 51 | ["ESCAPE"] = COMMAND_ESCAPE, 52 | ["CENTER"] = COMMAND_WAIT, 53 | ["PERIOD"] = COMMAND_WAIT, 54 | ["ENTER"] = COMMAND_OK, 55 | ["M"] = COMMAND_MORE, 56 | ["SHIFT+PERIOD"] = COMMAND_ENTER, 57 | ["SHIFT+U"] = COMMAND_UNLOAD, 58 | ["COMMA"] = COMMAND_PICKUP, 59 | ["D"] = COMMAND_DROP, 60 | ["I"] = COMMAND_INVENTORY, 61 | ["E"] = COMMAND_EQUIPMENT, 62 | ["O"] = COMMAND_OPEN, 63 | ["C"] = COMMAND_CLOSE, 64 | ["SCOLON"] = COMMAND_LOOK, 65 | ["SPACE"] = COMMAND_GRIDTOGGLE, 66 | ["F"] = COMMAND_FIRE, -- function() command.fire() end, 67 | ["SHIFT+F"] = COMMAND_ALTFIRE, -- function() command.fire( true ) end, 68 | ["R"] = function() command.reload() end, 69 | ["SHIFT+R"] = function() command.reload( true ) end, 70 | ["A"] = COMMAND_USE, 71 | ["SHIFT+Q"] = function() command.quit() end, 72 | ["SHIFT+SLASH"] = function() command.help() end, 73 | ["SHIFT+2"] = COMMAND_PLAYERINFO, 74 | ["SHIFT+S"] = COMMAND_SAVE, 75 | TAB = COMMAND_TACTIC, 76 | ["G"] = COMMAND_RUNMODE, 77 | ["Z"] = COMMAND_SWAPWEAPON, 78 | -- F10 = function() command.screenshot() end, -- currently hardcoded 79 | -- F9 = function() command.screenshot( true ) end,-- currently hardcoded 80 | ["T"] = COMMAND_TRAITS, 81 | ["SHIFT+9"] = COMMAND_SOUNDTOGGLE, 82 | ["SHIFT+0"] = COMMAND_MUSICTOGGLE, 83 | ["SHIFT+P"] = function() command.messages() end, 84 | ["SHIFT+A"] = function() command.assemblies() end, 85 | -- Commands for blind mode: 86 | ["X"] = COMMAND_EXAMINENPC, 87 | ["SHIFT+X"] = COMMAND_EXAMINEITEM, 88 | -- QuickKeys 89 | ["0"] = function() command.quick_weapon('chainsaw') end, 90 | ["1"] = function() command.quick_weapon('knife') end, 91 | ["2"] = function() command.quick_weapon('pistol') end, 92 | ["3"] = function() command.quick_weapon('shotgun') end, 93 | ["4"] = function() command.quick_weapon('ashotgun') end, 94 | ["5"] = function() command.quick_weapon('dshotgun') end, 95 | ["6"] = function() command.quick_weapon('chaingun') end, 96 | ["7"] = function() command.quick_weapon('bazooka') end, 97 | ["8"] = function() command.quick_weapon('plasma') end, 98 | ["9"] = function() command.quick_weapon('bfg9000') end, 99 | 100 | -- Example of complex quickkey's 101 | ["SHIFT+N"] = function() 102 | if not command.use_item("smed") then 103 | ui.msg("No small medpacks left!") 104 | end 105 | end, 106 | ["SHIFT+M"] = function() 107 | if not command.use_item("lmed") then 108 | ui.msg("No large medpacks left!") 109 | end 110 | end, 111 | } 112 | -------------------------------------------------------------------------------- /common/users/games/dosbox/README.md: -------------------------------------------------------------------------------- 1 | # dosbox 2 | 3 | ## TIE 4 | 5 | ### Custom mapped controls: 6 | ``` 7 | left (ctrl) 8 | down (shift) 9 | up (s) shields 10 | right (w) weapons 11 | 12 | select (return) match speed 13 | c-select (g) goals 14 | start (esc) options/exit 15 | c-start (m) map 16 | 17 | y (r) closest 18 | c-y (l) log 19 | x (f9) laser recharge [(SHIFTF9) boost lasers from shield] 20 | c-x (f10) shield recharge [(SHIFTF10) boost shields from lasers] 21 | b fire 22 | c-b (e) nearest attacker 23 | a select/spin 24 | c-a (u) newest 25 | 26 | l (-) throttle 27 | c-l (\) no throttle 28 | l2 (+) throttle 29 | c-l2 (backspace) full throttle 30 | r (y) prev target 31 | c-r (a) attacker of target 32 | r2 (t) next target 33 | c-r2 (z) threat assess 34 | 35 | rup (8) look up 36 | c-rup (f5) cg1 37 | rleft (4) look left 38 | c-rleft (f6) cg2 39 | rright (6) look right 40 | c-rright (f7) cg3 41 | rdown (2) look down 42 | c-rdown (f8) beam recharge 43 | 44 | l3 (f1) 45 | c-l3 (f2) 46 | r3 (x) cross-link 47 | c-r3 (b) beam 48 | ``` 49 | -------------------------------------------------------------------------------- /common/users/games/dosbox/default.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | fullscreen=true 3 | vsync=false 4 | 5 | [cpu] 6 | cycleup=1000 7 | cycledown=1000 8 | 9 | [autoexec] 10 | @echo off 11 | mount c ~/dosgames 12 | c: 13 | cls 14 | -------------------------------------------------------------------------------- /common/users/games/dosbox/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | packages = with pkgs; [ 6 | my.dosbox-staging 7 | ]; 8 | 9 | files = { 10 | ".config/dosbox/default.conf".source = ./default.conf; 11 | ".config/dosbox/dosbox-staging.conf".source = ./dosbox-staging.conf; 12 | ".config/dosbox/gauntlet.conf".source = ./gauntlet.conf; 13 | ".config/dosbox/mk1.conf".source = ./mk1.conf; 14 | ".config/dosbox/mk1.map".source = ./mk1.map; 15 | ".config/dosbox/mk2.conf".source = ./mk2.conf; 16 | ".config/dosbox/mk2.map".source = ./mk2.map; 17 | ".config/dosbox/mk3.conf".source = ./mk3.conf; 18 | ".config/dosbox/mk3.map".source = ./mk3.map; 19 | ".config/dosbox/tie.conf".source = ./tie.conf; 20 | ".config/dosbox/tie.map".source = ./tie.map; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /common/users/games/dosbox/dosbox-staging.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | fullscreen=true 3 | vsync=false 4 | 5 | [cpu] 6 | cycleup=1000 7 | cycledown=1000 8 | 9 | [autoexec] 10 | @echo off 11 | mount c ~/dosgames 12 | c: 13 | goto launcher 14 | 15 | :launcher 16 | cls 17 | echo a 18 | echo b BSTONE 19 | echo d 20 | echo g GAUNTLET 21 | echo h 22 | echo k KEEPER 23 | echo m MK 24 | echo o DOS 25 | echo q QUAKE 26 | echo s SAMURAI 27 | echo t 28 | echo w 29 | choice /c:abdghkmoqstw 30 | if errorlevel 12 goto w 31 | if errorlevel 11 goto t 32 | if errorlevel 10 goto samurai 33 | if errorlevel 9 goto quakes 34 | if errorlevel 8 goto dos 35 | if errorlevel 7 goto mk 36 | if errorlevel 6 goto keepers 37 | if errorlevel 5 goto h 38 | if errorlevel 4 goto gauntlet 39 | if errorlevel 3 goto d 40 | if errorlevel 2 goto bstone 41 | if errorlevel 1 goto 42 | 43 | :a 44 | cls 45 | echo p APPLE 46 | echo r ARENA 47 | choice /c:pr 48 | if errorlevel 2 goto arena 49 | if errorlevel 1 goto apple 50 | 51 | :d 52 | cls 53 | echo a 54 | echo u DUNE2 55 | choice /c:au 56 | if errorlevel 2 goto dune2 57 | if errorlevel 1 goto da 58 | 59 | :h 60 | cls 61 | echo e HEXEN 62 | echo o HOSPITAL 63 | choice /c:eo 64 | if errorlevel 2 goto hospital 65 | if errorlevel 1 goto hexen 66 | 67 | :t 68 | cls 69 | echo h THEME 70 | echo i TIE 71 | echo o TOMBRAID 72 | choice /c:hio 73 | if errorlevel 3 goto tombraid 74 | if errorlevel 2 goto tie 75 | if errorlevel 1 goto themes 76 | 77 | :w 78 | cls 79 | echo a WARCRAFT 80 | echo o WOLF3D 81 | choice /c:ao 82 | if errorlevel 2 goto wolf3ds 83 | if errorlevel 1 goto warcraft 84 | 85 | :da 86 | cls 87 | echo g DAGGER 88 | echo r DARK 89 | choice /c:gr 90 | if errorlevel 2 goto dark 91 | if errorlevel 1 goto dagger 92 | 93 | :apple 94 | cycles 256 95 | cd apple 96 | apple 97 | exit 98 | 99 | :arena 100 | cycles max 101 | memsize 32 102 | mount -u c 103 | mount c ~/dosgames/arena -t cdrom 104 | mount d ~/dosgames/arena 105 | d: 106 | arena 107 | exit 108 | 109 | :bstone 110 | cycles max 111 | cd bstone 112 | bstone 113 | exit 114 | 115 | :dagger 116 | cycles max 117 | memsize 63 118 | mount -u c 119 | mount c ~/dosgames/dagger 120 | c: 121 | fall z.cfg 122 | exit 123 | 124 | :dark 125 | mount -u c 126 | mount c ~/dosgames/dark 127 | c: 128 | dark 129 | exit 130 | 131 | :dune2 132 | cycles 15000 133 | cd dune2 134 | dune2 135 | exit 136 | 137 | :hexen 138 | mount -u c 139 | mount c ~/dosgames/hexen 140 | imgmount d ~/dosgames/hexen/game.ins -t iso 141 | c: 142 | hexen 143 | exit 144 | 145 | :hospital 146 | mount -u c 147 | mount c ~/dosgames/hospital 148 | c: 149 | hospital 150 | exit 151 | 152 | :gauntlet 153 | config -r -noprimaryconf -conf default.conf -conf gauntlet.conf 154 | 155 | :keepers 156 | mount -u c 157 | mount c ~/dosgames/keeper 158 | imgmount d ~/dosgames/keeper/GAME.INS -t iso -fs iso 159 | mkdir C:\SAVE 160 | c: 161 | cls 162 | echo 1 Dungeon Keeper 163 | echo 2 Deeper Dungeons 164 | choice /c:12 165 | if errorlevel 2 goto deeper 166 | if errorlevel 1 goto keeper 167 | 168 | :keeper 169 | keeper.exe 170 | exit 171 | 172 | :deeper 173 | deeper.exe 174 | exit 175 | 176 | :mk 177 | cls 178 | echo 1 MK1 179 | echo 2 MK2 180 | echo 3 MK3 181 | choice /c:123 182 | if errorlevel 3 goto mk3 183 | if errorlevel 2 goto mk2 184 | if errorlevel 1 goto mk1 185 | 186 | :mk1 187 | config -r -noprimaryconf -conf default.conf -conf mk1.conf 188 | 189 | :mk2 190 | config -r -noprimaryconf -conf default.conf -conf mk2.conf 191 | 192 | :mk3 193 | config -r -noprimaryconf -conf mk3.conf 194 | 195 | :quakes 196 | cycles max 197 | cd quake 198 | cls 199 | echo 1 Quake 200 | echo 2 Quake: Scourge of Armagon 201 | echo 3 Quake: Dissolution of Eternity 202 | choice /c:123 203 | if errorlevel 3 goto quake_rogue 204 | if errorlevel 2 goto quake_hipnotic 205 | if errorlevel 1 goto quake 206 | 207 | :quake 208 | imgmount d game.cue -t iso 209 | quake 210 | exit 211 | 212 | :quake_hipnotic 213 | imgmount d gamea.cue -t iso 214 | quake -game hipnotic 215 | exit 216 | 217 | :quake_rogue 218 | imgmount d gamed.cue -t iso 219 | quake -game rogue 220 | exit 221 | 222 | :samurai 223 | cd samurai 224 | SAMURAI /NT /NJ /GM /AA 225 | exit 226 | 227 | :themes 228 | core normal 229 | cycles fixed 10000 230 | mount -u c 231 | mount c ~/dosgames/theme 232 | c: 233 | cls 234 | echo 1 Theme Park 235 | echo 2 Setup 236 | choice /c:12 237 | if errorlevel 2 goto theme_setup 238 | if errorlevel 1 goto theme 239 | 240 | :theme 241 | THEME.BAT 242 | exit 243 | 244 | :theme_setup 245 | cd config 246 | main.exe 247 | cd \ 248 | goto themes 249 | 250 | :tie 251 | config -r -noprimaryconf -conf default.conf -conf tie.conf 252 | 253 | :tombraid 254 | mount -u c 255 | mount c ~/dosgames/tombraid 256 | imgmount d ~/dosgames/tombraid/game.dat -t iso -fs iso 257 | c: 258 | cd TOMBRAID 259 | tombs.exe 260 | exit 261 | 262 | :warcraft 263 | cycles 30000 264 | cd warcraft 265 | cls 266 | echo 1 singleplayer 267 | echo 2 multiplayer 268 | choice /c:12 269 | if errorlevel 2 goto dos 270 | if errorlevel 1 goto warcraft_single 271 | 272 | :warcraft_single 273 | war 274 | exit 275 | 276 | :wolf3ds 277 | cycles 10000 278 | cd wolf3d 279 | cls 280 | echo 1 Wolfenstein 3D 281 | echo 2 Spear 282 | choice /c:12 283 | if errorlevel 2 goto spear 284 | if errorlevel 1 goto wolf3d 285 | 286 | :wolf3d 287 | wolf3d 288 | exit 289 | 290 | :spear 291 | cd m1 292 | spear 293 | exit 294 | 295 | :dos 296 | ipx true 297 | cls 298 | echo IPXNET STARTSERVER port 299 | echo IPXNET CONNECT address port 300 | -------------------------------------------------------------------------------- /common/users/games/dosbox/gauntlet.conf: -------------------------------------------------------------------------------- 1 | [dosbox] 2 | machine=ega 3 | 4 | [autoexec] 5 | cd gauntlet 6 | gauntlet 7 | exit 8 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk1.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | mapperfile=~/.config/dosbox/mk1.map 3 | 4 | [autoexec] 5 | cd mk1 6 | mk1.exe 7 | exit 8 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk1.map: -------------------------------------------------------------------------------- 1 | hand_stretchax 2 | hand_incstretch 3 | hand_decstretch 4 | hand_recwave "key 63 mod1" 5 | hand_caprawmidi 6 | hand_scrshot "key 62 mod1" 7 | hand_rawshot 8 | hand_upscshot 9 | hand_rendshot "key 62 mod2" 10 | hand_video "key 64 mod1" 11 | hand_mute "key 65 mod1" 12 | hand_reloadshad "key 59 mod1" 13 | hand_shutdown "key 66 mod1" 14 | hand_fullscr "key 40 mod2" 15 | hand_restart "key 74 mod1 mod2" 16 | hand_capmouse "key 67 mod1" 17 | hand_pause "key 72 mod2" 18 | hand_mapper "key 58 mod1" 19 | hand_speedlock "key 69 mod2" 20 | hand_cycledown "key 68 mod1" 21 | hand_cycleup "key 69 mod1" 22 | hand_caprawopl 23 | hand_swapimg "key 61 mod1" 24 | key_esc "key 41" 25 | key_f1 "key 58" "stick_0 button 7" 26 | key_f2 "key 59" "stick_1 button 7" 27 | key_f3 "key 60" 28 | key_f4 "key 61" 29 | key_f5 "key 62" 30 | key_f6 "key 63" 31 | key_f7 "key 64" 32 | key_f8 "key 65" 33 | key_f9 "key 66" 34 | key_f10 "key 67" "stick_0 button 6" "stick_1 button 6" 35 | key_f11 "key 68" 36 | key_f12 "key 69" 37 | key_grave "key 53" 38 | key_1 "key 30" 39 | key_2 "key 31" 40 | key_3 "key 32" 41 | key_4 "key 33" 42 | key_5 "key 34" 43 | key_6 "key 35" 44 | key_7 "key 36" 45 | key_8 "key 37" 46 | key_9 "key 38" 47 | key_0 "key 39" 48 | key_minus "key 45" 49 | key_equals "key 46" 50 | key_bspace "key 42" 51 | key_tab "key 43" 52 | key_q "key 20" 53 | key_w "key 26" 54 | key_e "key 8" 55 | key_r "key 21" 56 | key_t "key 23" 57 | key_y "key 28" 58 | key_u "key 24" "stick_0 button 2" 59 | key_i "key 12" "stick_0 button 3" 60 | key_o "key 18" 61 | key_p "key 19" 62 | key_lbracket "key 47" 63 | key_rbracket "key 48" 64 | key_enter "key 40" 65 | key_capslock "key 57" 66 | key_a "key 4" 67 | key_s "key 22" "stick_0 hat 0 1" 68 | key_d "key 7" 69 | key_f "key 9" 70 | key_g "key 10" 71 | key_h "key 11" 72 | key_j "key 13" "stick_0 button 4" "stick_0 button 5" 73 | key_k "key 14" 74 | key_l "key 15" 75 | key_semicolon "key 51" 76 | key_quote "key 52" 77 | key_backslash "key 49" 78 | key_lshift "key 225" 79 | key_oem102 "key 100" 80 | key_z "key 29" "stick_0 hat 0 8" 81 | key_x "key 27" "stick_0 hat 0 4" 82 | key_c "key 6" "stick_0 hat 0 2" 83 | key_v "key 25" 84 | key_b "key 5" 85 | key_n "key 17" "stick_0 button 0" 86 | key_m "key 16" "stick_0 button 1" 87 | key_comma "key 54" 88 | key_period "key 55" 89 | key_slash "key 56" 90 | key_abnt1 "key 135" 91 | key_rshift "key 229" 92 | key_lctrl "key 224" 93 | key_lgui "key 227" 94 | key_lalt "key 226" 95 | key_space "key 44" 96 | key_ralt "key 230" 97 | key_rgui "key 231" 98 | key_rctrl "key 228" 99 | key_printscreen "key 70" 100 | key_scrolllock "key 71" 101 | key_pause "key 72" 102 | key_insert "key 73" 103 | key_home "key 74" 104 | key_pageup "key 75" 105 | key_delete "key 76" 106 | key_end "key 77" 107 | key_pagedown "key 78" 108 | key_up "key 82" "stick_1 hat 0 1" 109 | key_left "key 80" "stick_1 hat 0 8" 110 | key_down "key 81" "stick_1 hat 0 4" 111 | key_right "key 79" "stick_1 hat 0 2" 112 | key_numlock "key 83" 113 | key_kp_divide "key 84" 114 | key_kp_multiply "key 85" 115 | key_kp_minus "key 86" 116 | key_kp_7 "key 95" "stick_1 button 2" 117 | key_kp_8 "key 96" 118 | key_kp_9 "key 97" "stick_1 button 3" 119 | key_kp_plus "key 87" 120 | key_kp_4 "key 92" 121 | key_kp_5 "key 93" "stick_1 button 4" "stick_1 button 5" 122 | key_kp_6 "key 94" 123 | key_kp_1 "key 89" "stick_1 button 0" 124 | key_kp_2 "key 90" 125 | key_kp_3 "key 91" "stick_1 button 1" 126 | key_kp_enter "key 88" 127 | key_kp_0 "key 98" 128 | key_kp_period "key 99" 129 | mouse_left 130 | mouse_middle 131 | mouse_right 132 | jbutton_0_0 "stick_0 button 0" 133 | jbutton_0_1 "stick_0 button 1" 134 | jaxis_0_1- "stick_0 axis 1 0" 135 | jaxis_0_1+ "stick_0 axis 1 1" 136 | jaxis_0_0- "stick_0 axis 0 0" 137 | jaxis_0_0+ "stick_0 axis 0 1" 138 | jbutton_1_0 139 | jbutton_1_1 140 | jbutton_0_2 "stick_0 button 2" 141 | jbutton_0_3 "stick_0 button 3" 142 | jaxis_1_0- 143 | jaxis_1_0+ 144 | jaxis_1_1- 145 | jaxis_1_1+ 146 | jaxis_0_2- "stick_0 axis 2 0" 147 | jaxis_0_2+ "stick_0 axis 2 1" 148 | jaxis_0_3- "stick_0 axis 3 0" 149 | jaxis_0_3+ "stick_0 axis 3 1" 150 | jbutton_0_4 "stick_0 button 4" 151 | jbutton_0_5 "stick_0 button 5" 152 | jhat_0_0_0 "stick_0 hat 0 1" 153 | jhat_0_0_3 "stick_0 hat 0 8" 154 | jhat_0_0_2 "stick_0 hat 0 4" 155 | jhat_0_0_1 "stick_0 hat 0 2" 156 | mod_1 "key 228" "key 224" 157 | mod_2 "key 230" "key 226" 158 | mod_3 "key 231" "key 227" 159 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk2.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | mapperfile=~/.config/dosbox/mk2.map 3 | 4 | [autoexec] 5 | cd mk2 6 | mk2.exe 7 | exit 8 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk2.map: -------------------------------------------------------------------------------- 1 | hand_stretchax 2 | hand_incstretch 3 | hand_decstretch 4 | hand_recwave "key 63 mod1" 5 | hand_caprawmidi 6 | hand_scrshot "key 62 mod1" 7 | hand_rawshot 8 | hand_upscshot 9 | hand_rendshot "key 62 mod2" 10 | hand_video "key 64 mod1" 11 | hand_mute "key 65 mod1" 12 | hand_reloadshad "key 59 mod1" 13 | hand_shutdown "key 66 mod1" 14 | hand_fullscr "key 40 mod2" 15 | hand_restart "key 74 mod1 mod2" 16 | hand_capmouse "key 67 mod1" 17 | hand_pause "key 72 mod2" 18 | hand_mapper "key 58 mod1" 19 | hand_speedlock "key 69 mod2" 20 | hand_cycledown "key 68 mod1" 21 | hand_cycleup "key 69 mod1" 22 | hand_caprawopl 23 | hand_swapimg "key 61 mod1" 24 | key_esc "key 41" 25 | key_f1 "stick_0 button 7" "key 58" 26 | key_f2 "stick_1 button 7" "key 59" 27 | key_f3 "key 60" 28 | key_f4 "key 61" 29 | key_f5 "key 62" 30 | key_f6 "key 63" 31 | key_f7 "key 64" 32 | key_f8 "key 65" 33 | key_f9 "key 66" 34 | key_f10 "stick_1 button 6" "stick_0 button 6" "key 67" 35 | key_f11 "key 68" 36 | key_f12 "key 69" 37 | key_grave "key 53" 38 | key_1 "key 30" 39 | key_2 "key 31" 40 | key_3 "key 32" 41 | key_4 "key 33" 42 | key_5 "key 34" 43 | key_6 "key 35" 44 | key_7 "key 36" 45 | key_8 "key 37" 46 | key_9 "key 38" 47 | key_0 "key 39" 48 | key_minus "key 45" 49 | key_equals "key 46" 50 | key_bspace "key 42" 51 | key_tab "key 43" 52 | key_q "key 20" 53 | key_w "key 26" 54 | key_e "key 8" 55 | key_r "stick_1 hat 0 1" "key 21" 56 | key_t "stick_1 hat 0 4" "key 23" 57 | key_y "stick_1 hat 0 8" "key 28" 58 | key_u "key 24" 59 | key_i "key 12" 60 | key_o "key 18" 61 | key_p "key 19" 62 | key_lbracket "key 47" 63 | key_rbracket "key 48" 64 | key_enter "key 40" 65 | key_capslock "key 57" 66 | key_a "key 4" 67 | key_s "key 22" 68 | key_d "key 7" 69 | key_f "stick_1 button 0" "key 9" 70 | key_g "stick_1 button 2" "key 10" 71 | key_h "stick_1 hat 0 2" "key 11" 72 | key_j "key 13" 73 | key_k "key 14" 74 | key_l "key 15" 75 | key_semicolon "key 51" 76 | key_quote "key 52" 77 | key_backslash "key 49" 78 | key_lshift "key 225" 79 | key_oem102 "key 100" 80 | key_z "key 29" 81 | key_x "key 27" 82 | key_c "key 6" 83 | key_v "stick_1 button 5" "stick_1 button 4" "key 25" 84 | key_b "stick_1 button 3" "key 5" 85 | key_n "stick_1 button 1" "key 17" 86 | key_m "key 16" 87 | key_comma "key 54" 88 | key_period "key 55" 89 | key_slash "key 56" 90 | key_abnt1 "key 135" 91 | key_rshift "key 229" 92 | key_lctrl "key 224" 93 | key_lgui "key 227" 94 | key_lalt "key 226" 95 | key_space "key 44" 96 | key_ralt "key 230" 97 | key_rgui "key 231" 98 | key_rctrl "key 228" 99 | key_printscreen "key 70" 100 | key_scrolllock "key 71" 101 | key_pause "key 72" 102 | key_insert "key 73" 103 | key_home "key 74" 104 | key_pageup "key 75" 105 | key_delete "key 76" 106 | key_end "key 77" 107 | key_pagedown "key 78" 108 | key_up "key 82" 109 | key_left "key 80" 110 | key_down "key 81" 111 | key_right "key 79" 112 | key_numlock "key 83" 113 | key_kp_divide "key 84" 114 | key_kp_multiply "key 85" 115 | key_kp_minus "key 86" 116 | key_kp_7 "stick_0 button 3" "key 95" 117 | key_kp_8 "stick_0 hat 0 1" "key 96" 118 | key_kp_9 "stick_0 button 2" "key 97" 119 | key_kp_plus "key 87" 120 | key_kp_4 "stick_0 hat 0 8" "key 92" 121 | key_kp_5 "stick_0 button 5" "stick_0 button 4" "key 93" 122 | key_kp_6 "stick_0 hat 0 2" "key 94" 123 | key_kp_1 "stick_0 button 1" "key 89" 124 | key_kp_2 "stick_0 hat 0 4" "key 90" 125 | key_kp_3 "stick_0 button 0" "key 91" 126 | key_kp_enter "key 88" 127 | key_kp_0 "key 98" 128 | key_kp_period "key 99" 129 | mouse_left 130 | mouse_middle 131 | mouse_right 132 | jbutton_0_0 "stick_0 button 0" 133 | jbutton_0_1 "stick_0 button 1" 134 | jaxis_0_1- "stick_0 axis 1 0" 135 | jaxis_0_1+ "stick_0 axis 1 1" 136 | jaxis_0_0- "stick_0 axis 0 0" 137 | jaxis_0_0+ "stick_0 axis 0 1" 138 | jbutton_1_0 "stick_1 button 0" 139 | jbutton_1_1 "stick_1 button 1" 140 | jbutton_0_2 "stick_0 button 2" 141 | jbutton_0_3 "stick_0 button 3" 142 | jaxis_1_0- "stick_1 axis 0 0" 143 | jaxis_1_0+ "stick_1 axis 0 1" 144 | jaxis_1_1- "stick_1 axis 1 0" 145 | jaxis_1_1+ "stick_1 axis 1 1" 146 | jaxis_0_2- "stick_0 axis 2 0" 147 | jaxis_0_2+ "stick_0 axis 2 1" 148 | jaxis_0_3- "stick_0 axis 3 0" 149 | jaxis_0_3+ "stick_0 axis 3 1" 150 | jbutton_0_4 "stick_0 button 4" 151 | jbutton_0_5 "stick_0 button 5" 152 | jhat_0_0_0 "stick_0 hat 0 1" 153 | jhat_0_0_3 "stick_0 hat 0 8" 154 | jhat_0_0_2 "stick_0 hat 0 4" 155 | jhat_0_0_1 "stick_0 hat 0 2" 156 | mod_1 "key 224" "key 228" 157 | mod_2 "key 226" "key 230" 158 | mod_3 "key 227" "key 231" 159 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk3.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | fullscreen=true 3 | vsync=false 4 | mapperfile=~/.config/dosbox/mk3.map 5 | 6 | [cpu] 7 | core=normal 8 | cycles=fixed 20000 9 | cycleup=1000 10 | cycledown=1000 11 | 12 | [autoexec] 13 | @echo off 14 | cls 15 | mount c ~/dosgames/mk3 16 | imgmount d ~/dosgames/mk3/IMAGE/MK3.CUE -t cdrom 17 | c: 18 | mk3.exe 19 | exit 20 | -------------------------------------------------------------------------------- /common/users/games/dosbox/mk3.map: -------------------------------------------------------------------------------- 1 | hand_stretchax 2 | hand_incstretch 3 | hand_decstretch 4 | hand_recwave "key 63 mod1" 5 | hand_caprawmidi 6 | hand_scrshot "key 62 mod1" 7 | hand_rawshot 8 | hand_upscshot 9 | hand_rendshot "key 62 mod2" 10 | hand_video "key 64 mod1" 11 | hand_mute "key 65 mod1" 12 | hand_reloadshad "key 59 mod1" 13 | hand_shutdown "key 66 mod1" 14 | hand_fullscr "key 40 mod2" 15 | hand_restart "key 74 mod1 mod2" 16 | hand_capmouse "key 67 mod1" 17 | hand_pause "key 72 mod2" 18 | hand_mapper "key 58 mod1" 19 | hand_speedlock "key 69 mod2" 20 | hand_cycledown "key 68 mod1" 21 | hand_cycleup "key 69 mod1" 22 | hand_caprawopl 23 | hand_swapimg "key 61 mod1" 24 | key_esc "key 41" "stick_0 button 6" "stick_1 button 6" 25 | key_f1 "key 58" 26 | key_f2 "key 59" 27 | key_f3 "key 60" 28 | key_f4 "key 61" 29 | key_f5 "key 62" 30 | key_f6 "key 63" 31 | key_f7 "key 64" 32 | key_f8 "key 65" 33 | key_f9 "key 66" 34 | key_f10 "key 67" 35 | key_f11 "key 68" 36 | key_f12 "key 69" 37 | key_grave "key 53" 38 | key_1 "key 30" 39 | key_2 "key 31" 40 | key_3 "key 32" 41 | key_4 "key 33" 42 | key_5 "key 34" 43 | key_6 "key 35" 44 | key_7 "key 36" 45 | key_8 "key 37" 46 | key_9 "key 38" 47 | key_0 "key 39" 48 | key_minus "key 45" 49 | key_equals "key 46" 50 | key_bspace "key 42" 51 | key_tab "key 43" 52 | key_q "key 20" 53 | key_w "stick_1 hat 0 1" "key 26" 54 | key_e "key 8" 55 | key_r "key 21" 56 | key_t "stick_1 button 7" "key 23" "stick_1 button 2" 57 | key_y "stick_1 button 5" "stick_1 button 4" "key 28" 58 | key_u "stick_1 button 3" "key 24" 59 | key_i "key 12" 60 | key_o "key 18" 61 | key_p "key 19" 62 | key_lbracket "key 47" 63 | key_rbracket "key 48" 64 | key_enter "stick_0 button 7" "key 40" 65 | key_capslock "key 57" 66 | key_a "stick_1 hat 0 8" "key 4" 67 | key_s "stick_1 hat 0 4" "key 22" 68 | key_d "stick_1 hat 0 2" "key 7" 69 | key_f "key 9" 70 | key_g "stick_1 button 0" "key 10" 71 | key_h "key 11" 72 | key_j "stick_1 button 1" "key 13" 73 | key_k "key 14" 74 | key_l "key 15" 75 | key_semicolon "key 51" 76 | key_quote "key 52" 77 | key_backslash "key 49" 78 | key_lshift "key 225" 79 | key_oem102 "key 100" 80 | key_z "key 29" 81 | key_x "key 27" 82 | key_c "key 6" 83 | key_v "key 25" 84 | key_b "key 5" 85 | key_n "key 17" 86 | key_m "key 16" 87 | key_comma "key 54" 88 | key_period "key 55" 89 | key_slash "key 56" 90 | key_abnt1 "key 135" 91 | key_rshift "key 229" 92 | key_lctrl "key 224" 93 | key_lgui "key 227" 94 | key_lalt "key 226" 95 | key_space "key 44" 96 | key_ralt "key 230" 97 | key_rgui "key 231" 98 | key_rctrl "key 228" 99 | key_printscreen "key 70" 100 | key_scrolllock "key 71" 101 | key_pause "key 72" 102 | key_insert "key 73" 103 | key_home "key 74" 104 | key_pageup "key 75" 105 | key_delete "key 76" 106 | key_end "key 77" 107 | key_pagedown "key 78" 108 | key_up "stick_0 hat 0 1" "key 82" 109 | key_left "stick_0 hat 0 8" "key 80" 110 | key_down "stick_0 hat 0 4" "key 81" 111 | key_right "stick_0 hat 0 2" "key 79" 112 | key_numlock "key 83" 113 | key_kp_divide "key 84" 114 | key_kp_multiply "key 85" 115 | key_kp_minus "key 86" 116 | key_kp_7 "key 95" 117 | key_kp_8 "key 96" 118 | key_kp_9 "key 97" 119 | key_kp_plus "key 87" 120 | key_kp_4 "stick_0 button 2" "key 92" 121 | key_kp_5 "key 93" 122 | key_kp_6 "stick_0 button 3" "key 94" 123 | key_kp_1 "stick_0 button 0" "key 89" 124 | key_kp_2 "stick_0 button 5" "stick_0 button 4" "key 90" 125 | key_kp_3 "stick_0 button 1" "key 91" 126 | key_kp_enter "key 88" 127 | key_kp_0 "key 98" 128 | key_kp_period "key 99" 129 | mouse_left 130 | mouse_middle 131 | mouse_right 132 | jbutton_0_0 "stick_0 button 0" 133 | jbutton_0_1 "stick_0 button 1" 134 | jaxis_0_1- "stick_0 axis 1 0" 135 | jaxis_0_1+ "stick_0 axis 1 1" 136 | jaxis_0_0- "stick_0 axis 0 0" 137 | jaxis_0_0+ "stick_0 axis 0 1" 138 | jbutton_1_0 "stick_1 button 0" 139 | jbutton_1_1 "stick_1 button 1" 140 | jbutton_0_2 "stick_0 button 2" 141 | jbutton_0_3 "stick_0 button 3" 142 | jaxis_1_0- "stick_1 axis 0 0" 143 | jaxis_1_0+ "stick_1 axis 0 1" 144 | jaxis_1_1- "stick_1 axis 1 0" 145 | jaxis_1_1+ "stick_1 axis 1 1" 146 | jaxis_0_2- "stick_0 axis 2 0" 147 | jaxis_0_2+ "stick_0 axis 2 1" 148 | jaxis_0_3- "stick_0 axis 3 0" 149 | jaxis_0_3+ "stick_0 axis 3 1" 150 | jbutton_0_4 "stick_0 button 4" 151 | jbutton_0_5 "stick_0 button 5" 152 | jhat_0_0_0 "stick_0 hat 0 1" 153 | jhat_0_0_3 "stick_0 hat 0 8" 154 | jhat_0_0_2 "stick_0 hat 0 4" 155 | jhat_0_0_1 "stick_0 hat 0 2" 156 | mod_1 "key 224" "key 228" 157 | mod_2 "key 226" "key 230" 158 | mod_3 "key 227" "key 231" 159 | -------------------------------------------------------------------------------- /common/users/games/dosbox/tie.conf: -------------------------------------------------------------------------------- 1 | [sdl] 2 | mapperfile=~/.config/dosbox/tie.map 3 | 4 | [joystick] 5 | joysticktype=2axis 6 | timed=false 7 | 8 | [cpu] 9 | cycles=max 10 | 11 | [autoexec] 12 | echo 1 STAR WARS Tie Fighter 1994 13 | echo 2 STAR WARS Tie Fighter Special Edition 14 | choice /c:12 15 | if errorlevel 2 goto tie1995 16 | if errorlevel 1 goto tie1994 17 | 18 | :tie1994 19 | cd tie1994 20 | tie 21 | exit 22 | 23 | :tie1995 24 | mount -u c 25 | mount c ~/dosgames/tie1995 26 | imgmount d ~/dosgames/tie1995/game.ins -t iso 27 | c: 28 | tie 29 | exit 30 | -------------------------------------------------------------------------------- /common/users/games/dosbox/tie.map: -------------------------------------------------------------------------------- 1 | hand_stretchax 2 | hand_incstretch 3 | hand_decstretch 4 | hand_recwave "key 63 mod1" 5 | hand_caprawmidi 6 | hand_scrshot "key 62 mod1" 7 | hand_rawshot 8 | hand_upscshot 9 | hand_rendshot "key 62 mod2" 10 | hand_video "key 64 mod1" 11 | hand_mute "key 65 mod1" 12 | hand_reloadshad "key 59 mod1" 13 | hand_shutdown "key 66 mod1" 14 | hand_fullscr "key 40 mod2" 15 | hand_restart "key 74 mod1 mod2" 16 | hand_capmouse "key 67 mod1" 17 | hand_pause "key 72 mod2" 18 | hand_mapper "key 58 mod1" 19 | hand_speedlock "key 69 mod2" 20 | hand_cycledown "key 68 mod1" 21 | hand_cycleup "key 69 mod1" 22 | hand_caprawopl 23 | hand_swapimg "key 61 mod1" 24 | key_esc "stick_0 button 7" "key 41" 25 | key_f1 "stick_0 button 9" "key 58" 26 | key_f2 "stick_0 button 9 mod1" "key 59" 27 | key_f3 "key 60" 28 | key_f4 "key 61" 29 | key_f5 "stick_0 axis 4 0 mod1" "key 62" 30 | key_f6 "stick_0 axis 3 0 mod1" "key 63" 31 | key_f7 "stick_0 axis 3 1 mod1" "key 64" 32 | key_f8 "stick_0 axis 4 1 mod1" "key 65" 33 | key_f9 "stick_0 button 3" "key 66" 34 | key_f10 "stick_0 button 3 mod1" "key 67" 35 | key_f11 "key 68" 36 | key_f12 "key 69" 37 | key_grave "key 53" 38 | key_1 "key 30" 39 | key_2 "key 31" 40 | key_3 "key 32" 41 | key_4 "key 33" 42 | key_5 "key 34" 43 | key_6 "key 35" 44 | key_7 "key 36" 45 | key_8 "key 37" 46 | key_9 "key 38" 47 | key_0 "key 39" 48 | key_minus "stick_0 button 4" "key 45" 49 | key_equals "stick_0 axis 2 1" "key 46" 50 | key_bspace "stick_0 axis 2 1 mod1" "key 42" 51 | key_tab "key 43" 52 | key_q "key 20" 53 | key_w "stick_0 hat 0 2" "key 26" 54 | key_e "stick_0 button 0 mod1" "key 8" 55 | key_r "stick_0 button 2" "key 21" 56 | key_t "stick_0 axis 5 1" "key 23" 57 | key_y "stick_0 button 5" "key 28" 58 | key_u "stick_0 button 1 mod1" "key 24" 59 | key_i "key 12" 60 | key_o "key 18" 61 | key_p "key 19" 62 | key_lbracket "key 47" 63 | key_rbracket "key 48" 64 | key_enter "stick_0 button 6" "key 40" 65 | key_capslock "key 57" 66 | key_a "stick_0 button 5 mod1" "key 4" 67 | key_s "stick_0 hat 0 1" "key 22" 68 | key_d "key 7" 69 | key_f "key 9" 70 | key_g "stick_0 button 6 mod1" "key 10" 71 | key_h "key 11" 72 | key_j "key 13" 73 | key_k "key 14" 74 | key_l "stick_0 button 2 mod1" "key 15" 75 | key_semicolon "key 51" 76 | key_quote "key 52" 77 | key_backslash "stick_0 button 4 mod1" "key 49" 78 | key_lshift "key 225" "stick_0 hat 0 4" 79 | key_oem102 "key 100" 80 | key_z "stick_0 axis 5 1 mod1" "key 29" 81 | key_x "stick_0 button 10" "key 27" 82 | key_c "key 6" 83 | key_v "key 25" 84 | key_b "stick_0 button 10 mod1" "key 5" 85 | key_n "key 17" 86 | key_m "stick_0 button 7 mod1" "key 16" 87 | key_comma "key 54" 88 | key_period "key 55" 89 | key_slash "key 56" 90 | key_abnt1 "key 135" 91 | key_rshift "key 229" 92 | key_lctrl "key 224" 93 | key_lgui "key 227" 94 | key_lalt "key 226" 95 | key_space "key 44" 96 | key_ralt "key 230" 97 | key_rgui "key 231" 98 | key_rctrl "key 228" 99 | key_printscreen "key 70" 100 | key_scrolllock "key 71" 101 | key_pause "key 72" 102 | key_insert "key 73" 103 | key_home "key 74" 104 | key_pageup "key 75" 105 | key_delete "key 76" 106 | key_end "key 77" 107 | key_pagedown "key 78" 108 | key_up 109 | key_left 110 | key_down 111 | key_right 112 | key_numlock "key 83" 113 | key_kp_divide "key 84" 114 | key_kp_multiply "key 85" 115 | key_kp_minus "key 86" 116 | key_kp_7 "key 95" 117 | key_kp_8 "stick_0 axis 4 0" "key 96" 118 | key_kp_9 "key 97" 119 | key_kp_plus "key 87" 120 | key_kp_4 "key 92" 121 | key_kp_5 "key 93" 122 | key_kp_6 "key 94" 123 | key_kp_1 "stick_0 axis 3 0" "key 89" 124 | key_kp_2 "stick_0 axis 4 1" "key 90" 125 | key_kp_3 "stick_0 axis 3 1" "key 91" 126 | key_kp_enter "key 88" 127 | key_kp_0 "key 98" 128 | key_kp_period "key 99" 129 | mouse_left 130 | mouse_middle 131 | mouse_right 132 | jbutton_0_0 "stick_0 button 0" 133 | jbutton_0_1 "stick_0 button 1" 134 | jaxis_0_1- "stick_0 axis 1 0" "key 82" 135 | jaxis_0_1+ "stick_0 axis 1 1" "key 81" 136 | jaxis_0_0- "stick_0 axis 0 0" "key 80" 137 | jaxis_0_0+ "stick_0 axis 0 1" "key 79" 138 | jbutton_1_0 139 | jbutton_1_1 140 | jbutton_0_2 "stick_0 button 2" 141 | jbutton_0_3 "stick_0 button 3" 142 | jaxis_1_0- 143 | jaxis_1_0+ 144 | jaxis_1_1- 145 | jaxis_1_1+ 146 | jaxis_0_2- "stick_0 axis 2 0" 147 | jaxis_0_2+ "stick_0 axis 2 1" 148 | jaxis_0_3- "stick_0 axis 3 0" 149 | jaxis_0_3+ "stick_0 axis 3 1" 150 | jbutton_0_4 "stick_0 button 4" 151 | jbutton_0_5 "stick_0 button 5" 152 | jhat_0_0_0 153 | jhat_0_0_3 154 | jhat_0_0_2 155 | jhat_0_0_1 156 | mod_1 "key 228" "key 224" "stick_0 hat 0 8" 157 | mod_2 "key 230" "key 226" 158 | mod_3 "key 231" "key 227" 159 | -------------------------------------------------------------------------------- /common/users/games/dwarf-fortress/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | packages = with pkgs; [ 6 | (dwarf-fortress.override { 7 | enableIntro = false; 8 | enableTextMode = true; 9 | enableSound = false; 10 | }) 11 | ]; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /common/users/games/k_lite.verb: -------------------------------------------------------------------------------- 1 | w_metadata k_lite dlls \ 2 | title="K-Lite Codec Pack" \ 3 | year="2025" \ 4 | media="download" \ 5 | conflicts="lavfilters lavfilters702 mpc" \ 6 | file1="K-Lite_Codec_Pack_1890_Standard.exe" \ 7 | homepage="https://www.codecguide.com/download_k-lite_codec_pack_standard.htm" 8 | 9 | load_k_lite() 10 | { 11 | w_download "https://files2.codecguide.com/${file1}" aaf9fb7d368872fd41fee9d60cc76f3db1b146ffd382037e2179ec8ea6c7d62f 12 | w_try_cd "${W_CACHE}/${W_PACKAGE}" 13 | w_try "${WINE}" "${file1}" ${W_OPT_UNATTENDED:+ /VERYSILENT} 14 | } 15 | -------------------------------------------------------------------------------- /common/users/games/nethack/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | packages = with pkgs; [ 6 | nethack 7 | ]; 8 | 9 | files.".nethackrc".source = ./nethackrc; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /common/users/games/nethack/nethackrc: -------------------------------------------------------------------------------- 1 | OPTIONS=symset:curses 2 | 3 | # Disable autopickup 4 | OPTIONS=!autopickup 5 | 6 | # Make commands that ask for an inventory item pop up a menu 7 | OPTIONS=force_invmenu 8 | 9 | # Disable numpad 10 | OPTIONS=number_pad:0 11 | 12 | # Allow multiple saves and character names other than $USER 13 | OPTIONS=name:player,selectsaved 14 | 15 | # Options 16 | OPTIONS=altmeta,msg_window:reverse 17 | 18 | # Visual options 19 | OPTIONS=lit_corridor,hilite_pet,hilite_pile 20 | 21 | # Add items to status line 22 | OPTIONS=time,showexp 23 | 24 | OPTIONS=menucolors 25 | MENUCOLOR=" blessed " = green 26 | MENUCOLOR=" holy " = green 27 | MENUCOLOR=" cursed " = red 28 | MENUCOLOR=" unholy " = red 29 | MENUCOLOR=" cursed .* (being worn)" = orange&underline 30 | 31 | # Status hilites 32 | OPTIONS=statushilites 33 | # HP 34 | OPTIONS=hitpointbar 35 | OPTIONS=hilite_status:hitpoints/100%/gray&normal 36 | OPTIONS=hilite_status:hitpoints/<100%/green&normal 37 | OPTIONS=hilite_status:hitpoints/<66%/yellow&normal 38 | OPTIONS=hilite_status:hitpoints/<50%/orange&normal 39 | OPTIONS=hilite_status:hitpoints/<33%/red&bold 40 | OPTIONS=hilite_status:hitpoints/<15%/red&inverse 41 | 42 | ## Pw 43 | OPTIONS=hilite_status:power/100%/gray&normal 44 | OPTIONS=hilite_status:power/<100%/green&normal 45 | OPTIONS=hilite_status:power/<66%/yellow&normal 46 | OPTIONS=hilite_status:power/<50%/orange&normal 47 | OPTIONS=hilite_status:power/<33%/red&bold 48 | 49 | ## Carry 50 | OPTIONS=hilite_status:cap/burdened/yellow/stressed/orange/strained/red&bold/overtaxed/red&inverse/overloaded/red&inverse&blink 51 | 52 | ## Hunger 53 | OPTIONS=hilite_status:hunger/satiated/yellow/hungry/orange/weak/red&bold/fainting/red&inverse/fainted/red&inverse&blink 54 | 55 | ## Mental 56 | OPTIONS=hilite_status:condition/hallu/yellow 57 | OPTIONS=hilite_status:condition/conf/orange 58 | OPTIONS=hilite_status:condition/stun/red&bold 59 | 60 | ## Health 61 | OPTIONS=hilite_status:condition/termill/red&inverse 62 | OPTIONS=hilite_status:condition/foodpois/red&inverse 63 | OPTIONS=hilite_status:condition/slime/red&inverse 64 | 65 | # gold 66 | OPTIONS=hilite_status:gold/up/yellow/down/brown 67 | 68 | # St, Dx, Co, In, Wi, Ch 69 | OPTIONS=hilite_status:characteristics/up/green/down/red 70 | 71 | # Fancier interface with multiple windows and more color 72 | #OPTIONS=windowtype:curses 73 | -------------------------------------------------------------------------------- /common/users/gammastep/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | files.".config/gammastep/config.ini".text = '' 6 | [general] 7 | dawn-time=05:30-06:30 8 | dusk-time=20:30-21:30 9 | location-provider=manual 10 | temp-day=5500 11 | temp-night=3700 12 | 13 | [manual] 14 | ''; 15 | 16 | files.".config/systemd/user/gammastep.service".text = '' 17 | [Unit] 18 | Description=Display colour temperature adjustment 19 | PartOf=graphical-session.target 20 | After=graphical-session.target 21 | 22 | [Service] 23 | ExecStart=${pkgs.gammastep}/bin/gammastep -c /home/${username}/.config/gammastep/config.ini 24 | Restart=on-failure 25 | 26 | [Install] 27 | WantedBy=graphical-session.target 28 | ''; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /common/users/graphical/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | imports = [ 5 | (import ../alacritty { inherit username; }) 6 | (import ../gammastep { inherit username; }) 7 | (import ../sway { inherit username; }) 8 | ]; 9 | 10 | users.users.${username}.files.".config/mpv/mpv.conf".text = '' 11 | screenshot-format=png 12 | ''; 13 | } 14 | -------------------------------------------------------------------------------- /common/users/helix/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { ... }: 2 | 3 | { 4 | users.users.${username} = { 5 | programs.helix = { 6 | enable = true; 7 | settings.editor.color-modes = true; 8 | }; 9 | 10 | programs.zellij.settings.scrollback_editor = "hx"; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /common/users/nushell/config.nu: -------------------------------------------------------------------------------- 1 | $env.config = { 2 | show_banner: false 3 | edit_mode: vi 4 | ls: { 5 | clickable_links: false 6 | } 7 | display_errors: { 8 | exit_code: false 9 | termination_signal: false # do not show error on SIGINT 10 | } 11 | cursor_shape: { 12 | vi_insert: block 13 | vi_normal: block 14 | emacs: line 15 | } 16 | keybindings: [ 17 | { 18 | name: completion_menu 19 | modifier: none 20 | keycode: tab 21 | mode: [emacs, vi_normal, vi_insert] 22 | event: { 23 | until: [ 24 | { send: menu name: completion_menu } 25 | { send: menunext } 26 | ] 27 | } 28 | } 29 | ] 30 | } 31 | 32 | alias lx = eza --color=always 33 | alias lxa = lx -a 34 | alias lxl = lx -l 35 | alias lxal = lx -aalg 36 | def --wrapped lt [...args: string] { 37 | lx -T ...$args | bat -p 38 | } 39 | 40 | alias scrcpy = scrcpy -KM --forward-all-clicks 41 | 42 | # Run nixpkgs binary without installing 43 | def --wrapped , [ 44 | pkg: string # Nix package to run 45 | ...args: string # arguments 46 | ] { 47 | nix run $'nixpkgs#($pkg)' -- ...$args 48 | } 49 | 50 | # Create a shell with a set of available temporary packages 51 | def ,, [ 52 | --unfree 53 | ...packages: string # packages to include 54 | ] { 55 | if ($unfree) { 56 | NIXPKGS_ALLOW_UNFREE=1 nix shell --impure ...($packages | each { |p| $'nixpkgs#($p)' }) 57 | } else { 58 | nix shell ...($packages | each { |p| $'nixpkgs#($p)' }) 59 | } 60 | } 61 | 62 | def "nix dev" [ 63 | shell: string 64 | -c: string 65 | ] { 66 | let flake_path = ls -l /etc/nixos/flake.nix | get 0.target | path dirname 67 | 68 | if $c == null { 69 | nix develop $'($flake_path)#($shell)' -c nu 70 | } else { 71 | nix develop $'($flake_path)#($shell)' -c nu -c $c 72 | } 73 | } 74 | 75 | def "nix try" [file?: string] { 76 | if $file == null { 77 | NIXPKGS_ALLOW_UNFREE=1 nix-build -E 'with import { }; callPackage ./default.nix { }' 78 | } else { 79 | NIXPKGS_ALLOW_UNFREE=1 nix-build -E $'with import { }; callPackage ($file) { }' 80 | } 81 | } 82 | 83 | def sc2cfg [] { 84 | swaymsg input type:keyboard repeat_rate 88 85 | swaymsg input type:keyboard repeat_delay 150 86 | } 87 | 88 | def setup_quake [] { 89 | mv id1/PAK0.PAK id1/pak0.pak 90 | mv id1/PAK1.PAK id1/pak1.pak 91 | 92 | mkdir id1/music 93 | bchunk -w game.gog game.cue track 94 | mv *.wav id1/music 95 | rm track01.iso 96 | 97 | mkdir hipnotic/music 98 | bchunk -w gamea.gog game.cue track 99 | mv *.wav hipnotic/music 100 | rm track01.iso 101 | 102 | mkdir rogue/music 103 | bchunk -w gamed.gog gamed.cue track 104 | mv *.wav rogue/music 105 | rm track01.iso 106 | } 107 | 108 | def doomrl [ 109 | --install 110 | ] { 111 | if $install { 112 | http get https://drl.chaosforge.org/file_download/32/doomrl-linux-x64-0997.tar.gz& | save ~/Games/doomrl-linux-x64-0997.tar.gz 113 | tar -xf ~/Games/doomrl-linux-x64-0997.tar.gz -C ~/Games 114 | open -r ~/.config/doomrl/config.lua | save -f ~/Games/doomrl-linux-x64-0997/config.lua 115 | open -r ~/.config/doomrl/keybindings.lua | save -f ~/Games/doomrl-linux-x64-0997/keybindings.lua 116 | } else { 117 | cd ~/Games/doomrl-linux-x64-0997 118 | TERM=xterm steam-run ./doomrl -console 119 | } 120 | } 121 | 122 | def --wrapped dwarf-fortress [...args: string] { 123 | alacritty msg config 'font.normal.family = "DejaVu Sans Mono"' 124 | alacritty msg config draw_bold_text_with_bright_colors=true 125 | ^dwarf-fortress 126 | alacritty msg config draw_bold_text_with_bright_colors=false 127 | alacritty msg config 'font.normal.family = "monospace"' 128 | } 129 | -------------------------------------------------------------------------------- /common/users/nushell/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { config, lib, pkgs, ... }: 2 | 3 | let 4 | aliases = lib.concatStringsSep "\n" 5 | (lib.mapAttrsToList (k: v: "alias ${k} = ${v}") 6 | config.environment.shellAliases) + "\n\n"; 7 | vars = 8 | lib.concatStringsSep "\n" 9 | (lib.mapAttrsToList (k: v: "$env.${k} = \"${v}\"") 10 | config.environment.sessionVariables) + "\n\n" + '' 11 | $env.PATH = ($env.PATH | split row (char esep)) 12 | $env.PATH = (if $'($env.HOME)/.cargo/bin' in $env.PATH { $env.PATH } else { $env.PATH | prepend $'($env.HOME)/.cargo/bin' }) 13 | $env.PATH = (if $'($env.HOME)/.local/bin' in $env.PATH { $env.PATH } else { $env.PATH | prepend $'($env.HOME)/.local/bin' }) 14 | '' + "\n"; 15 | LS_COLORS = "$env.LS_COLORS = (${pkgs.vivid}/bin/vivid generate ${config.programs.vivid.theme} | str trim)\n"; 16 | PROMPT = 17 | if !config.programs.starship.enable then '' 18 | def create_left_prompt [] { 19 | $"\n(ansi blue_bold)($env.PWD | str replace $env.HOME ~)(ansi reset)(ansi green_bold)\n〉" 20 | } 21 | 22 | $env.PROMPT_COMMAND = { create_left_prompt } 23 | '' else '' 24 | mkdir ($nu.data-dir | path join "vendor/autoload") 25 | ${config.programs.starship.package}/bin/starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu") 26 | ''; 27 | in 28 | { 29 | programs.starship.enable = true; 30 | 31 | users.users.${username} = { 32 | programs.nushell = { 33 | enable = true; 34 | envText = (builtins.readFile ./env.nu) + 35 | vars + 36 | LS_COLORS; 37 | configText = (builtins.readFile ./config.nu) + "\n" + 38 | aliases + 39 | PROMPT; 40 | }; 41 | 42 | programs.helix.settings = { 43 | editor.shell = [ "nu" "-c" ]; 44 | keys.normal."C-z" = "no_op"; # nushell doesn't have suspend 45 | }; 46 | 47 | programs.zellij.settings.default_shell = "nu"; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /common/users/nushell/env.nu: -------------------------------------------------------------------------------- 1 | $env.PROMPT_COMMAND_RIGHT = { || "" } 2 | $env.PROMPT_INDICATOR = { || "" } 3 | $env.PROMPT_INDICATOR_VI_INSERT = { || ": " } 4 | $env.PROMPT_INDICATOR_VI_NORMAL = { || ") " } 5 | -------------------------------------------------------------------------------- /common/users/sway/README.md: -------------------------------------------------------------------------------- 1 | # sway 2 | 3 | ### wf-recorder 4 | Get device node name: 5 | ```sh 6 | wpctl status 7 | wpctl inspect 8 | ``` 9 | Given device name `alsa_output.pci-0000_07_00.6.HiFi__Headphones__sink`: 10 | ```sh 11 | wf-recorder --audio=alsa_output.pci-0000_07_00.6.HiFi__Headphones__sink.monitor 12 | ``` 13 | -------------------------------------------------------------------------------- /common/users/sway/default.nix: -------------------------------------------------------------------------------- 1 | { username, ... }: { pkgs, ... }: 2 | 3 | { 4 | 5 | programs.sway = { 6 | enable = true; 7 | wrapperFeatures.gtk = true; 8 | extraPackages = with pkgs; [ 9 | bemenu 10 | brightnessctl 11 | swayidle 12 | swaylock 13 | wf-recorder 14 | wl-clipboard 15 | grim # screenshot 16 | slurp # screenshot selection 17 | jq # parse outputs for screenshot 18 | ]; 19 | }; 20 | 21 | users.users.${username} = { config, ... }: { 22 | programs.sway = { 23 | enable = true; 24 | config = { 25 | focusFollowsMouse = "no"; 26 | smartBorders = "on"; 27 | 28 | input."type:keyboard" = { 29 | repeat_delay = "300"; 30 | repeat_rate = "25"; 31 | }; 32 | 33 | input."type:pointer" = { 34 | accel_profile = "flat"; 35 | }; 36 | 37 | input."type:touchpad" = { 38 | events = "disabled_on_external_mouse"; 39 | natural_scroll = "enabled"; 40 | pointer_accel = "0.4"; 41 | }; 42 | 43 | # older thinkpads 44 | input."2:10:TPPS\/2_IBM_TrackPoint" = { 45 | pointer_accel = "0.63"; 46 | accel_profile = "flat"; 47 | }; 48 | # newer thinkpads 49 | input."2:10:TPPS\/2_Elan_TrackPoint" = { 50 | pointer_accel = "0.63"; 51 | accel_profile = "flat"; 52 | }; 53 | 54 | output."*".bg = "${../../../assets/background.jpg} fill"; 55 | 56 | menu = with config.theme; '' 57 | bemenu-run --fn 'Iosevka Extended 14' \ 58 | --tb \${bg} \ 59 | --fb \${bg} \ 60 | --nb \${bg} \ 61 | --hb \${bg} \ 62 | --sb \${bg} \ 63 | --ab \${bg} \ 64 | --tf \${secondary} \ 65 | --hf \${secondary} \ 66 | --nf \${fg} 67 | ''; 68 | 69 | floatingModifier = "Mod4"; 70 | 71 | keybindings = with config.programs.sway.config; 72 | let 73 | mod = modifier; 74 | in 75 | { 76 | "${mod}+Return" = "exec ${terminal}"; 77 | "${mod}+d" = "exec ${menu}"; 78 | 79 | "${mod}+Shift+c" = "reload"; 80 | 81 | "${mod}+Shift+q" = "kill"; 82 | "${mod}+Shift+e" = "exec swaymsg exit"; 83 | 84 | "${mod}+f" = "fullscreen"; 85 | "${mod}+e" = "layout toggle split"; 86 | "${mod}+s" = "layout stacking"; 87 | "${mod}+w" = "layout tabbed"; 88 | 89 | "${mod}+Left" = "focus left"; 90 | "${mod}+Down" = "focus down"; 91 | "${mod}+Up" = "focus up"; 92 | "${mod}+Right" = "focus right"; 93 | "${mod}+${left}" = "focus left"; 94 | "${mod}+${down}" = "focus down"; 95 | "${mod}+${up}" = "focus up"; 96 | "${mod}+${right}" = "focus right"; 97 | 98 | "${mod}+Shift+Left" = "move left"; 99 | "${mod}+Shift+Down" = "move down"; 100 | "${mod}+Shift+Up" = "move up"; 101 | "${mod}+Shift+Right" = "move right"; 102 | "${mod}+Shift+${left}" = "move left"; 103 | "${mod}+Shift+${down}" = "move down"; 104 | "${mod}+Shift+${up}" = "move up"; 105 | "${mod}+Shift+${right}" = "move right"; 106 | 107 | "${mod}+1" = "workspace number 1"; 108 | "${mod}+2" = "workspace number 2"; 109 | "${mod}+3" = "workspace number 3"; 110 | "${mod}+4" = "workspace number 4"; 111 | "${mod}+5" = "workspace number 5"; 112 | "${mod}+6" = "workspace number 6"; 113 | "${mod}+7" = "workspace number 7"; 114 | "${mod}+8" = "workspace number 8"; 115 | "${mod}+9" = "workspace number 9"; 116 | "${mod}+0" = "workspace number 10"; 117 | 118 | "${mod}+Shift+1" = "move container to workspace number 1"; 119 | "${mod}+Shift+2" = "move container to workspace number 2"; 120 | "${mod}+Shift+3" = "move container to workspace number 3"; 121 | "${mod}+Shift+4" = "move container to workspace number 4"; 122 | "${mod}+Shift+5" = "move container to workspace number 5"; 123 | "${mod}+Shift+6" = "move container to workspace number 6"; 124 | "${mod}+Shift+7" = "move container to workspace number 7"; 125 | "${mod}+Shift+8" = "move container to workspace number 8"; 126 | "${mod}+Shift+9" = "move container to workspace number 9"; 127 | "${mod}+Shift+0" = "move container to workspace number 10"; 128 | 129 | "${mod}+z" = "focus output left"; 130 | "${mod}+x" = "focus output right"; 131 | 132 | "${mod}+Shift+z" = "move output left"; 133 | "${mod}+Shift+x" = "move output right"; 134 | 135 | "${mod}+Tab" = "move workspace to output right"; 136 | "${mod}+Shift+Tab" = "move workspace to output left"; 137 | 138 | "${mod}+Print" = "exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') - | wl-copy"; 139 | "${mod}+Shift+Print" = "exec grim"; 140 | "${mod}+g" = ''exec grim -g "$(slurp)" - | wl-copy''; 141 | 142 | "${mod}+Shift+s" = "exec swaylock -c 000000"; 143 | 144 | "${mod}+t" = "input type:touchpad events disabled"; 145 | "${mod}+Shift+t" = "input type:touchpad events enabled"; 146 | 147 | "XF86MonBrightnessUp" = "exec brightnessctl s +5%"; 148 | "XF86MonBrightnessDown" = "exec brightnessctl s 5%-"; 149 | 150 | "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; 151 | "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; 152 | "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; 153 | "XF86AudioMicMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; 154 | 155 | "XF86Calculator" = "exec ${terminal}"; 156 | 157 | "${mod}+b" = "splith"; 158 | "${mod}+v" = "splitv"; 159 | "${mod}+n" = "split none"; 160 | 161 | "${mod}+Shift+space" = "floating toggle"; 162 | "${mod}+space" = "focus mode_toggle"; 163 | 164 | "${mod}+a" = "focus parent"; 165 | "${mod}+c" = "focus child"; 166 | 167 | "${mod}+Shift+minus" = "move scratchpad"; 168 | "${mod}+minus" = "scratchpad show"; 169 | 170 | "${mod}+r" = ''mode "resize"''; 171 | }; 172 | modes.resize = with config.programs.sway.config; { 173 | "Left" = "resize shrink width 10px"; 174 | "Down" = "resize grow height 10px"; 175 | "Up" = "resize shrink height 10px"; 176 | "Right" = "resize grow width 10px"; 177 | "${left}" = "resize shrink width 10px"; 178 | "${down}" = "resize grow height 10px"; 179 | "${up}" = "resize shrink height 10px"; 180 | "${right}" = "resize grow width 10px"; 181 | 182 | "Return" = ''mode "default"''; 183 | "Escape" = ''mode "default"''; 184 | }; 185 | 186 | font = { 187 | name = "Iosevka Extended"; 188 | size = 9.0; 189 | }; 190 | 191 | # window colors 192 | colors = with config.theme; { 193 | focused = { 194 | background = primary; 195 | border = primary; 196 | childBorder = primary; 197 | indicator = primary; 198 | text = fg0; 199 | }; 200 | focusedInactive = { 201 | background = bg1; 202 | border = bg1; 203 | childBorder = bg1; 204 | indicator = bg1; 205 | text = fg; 206 | }; 207 | unfocused = { 208 | background = bg; 209 | border = bg; 210 | childBorder = bg; 211 | indicator = bg; 212 | text = fg; 213 | }; 214 | }; 215 | 216 | bars = [{ 217 | position = "top"; 218 | statusCommand = "${pkgs.my.rustatus}/bin/rustatus"; 219 | font = { 220 | name = "Iosevka Extended"; 221 | size = 10.0; 222 | }; 223 | colors = with config.theme; { 224 | statusline = fg; 225 | background = bg; 226 | focusedWorkspace = { 227 | background = primary; 228 | border = primary; 229 | text = fg0; 230 | }; 231 | inactiveWorkspace = { 232 | background = bg; 233 | border = bg; 234 | text = fg; 235 | }; 236 | }; 237 | }]; 238 | 239 | extra = [ 240 | ''assign [class="^steam_app.*"] 2'' 241 | ''assign [app_id="lutris"] 4'' 242 | ''assign [class="galaxyclient.exe"] 4'' 243 | ''assign [class="^steam$"] 4'' 244 | ''for_window [app_id="brave-nngceckbapebfimnlniiiahkandclblb-Default"] floating enable'' 245 | ''for_window [class="battle.net.exe"] floating enable'' 246 | ''for_window [class="galaxyclient.exe"] floating enable'' 247 | ''for_window [class=".*"] inhibit_idle fullscreen'' 248 | ''for_window [app_id=".*"] inhibit_idle fullscreen'' 249 | ]; 250 | 251 | startup = [ 252 | '' 253 | swayidle -w timeout 300 'swaylock -fc 000000' \ 254 | timeout 600 'swaymsg output "*" power off' \ 255 | resume 'swaymsg output "*" power on' \ 256 | before-sleep 'swaylock -fc 000000' 257 | '' 258 | ]; 259 | }; 260 | }; 261 | 262 | files.".config/nushell/login.nu".text = "if (tty) =~ '/dev/tty1' { exec sway }"; 263 | }; 264 | 265 | # Enable Wayland support in chrome 266 | environment.sessionVariables.NIXOS_OZONE_WL = "1"; 267 | nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland"; 268 | } 269 | -------------------------------------------------------------------------------- /common/users/themes/README.md: -------------------------------------------------------------------------------- 1 | # Themes 2 | 3 | - [Everforest](https://github.com/sainnhe/everforest) 4 | - [Gruvbox](https://github.com/morhetz/gruvbox) 5 | - [Melange](https://github.com/savq/melange) 6 | - [Nightfox](https://github.com/EdenEast/nightfox.nvim) 7 | - [Nord](https://www.nordtheme.com/) 8 | - [Tokyo Night](https://github.com/folke/tokyonight.nvim) 9 | -------------------------------------------------------------------------------- /common/users/themes/gruvbox/default.nix: -------------------------------------------------------------------------------- 1 | # https://github.com/morhetz/gruvbox 2 | # https://github.com/gruvbox-community/gruvbox 3 | # https://raw.githubusercontent.com/wiki/gruvbox-community/gruvbox/images/gruvbox_palette_dark.png 4 | # https://github.com/alacritty/alacritty-theme/blob/master/themes/gruvbox_dark.toml 5 | # https://chrome.google.com/webstore/detail/czo-gruvbox64-theme/hmalklkailocblgkjpdagjoieifkdfbj 6 | 7 | { username, ... }: { pkgs, ... }: 8 | 9 | { 10 | # TODO 11 | programs.vivid = { 12 | enable = true; 13 | theme = "gruvbox-dark"; 14 | }; 15 | 16 | environment.sessionVariables."GTK_THEME" = "gruvbox-dark"; # TODO 17 | 18 | users.users.${username} = { 19 | theme = { 20 | bg = "#282828"; # bg 235 21 | fg = "#ebdbb2"; # fg 223 22 | 23 | bg1 = "#3c3836"; # bg1 237 24 | fg0 = "fbf1c7"; # fg0 229 25 | 26 | # black = "#282828"; # bg 235 27 | black = "#3c3836"; # bg1 237 28 | red = "#cc241d"; # red 124 29 | green = "#98971a"; # green 106 30 | yellow = "#d79921"; # yellow 172 31 | blue = "#458588"; # blue 66 32 | magenta = "#b16286"; # purple 33 | cyan = "#689d6a"; # aqua 72 34 | white = "#a89984"; # gray 246 35 | 36 | bright = { 37 | black = "#928374"; # gray 245 38 | red = "#fb4934"; # red 167 39 | green = "#b8bb26"; # green 142 40 | yellow = "#fabd2f"; # yellow 214 41 | blue = "#83a598"; # blue 109 42 | magenta = "#d3869b"; # purple 175 43 | cyan = "#8ec07c"; # aqua 108 44 | white = "#ebdbb2"; # fg 223 45 | }; 46 | 47 | primary = "#665c54"; # bg3 241 48 | secondary = "#fe8019"; # orange 208 49 | }; 50 | 51 | packages = with pkgs; [ 52 | gruvbox-dark-icons-gtk 53 | gruvbox-dark-gtk 54 | ]; 55 | files.".gtkrc-2.0".source = ./gtk-2.0; # TODO 56 | files.".config/gtk-3.0/settings.ini".source = ./gtk-3.0; # TODO 57 | 58 | programs.bat.settings.theme = "gruvbox-dark"; 59 | 60 | programs.bottom.settings.flags.color = "gruvbox"; 61 | 62 | programs.git.config.delta.syntax-theme = "gruvbox-dark"; 63 | 64 | programs.helix.settings.theme = "gruvbox"; 65 | 66 | programs.zellij.settings.theme = "gruvbox"; 67 | 68 | files.".config/BraveSoftware/Brave-Browser/External Extensions/hmalklkailocblgkjpdagjoieifkdfbj.json".text = ''{"external_update_url":"https://clients2.google.com/service/update2/crx"}''; # TODO 69 | }; 70 | } 71 | -------------------------------------------------------------------------------- /common/users/themes/gruvbox/gtk-2.0: -------------------------------------------------------------------------------- 1 | gtk-theme-name = "gruvbox-dark" 2 | gtk-icon-theme-name = "oomox-gruvbox-dark" 3 | -------------------------------------------------------------------------------- /common/users/themes/gruvbox/gtk-3.0: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name = gruvbox-dark 3 | gtk-icon-theme-name = oomox-gruvbox-dark 4 | -------------------------------------------------------------------------------- /common/users/themes/nord/default.nix: -------------------------------------------------------------------------------- 1 | # https://github.com/arcticicestudio/nord 2 | # https://www.nordtheme.com/docs/colors-and-palettes 3 | # https://github.com/arcticicestudio/nord-alacritty/blob/develop/src/nord.yml 4 | 5 | { username, ... }: { pkgs, ... }: 6 | 7 | { 8 | # programs.vivid = { 9 | # enable = true; 10 | # theme = "nord"; 11 | # }; 12 | 13 | users.users.${username} = { config, ... }: { 14 | theme = { 15 | bg = "#2E3440"; # nord0 16 | fg = "#D8DEE9"; # nord4 17 | 18 | black = "#3B4252"; # nord1 19 | red = "#BF616A"; # nord11 20 | green = "#A3BE8C"; # nord14 21 | yellow = "#EBCB8B"; # nord13 22 | blue = "#81A1C1"; # nord9 23 | magenta = "#B48EAD"; # nord15 24 | cyan = "#88C0D0"; # nord8 25 | white = "#E5E9F0"; # nord5 26 | 27 | bright = with config.theme; { 28 | black = "#4C566A"; # nord3 29 | inherit red green yellow blue magenta; 30 | cyan = "#8FBCBB"; # nord7 31 | white = "#ECEFF4"; # nord6 32 | }; 33 | 34 | primary = "#5E81AC"; # nord10 35 | secondary = config.theme.cyan; 36 | }; 37 | 38 | packages = with pkgs; [ 39 | numix-icon-theme 40 | nordic 41 | ]; 42 | files.".gtkrc-2.0".source = ./gtk-2.0; 43 | files.".config/gtk-3.0/settings.ini".source = ./gtk-3.0; 44 | 45 | programs.bat.settings.theme = "Nord"; 46 | 47 | programs.bottom.settings.flags.color = "nord"; 48 | 49 | programs.helix.settings.theme = "nord"; 50 | 51 | programs.git.config.delta.syntax-theme = "Nord"; 52 | 53 | programs.zellij.settings.theme = "nord"; 54 | 55 | files.".config/BraveSoftware/Brave-Browser/External Extensions/abehfkkfjlplnjadfcjiflnejblfmmpj.json".text = ''{"external_update_url":"https://clients2.google.com/service/update2/crx"}''; 56 | }; 57 | } 58 | -------------------------------------------------------------------------------- /common/users/themes/nord/gtk-2.0: -------------------------------------------------------------------------------- 1 | gtk-theme-name = "Nordic" 2 | gtk-icon-theme-name = "Numix" 3 | -------------------------------------------------------------------------------- /common/users/themes/nord/gtk-3.0: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name = Nordic 3 | gtk-icon-theme-name = Numix 4 | -------------------------------------------------------------------------------- /common/users/themes/tokyonight/default.nix: -------------------------------------------------------------------------------- 1 | # https://github.com/folke/tokyonight.nvim 2 | # https://github.com/folke/tokyonight.nvim/blob/main/extras/alacritty_tokyonight_storm.yml 3 | # https://chrome.google.com/webstore/detail/tokyonight/enpfonmmpgoinjpglildebkaphbhndek 4 | 5 | { username, ... }: { ... }: 6 | 7 | { 8 | # programs.vivid = { 9 | # enable = true; 10 | # theme = "tokyonight-storm"; 11 | # }; 12 | 13 | users.users.${username} = { config, ... }: { 14 | theme = { 15 | bg = "#24283b"; 16 | fg = "#c0caf5"; 17 | 18 | black = "#1D202F"; 19 | red = "#f7768e"; 20 | green = "#9ece6a"; 21 | yellow = "#e0af68"; 22 | blue = "#7aa2f7"; 23 | magenta = "#bb9af7"; 24 | cyan = "#7dcfff"; 25 | white = "#a9b1d6"; 26 | 27 | bright = { 28 | black = "#414868"; 29 | white = "#c0caf5"; 30 | }; 31 | 32 | primary = "#475fc4"; # blue 33 | secondary = config.theme.blue; 34 | }; 35 | 36 | programs.alacritty.settings.colors.indexed_colors = [ 37 | { index = 16; color = "#ff9e64"; } 38 | { index = 17; color = "#db4b4b"; } 39 | ]; 40 | 41 | programs.helix.settings.theme = "tokyonight_storm"; 42 | 43 | programs.zellij.settings.theme = "tokyonight-storm"; 44 | 45 | files.".config/BraveSoftware/Brave-Browser/External Extensions/enpfonmmpgoinjpglildebkaphbhndek.json".text = ''{"external_update_url":"https://clients2.google.com/service/update2/crx"}''; 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /common/virt/default.nix: -------------------------------------------------------------------------------- 1 | { config, pkgs, ... }: 2 | 3 | { 4 | virtualisation.libvirtd = { 5 | enable = true; 6 | onBoot = "ignore"; 7 | }; 8 | programs.dconf.enable = true; 9 | 10 | environment.systemPackages = with pkgs; [ 11 | virt-manager 12 | virt-viewer 13 | (callPackage ./virst { }) 14 | ]; 15 | 16 | environment.etc = { 17 | "ovmf/OVMF_CODE.fd".source = "${config.virtualisation.libvirtd.qemu.package}/share/qemu/edk2-x86_64-code.fd"; 18 | "ovmf/OVMF_VARS.fd".source = "${config.virtualisation.libvirtd.qemu.package}/share/qemu/edk2-i386-vars.fd"; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /common/virt/virst/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /common/virt/virst/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "anstream" 7 | version = "0.6.14" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" 10 | dependencies = [ 11 | "anstyle", 12 | "anstyle-parse", 13 | "anstyle-query", 14 | "anstyle-wincon", 15 | "colorchoice", 16 | "is_terminal_polyfill", 17 | "utf8parse", 18 | ] 19 | 20 | [[package]] 21 | name = "anstyle" 22 | version = "1.0.7" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" 25 | 26 | [[package]] 27 | name = "anstyle-parse" 28 | version = "0.2.4" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" 31 | dependencies = [ 32 | "utf8parse", 33 | ] 34 | 35 | [[package]] 36 | name = "anstyle-query" 37 | version = "1.0.3" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" 40 | dependencies = [ 41 | "windows-sys", 42 | ] 43 | 44 | [[package]] 45 | name = "anstyle-wincon" 46 | version = "3.0.3" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" 49 | dependencies = [ 50 | "anstyle", 51 | "windows-sys", 52 | ] 53 | 54 | [[package]] 55 | name = "clap" 56 | version = "4.5.4" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" 59 | dependencies = [ 60 | "clap_builder", 61 | "clap_derive", 62 | ] 63 | 64 | [[package]] 65 | name = "clap_builder" 66 | version = "4.5.2" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" 69 | dependencies = [ 70 | "anstream", 71 | "anstyle", 72 | "clap_lex", 73 | "strsim", 74 | ] 75 | 76 | [[package]] 77 | name = "clap_derive" 78 | version = "4.5.4" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" 81 | dependencies = [ 82 | "heck", 83 | "proc-macro2", 84 | "quote", 85 | "syn", 86 | ] 87 | 88 | [[package]] 89 | name = "clap_lex" 90 | version = "0.7.0" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" 93 | 94 | [[package]] 95 | name = "colorchoice" 96 | version = "1.0.1" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" 99 | 100 | [[package]] 101 | name = "heck" 102 | version = "0.5.0" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 105 | 106 | [[package]] 107 | name = "is_terminal_polyfill" 108 | version = "1.70.0" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" 111 | 112 | [[package]] 113 | name = "proc-macro2" 114 | version = "1.0.83" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" 117 | dependencies = [ 118 | "unicode-ident", 119 | ] 120 | 121 | [[package]] 122 | name = "quote" 123 | version = "1.0.36" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 126 | dependencies = [ 127 | "proc-macro2", 128 | ] 129 | 130 | [[package]] 131 | name = "strsim" 132 | version = "0.11.1" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 135 | 136 | [[package]] 137 | name = "syn" 138 | version = "2.0.65" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" 141 | dependencies = [ 142 | "proc-macro2", 143 | "quote", 144 | "unicode-ident", 145 | ] 146 | 147 | [[package]] 148 | name = "unicode-ident" 149 | version = "1.0.12" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 152 | 153 | [[package]] 154 | name = "utf8parse" 155 | version = "0.2.1" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 158 | 159 | [[package]] 160 | name = "virst" 161 | version = "0.1.0" 162 | dependencies = [ 163 | "clap", 164 | ] 165 | 166 | [[package]] 167 | name = "windows-sys" 168 | version = "0.52.0" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 171 | dependencies = [ 172 | "windows-targets", 173 | ] 174 | 175 | [[package]] 176 | name = "windows-targets" 177 | version = "0.52.5" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 180 | dependencies = [ 181 | "windows_aarch64_gnullvm", 182 | "windows_aarch64_msvc", 183 | "windows_i686_gnu", 184 | "windows_i686_gnullvm", 185 | "windows_i686_msvc", 186 | "windows_x86_64_gnu", 187 | "windows_x86_64_gnullvm", 188 | "windows_x86_64_msvc", 189 | ] 190 | 191 | [[package]] 192 | name = "windows_aarch64_gnullvm" 193 | version = "0.52.5" 194 | source = "registry+https://github.com/rust-lang/crates.io-index" 195 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 196 | 197 | [[package]] 198 | name = "windows_aarch64_msvc" 199 | version = "0.52.5" 200 | source = "registry+https://github.com/rust-lang/crates.io-index" 201 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 202 | 203 | [[package]] 204 | name = "windows_i686_gnu" 205 | version = "0.52.5" 206 | source = "registry+https://github.com/rust-lang/crates.io-index" 207 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 208 | 209 | [[package]] 210 | name = "windows_i686_gnullvm" 211 | version = "0.52.5" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 214 | 215 | [[package]] 216 | name = "windows_i686_msvc" 217 | version = "0.52.5" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 220 | 221 | [[package]] 222 | name = "windows_x86_64_gnu" 223 | version = "0.52.5" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 226 | 227 | [[package]] 228 | name = "windows_x86_64_gnullvm" 229 | version = "0.52.5" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 232 | 233 | [[package]] 234 | name = "windows_x86_64_msvc" 235 | version = "0.52.5" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 238 | -------------------------------------------------------------------------------- /common/virt/virst/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "virst" 3 | version = "0.1.0" 4 | edition = "2021" 5 | authors = ["Maxwell Anderson "] 6 | description = "A helper utility for libvirt and virt-manager" 7 | 8 | [dependencies] 9 | clap = { version = "4.1", features = ["derive"] } 10 | 11 | [profile.release] 12 | panic = "abort" 13 | strip = true 14 | -------------------------------------------------------------------------------- /common/virt/virst/default.nix: -------------------------------------------------------------------------------- 1 | { rustPlatform, ... }: 2 | 3 | rustPlatform.buildRustPackage { 4 | name = "virst"; 5 | src = ./.; 6 | cargoLock.lockFile = ./Cargo.lock; 7 | } 8 | -------------------------------------------------------------------------------- /common/virt/virst/src/cli.rs: -------------------------------------------------------------------------------- 1 | use clap::{Parser, Subcommand}; 2 | 3 | /// A helper utility for libvirt and virt-manager 4 | #[derive(Parser)] 5 | #[clap(author, version, about)] 6 | pub struct Cli { 7 | #[clap(subcommand)] 8 | pub command: Commands, 9 | } 10 | 11 | #[derive(Subcommand)] 12 | pub enum Commands { 13 | /// Create a new VM 14 | New { 15 | /// Path to ISO file 16 | iso_file: String, 17 | }, 18 | /// List all VMs 19 | #[clap(alias = "l", alias = "ls")] 20 | List, 21 | /// Open an ISO with qemu-kvm 22 | Live { 23 | /// Path to ISO file 24 | iso_file: String, 25 | }, 26 | /// View a running VM 27 | View { 28 | /// Name of VM 29 | domain: String, 30 | }, 31 | /// Launch a VM 32 | Start { 33 | /// Name of VM 34 | domain: String, 35 | }, 36 | /// Shutdown a running VM 37 | Stop { 38 | /// Name of VM 39 | domain: String, 40 | }, 41 | /// Immediately stop a running VM 42 | Destroy { 43 | /// Name of VM 44 | domain: String, 45 | }, 46 | /// Delete a VM 47 | Delete { 48 | /// Name of VM 49 | domain: String, 50 | }, 51 | } 52 | -------------------------------------------------------------------------------- /common/virt/virst/src/lib.rs: -------------------------------------------------------------------------------- 1 | use std::{ 2 | io::{self, Write}, 3 | process::Command, 4 | }; 5 | 6 | pub mod cli; 7 | pub use cli::{Cli, Commands}; 8 | 9 | pub fn vm_already_exists(name: &str) -> bool { 10 | get_output("virsh", &["list", "--all"]) 11 | .unwrap_or_default() 12 | .lines() 13 | .skip(2) 14 | .map(|l| l.split_whitespace().nth(1).unwrap_or_default()) 15 | .any(|x| x == name) 16 | } 17 | 18 | pub fn prompt(prompt: &str) -> io::Result { 19 | loop { 20 | let input = read_line(prompt)?; 21 | 22 | if !input.is_empty() && input.len() < 64 { 23 | return Ok(input); 24 | } 25 | } 26 | } 27 | 28 | pub fn prompt_or_default(prompt: &str, default: &str) -> io::Result { 29 | let input = read_line(prompt)?; 30 | 31 | if !input.is_empty() && input.len() < 64 { 32 | Ok(input) 33 | } else { 34 | Ok(default.to_owned()) 35 | } 36 | } 37 | 38 | pub fn read_line(prompt: &str) -> io::Result { 39 | print!("{}", prompt); 40 | io::stdout().flush()?; 41 | 42 | let mut input = String::new(); 43 | io::stdin().read_line(&mut input)?; 44 | 45 | Ok(input.trim().to_owned()) 46 | } 47 | 48 | pub fn get_output(command: &str, args: &[&str]) -> io::Result { 49 | let res = Command::new(command).args(args).output()?; 50 | if let Ok(s) = String::from_utf8([res.stdout, res.stderr].concat()) { 51 | Ok(s.trim().to_owned()) 52 | } else { 53 | Err(io::Error::from(io::ErrorKind::InvalidData)) 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /common/virt/virst/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::io; 2 | 3 | use clap::Parser; 4 | 5 | use virst::*; 6 | 7 | fn main() -> io::Result<()> { 8 | match Cli::parse().command { 9 | Commands::New { iso_file } => { 10 | let name = prompt("Name: ")?; 11 | if vm_already_exists(&name) { 12 | println!("A VM with that name already exists."); 13 | } else { 14 | let cores = prompt_or_default("Cores: ", "4")?; 15 | let mem = prompt_or_default("Memory (MiB): ", "4096")?; 16 | let size = format!("size={}", prompt_or_default("Disk size (GiB): ", "20")?); 17 | let uefi = prompt_or_default("UEFI? (y/N): ", "n")?.to_lowercase(); 18 | let args = [ 19 | "--vcpus", 20 | &cores, 21 | "--memory", 22 | &mem, 23 | "--disk", 24 | &size, 25 | "--name", 26 | &name, 27 | "--osinfo", 28 | "detect=on,name=generic", 29 | "--cdrom", 30 | &iso_file, 31 | ]; 32 | let args = if uefi.starts_with("y") { 33 | [args.as_slice(), &["--boot", "loader=/etc/ovmf/OVMF_CODE.fd,loader.readonly=yes,loader.type=pflash,nvram.template=/etc/ovmf/OVMF_VARS.fd,loader_secure=no"]].concat() 34 | } else { 35 | args.to_vec() 36 | }; 37 | println!("{}", get_output("virt-install", &args)?); 38 | } 39 | } 40 | Commands::List => println!("{}", get_output("virsh", &["list", "--all"])?), 41 | Commands::Live { iso_file } => { 42 | println!( 43 | "{}", 44 | get_output( 45 | "qemu-kvm", 46 | &[ 47 | "-cpu", 48 | "host", 49 | "-smp", 50 | "4", 51 | "-m", 52 | "4096", 53 | "-vga", 54 | "virtio", 55 | "-full-screen", 56 | "-cdrom", 57 | &iso_file 58 | ] 59 | )? 60 | ); 61 | } 62 | Commands::View { domain } => { 63 | println!("{}", get_output("virt-viewer", &["-f", &domain])?); 64 | } 65 | Commands::Start { domain } => { 66 | println!("{}", get_output("virsh", &["start", &domain])?); 67 | println!("{}", get_output("virt-viewer", &["-f", &domain])?); 68 | } 69 | Commands::Stop { domain } => { 70 | println!("{}", get_output("virsh", &["shutdown", &domain])?) 71 | } 72 | Commands::Destroy { domain } => { 73 | println!("{}", get_output("virsh", &["destroy", &domain])?) 74 | } 75 | Commands::Delete { domain } => { 76 | println!("{}", get_output("virsh", &["destroy", &domain])?); 77 | println!( 78 | "{}", 79 | get_output( 80 | "virsh", 81 | &["undefine", &domain, "--nvram", "--remove-all-storage"] 82 | )? 83 | ) 84 | } 85 | }; 86 | 87 | Ok(()) 88 | } 89 | -------------------------------------------------------------------------------- /common/waydroid/README.md: -------------------------------------------------------------------------------- 1 | # WayDroid 2 | 3 | ## Installation 4 | ``` 5 | sudo waydroid init -s GAPPS -f 6 | waydroid session start 7 | sudo waydroid shell 8 | ``` 9 | Inside the shell run this command: 10 | ``` 11 | ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";" 12 | ``` 13 | Use the string of numbers printed by the command to register the device on your Google Account at 14 | [https://www.google.com/android/uncertified](https://www.google.com/android/uncertified) 15 | 16 | ## Usage 17 | ``` 18 | waydroid show-full-ui 19 | ``` 20 | -------------------------------------------------------------------------------- /common/waydroid/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | virtualisation.waydroid.enable = true; 3 | } 4 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1746461020, 6 | "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", 7 | "owner": "nixos", 8 | "repo": "nixpkgs", 9 | "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "nixos", 14 | "ref": "nixos-unstable", 15 | "repo": "nixpkgs", 16 | "type": "github" 17 | } 18 | }, 19 | "nixpkgs-pinned": { 20 | "locked": { 21 | "lastModified": 1735160951, 22 | "narHash": "sha256-9h91U6BBNnzShwzlC+r/aXB+WyN3S140lYQbHH95bc0=", 23 | "owner": "nixos", 24 | "repo": "nixpkgs", 25 | "rev": "c792c60b8a97daa7efe41a6e4954497ae410e0c1", 26 | "type": "github" 27 | }, 28 | "original": { 29 | "owner": "nixos", 30 | "repo": "nixpkgs", 31 | "rev": "c792c60b8a97daa7efe41a6e4954497ae410e0c1", 32 | "type": "github" 33 | } 34 | }, 35 | "root": { 36 | "inputs": { 37 | "nixpkgs": "nixpkgs", 38 | "nixpkgs-pinned": "nixpkgs-pinned" 39 | } 40 | } 41 | }, 42 | "root": "root", 43 | "version": 7 44 | } 45 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "My NixOS flake configuration"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 6 | nixpkgs-pinned.url = "github:nixos/nixpkgs/c792c60b8a97daa7efe41a6e4954497ae410e0c1"; 7 | }; 8 | 9 | outputs = { self, nixpkgs, nixpkgs-pinned, ... }: { 10 | # # RIP nixpkgs-fmt. gonna wait for NixOS to get their stuff together before touching a different formatter 11 | # formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixpkgs-fmt; 12 | 13 | overlays = { 14 | my = import ./pkgs; 15 | pinned = final: prev: { 16 | pinned = import nixpkgs-pinned { system = "x86_64-linux"; }; 17 | }; 18 | }; 19 | 20 | nixosConfigurations = let overlays = { nixpkgs.overlays = with self.overlays; [ my pinned ]; }; in { 21 | antimond = nixpkgs.lib.nixosSystem { 22 | system = "x86_64-linux"; 23 | modules = [ 24 | ./hosts/antimond/configuration.nix 25 | overlays 26 | ]; 27 | }; 28 | 29 | cybros = nixpkgs.lib.nixosSystem { 30 | system = "x86_64-linux"; 31 | modules = [ 32 | ./hosts/cybros/configuration.nix 33 | overlays 34 | ]; 35 | }; 36 | 37 | gantrithor = nixpkgs.lib.nixosSystem { 38 | system = "x86_64-linux"; 39 | modules = [ 40 | ./hosts/gantrithor/configuration.nix 41 | overlays 42 | ]; 43 | }; 44 | 45 | telperion = nixpkgs.lib.nixosSystem { 46 | system = "x86_64-linux"; 47 | modules = [ 48 | ./hosts/telperion/configuration.nix 49 | overlays 50 | ]; 51 | }; 52 | }; 53 | 54 | devShells."x86_64-linux" = 55 | let 56 | pkgs = nixpkgs.legacyPackages."x86_64-linux"; 57 | in 58 | { 59 | python = 60 | pkgs.mkShell { 61 | nativeBuildInputs = with pkgs.python312Packages; [ 62 | python 63 | pylsp-mypy 64 | ]; 65 | }; 66 | rust = 67 | pkgs.mkShell { 68 | nativeBuildInputs = with pkgs; [ 69 | cargo 70 | clippy 71 | rust-analyzer 72 | rustc 73 | rustfmt 74 | ]; 75 | }; 76 | sh = 77 | pkgs.mkShell { 78 | nativeBuildInputs = with pkgs; [ 79 | shellcheck 80 | shfmt 81 | ]; 82 | }; 83 | web = 84 | pkgs.mkShell { 85 | nativeBuildInputs = with pkgs; [ 86 | nodePackages.typescript-language-server 87 | vscode-langservers-extracted # HTML, CSS 88 | ]; 89 | }; 90 | }; 91 | }; 92 | } 93 | -------------------------------------------------------------------------------- /hosts/README.md: -------------------------------------------------------------------------------- 1 | # Hosts 2 | 3 | Various different machines running NixOS or using Nix. 4 | 5 | ## antimond 💻⚙️ 6 | 7 | ![](https://img.shields.io/badge/OS-NixOS-6e9bcb?logo=NixOS) 8 | 9 | A Framework Laptop 16 running NixOS. 10 | 11 | ## cybros 💻🔴 12 | 13 | ![](https://img.shields.io/badge/OS-NixOS-6e9bcb?logo=NixOS) 14 | 15 | A Lenovo Thinkpad T14 Gen 2 AMD running NixOS. 16 | 17 | ## gantrithor 💻🔴 18 | 19 | ![](https://img.shields.io/badge/OS-NixOS-6e9bcb?logo=NixOS) 20 | 21 | A Lenovo Thinkpad T430 running NixOS. 22 | 23 | ## telperion 24 | 25 | ![](https://img.shields.io/badge/OS-NixOS-6e9bcb?logo=NixOS) 26 | 27 | An old Dell laptop running NixOS. 28 | -------------------------------------------------------------------------------- /hosts/antimond/README.md: -------------------------------------------------------------------------------- 1 | # antimond 2 | 3 | A Framework Laptop 16 running NixOS. 4 | 5 | ### `sfdisk --dump /dev/nvme0n1` 6 | ``` 7 | label: gpt 8 | label-id: BED1586D-89D7-4154-8B4A-A0CFB9C5D1DD 9 | device: /dev/nvme0n1 10 | unit: sectors 11 | first-lba: 2048 12 | last-lba: 1953525134 13 | sector-size: 512 14 | 15 | /dev/nvme0n1p1 : start= 2048, size= 1126400, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=1BBC8CF5-EBF0-4B72-980A-0270D71386FF 16 | /dev/nvme0n1p2 : start= 1128448, size= 1952395264, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=7B07E990-A44A-45D2-8640-01EFC2DA7ED3 17 | ``` 18 | 19 | ## Quirks 20 | 21 | ### Audio 22 | 23 | The Audio Expansion Card must be set as the default card in order for the audio to switch to headphones when plugged in. This is relatively simple with `wpctl status` and `wpctl set-default `. 24 | -------------------------------------------------------------------------------- /hosts/antimond/configuration.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ./hardware-configuration.nix 6 | ../../common 7 | ../../common/network/wired.nix 8 | ../../common/network/wireless.nix 9 | ../../common/network/bluetooth.nix 10 | ../../common/laptop 11 | ../../common/graphical 12 | 13 | ../../common/games 14 | ../../common/games/diablo 15 | ../../common/games/doom 16 | 17 | ./users/zaechus.nix 18 | ]; 19 | 20 | # systemd-boot 21 | boot.loader = { 22 | systemd-boot.enable = true; 23 | efi.canTouchEfiVariables = true; 24 | }; 25 | 26 | # AMD 27 | hardware.amdgpu.initrd.enable = true; 28 | hardware.cpu.amd.updateMicrocode = true; 29 | boot.kernelParams = [ 30 | "amdgpu.abmlevel=0" # disable ABM 31 | # "amdgpu.dcdebugmask=0x10" # disable PSR 32 | # "amdgpu.dcdebugmask=0x400" # disable DISPLAY_PANEL_REPLAY 33 | # "amdgpu.dcdebugmask=0x410" # disable both 34 | ]; 35 | 36 | # Enable trim 37 | boot.initrd.luks.devices."root".allowDiscards = true; 38 | services.fstrim.enable = true; 39 | 40 | # Enforce fstab options 41 | fileSystems = { 42 | "/".options = [ "compress=zstd" ]; 43 | "/boot".options = [ "umask=0077" ]; 44 | "/home".options = [ "compress=zstd" ]; 45 | "/nix".options = [ "compress=zstd" "noatime" ]; 46 | "/swap".options = [ "noatime" "nodatacow" ]; 47 | }; 48 | 49 | # Swap 50 | swapDevices = [{ device = "/swap/swapfile"; }]; 51 | 52 | # Time Zone 53 | time.timeZone = "America/Denver"; 54 | 55 | # Hostname 56 | networking.hostName = "antimond"; 57 | 58 | networking.firewall.allowedUDPPorts = [ 59 | 47584 # Dark Souls 60 | ]; 61 | networking.firewall.allowedTCPPorts = [ 62 | 47584 # Dark Souls 63 | ]; 64 | 65 | # Services 66 | services.fwupd.enable = true; 67 | 68 | virtualisation.waydroid.enable = true; 69 | 70 | # Packages 71 | environment.systemPackages = with pkgs; [ 72 | anki 73 | ffmpeg 74 | lftp 75 | scummvm 76 | sshfs 77 | 78 | my.adom1 79 | my.doukutsu-rs 80 | my.RBDOOM-3-BFG 81 | ]; 82 | 83 | programs.steam.extraPackages = with pkgs; [ 84 | # Hotline Miami 85 | pkgsi686Linux.libGLU 86 | pkgsi686Linux.openal 87 | pkgsi686Linux.nvidia_cg_toolkit 88 | ]; 89 | 90 | system.stateVersion = "24.05"; 91 | } 92 | -------------------------------------------------------------------------------- /hosts/antimond/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | { config, lib, modulesPath, ... }: 2 | 3 | { 4 | imports = [ 5 | (modulesPath + "/installer/scan/not-detected.nix") 6 | ]; 7 | 8 | boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; 9 | boot.initrd.kernelModules = [ ]; 10 | boot.kernelModules = [ "kvm-amd" ]; 11 | boot.extraModulePackages = [ ]; 12 | 13 | fileSystems."/" = 14 | { 15 | device = "/dev/disk/by-uuid/1da2e922-4ffa-40f0-8c20-dda5eda5f5ce"; 16 | fsType = "btrfs"; 17 | options = [ "subvol=root" ]; 18 | }; 19 | 20 | boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/1844306a-42eb-412a-8d3c-0bcbaf292ebf"; 21 | 22 | fileSystems."/home" = 23 | { 24 | device = "/dev/disk/by-uuid/1da2e922-4ffa-40f0-8c20-dda5eda5f5ce"; 25 | fsType = "btrfs"; 26 | options = [ "subvol=home" ]; 27 | }; 28 | 29 | fileSystems."/nix" = 30 | { 31 | device = "/dev/disk/by-uuid/1da2e922-4ffa-40f0-8c20-dda5eda5f5ce"; 32 | fsType = "btrfs"; 33 | options = [ "subvol=nix" ]; 34 | }; 35 | 36 | fileSystems."/swap" = 37 | { 38 | device = "/dev/disk/by-uuid/1da2e922-4ffa-40f0-8c20-dda5eda5f5ce"; 39 | fsType = "btrfs"; 40 | options = [ "subvol=swap" ]; 41 | }; 42 | 43 | fileSystems."/boot" = 44 | { 45 | device = "/dev/disk/by-uuid/5F2D-E9F9"; 46 | fsType = "vfat"; 47 | options = [ "fmask=0077" "dmask=0077" ]; 48 | }; 49 | 50 | swapDevices = [ ]; 51 | 52 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 53 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 54 | } 55 | -------------------------------------------------------------------------------- /hosts/antimond/users/zaechus.nix: -------------------------------------------------------------------------------- 1 | let 2 | username = "zaechus"; 3 | in 4 | { 5 | imports = [ 6 | (import ../../../common/users { inherit username; }) 7 | (import ../../../common/users/themes/gruvbox { inherit username; }) 8 | (import ../../../common/users/graphical { inherit username; }) 9 | 10 | (import ../../../common/users/dev/rust { inherit username; }) 11 | (import ../../../common/users/dev/zellij { inherit username; }) 12 | 13 | (import ../../../common/users/games { inherit username; }) 14 | (import ../../../common/users/games/dosbox { inherit username; }) 15 | ]; 16 | 17 | users.users.zaechus = { 18 | isNormalUser = true; 19 | extraGroups = [ "wheel" "video" ]; 20 | 21 | programs.git.config.user = { 22 | email = "zaechus@pm.me"; 23 | name = "Zaechus"; 24 | }; 25 | 26 | programs.sway.config.output = { 27 | eDP-1 = { 28 | pos = "0 0"; 29 | subpixel = "rgb"; 30 | }; 31 | eDP-2 = { 32 | pos = "0 0"; 33 | subpixel = "rgb"; 34 | }; 35 | DP-3.pos = "2560 0"; 36 | DP-4.pos = "2560 0"; 37 | }; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /hosts/cybros/README.md: -------------------------------------------------------------------------------- 1 | # cybros 2 | 3 | A Lenovo Thinkpad T14 Gen 2 AMD running NixOS. 4 | 5 | ### `sfdisk --dump /dev/nvme0n1` 6 | ``` 7 | label: gpt 8 | label-id: 4B26D3A4-36A2-D643-81AD-4EE0E614E0F3 9 | device: /dev/nvme0n1 10 | unit: sectors 11 | first-lba: 2048 12 | last-lba: 1000215182 13 | sector-size: 512 14 | 15 | /dev/nvme0n1p1 : start= 2048, size= 1126400, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=EE64FB14-68AE-2041-8E48-C7B3B54AAAC5 16 | /dev/nvme0n1p2 : start= 1128448, size= 999086735, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=52810840-4A88-614B-9C73-882E3463E62E 17 | ``` 18 | -------------------------------------------------------------------------------- /hosts/cybros/configuration.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ./hardware-configuration.nix 6 | ../../common 7 | ../../common/network/wired.nix 8 | ../../common/network/wireless.nix 9 | ../../common/laptop 10 | ../../common/graphical 11 | ../../common/network/bluetooth.nix 12 | ../../common/network/wg-quick.nix 13 | 14 | ../../common/games 15 | ../../common/games/misc.nix 16 | ../../common/games/xvt.nix 17 | ../../common/games/diablo 18 | ../../common/games/doom 19 | ../../common/games/minecraft 20 | 21 | ../../common/waydroid 22 | 23 | ./users/zaechus.nix 24 | ./users/lizzie.nix 25 | ]; 26 | 27 | # Use the systemd-boot EFI boot loader. 28 | boot.loader = { 29 | systemd-boot.enable = true; 30 | efi.canTouchEfiVariables = true; 31 | }; 32 | 33 | # AMD 34 | boot.initrd.kernelModules = [ "amdgpu" ]; 35 | hardware.cpu.amd.updateMicrocode = true; 36 | 37 | # Enable trim 38 | boot.initrd.luks.devices."root".allowDiscards = true; 39 | services.fstrim.enable = true; 40 | 41 | # Enforce fstab options 42 | fileSystems = { 43 | "/".options = [ "compress=zstd" "space_cache=v2" ]; 44 | "/boot".options = [ "umask=0077" ]; 45 | "/home".options = [ "compress=zstd" "space_cache=v2" ]; 46 | "/nix".options = [ "compress=zstd" "noatime" "space_cache=v2" ]; 47 | "/swap".options = [ "noatime" "nodatacow" "space_cache=v2" ]; 48 | }; 49 | 50 | # Swap 51 | swapDevices = [{ device = "/swap/swapfile"; }]; 52 | 53 | # Set your time zone. 54 | time.timeZone = "America/Denver"; 55 | 56 | # Hostname 57 | networking.hostName = "cybros"; 58 | 59 | # List packages installed in system profile. To search, run: 60 | # $ nix search nixpkgs ripgrep 61 | environment.systemPackages = with pkgs; [ 62 | aria2 # torrent 63 | brogue-ce 64 | # crawl 65 | du-dust 66 | eza # exa 67 | ffmpeg 68 | # gimp 69 | # glxinfo # glxgears 70 | imagemagick 71 | # infra-arcana 72 | lftp 73 | # libwebp # dwebp 74 | # mkvtoolnix-cli # mkvmerge 75 | p7zip 76 | pciutils # lspci 77 | poppler_utils # pdf 78 | ppsspp # psp 79 | scummvm 80 | rbdoom-3-bfg 81 | rogue 82 | umoria 83 | 84 | my.angband 85 | ]; 86 | 87 | system.stateVersion = "21.11"; 88 | } 89 | -------------------------------------------------------------------------------- /hosts/cybros/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, modulesPath, ... }: 2 | 3 | { 4 | imports = [ 5 | (modulesPath + "/installer/scan/not-detected.nix") 6 | ]; 7 | 8 | boot.initrd.availableKernelModules = [ "nvme" "ehci_pci" "xhci_pci" "rtsx_pci_sdmmc" ]; 9 | boot.initrd.kernelModules = [ ]; 10 | boot.kernelModules = [ "kvm-amd" ]; 11 | boot.extraModulePackages = [ ]; 12 | 13 | fileSystems."/" = 14 | { 15 | device = "/dev/disk/by-uuid/6ac71b2f-5058-4908-949f-4e2a7db59119"; 16 | fsType = "btrfs"; 17 | options = [ "subvol=root" ]; 18 | }; 19 | 20 | boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/816068d3-74aa-49a4-9c1f-a78933c8ae66"; 21 | 22 | fileSystems."/nix" = 23 | { 24 | device = "/dev/disk/by-uuid/6ac71b2f-5058-4908-949f-4e2a7db59119"; 25 | fsType = "btrfs"; 26 | options = [ "subvol=nix" ]; 27 | }; 28 | 29 | fileSystems."/home" = 30 | { 31 | device = "/dev/disk/by-uuid/6ac71b2f-5058-4908-949f-4e2a7db59119"; 32 | fsType = "btrfs"; 33 | options = [ "subvol=home" ]; 34 | }; 35 | 36 | fileSystems."/swap" = 37 | { 38 | device = "/dev/disk/by-uuid/6ac71b2f-5058-4908-949f-4e2a7db59119"; 39 | fsType = "btrfs"; 40 | options = [ "subvol=swap" ]; 41 | }; 42 | 43 | fileSystems."/boot" = 44 | { 45 | device = "/dev/disk/by-uuid/655D-D8BD"; 46 | fsType = "vfat"; 47 | }; 48 | 49 | swapDevices = [ ]; 50 | 51 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 52 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 53 | } 54 | -------------------------------------------------------------------------------- /hosts/cybros/users/lizzie.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | let 4 | username = "lizzie"; 5 | in 6 | { 7 | imports = [ 8 | (import ../../../common/users { inherit username; }) 9 | (import ../../../common/users/themes/tokyonight { inherit username; }) 10 | ]; 11 | 12 | users.users.lizzie = { 13 | isNormalUser = true; 14 | 15 | files.".config/nushell/login.nu".text = lib.mkForce "if (tty) =~ '/dev/tty' { exec sway }"; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /hosts/cybros/users/zaechus.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | let 4 | username = "zaechus"; 5 | in 6 | { 7 | imports = [ 8 | (import ../../../common/users { inherit username; }) 9 | (import ../../../common/users/themes/gruvbox { inherit username; }) 10 | (import ../../../common/users/graphical { inherit username; }) 11 | (import ../../../common/users/dev/rust { inherit username; }) 12 | (import ../../../common/users/dev/zellij { inherit username; }) 13 | (import ../../../common/users/games/dosbox { inherit username; }) 14 | (import ../../../common/users/games/nethack { inherit username; }) 15 | ]; 16 | 17 | users.users.zaechus = { 18 | isNormalUser = true; 19 | extraGroups = [ "wheel" "video" ]; 20 | 21 | programs.git.config.user = { 22 | email = "zaechus@pm.me"; 23 | name = "Zaechus"; 24 | }; 25 | 26 | programs.sway.config = { 27 | input."type:touchpad".events = lib.mkForce "disabled"; 28 | output = { 29 | eDP-1 = { 30 | pos = "0 0"; 31 | subpixel = "rgb"; 32 | }; 33 | DP-1 = { 34 | pos = "1920 0"; 35 | }; 36 | }; 37 | terminal = "alacritty msg create-window || alacritty"; 38 | }; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /hosts/gantrithor/README.md: -------------------------------------------------------------------------------- 1 | # gantrithor 2 | 3 | A Lenovo Thinkpad T430 running NixOS. This laptop has previously used Arch, Manjaro, Artix, Gentoo, and Alpine under various hostnames including the current one. 4 | -------------------------------------------------------------------------------- /hosts/gantrithor/configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./hardware-configuration.nix 4 | ../../common 5 | ../../common/laptop 6 | ../../common/network/wired.nix 7 | ../../common/network/wireless.nix 8 | ../../common/graphical 9 | 10 | ../../common/ssh 11 | 12 | ./users/zaechus.nix 13 | ]; 14 | 15 | # Use the systemd-boot EFI boot loader. 16 | boot.loader = { 17 | systemd-boot.enable = true; 18 | efi.canTouchEfiVariables = true; 19 | }; 20 | 21 | # Intel 22 | hardware.cpu.intel.updateMicrocode = true; 23 | 24 | # Enforce fstab options 25 | fileSystems = { 26 | "/".options = [ "compress=zstd" "space_cache=v2" ]; 27 | "/boot".options = [ "umask=0077" ]; 28 | "/home".options = [ "compress=zstd" "space_cache=v2" ]; 29 | "/nix".options = [ "compress=zstd" "noatime" "space_cache=v2" ]; 30 | "/swap".options = [ "noatime" "nodatacow" "space_cache=v2" ]; 31 | }; 32 | 33 | # Swap 34 | swapDevices = [{ device = "/swap/swapfile"; }]; 35 | 36 | # Set your time zone. 37 | time.timeZone = "America/Denver"; 38 | 39 | # Hostname 40 | networking.hostName = "gantrithor"; 41 | 42 | system.stateVersion = "21.11"; 43 | } 44 | -------------------------------------------------------------------------------- /hosts/gantrithor/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, modulesPath, ... }: 2 | 3 | { 4 | imports = [ 5 | (modulesPath + "/installer/scan/not-detected.nix") 6 | ]; 7 | 8 | boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod" "sdhci_pci" ]; 9 | boot.initrd.kernelModules = [ ]; 10 | boot.kernelModules = [ "kvm-intel" ]; 11 | boot.extraModulePackages = [ ]; 12 | 13 | fileSystems."/" = 14 | { 15 | device = "/dev/disk/by-uuid/d1beb42b-41c9-4835-ae3f-82f15f545a5d"; 16 | fsType = "btrfs"; 17 | options = [ "subvol=root" ]; 18 | }; 19 | 20 | boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/24680f74-1e97-4f78-b422-3483b6e2ce71"; 21 | 22 | fileSystems."/nix" = 23 | { 24 | device = "/dev/disk/by-uuid/d1beb42b-41c9-4835-ae3f-82f15f545a5d"; 25 | fsType = "btrfs"; 26 | options = [ "subvol=nix" ]; 27 | }; 28 | 29 | fileSystems."/swap" = 30 | { 31 | device = "/dev/disk/by-uuid/d1beb42b-41c9-4835-ae3f-82f15f545a5d"; 32 | fsType = "btrfs"; 33 | options = [ "subvol=swap" ]; 34 | }; 35 | 36 | fileSystems."/home" = 37 | { 38 | device = "/dev/disk/by-uuid/d1beb42b-41c9-4835-ae3f-82f15f545a5d"; 39 | fsType = "btrfs"; 40 | options = [ "subvol=home" ]; 41 | }; 42 | 43 | fileSystems."/boot" = 44 | { 45 | device = "/dev/disk/by-uuid/C9D5-84CB"; 46 | fsType = "vfat"; 47 | }; 48 | 49 | swapDevices = [ ]; 50 | 51 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 52 | } 53 | -------------------------------------------------------------------------------- /hosts/gantrithor/users/zaechus.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | let 4 | username = "zaechus"; 5 | in 6 | { 7 | imports = [ 8 | (import ../../../common/users { inherit username; }) 9 | (import ../../../common/users/themes/tokyonight { inherit username; }) 10 | (import ../../../common/users/graphical { inherit username; }) 11 | ]; 12 | 13 | users.users.zaechus = { 14 | isNormalUser = true; 15 | extraGroups = [ "wheel" "video" ]; 16 | 17 | programs.git.config.user = { 18 | email = "zaechus@pm.me"; 19 | name = "Zaechus"; 20 | }; 21 | 22 | programs.alacritty.settings.font.size = lib.mkForce 10.0; 23 | programs.sway.config.input."type:touchpad".events = lib.mkForce "disabled"; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /hosts/telperion/configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./hardware-configuration.nix 4 | ../../common 5 | ../../common/network/wired.nix 6 | ../../common/network/wireless.nix 7 | 8 | ../../common/deluge 9 | ../../common/ftp 10 | ../../common/ssh 11 | ../../common/network/wg-quick.nix 12 | 13 | (import ../../common/users { username = "narud"; }) 14 | (import ../../common/users/dev/zellij { username = "narud"; }) 15 | ]; 16 | 17 | # Use the systemd-boot EFI boot loader. 18 | boot.loader = { 19 | systemd-boot.enable = true; 20 | efi.canTouchEfiVariables = true; 21 | }; 22 | 23 | # Intel 24 | hardware.cpu.intel.updateMicrocode = true; 25 | 26 | # Enable trim 27 | boot.initrd.luks.devices."root".allowDiscards = true; 28 | services.fstrim.enable = true; 29 | 30 | # Enforce fstab options 31 | fileSystems = { 32 | "/".options = [ "compress=zstd" ]; 33 | "/boot".options = [ "umask=0077" ]; 34 | "/home".options = [ "compress=zstd" ]; 35 | "/nix".options = [ "compress=zstd" "noatime" ]; 36 | "/swap".options = [ "noatime" "nodatacow" ]; 37 | }; 38 | 39 | # Swap 40 | swapDevices = [{ device = "/swap/swapfile"; }]; 41 | 42 | # Set your time zone. 43 | time.timeZone = "America/Denver"; 44 | 45 | # Hostname 46 | networking.hostName = "telperion"; 47 | 48 | # Options 49 | fileSystems."/home/ftp/Downloads" = { 50 | device = "/var/lib/deluge/Downloads"; 51 | options = [ "bind" ]; 52 | }; 53 | services.logind.lidSwitch = "ignore"; 54 | systemd.network.networks = { 55 | "99-ethernet-default-dhcp".networkConfig.LinkLocalAddressing = false; 56 | "99-wireless-client-dhcp".linkConfig.ActivationPolicy = "down"; 57 | }; 58 | systemd.targets.tpm2.enable = false; 59 | 60 | # User 61 | users.users.narud = { 62 | isNormalUser = true; 63 | extraGroups = [ "deluge" "ftp" "systemd-journal" ]; 64 | 65 | files.".config/deluge/auth".source = ../../common/deluge/auth; 66 | }; 67 | 68 | system.stateVersion = "24.11"; 69 | } 70 | -------------------------------------------------------------------------------- /hosts/telperion/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 | # and may be overwritten by future invocations. Please make changes 3 | # to /etc/nixos/configuration.nix instead. 4 | { config, lib, pkgs, modulesPath, ... }: 5 | 6 | { 7 | imports = 8 | [ 9 | (modulesPath + "/installer/scan/not-detected.nix") 10 | ]; 11 | 12 | boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" "rtsx_usb_sdmmc" ]; 13 | boot.initrd.kernelModules = [ ]; 14 | boot.kernelModules = [ "kvm-intel" ]; 15 | boot.extraModulePackages = [ ]; 16 | 17 | fileSystems."/" = 18 | { 19 | device = "/dev/disk/by-uuid/c201e260-8d24-4dcf-b852-581c367dc685"; 20 | fsType = "btrfs"; 21 | options = [ "subvol=root" ]; 22 | }; 23 | 24 | boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/c496c9ee-fa63-4598-ac95-f38262a4a550"; 25 | 26 | fileSystems."/home" = 27 | { 28 | device = "/dev/disk/by-uuid/c201e260-8d24-4dcf-b852-581c367dc685"; 29 | fsType = "btrfs"; 30 | options = [ "subvol=home" ]; 31 | }; 32 | 33 | fileSystems."/nix" = 34 | { 35 | device = "/dev/disk/by-uuid/c201e260-8d24-4dcf-b852-581c367dc685"; 36 | fsType = "btrfs"; 37 | options = [ "subvol=nix" ]; 38 | }; 39 | 40 | fileSystems."/swap" = 41 | { 42 | device = "/dev/disk/by-uuid/c201e260-8d24-4dcf-b852-581c367dc685"; 43 | fsType = "btrfs"; 44 | options = [ "subvol=swap" ]; 45 | }; 46 | 47 | fileSystems."/boot" = 48 | { 49 | device = "/dev/disk/by-uuid/5C31-23ED"; 50 | fsType = "vfat"; 51 | options = [ "fmask=0077" "dmask=0077" ]; 52 | }; 53 | 54 | swapDevices = [ ]; 55 | 56 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 57 | # (the default) this is the recommended approach. When using systemd-networkd it's 58 | # still possible to use this option, but it's recommended to use it in conjunction 59 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 60 | networking.useDHCP = lib.mkDefault true; 61 | # networking.interfaces.enp7s0.useDHCP = lib.mkDefault true; 62 | # networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true; 63 | 64 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 65 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 66 | } 67 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | confirm_password() { 4 | stty -echo 5 | until [ "$pass1" = "$pass2" ] && [ "$pass2" ]; do 6 | printf "%s: " "$1" >&2 && read -r pass1 && printf "\n" >&2 7 | printf "confirm %s: " "$1" >&2 && read -r pass2 && printf "\n" >&2 8 | done 9 | stty echo 10 | echo "$pass2" 11 | } 12 | 13 | # Choose disk 14 | while :; do 15 | lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS 16 | printf "\nDisk (e.g. /dev/sda): " && read -r my_disk 17 | [ -b "$my_disk" ] && break 18 | done 19 | 20 | cryptpass=$(confirm_password "encryption password") 21 | 22 | case "$my_disk" in 23 | *"nvme"*) 24 | part1="$my_disk"p1 25 | part2="$my_disk"p2 26 | ;; 27 | *) 28 | part1="$my_disk"1 29 | part2="$my_disk"2 30 | ;; 31 | esac 32 | 33 | # Partition 34 | printf "label: gpt\n,550M,U\n,,\n" | sfdisk "$my_disk" 35 | 36 | # Encrypt 37 | yes "$cryptpass" | cryptsetup -q luksFormat "$part2" 38 | yes "$cryptpass" | cryptsetup open "$part2" root 39 | 40 | # Format 41 | mkfs.fat -F 32 "$part1" 42 | 43 | mkfs.btrfs /dev/mapper/root 44 | mkdir -p /mnt 45 | mount /dev/mapper/root /mnt 46 | btrfs subvolume create /mnt/root 47 | btrfs subvolume create /mnt/home 48 | btrfs subvolume create /mnt/nix 49 | btrfs subvolume create /mnt/swap 50 | umount /mnt 51 | 52 | # Mount 53 | mount -o compress=zstd,subvol=root /dev/mapper/root /mnt 54 | mkdir /mnt/home 55 | mkdir /mnt/nix 56 | mkdir /mnt/swap 57 | mount -o compress=zstd,subvol=home /dev/mapper/root /mnt/home 58 | mount -o compress=zstd,noatime,subvol=nix /dev/mapper/root /mnt/nix 59 | mount -o noatime,nodatacow,subvol=swap /dev/mapper/root /mnt/swap 60 | 61 | mkdir /mnt/boot 62 | mount -o umask=0077 "$part1" /mnt/boot 63 | 64 | # Swapfile 65 | btrfs filesystem mkswapfile -s 4G /mnt/swap/swapfile 66 | 67 | # NixOS 68 | nixos-generate-config --root /mnt 69 | 70 | # nixos-install 71 | -------------------------------------------------------------------------------- /mnt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | while :; do 4 | lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS 5 | printf "\nDisk (e.g. /dev/sda): " && read -r my_disk 6 | [ -b "$my_disk" ] && break 7 | done 8 | 9 | case "$my_disk" in 10 | *"nvme"*) 11 | part1="$my_disk"p1 12 | part2="$my_disk"p2 13 | ;; 14 | *) 15 | part1="$my_disk"1 16 | part2="$my_disk"2 17 | ;; 18 | esac 19 | 20 | cryptsetup open "$part2" root 21 | mkdir -p /mnt 22 | mount -o compress=zstd,subvol=root /dev/mapper/root /mnt 23 | mount -o compress=zstd,subvol=home /dev/mapper/root /mnt/home 24 | mount -o compress=zstd,noatime,subvol=nix /dev/mapper/root /mnt/nix 25 | mount -o noatime,nodatacow,subvol=swap /dev/mapper/root /mnt/swap 26 | mount -o umask=0077 "$part1" /mnt/boot 27 | -------------------------------------------------------------------------------- /modules/alacritty/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let 4 | settingsFormat = pkgs.formats.toml { }; 5 | userOptions = { config, ... }: { 6 | options.programs.alacritty = { 7 | enable = lib.mkEnableOption "Alacritty"; 8 | settings = lib.mkOption { 9 | type = settingsFormat.type; 10 | default = { }; 11 | }; 12 | }; 13 | config = let cfg = config.programs.alacritty; in { 14 | packages = lib.mkIf cfg.enable [ pkgs.alacritty ]; 15 | files.".config/alacritty/alacritty.toml" = lib.mkIf (cfg.enable && cfg.settings != { }) { 16 | source = (settingsFormat.generate "alacritty.toml" cfg.settings); 17 | }; 18 | }; 19 | }; 20 | in 21 | { 22 | options.users.users = lib.mkOption { 23 | type = with lib.types; attrsOf (submodule userOptions); 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/bat/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let 4 | userOptions = { config, ... }: { 5 | options.programs.bat = { 6 | enable = lib.mkEnableOption "bat"; 7 | settings = lib.mkOption { 8 | type = with lib.types; attrsOf str; 9 | default = { }; 10 | }; 11 | }; 12 | config = let cfg = config.programs.bat; in { 13 | packages = lib.mkIf cfg.enable [ pkgs.bat ]; 14 | files.".config/bat/config" = lib.mkIf (cfg.enable && cfg.settings != { }) { 15 | text = lib.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "--${k}=${v}") cfg.settings); 16 | }; 17 | }; 18 | }; 19 | in 20 | { 21 | options.users.users = lib.mkOption { 22 | type = with lib.types; attrsOf (submodule userOptions); 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /modules/bottom/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let 4 | settingsFormat = pkgs.formats.toml { }; 5 | userOptions = { config, ... }: { 6 | options.programs.bottom = { 7 | enable = lib.mkEnableOption "bottom"; 8 | settings = lib.mkOption { 9 | type = settingsFormat.type; 10 | default = { }; 11 | }; 12 | }; 13 | config = let cfg = config.programs.bottom; in { 14 | packages = lib.mkIf cfg.enable [ pkgs.bottom ]; 15 | files.".config/bottom/bottom.toml" = lib.mkIf (cfg.enable && cfg.settings != { }) { 16 | source = settingsFormat.generate "bottom.toml" cfg.settings; 17 | }; 18 | }; 19 | }; 20 | in 21 | { 22 | options.users.users = lib.mkOption { 23 | type = with lib.types; attrsOf (submodule userOptions); 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, ... }: 2 | 3 | with lib; 4 | 5 | let 6 | userOptions = { 7 | options.files = mkOption { 8 | type = with types; attrsOf (submodule ({ name, config, options, ... }: { 9 | options = { 10 | text = mkOption { 11 | type = types.str; 12 | default = ""; 13 | }; 14 | source = mkOption { type = types.path; }; 15 | }; 16 | config = { 17 | source = mkIf (config.text != "") ( 18 | pkgs.writeText name config.text 19 | ); 20 | }; 21 | })); 22 | default = { }; 23 | }; 24 | }; 25 | in 26 | { 27 | imports = [ 28 | ./alacritty 29 | ./bat 30 | ./bottom 31 | ./git 32 | ./helix 33 | ./nushell 34 | ./sway 35 | ./theme.nix 36 | ./zellij 37 | ]; 38 | 39 | options.users.users = mkOption { 40 | type = with types; attrsOf (submodule userOptions); 41 | }; 42 | 43 | config = { 44 | system.activationScripts = { 45 | link-files = { 46 | deps = [ "users" ]; 47 | text = concatStringsSep "\n" (flatten (mapAttrsToList 48 | (name: user: mapAttrsToList 49 | (dest: file: '' 50 | path="${user.home}/${dest}" 51 | mkdir -p "$(dirname "$path")" 52 | ln -sf ${file.source} "$path" 53 | while [ "$path" != "${user.home}" ]; do 54 | chown -h ${user.name}:${user.group} "$path" 55 | path="$(dirname "$path")" 56 | done 57 | '') 58 | user.files) 59 | config.users.users)); 60 | }; 61 | }; 62 | }; 63 | } 64 | -------------------------------------------------------------------------------- /modules/git/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | let 4 | userOptions = { config, ... }: { 5 | options.programs.git = { 6 | enable = lib.mkEnableOption "git"; 7 | config = lib.mkOption { 8 | type = with lib.types; attrsOf (attrsOf anything); 9 | default = { }; 10 | }; 11 | }; 12 | config = let cfg = config.programs.git; in { 13 | files.".config/git/config" = lib.mkIf (cfg.enable && cfg.config != { }) { 14 | text = lib.generators.toGitINI cfg.config; 15 | }; 16 | }; 17 | }; 18 | in 19 | { 20 | options.users.users = lib.mkOption { 21 | type = with lib.types; attrsOf (submodule userOptions); 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /modules/helix/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let 4 | settingsFormat = pkgs.formats.toml { }; 5 | userOptions = { config, ... }: { 6 | options.programs.helix = { 7 | enable = lib.mkEnableOption "helix"; 8 | settings = lib.mkOption { 9 | type = settingsFormat.type; 10 | default = { }; 11 | }; 12 | }; 13 | config = let cfg = config.programs.helix; in { 14 | packages = lib.mkIf cfg.enable [ pkgs.helix ]; 15 | files.".config/helix/config.toml" = lib.mkIf (cfg.enable && cfg.settings != { }) { 16 | source = settingsFormat.generate "helix-config" cfg.settings; 17 | }; 18 | }; 19 | }; 20 | in 21 | { 22 | options.users.users = lib.mkOption { 23 | type = with lib.types; attrsOf (submodule userOptions); 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/nushell/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let 4 | userOptions = { config, ... }: { 5 | options.programs.nushell = { 6 | enable = lib.mkEnableOption "Nushell"; 7 | configText = lib.mkOption { 8 | type = lib.types.str; 9 | default = ""; 10 | }; 11 | envText = lib.mkOption { 12 | type = lib.types.str; 13 | default = ""; 14 | }; 15 | }; 16 | config = let cfg = config.programs.nushell; in { 17 | packages = lib.mkIf cfg.enable [ pkgs.nushell ]; 18 | files.".config/nushell/config.nu" = lib.mkIf (cfg.enable && cfg.configText != "") { 19 | text = cfg.configText; 20 | }; 21 | files.".config/nushell/env.nu" = lib.mkIf (cfg.enable && cfg.envText != "") { 22 | text = cfg.envText; 23 | }; 24 | }; 25 | }; 26 | in 27 | { 28 | options.users.users = lib.mkOption { 29 | type = with lib.types; attrsOf (submodule userOptions); 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/sway/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, ... }: 2 | 3 | with lib; 4 | 5 | let 6 | barColorSetModule = types.submodule { 7 | options = { 8 | border = mkOption { type = types.str; }; 9 | background = mkOption { type = types.str; }; 10 | text = mkOption { type = types.str; }; 11 | }; 12 | }; 13 | barModule = types.submodule { 14 | options = { 15 | font = { 16 | name = mkOption { 17 | type = types.str; 18 | default = "monospace"; 19 | }; 20 | size = mkOption { 21 | type = types.float; 22 | default = 10.0; 23 | }; 24 | }; 25 | 26 | position = mkOption { 27 | type = types.enum [ "top" "bottom" ]; 28 | default = "bottom"; 29 | }; 30 | 31 | statusCommand = mkOption { 32 | type = types.str; 33 | default = "${pkgs.my.rustatus}/bin/rustatus"; 34 | }; 35 | 36 | colors = { 37 | background = mkOption { 38 | type = types.nullOr types.str; 39 | }; 40 | statusline = mkOption { 41 | type = types.nullOr types.str; 42 | }; 43 | focusedWorkspace = mkOption { 44 | type = barColorSetModule; 45 | default = { 46 | border = "#333333"; 47 | background = "#5f676a"; 48 | text = "#ffffff"; 49 | }; 50 | }; 51 | inactiveWorkspace = mkOption { 52 | type = barColorSetModule; 53 | default = { 54 | border = "#333333"; 55 | background = "#222222"; 56 | text = "#888888"; 57 | }; 58 | }; 59 | }; 60 | }; 61 | }; 62 | 63 | colorSetModule = types.submodule { 64 | options = { 65 | border = mkOption { type = types.str; }; 66 | background = mkOption { type = types.str; }; 67 | text = mkOption { type = types.str; }; 68 | indicator = mkOption { type = types.str; }; 69 | childBorder = mkOption { type = types.str; }; 70 | }; 71 | }; 72 | 73 | modifierEnum = types.enum [ "Control" "Mod1" "Mod2" "Mod3" "Mod4" "Mod5" "Shift" ]; 74 | 75 | configModule = types.submodule { 76 | options = { 77 | input = mkOption { 78 | type = types.attrsOf (types.attrsOf types.str); 79 | default = { }; 80 | }; 81 | output = mkOption { 82 | type = types.attrsOf (types.attrsOf types.str); 83 | default = { }; 84 | }; 85 | 86 | defaultBorder = mkOption { 87 | type = types.str; 88 | default = "pixel 2"; 89 | }; 90 | defaultFloatingBorder = mkOption { 91 | type = types.str; 92 | default = "normal 2"; 93 | }; 94 | 95 | focusFollowsMouse = mkOption { 96 | type = types.enum [ "yes" "no" "always" ]; 97 | default = "yes"; 98 | }; 99 | 100 | focusWrapping = mkOption { 101 | type = types.enum [ "yes" "no" "force" "workspace" ]; 102 | default = "yes"; 103 | }; 104 | 105 | smartBorders = mkOption { 106 | type = types.enum [ "on" "no_gaps" "off" ]; 107 | default = "off"; 108 | }; 109 | 110 | floatingModifier = mkOption { 111 | type = types.nullOr modifierEnum; 112 | }; 113 | 114 | modifier = mkOption { 115 | type = modifierEnum; 116 | default = "Mod4"; 117 | }; 118 | 119 | menu = mkOption { 120 | type = types.nullOr types.str; 121 | default = null; 122 | }; 123 | 124 | terminal = mkOption { 125 | type = types.str; 126 | default = "${pkgs.alacritty}/bin/alacritty"; 127 | }; 128 | 129 | left = mkOption { 130 | type = types.str; 131 | default = "h"; 132 | }; 133 | down = mkOption { 134 | type = types.str; 135 | default = "j"; 136 | }; 137 | up = mkOption { 138 | type = types.str; 139 | default = "k"; 140 | }; 141 | right = mkOption { 142 | type = types.str; 143 | default = "l"; 144 | }; 145 | 146 | keybindings = mkOption { 147 | type = types.attrsOf types.str; 148 | default = { }; 149 | }; 150 | 151 | modes = mkOption { 152 | type = types.attrsOf (types.attrsOf types.str); 153 | default = { }; 154 | }; 155 | 156 | font = { 157 | name = mkOption { 158 | type = types.str; 159 | default = "monospace"; 160 | }; 161 | size = mkOption { 162 | type = types.float; 163 | default = 9.0; 164 | }; 165 | }; 166 | 167 | colors = { 168 | focused = mkOption { 169 | type = colorSetModule; 170 | }; 171 | focusedInactive = mkOption { 172 | type = colorSetModule; 173 | }; 174 | unfocused = mkOption { 175 | type = colorSetModule; 176 | }; 177 | }; 178 | 179 | bars = mkOption { 180 | type = types.listOf barModule; 181 | default = [ ]; 182 | }; 183 | 184 | extra = mkOption { 185 | type = types.listOf types.str; 186 | default = [ ]; 187 | }; 188 | 189 | startup = mkOption { 190 | type = types.listOf types.str; 191 | default = [ ]; 192 | }; 193 | }; 194 | }; 195 | 196 | nixosConf = builtins.readFile config.environment.etc."sway/config.d/nixos.conf".source; 197 | 198 | userOptions = { config, ... }: { 199 | options.programs.sway = { 200 | enable = mkEnableOption "Sway"; 201 | config = mkOption { 202 | type = types.nullOr configModule; 203 | default = { }; 204 | }; 205 | }; 206 | config = let cfg = config.programs.sway; in { 207 | files.".config/sway/config" = mkIf (cfg.enable && cfg.config != { }) { 208 | text = concatLines ([ 209 | "font pango:${cfg.config.font.name} ${builtins.toString cfg.config.font.size}" 210 | (optionalString (cfg.config.floatingModifier != null) 211 | "floating_modifier ${cfg.config.floatingModifier}") 212 | "default_border ${cfg.config.defaultBorder}" 213 | "default_floating_border ${cfg.config.defaultFloatingBorder}" 214 | "focus_follows_mouse ${cfg.config.focusFollowsMouse}" 215 | "focus_wrapping ${cfg.config.focusWrapping}" 216 | "smart_borders ${cfg.config.smartBorders}" 217 | "client.focused ${cfg.config.colors.focused.border} ${cfg.config.colors.focused.background} ${cfg.config.colors.focused.text} ${cfg.config.colors.focused.indicator} ${cfg.config.colors.focused.childBorder}" 218 | "client.focused_inactive ${cfg.config.colors.focusedInactive.border} ${cfg.config.colors.focusedInactive.background} ${cfg.config.colors.focusedInactive.text} ${cfg.config.colors.focusedInactive.indicator} ${cfg.config.colors.focusedInactive.childBorder}" 219 | "client.unfocused ${cfg.config.colors.unfocused.border} ${cfg.config.colors.unfocused.background} ${cfg.config.colors.unfocused.text} ${cfg.config.colors.unfocused.indicator} ${cfg.config.colors.unfocused.childBorder}" 220 | ] ++ (mapAttrsToList 221 | (key: command: 222 | "bindsym ${key} ${command}" 223 | ) 224 | cfg.config.keybindings) 225 | ++ (mapAttrsToList 226 | (mode: keybindings: 227 | concatLines ( 228 | [ "mode \"${mode}\" {" ] 229 | ++ (mapAttrsToList 230 | (key: command: 231 | " bindsym ${key} ${command}" 232 | ) 233 | keybindings) 234 | ++ [ "}" ] 235 | )) 236 | cfg.config.modes) 237 | ++ (mapAttrsToList 238 | (name: input: 239 | concatLines ( 240 | [ "input \"${name}\" {" ] 241 | ++ (mapAttrsToList 242 | (setting: value: 243 | " ${setting} ${value}" 244 | ) 245 | input) 246 | ++ [ "}" ] 247 | )) 248 | cfg.config.input) 249 | ++ (mapAttrsToList 250 | (name: output: 251 | concatLines ( 252 | [ "output \"${name}\" {" ] 253 | ++ (mapAttrsToList 254 | (setting: value: 255 | " ${setting} ${value}" 256 | ) 257 | output) 258 | ++ [ "}" ] 259 | )) 260 | cfg.config.output) 261 | ++ (map 262 | (bar: concatLines [ 263 | "bar {" 264 | " font pango:${bar.font.name} ${builtins.toString bar.font.size}" 265 | " position ${bar.position}" 266 | " status_command ${bar.statusCommand}" 267 | " colors {" 268 | (optionalString (bar.colors.background != null) 269 | " background ${bar.colors.background}") 270 | (optionalString (bar.colors.statusline != null) 271 | " statusline ${bar.colors.statusline}") 272 | " focused_workspace ${bar.colors.focusedWorkspace.border} ${bar.colors.focusedWorkspace.background} ${bar.colors.focusedWorkspace.text}" 273 | " inactive_workspace ${bar.colors.inactiveWorkspace.border} ${bar.colors.inactiveWorkspace.background} ${bar.colors.inactiveWorkspace.text}" 274 | " }" 275 | "}" 276 | ]) 277 | cfg.config.bars) 278 | ++ cfg.config.extra 279 | ++ (map 280 | (command: 281 | "\nexec ${command}" 282 | ) 283 | cfg.config.startup) 284 | ++ [ nixosConf ]); 285 | }; 286 | }; 287 | }; 288 | in 289 | { 290 | options.users.users = mkOption { 291 | type = with types; attrsOf (submodule userOptions); 292 | }; 293 | } 294 | -------------------------------------------------------------------------------- /modules/theme.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | with lib; 4 | 5 | let 6 | userOptions = { config, ... }: { 7 | options.theme = { 8 | bg = mkOption { type = types.str; default = "#191919"; }; 9 | fg = mkOption { type = types.str; default = "#cccccc"; }; 10 | 11 | bg1 = mkOption { type = types.str; default = config.theme.bg; }; 12 | fg0 = mkOption { type = types.str; default = "#ffffff"; }; 13 | 14 | black = mkOption { type = types.str; default = "#111111"; }; 15 | red = mkOption { type = types.str; default = "#ff0000"; }; 16 | green = mkOption { type = types.str; default = "#00ff00"; }; 17 | yellow = mkOption { type = types.str; default = "#ffff00"; }; 18 | blue = mkOption { type = types.str; default = "#0000ff"; }; 19 | magenta = mkOption { type = types.str; default = "#ff00ff"; }; 20 | cyan = mkOption { type = types.str; default = "#00ffff"; }; 21 | white = mkOption { type = types.str; default = "#eeeeee"; }; 22 | 23 | bright = { 24 | black = mkOption { type = types.str; default = config.theme.black; }; 25 | red = mkOption { type = types.str; default = config.theme.red; }; 26 | green = mkOption { type = types.str; default = config.theme.green; }; 27 | yellow = mkOption { type = types.str; default = config.theme.yellow; }; 28 | blue = mkOption { type = types.str; default = config.theme.blue; }; 29 | magenta = mkOption { type = types.str; default = config.theme.magenta; }; 30 | cyan = mkOption { type = types.str; default = config.theme.cyan; }; 31 | white = mkOption { type = types.str; default = config.theme.white; }; 32 | }; 33 | 34 | primary = mkOption { type = types.str; default = config.theme.blue; }; 35 | secondary = mkOption { type = types.str; default = config.theme.cyan; }; 36 | }; 37 | }; 38 | in 39 | { 40 | options.users.users = mkOption { 41 | type = with types; attrsOf (submodule userOptions); 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /modules/zellij/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | let 4 | userOptions = { config, ... }: { 5 | options.programs.zellij.settings = lib.mkOption { 6 | type = with lib.types; attrsOf anything; 7 | default = { }; 8 | }; 9 | }; 10 | in 11 | { 12 | options.users.users = lib.mkOption { 13 | type = with lib.types; attrsOf (submodule userOptions); 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /pkgs/RBDOOM-3-BFG/README.md: -------------------------------------------------------------------------------- 1 | # RBDOOM-3-BFG 2 | 3 | Doom 3 BFG Edition with modern engine features 4 | 5 | ## Installing Doom 3 6 | 1. Get the game from GOG 7 | 2. Clone [github.com/RobertBeckebans/RBDOOM-3-BFG](https://github.com/RobertBeckebans/RBDOOM-3-BFG) and copy the contents of the repo's `base` directory to the game's `base` directory. 8 | -------------------------------------------------------------------------------- /pkgs/RBDOOM-3-BFG/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | , cmake 5 | , directx-shader-compiler 6 | , ispc 7 | , ncurses 8 | , openal 9 | , rapidjson 10 | , SDL2 11 | , vulkan-headers 12 | , vulkan-loader 13 | , zlib 14 | }: 15 | 16 | stdenv.mkDerivation rec { 17 | pname = "RBDOOM-3-BFG"; 18 | version = "1.6.0"; 19 | 20 | src = fetchFromGitHub { 21 | owner = "RobertBeckebans"; 22 | repo = pname; 23 | rev = "v${version}"; 24 | hash = "sha256-9BZEFO+e5IG6hv9+QI9OJecQ84rLTWBDz4k0GU6SeDE="; 25 | fetchSubmodules = true; 26 | }; 27 | 28 | nativeBuildInputs = [ 29 | cmake 30 | directx-shader-compiler 31 | ispc 32 | ]; 33 | 34 | buildInputs = [ 35 | ncurses 36 | openal 37 | rapidjson 38 | SDL2 39 | vulkan-headers 40 | vulkan-loader 41 | zlib 42 | ]; 43 | 44 | cmakeDir = "../neo"; 45 | cmakeFlags = [ 46 | "-DFFMPEG=OFF" 47 | "-DBINKDEC=ON" 48 | "-DUSE_SYSTEM_RAPIDJSON=ON" 49 | "-DUSE_SYSTEM_ZLIB=ON" 50 | ]; 51 | 52 | installPhase = '' 53 | runHook preInstall 54 | 55 | mkdir -p $out/bin 56 | install RBDoom3BFG $out/bin/RBDoom3BFG 57 | 58 | runHook postInstall 59 | ''; 60 | 61 | meta = with lib; { 62 | homepage = "https://github.com/RobertBeckebans/RBDOOM-3-BFG"; 63 | description = "Doom 3 BFG Edition with modern engine features"; 64 | license = licenses.gpl3Plus; 65 | platforms = platforms.unix; 66 | }; 67 | } 68 | -------------------------------------------------------------------------------- /pkgs/TheForceEngine/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | , cmake 5 | , glew 6 | , libdevil 7 | , pkg-config 8 | , rtaudio 9 | , rtmidi 10 | , SDL2 11 | }: 12 | 13 | stdenv.mkDerivation rec { 14 | pname = "TheForceEngine"; 15 | version = "1.09.100"; 16 | 17 | src = fetchFromGitHub { 18 | owner = "luciusDXL"; 19 | repo = pname; 20 | rev = "v${version}"; 21 | hash = "sha256-nw9yp/StaSi5thafVT1V5YA2ZCYGWNoHUvQTpK90Foc="; 22 | }; 23 | 24 | nativeBuildInputs = [ 25 | cmake 26 | pkg-config 27 | ]; 28 | 29 | buildInputs = [ 30 | glew 31 | libdevil 32 | rtaudio 33 | rtmidi 34 | SDL2 35 | ]; 36 | 37 | postPatch = '' 38 | substituteInPlace TheForceEngine/TFE_FileSystem/paths-posix.cpp \ 39 | --replace /usr/share $out/share 40 | ''; 41 | 42 | enableParallelBuilding = true; 43 | 44 | meta = with lib; { 45 | homepage = "https://theforceengine.github.io"; 46 | description = "Modern Jedi Engine replacement"; 47 | license = licenses.gpl2Only; 48 | platforms = platforms.linux; 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /pkgs/UltimateDoomBuilder/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | , msbuild 5 | , libGL 6 | , libX11 7 | , mono 8 | }: 9 | 10 | stdenv.mkDerivation rec { 11 | pname = "UltimateDoomBuilder"; 12 | version = "3.0.0.3274"; 13 | 14 | src = fetchFromGitHub { 15 | owner = "jewalky"; 16 | repo = pname; 17 | rev = "6d5098a075706e995105af50b6840fe53afb65bd"; 18 | hash = "sha256-yQ1dhWwpAT2awjp8oQFynjez+2mLWxS9eJ4Jva0pWEk="; 19 | }; 20 | 21 | nativeBuildInputs = [ msbuild ]; 22 | 23 | buildInputs = [ 24 | libGL 25 | libX11 26 | mono 27 | ]; 28 | 29 | installPhase = '' 30 | mkdir -p $out/bin 31 | mkdir -p $out/opt 32 | cp -r Build $out/opt/UltimateDoomBuilder 33 | substituteInPlace $out/opt/UltimateDoomBuilder/builder --replace mono ${mono}/bin/mono 34 | substituteInPlace $out/opt/UltimateDoomBuilder/builder --replace Builder.exe $out/opt/UltimateDoomBuilder/Builder.exe 35 | ln -sf $out/opt/UltimateDoomBuilder/builder $out/bin/builder 36 | ''; 37 | 38 | meta = with lib; { 39 | description = "Comprehensive map editor for Doom"; 40 | homepage = "http://doombuilder.com"; 41 | license = licenses.gpl3Plus; 42 | platforms = platforms.linux; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /pkgs/adom/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchurl 3 | , autoPatchelfHook 4 | , ncurses5 5 | }: 6 | 7 | stdenv.mkDerivation rec { 8 | pname = "adom"; 9 | version = "3.3.3"; 10 | 11 | src = fetchurl { 12 | url = "https://www.adom.de/home/download/current/adom_linux_debian_64_${version}.tar.gz"; 13 | hash = "sha256-t0oxDkGAYz117yZ0KTN5YmG0dSUqQSPGxJLuTOltSN0="; 14 | }; 15 | 16 | nativeBuildInputs = [ 17 | autoPatchelfHook 18 | ]; 19 | 20 | buildInputs = [ 21 | (ncurses5.override { 22 | unicodeSupport = false; 23 | withTermlib = true; 24 | }) 25 | ]; 26 | 27 | installPhase = '' 28 | runHook preInstall 29 | 30 | install -D adom $out/bin/adom 31 | 32 | runHook postInstall 33 | ''; 34 | } 35 | -------------------------------------------------------------------------------- /pkgs/adom1/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchurl 3 | , autoPatchelfHook 4 | , makeWrapper 5 | , ncurses5 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "adom1"; 10 | version = "1.1.1"; 11 | 12 | src = fetchurl { 13 | url = "https://www.adom.de/home/download/old/${version}/adom_linux_elf_${version}.tar.gz"; 14 | hash = "sha256-MgDoFMbHDxo+y26CZRgD2y+DfCs5jKWXx93/6nc0OLs="; 15 | }; 16 | 17 | nativeBuildInputs = [ 18 | autoPatchelfHook 19 | makeWrapper 20 | ]; 21 | 22 | buildInputs = [ 23 | ncurses5 24 | ]; 25 | 26 | installPhase = '' 27 | runHook preInstall 28 | 29 | install -D adom $out/bin/${pname} 30 | makeWrapper $out/bin/${pname} $out/bin/adom 31 | 32 | runHook postInstall 33 | ''; 34 | } 35 | -------------------------------------------------------------------------------- /pkgs/adom2/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchurl 3 | , autoPatchelfHook 4 | , makeWrapper 5 | , ncurses5 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "adom2"; 10 | version = "2.3.8"; 11 | 12 | src = fetchurl { 13 | url = "https://www.adom.de/home/download/old/${version}/adom_linux_debian_64_${version}.tar.gz"; 14 | hash = "sha256-cEehVp9LtKhH90cmisYdvZlPUQ0CLTW8B38/dgVsBVo="; 15 | }; 16 | 17 | nativeBuildInputs = [ 18 | autoPatchelfHook 19 | makeWrapper 20 | ]; 21 | 22 | buildInputs = [ 23 | ncurses5 24 | ]; 25 | 26 | installPhase = '' 27 | runHook preInstall 28 | 29 | install -D adom $out/bin/${pname} 30 | makeWrapper $out/bin/${pname} $out/bin/adom 31 | 32 | runHook postInstall 33 | ''; 34 | } 35 | -------------------------------------------------------------------------------- /pkgs/adom3/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchurl 3 | , autoPatchelfHook 4 | , makeWrapper 5 | , ncurses5 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "adom3"; 10 | version = "3.0.6"; 11 | 12 | src = fetchurl { 13 | url = "https://www.adom.de/home/download/old/${version}/adom_linux_debian_64_${version}.tar.gz"; 14 | hash = "sha256-WI3cO2gMiVL8EDB0fMoAR69k5I0REesBTqoJT0S2yaU="; 15 | }; 16 | 17 | nativeBuildInputs = [ 18 | autoPatchelfHook 19 | makeWrapper 20 | ]; 21 | 22 | buildInputs = [ 23 | (ncurses5.override { 24 | unicodeSupport = false; 25 | withTermlib = true; 26 | }) 27 | ]; 28 | 29 | installPhase = '' 30 | runHook preInstall 31 | 32 | install -D adom $out/bin/${pname} 33 | makeWrapper $out/bin/${pname} $out/bin/adom 34 | 35 | runHook postInstall 36 | ''; 37 | } 38 | -------------------------------------------------------------------------------- /pkgs/angband/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | , autoreconfHook 5 | , ncurses 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "angband"; 10 | version = "4.2.5"; 11 | 12 | src = fetchFromGitHub { 13 | owner = pname; 14 | repo = pname; 15 | rev = version; 16 | sha256 = "sha256-Fp3BGCZYYdQCKXOLYsT4zzlibNRlbELZi26ofrbGGPQ="; 17 | }; 18 | 19 | nativeBuildInputs = [ autoreconfHook ]; 20 | buildInputs = [ ncurses ]; 21 | 22 | installFlags = [ "bindir=$(out)/bin" ]; 23 | 24 | # https://github.com/angband/angband/issues/5264 25 | postFixup = '' 26 | echo "" > $out/etc/angband/customize/keys-gcu.prf 27 | ''; 28 | 29 | meta = with lib; { 30 | homepage = "https://angband.github.io/angband"; 31 | description = "A single-player roguelike dungeon exploration game"; 32 | license = licenses.gpl2Plus; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /pkgs/bin2iso/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchFromGitLab 3 | }: 4 | 5 | stdenv.mkDerivation rec { 6 | pname = "bin2iso"; 7 | version = "2.0"; 8 | 9 | src = fetchFromGitLab { 10 | owner = "bunnylin"; 11 | repo = pname; 12 | rev = version; 13 | sha256 = "sha256-JUKjKj/ThlpITb+NUaNtnysIVyl7dVQq1kQIiHF/UKY="; 14 | }; 15 | 16 | installPhase = '' 17 | install -Dm755 $pname $out/bin/$pname 18 | ''; 19 | } 20 | -------------------------------------------------------------------------------- /pkgs/default.nix: -------------------------------------------------------------------------------- 1 | final: prev: { 2 | my = { 3 | adom = final.callPackage ./adom { }; 4 | adom1 = final.callPackage_i686 ./adom1 { }; 5 | adom2 = final.callPackage ./adom2 { }; 6 | adom3 = final.callPackage ./adom3 { }; 7 | angband = final.callPackage ./angband { }; 8 | bin2iso = final.callPackage ./bin2iso { }; 9 | devilutionx = final.callPackage ./devilutionx { }; 10 | dosbox-staging = final.callPackage ./dosbox-staging { }; 11 | doukutsu-rs = final.callPackage ./doukutsu-rs { }; 12 | ley = final.callPackage ./ley { }; 13 | mangos-classic = final.callPackage ./mangos-classic { }; 14 | RBDOOM-3-BFG = final.callPackage ./RBDOOM-3-BFG { }; 15 | rpcs3 = final.callPackage ./rpcs3 { }; 16 | rustatus = final.callPackage ./rustatus { }; 17 | TheForceEngine = final.callPackage ./TheForceEngine { }; 18 | tiny = final.callPackage ./tiny { }; 19 | UltimateDoomBuilder = final.callPackage ./UltimateDoomBuilder { }; 20 | xdvdfs-cli = final.callPackage ./xdvdfs-cli { }; 21 | zinfo = final.callPackage ./zinfo { }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /pkgs/devilutionx/default.nix: -------------------------------------------------------------------------------- 1 | { stdenv 2 | , fetchFromGitHub 3 | , fetchurl 4 | , bzip2 5 | , cmake 6 | , fmt 7 | , gettext 8 | , libpng 9 | , libsodium 10 | , libtiff 11 | , pkg-config 12 | , SDL2 13 | , SDL2_image 14 | , simpleini 15 | , smpq 16 | }: 17 | 18 | let 19 | asio = fetchurl { 20 | url = "https://github.com/diasurgical/asio/archive/4bcf552fcea3e1ae555dde2ab33bc9fa6770da4d.tar.gz"; 21 | sha256 = "sha256-AFBy5OFsAzxZsiI4DirIHh+VjFkdalEhN9OGqhC0Cvc="; 22 | }; 23 | libmpq = fetchurl { 24 | url = "https://github.com/diasurgical/libmpq/archive/b78d66c6fee6a501cc9b95d8556a129c68841b05.tar.gz"; 25 | sha256 = "sha256-NIzZwr6cBn38uKLWzW+Uet5QiOFUPB5dsf3FsS22ruo="; 26 | }; 27 | libsmackerdec = fetchurl { 28 | url = "https://github.com/diasurgical/libsmackerdec/archive/91e732bb6953489077430572f43fc802bf2c75b2.tar.gz"; 29 | sha256 = "sha256-5WXjfvGuT4hG2cnCS4YbxW/c4tek7OR95EjgCqkEi4c="; 30 | }; 31 | libzt = fetchFromGitHub { 32 | owner = "diasurgical"; 33 | repo = "libzt"; 34 | fetchSubmodules = true; 35 | rev = "d6c6a069a5041a3e89594c447ced3f15d77618b8"; 36 | sha256 = "sha256-ttRJLfaGHzhS4jd8db7BNPWROCti3ZxuRouqsL/M5ew="; 37 | }; 38 | SDL_audiolib = fetchurl { 39 | url = "https://github.com/realnc/SDL_audiolib/archive/cc1bb6af8d4cf5e200259072bde1edd1c8c5137e.tar.gz"; 40 | sha256 = "sha256-WtxxvuNQaxbFBcFmLac/z9/YeJFGRXhPgPxw25eVM6U="; 41 | }; 42 | in 43 | stdenv.mkDerivation rec { 44 | pname = "devilutionx"; 45 | version = "1.5.4"; 46 | 47 | src = fetchFromGitHub { 48 | owner = "diasurgical"; 49 | repo = "devilutionX"; 50 | rev = version; 51 | sha256 = "sha256-F23MTe7vMOgIBH6qm7X1+8gIMmN9E+d/GZnFsQZt2cM="; 52 | }; 53 | 54 | postPatch = '' 55 | substituteInPlace 3rdParty/asio/CMakeLists.txt --replace-fail "${asio.url}" "${asio}" 56 | substituteInPlace 3rdParty/libmpq/CMakeLists.txt --replace-fail "${libmpq.url}" "${libmpq}" 57 | substituteInPlace 3rdParty/libsmackerdec/CMakeLists.txt --replace-fail "${libsmackerdec.url}" "${libsmackerdec}" 58 | substituteInPlace 3rdParty/libzt/CMakeLists.txt \ 59 | --replace-fail "GIT_REPOSITORY https://github.com/${libzt.owner}/${libzt.repo}.git" "" \ 60 | --replace-fail "GIT_TAG ${libzt.rev}" "SOURCE_DIR ${libzt}" 61 | substituteInPlace 3rdParty/SDL_audiolib/CMakeLists.txt --replace-fail "${SDL_audiolib.url}" "${SDL_audiolib}" 62 | ''; 63 | 64 | nativeBuildInputs = [ 65 | cmake 66 | pkg-config 67 | gettext 68 | smpq 69 | ]; 70 | 71 | buildInputs = [ 72 | bzip2 73 | fmt 74 | libpng 75 | libsodium 76 | libtiff 77 | SDL2 78 | SDL2_image 79 | simpleini 80 | ]; 81 | 82 | installPhase = '' 83 | runHook preInstall 84 | 85 | mkdir -p $out/bin 86 | install devilutionx $out/bin 87 | install devilutionx.mpq $out/bin 88 | 89 | runHook postInstall 90 | ''; 91 | } 92 | -------------------------------------------------------------------------------- /pkgs/dosbox-staging/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | 5 | , gtest 6 | , makeWrapper 7 | , meson 8 | , ninja 9 | , pkg-config 10 | 11 | , alsa-lib 12 | , fluidsynth 13 | , glib 14 | , iir1 15 | , libGL 16 | , libmt32emu 17 | , libogg 18 | , libpng 19 | , libslirp 20 | , libX11 21 | , libXi 22 | , opusfile 23 | , SDL2 24 | , SDL2_net 25 | , speexdsp 26 | , zlib-ng 27 | }: 28 | 29 | stdenv.mkDerivation rec { 30 | pname = "dosbox-staging"; 31 | version = "0.82.1"; 32 | shortRev = "13441a2"; 33 | 34 | src = fetchFromGitHub { 35 | owner = pname; 36 | repo = pname; 37 | rev = "v${version}"; 38 | hash = "sha256-BVeFBKqTQiEftWVvMkSYBjC6dCYI4juWD4A6Bx8E8/Y="; 39 | }; 40 | 41 | nativeBuildInputs = [ 42 | gtest 43 | makeWrapper 44 | meson 45 | ninja 46 | pkg-config 47 | ]; 48 | 49 | buildInputs = [ 50 | alsa-lib 51 | fluidsynth 52 | glib 53 | iir1 54 | libGL 55 | libmt32emu 56 | libogg 57 | libpng 58 | libslirp 59 | libX11 60 | libXi 61 | opusfile 62 | SDL2 63 | SDL2_net 64 | speexdsp 65 | zlib-ng 66 | ]; 67 | 68 | postPatch = '' 69 | substituteInPlace meson.build \ 70 | --replace-fail "meson.project_source_root() + '/scripts/get-version.sh'," "'printf'," \ 71 | --replace-fail "'version', check: true," "'${version}', check: true," \ 72 | --replace-fail "'./scripts/get-version.sh', 'hash'," "'printf', '${builtins.substring 0 5 shortRev}'," 73 | ''; 74 | 75 | postFixup = '' 76 | mv $out/bin/dosbox $out/bin/${pname} 77 | makeWrapper $out/bin/${pname} $out/bin/dosbox 78 | ''; 79 | 80 | meta = with lib; { 81 | homepage = "https://dosbox-staging.github.io"; 82 | description = "A modernized DOS emulator"; 83 | license = licenses.gpl2Plus; 84 | platforms = platforms.unix; 85 | }; 86 | } 87 | -------------------------------------------------------------------------------- /pkgs/doukutsu-rs/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , rustPlatform 3 | , fetchFromGitHub 4 | , cmake 5 | , pkg-config 6 | , alsa-lib 7 | , SDL2 8 | , SDL2_image 9 | }: 10 | 11 | let 12 | gameData = fetchFromGitHub { 13 | owner = "doukutsu-rs"; 14 | repo = "game-data"; 15 | rev = "f08e35952f2d9358f6591984d5870e7312492999"; 16 | hash = "sha256-omBi2IzCSxyR1WMe4NUfiLc0PRIVdEp/igk3Vv0hM0c="; 17 | }; 18 | in 19 | rustPlatform.buildRustPackage rec { 20 | pname = "doukutsu-rs"; 21 | version = "0.102.0-beta7"; 22 | 23 | src = fetchFromGitHub { 24 | owner = pname; 25 | repo = pname; 26 | rev = version; 27 | hash = "sha256-Gi58pGNs5u+tPIiPbprUxgj16vkOU73v19bG6/eR200="; 28 | }; 29 | 30 | cargoHash = "sha256-++rb+jzeQORYrX1vXFb6RQH30ccVoNQD/znZmZOqn5U="; 31 | 32 | nativeBuildInputs = [ 33 | cmake 34 | pkg-config 35 | ]; 36 | 37 | buildInputs = [ 38 | alsa-lib 39 | SDL2 40 | SDL2_image 41 | ]; 42 | 43 | buildNoDefaultFeatures = true; 44 | buildFeatures = [ 45 | "default-base" 46 | "backend-sdl" 47 | "render-opengl" 48 | "exe" 49 | ]; 50 | 51 | doCheck = false; 52 | 53 | postPatch = '' 54 | substituteInPlace Cargo.toml \ 55 | --replace-fail \ 56 | 'sdl2 = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true, features = ["unsafe_textures", "bundled", "static-link"] }' \ 57 | 'sdl2 = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true, features = ["unsafe_textures"] }' \ 58 | --replace-fail \ 59 | 'sdl2-sys = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true, features = ["bundled", "static-link"] }' \ 60 | 'sdl2-sys = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true }' \ 61 | --replace-fail \ 62 | 'sdl2 = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true, features = ["image", "unsafe_textures", "bundled", "static-link"] }' \ 63 | 'sdl2 = { git = "https://github.com/doukutsu-rs/rust-sdl2.git", rev = "f2f1e29a416bcc22f2faf411866db2c8d9536308", optional = true, features = ["image", "unsafe_textures"] }' 64 | ''; 65 | 66 | postInstall = '' 67 | ln -s ${gameData} $out/bin/data 68 | ''; 69 | 70 | meta = with lib; { 71 | homepage = "https://doukutsu.rs/"; 72 | description = "A faithful and open-source remake of Cave Story's engine written in Rust"; 73 | license = licenses.mit; 74 | platforms = platforms.unix; 75 | }; 76 | } 77 | -------------------------------------------------------------------------------- /pkgs/ley/default.nix: -------------------------------------------------------------------------------- 1 | { rustPlatform, fetchFromGitHub }: 2 | 3 | rustPlatform.buildRustPackage rec { 4 | pname = "ley"; 5 | version = "0.1.0"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "Zaechus"; 9 | repo = pname; 10 | rev = "refs/heads/main"; 11 | hash = "sha256-ot5xMOow7ayppdcEjk3uNGCCG/uCN2rdqkpvNynDk/o="; 12 | }; 13 | 14 | useFetchCargoVendor = true; 15 | cargoHash = "sha256-ZDUxVPoTohXc2rrNbgaGiiYTBCe15dz+7qQ7bLettQY="; 16 | } 17 | -------------------------------------------------------------------------------- /pkgs/mangos-classic/default.nix: -------------------------------------------------------------------------------- 1 | { lib 2 | , stdenv 3 | , fetchFromGitHub 4 | 5 | , cmake 6 | 7 | , boost 8 | , libmysqlclient 9 | }: 10 | 11 | let 12 | playerbots = fetchFromGitHub { 13 | owner = "cmangos"; 14 | repo = "playerbots"; 15 | rev = "89a06ed9f27af57b8ca6f08f055f5f8ff591cb4f"; 16 | hash = "sha256-W8D3P/epehXW9pM1KBzFp8cgWfmXGN6S+ftdydamI0Q="; 17 | }; 18 | in 19 | stdenv.mkDerivation rec { 20 | pname = "mangos-classic"; 21 | version = "2025-04-11)"; 22 | 23 | src = fetchFromGitHub { 24 | owner = "cmangos"; 25 | repo = pname; 26 | rev = "fd03e05fbc2dbea7cf75ea6bcaefab41d748eea9"; 27 | hash = "sha256-XRPmFh+P4oJyFTeIG5zSDi4m4KKXhyJomqhRUbc81HU="; 28 | }; 29 | 30 | nativeBuildInputs = [ 31 | cmake 32 | ]; 33 | 34 | buildInputs = [ 35 | boost 36 | libmysqlclient 37 | ]; 38 | 39 | hardeningDisable = [ "format" ]; 40 | 41 | cmakeFlags = [ 42 | "-DMYSQL_INCLUDE_DIR=${libmysqlclient.dev}/include/mysql" 43 | "-DBUILD_EXTRACTORS=ON" 44 | "-DBUILD_AHBOT=ON" 45 | "-DBUILD_PLAYERBOTS=ON" 46 | ]; 47 | 48 | postPatch = '' 49 | substituteInPlace CMakeLists.txt \ 50 | --replace-fail \ 51 | "set(Boost_USE_STATIC_LIBS ON)" \ 52 | "set(Boost_USE_STATIC_LIBS OFF)" \ 53 | --replace-fail \ 54 | "set(REVISION_ID \"Git repository not found\")" \ 55 | "set(REVISION_ID \"${src.rev}\")" 56 | 57 | substituteInPlace src/CMakeLists.txt \ 58 | --replace-fail "GIT_REPOSITORY \"https://github.com/cmangos/playerbots.git\"" "" \ 59 | --replace-fail "GIT_TAG \"master\"" "URL ${playerbots}" 60 | ''; 61 | 62 | meta = with lib; { 63 | homepage = "https://cmangos.net/"; 64 | description = "C(ontinued)-MaNGOS (Classic fork) is about: -- Doing WoW-Emulation Right!"; 65 | license = licenses.gpl2Plus; 66 | platforms = platforms.unix; 67 | }; 68 | } 69 | -------------------------------------------------------------------------------- /pkgs/rpcs3/default.nix: -------------------------------------------------------------------------------- 1 | { appimageTools, fetchurl }: 2 | 3 | appimageTools.wrapType2 { 4 | name = "rpcs3"; 5 | version = "0.0.32-16434"; 6 | 7 | src = fetchurl { 8 | url = "https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-7ac097255e29b38bb041a080f750300a6e78812d/rpcs3-v0.0.32-16434-7ac09725_linux64.AppImage"; 9 | hash = "sha256-IQO+ciSET4VwlQRuiiNpZloF5yokfopNgW5kqlY7Jik="; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /pkgs/rustatus/default.nix: -------------------------------------------------------------------------------- 1 | { rustPlatform, fetchFromGitHub }: 2 | 3 | rustPlatform.buildRustPackage rec { 4 | pname = "rustatus"; 5 | version = "0.1.0"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "Zaechus"; 9 | repo = pname; 10 | rev = "refs/heads/main"; 11 | hash = "sha256-KFCKzmXBmoxMXpHJJPkN1SxmOBNVxCGwnCobE9L5kHg="; 12 | }; 13 | 14 | useFetchCargoVendor = true; 15 | cargoHash = "sha256-LN/QAuGdJMsyfkaToThCjkaHyrZa4Mpkr29YSE3PRIk="; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /pkgs/thorium/default.nix: -------------------------------------------------------------------------------- 1 | { appimageTools, fetchurl }: 2 | 3 | appimageTools.wrapType2 rec { 4 | name = "thorium"; 5 | version = "117.0.5938.157"; 6 | 7 | src = fetchurl { 8 | url = "https://github.com/Alex313031/${name}/releases/download/M${version}/Thorium_Browser_${version}_x64.AppImage"; 9 | hash = "sha256-dlfClBbwSkQg4stKZdSgNg3EFsWksoI21cxRG5SMrOM="; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /pkgs/tiny/default.nix: -------------------------------------------------------------------------------- 1 | { lib, rustPlatform, fetchFromGitHub }: 2 | 3 | rustPlatform.buildRustPackage rec { 4 | pname = "tiny"; 5 | version = "0.13.0"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "osa1"; 9 | repo = pname; 10 | rev = "v${version}"; 11 | hash = "sha256-phjEae2SS3zkSpuhhE4iscUM8ij8DT47YLIMATMG/+Q="; 12 | }; 13 | 14 | useFetchCargoVendor = true; 15 | cargoHash = "sha256-lyjTl0kbtfQdqSqxti1181+oDVYP4U++v2JEOYvI7aM="; 16 | 17 | meta = with lib; { 18 | description = "A terminal IRC client written in Rust"; 19 | homepage = "https://github.com/osa1/tiny"; 20 | license = licenses.mit; 21 | platforms = platforms.unix; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /pkgs/xdvdfs-cli/default.nix: -------------------------------------------------------------------------------- 1 | { rustPlatform, fetchCrate }: 2 | 3 | rustPlatform.buildRustPackage rec { 4 | pname = "xdvdfs-cli"; 5 | version = "0.8.3"; 6 | 7 | src = fetchCrate { 8 | inherit pname version; 9 | hash = "sha256-EQQzsMsoUeMC71D3rUKs7iV6PnOeIllhTsXJFW+qKtM="; 10 | }; 11 | 12 | useFetchCargoVendor = true; 13 | cargoHash = "sha256-UIAmdXF92iEPIE2DyRN1Rw2adugsEAGy00kUQ2Fp6M8="; 14 | } 15 | -------------------------------------------------------------------------------- /pkgs/zinfo/default.nix: -------------------------------------------------------------------------------- 1 | { lib, rustPlatform, fetchCrate }: 2 | 3 | rustPlatform.buildRustPackage rec { 4 | pname = "zinfo"; 5 | version = "0.3.1"; 6 | 7 | src = fetchCrate { 8 | inherit pname version; 9 | hash = "sha256-29yRRxCcZ6pVdRu+cZ3fnsy0OmvzhEUflmQMVeDIeUk="; 10 | }; 11 | 12 | useFetchCargoVendor = true; 13 | cargoHash = "sha256-7j+EtUdN95oBZZR6sjOPOdKAGUr4tHZT0mh6vzOpPhE="; 14 | 15 | doCheck = false; 16 | 17 | meta = with lib; { 18 | description = "A cross-platform system information program"; 19 | homepage = "https://github.com/Zaechus/zinfo"; 20 | license = licenses.mit; 21 | platforms = platforms.all; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | script_path=$(dirname "$(realpath "$0")") 4 | 5 | sudo ln -sf "$script_path"/flake.nix /etc/nixos/flake.nix 6 | sudo nixos-rebuild switch --flake ".#$1" 7 | --------------------------------------------------------------------------------