Kup Cheatsheet
Last updated
Was this helpful?
Last updated
Was this helpful?
All K-related tools are managed through the kup
. Below you will find the command to install the K framework, commands available with kup
and flags that allow easy switching between different versions.
kup
kup
commandskup list
List all available packages and their status
kup list
kup install $package
Install or update a $package
kup install kontrol
kup uninstall $package
Uninstall $package
kup uninstall kontrol
kup shell $package
Add $package
to the current shell (this is temporary)
kup shell kevm
kup doctor
Check if kup
is installed correctly
kup doctor
kup add $package
Add a private package to kup
kup publish
Push a package to a cachix cache (RV developer use)
kup $option --help
Output the description of $option
kup list --help
Installation time: The initial installation of certain packages (e.g., ) may take longer as it needs to fetch all the libraries and compile sources. This process typically takes around 30 mins to 1 hour.
kup
packages managementThe following flags allow for the installation of different package versions and/or different dependencies versions.
--version
kup install $package --version $version
Install/update $package
with a particular $version
$version
: Commit/branch/local checkout/release tag of $package
kup install kontrol --version ~/kontrol
--override
kup install $package --override $dependency $version
Install/update $package
with a particular $version
of $dependency
$dependency
: a dependency of $package
$version
: commit/branch/local checkout/release tag of $dependency
kup install kontrol --override kevm/k-framework/haskell-backend ~/haskell-backend
As an example, let's assume we want to use kontrol
with the following modifications:
Use a local checkout of kontrol
(for example, after adding a new feature to kontrol
).
Use a haskell-backend
branch (for example, some execution improvements have not yet been upstreamed to kontrol
).
Use the Github release v0.1.461
of pyk
, which includes a useful new feature.
The line below will allow us to run a version of kontrol
with the above modifications:
As you can see, release tags, local checkouts and branches can be used to build a fine tuned version of any of our tools, kontrol
being the example here. To know the exact naming of the dependencies that a package has one can use kup list $package --inputs
.
kup
) has no effect. configuration files can be stored in many different locations. A full treatment can be found in the . Check if you have additional Nix config files, for example in $HOME/.config/nix
. If $HOME/.config/nix
specifies a trusted-users
option, this will override whichever trusted-users
were set in /etc/nix/nix.conf
. Changing the config variable from trusted-users
to extra-trusted-users
means it will only be appended, not overwritten. You can also explicitly set which files Nix should use as config files using the NIX_USER_CONF_FILES
environment variable.