.github/workflows | ||
cutekit | ||
doc | ||
meta/nix | ||
tests | ||
.gitignore | ||
.mypyconfig | ||
licence.txt | ||
logo.png | ||
pyproject.toml | ||
readme.md |
CuteKit
The *magical* build system and package manager
Introduction
CuteKit is a suite of tools and utilities for compiling, cross-compiling, linking, and packaging project written in low-level languages such as C, C++ or, Rust. Anything from a simple library to an operating system can be built using CuteKit.
- ✨ It uses JSON: Cutekit uses JSON instead of introducing a whole new programming language for describing the project. And also has macros for more advanced use cases (see Jexpr).
- ✨ It's a package manager: Cutekit package manager is based on Git, nothing is centralized.
- ✨ It's extendible: Cutekit can be extended by writing custom Python plugins.
- ✨ It's easy: the templates help the user quick-start a project.
- ✨ It's portable: Cutekit works on Linux, Windows, and MacOS.
CuteKit in the wild
- SkiftOS : A hobbyist operating system written in C++.
- WKHtmlToPdf : Odoo's fork of wkhtmltopdf which is a command line tools to render HTML into PDF and various image formats using the Qt WebKit rendering engine.
Installation
To install Cutekit, you may use your favourite package manager if it is available. Or you can install it manually by following the instructions below.
By using pip
$ git clone https://github.com/cute-engineering/cutekit
$ cd cutekit
# If you want to use the latest version of Cutekit, you can switch to the dev branch.
# $ git switch dev
$ pip install --user -e .
By using Nix
$ git clone https://github.com/cute-engineering/cutekit
$ cd cutekit
# If you want to use the latest version of Cutekit, you can switch to the dev branch.
# $ git switch dev
$ nix shell ./meta/nix
Or you can also use Cutekit in your flakes. For example:
{
description = "Hello cutekit";
inputs = {
# If you want to use the latest version of Cutekit, you can specify the dev branch.
# cutekit.url = "github:cute-engineering/cutekit/dev?dir=meta/nix";
cutekit.url = "github:cute-engineering/cutekit?dir=meta/nix";
nixpkgs.url = "nixpkgs/nixos-23.11";
};
outputs = {self, nixpkgs, cutekit, ... }:
let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
ck = cutekit.defaultPackage.x86_64-linux;
in {
devShells.x86_64-linux.default = pkgs.mkShell {
packages = with pkgs; [
ck
];
};
};
}
Quick-start
-
If you directly want to start using Cutekit for a new project, you can just run
$ ck I host
and it will create a new project in the host directory (you can rename it later). -
If you want to use Cutekit for writing operating systems, you can create a new limine-based project by running
$ ck I limine-barebone
.
Example
If you want to see how it works you can read the doc/cutekit.md file.
License
Cutekit is licensed under the MIT License.
The full text of the license can be accessed via this link and is also included in the license.md file of this software package.