# SPDX-FileCopyrightText: 2025 FreshlyBakedCake # # SPDX-License-Identifier: MIT let pins = import ./npins; nilla = import pins.nilla; in nilla.create ( { config, lib }: { config = { inputs = { nixpkgs = { src = pins.nixpkgs; }; }; packages.cmu-graphics = { systems = [ "x86_64-linux" ]; package = { pkgs, python313, fetchPypi, }: let pname = "cmu_graphics"; version = "1.1.43"; in python313.pkgs.buildPythonPackage { inherit pname version; src = fetchPypi { inherit pname version; hash = "sha256-IU6z+4xB7Uz/SsIrFkFRfLL10ZmpQTPyK+yDWDq89Xs="; }; doCheck = false; checkPhase = '' true ''; dontCheckPythonPackages = true; pyproject = true; dependencies = [ python313.pkgs.pycairo python313.pkgs.pygame ]; build-system = [ python313.pkgs.setuptools python313.pkgs.wheel pkgs.pre-commit ]; }; }; shells.default = config.shells.blog; shells.python = { # Declare what systems the shell can be used on. systems = [ "x86_64-linux" ]; # Define our shell environment. shell = { pkgs, mkShell, ... }: let python3 = pkgs.python313.override { packageOverrides = pyfinal: pyprev: { cmu_graphics = config.packages.cmu-graphics.result.x86_64-linux; }; }; in mkShell { shellHook = '' [ "$(hostname)" = "shorthair" ] && export ZED_PREDICT_EDITS_URL=http://localhost:9000/predict_edits ''; packages = [ (python3.withPackages (ppkgs: [ ppkgs.pandas ppkgs.pandas-stubs ppkgs.matplotlib ppkgs.seaborn ppkgs.numpy ppkgs.requests ppkgs.geopy ppkgs.cmu_graphics ppkgs.pycairo ppkgs.pygame ppkgs.pillow ppkgs.numpy ])) pkgs.black ]; }; }; shells.ts = { systems = [ "x86_64-linux" ]; shell = { pkgs, mkShell, }: mkShell { packages = [ pkgs.bun pkgs.eslint_d pkgs.eslint pkgs.typescript pkgs.typescript-language-server pkgs.package-version-server pkgs.nixd pkgs.nil ]; }; }; shells.blog = { systems = [ "x86_64-linux" ]; shell = { pkgs, mkShell, }: mkShell { packages = [ pkgs.bun pkgs.nodejs_24 pkgs.eslint_d pkgs.eslint pkgs.typescript pkgs.typescript-language-server pkgs.package-version-server pkgs.nixd pkgs.nil pkgs.devenv ]; }; }; shells.html = { systems = [ "x86_64-linux" ]; shell = { mkShell, pkgs }: mkShell { shellHook = '' serve() { live-server /home/coded/Programming/CMU/html --port 5000 } export -f serve ''; packages = [ pkgs.emmet-language-server pkgs.nixd pkgs.nil pkgs.nodePackages.live-server ]; }; }; shells.backend = { systems = ["x86_64-linux"]; shell = {mkShell, lib, system}: let pkgs = import pins.nixpkgs { inherit system; config.allowUnfree = true; }; in mkShell { packages = [ pkgs.jetbrains.datagrip pkgs.devenv pkgs.mongosh pkgs.mongodb-compass ]; }; }; shells.cicd = { systems = ["x86_64-linux"]; shell = { mkShell, pkgs }: mkShell { packages = [ pkgs.typst pkgs.tinymist ]; }; }; }; } )