CMU Coding Bootcamp
1# SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2# 3# SPDX-License-Identifier: MIT 4 5let 6 pins = import ./npins; 7 8 nilla = import pins.nilla; 9in 10nilla.create ( 11 { config }: 12 { 13 config = { 14 inputs = { 15 nixpkgs = { 16 src = pins.nixpkgs; 17 }; 18 }; 19 packages.cmu-graphics = { 20 systems = [ "x86_64-linux" ]; 21 package = 22 { 23 pkgs, 24 python313, 25 fetchPypi, 26 }: 27 let 28 pname = "cmu_graphics"; 29 version = "1.1.43"; 30 in 31 python313.pkgs.buildPythonPackage { 32 inherit pname version; 33 34 src = fetchPypi { 35 inherit pname version; 36 hash = "sha256-IU6z+4xB7Uz/SsIrFkFRfLL10ZmpQTPyK+yDWDq89Xs="; 37 }; 38 39 doCheck = false; 40 checkPhase = '' 41 true 42 ''; 43 dontCheckPythonPackages = true; 44 pyproject = true; 45 46 dependencies = [ 47 python313.pkgs.pycairo 48 python313.pkgs.pygame 49 ]; 50 51 build-system = [ 52 python313.pkgs.setuptools 53 python313.pkgs.wheel 54 pkgs.pre-commit 55 ]; 56 57 }; 58 }; 59 shells.default = config.shells.html; 60 shells.python = { 61 # Declare what systems the shell can be used on. 62 systems = [ "x86_64-linux" ]; 63 64 # Define our shell environment. 65 shell = 66 { 67 pkgs, 68 mkShell, 69 ... 70 }: 71 let 72 python3 = pkgs.python313.override { 73 packageOverrides = pyfinal: pyprev: { 74 cmu_graphics = config.packages.cmu-graphics.result.x86_64-linux; 75 }; 76 }; 77 in 78 mkShell { 79 shellHook = '' 80 [ "$(hostname)" = "shorthair" ] && export ZED_PREDICT_EDITS_URL=http://localhost:9000/predict_edits 81 ''; 82 packages = [ 83 (python3.withPackages (ppkgs: [ 84 ppkgs.pandas 85 ppkgs.pandas-stubs 86 ppkgs.matplotlib 87 ppkgs.seaborn 88 ppkgs.numpy 89 ppkgs.requests 90 ppkgs.geopy 91 ppkgs.cmu_graphics 92 ppkgs.pycairo 93 ppkgs.pygame 94 ppkgs.pillow 95 ppkgs.numpy 96 ])) 97 pkgs.black 98 ]; 99 }; 100 }; 101 shells.ts = { 102 systems = [ "x86_64-linux" ]; 103 104 shell = 105 { 106 pkgs, 107 mkShell, 108 }: 109 mkShell { 110 packages = [ 111 pkgs.bun 112 pkgs.eslint_d 113 pkgs.eslint 114 pkgs.typescript 115 pkgs.typescript-language-server 116 pkgs.package-version-server 117 pkgs.nixd 118 pkgs.nil 119 ]; 120 }; 121 }; 122 shells.html = { 123 systems = [ "x86_64-linux" ]; 124 125 shell = 126 { 127 pkgs, 128 mkShell, 129 }: 130 mkShell { 131 shellHook = '' 132 serve() { 133 live-server /home/coded/Programming/CMU/html --port 5000 134 } 135 export -f serve 136 ''; 137 packages = [ 138 pkgs.emmet-language-server 139 pkgs.nixd 140 pkgs.nil 141 pkgs.nodePackages.live-server 142 ]; 143 }; 144 }; 145 }; 146 } 147)