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)