Skip to content

Commit 0862c15

Browse files
committed
feat: Added missing documentation
1 parent f8c0032 commit 0862c15

14 files changed

Lines changed: 539 additions & 79 deletions

File tree

docs/resources/(resources)/apt.mdx

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,23 @@ title: apt
33
description: A reference page for the apt resource
44
---
55

6-
The apt resource reference. This resource manages packages on Debian-based Linux systems using the APT (Advanced Package Tool) package manager. APT is the standard package manager for Ubuntu, Debian, Linux Mint, and other Debian-based distributions.
6+
The apt resource manages packages on Debian-based Linux systems using the APT (Advanced Package Tool) package manager. APT is the standard package manager for Ubuntu, Debian, Linux Mint, and other Debian-based distributions.
77

88
## Parameters:
99

10-
- **install**: *(array[string | object])* A list of packages to install using apt. Each package can be specified as:
11-
- A simple string with the package name (e.g., `"curl"`)
12-
- An object with `name` and optional `version` fields for version-specific installations
10+
- **install**: *(array[string])* A list of packages to install using apt. Each entry is a string with the package name, optionally including a version constraint using the `name=version` syntax (e.g. `"nodejs=20.*"`). Codify adds packages that are missing and removes packages that are no longer listed.
1311

14-
- **update**: *(boolean)* Whether to run `apt-get update` before installing packages to refresh the package index. Defaults to `true`. Set to `false` to skip the update step if you've recently updated your package lists.
12+
- **update**: *(boolean)* Whether to run `apt-get update` before installing packages to refresh the package index. Defaults to `true`. Set to `false` to skip the update step if you have recently refreshed your package lists.
1513

1614
## Example usage:
1715

18-
### Installing packages with simple names
16+
### Install packages by name
1917

2018
```json title="codify.jsonc"
2119
[
2220
{
2321
"type": "apt",
22+
"os": ["linux"],
2423
"install": [
2524
"curl",
2625
"git",
@@ -31,33 +30,31 @@ The apt resource reference. This resource manages packages on Debian-based Linux
3130
]
3231
```
3332

34-
### Installing specific package versions
33+
### Pin specific package versions
34+
35+
Use the `name=version` syntax to install a particular version. Wildcards (`*`) are supported.
3536

3637
```json title="codify.jsonc"
3738
[
3839
{
3940
"type": "apt",
41+
"os": ["linux"],
4042
"install": [
4143
"curl",
42-
{
43-
"name": "nginx",
44-
"version": "1.18.0-0ubuntu1"
45-
},
46-
{
47-
"name": "postgresql",
48-
"version": "12+214ubuntu0.1"
49-
}
44+
"nodejs=20.*",
45+
"python3=3.12.*"
5046
]
5147
}
5248
]
5349
```
5450

55-
### Skipping the update step
51+
### Skip the update step
5652

5753
```json title="codify.jsonc"
5854
[
5955
{
6056
"type": "apt",
57+
"os": ["linux"],
6158
"install": [
6259
"jq",
6360
"htop"
@@ -69,7 +66,8 @@ The apt resource reference. This resource manages packages on Debian-based Linux
6966

7067
## Notes:
7168

72-
- The apt resource requires sudo privileges to install packages. Codify will prompt for your password when needed.
69+
- The apt resource requires `sudo` privileges to install and remove packages. Codify handles privilege escalation automatically.
7370
- APT is only available on Debian-based Linux distributions. For Red Hat-based systems, use the [yum](/docs/resources/yum) or [dnf](/docs/resources/dnf) resources instead.
74-
- Package names must match those available in your configured APT repositories. Use `apt search <package>` to find available packages.
75-
- When specifying versions, use the exact version string as shown by `apt-cache policy <package>`.
71+
- The `install` list is stateful — Codify tracks which packages it installed and removes them when they are taken off the list. Packages installed outside of Codify are not affected.
72+
- Package names must match those available in your configured APT repositories. Use `apt-cache search <package>` to find available packages and `apt-cache policy <package>` to see available versions.
73+
- The `os` field should be set to `["linux"]` when combining this resource with macOS-only resources in the same configuration file, so Codify only applies it on Linux systems.

docs/resources/(resources)/asdf/asdf.mdx

Lines changed: 30 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3,76 +3,62 @@ title: asdf
33
description: A reference page for the asdf resource
44
---
55

6-
Asdf is an all-in-one tool manager designed to replace individual language specific version managers
7-
such as pyenv, nvm, rbenv, etc. Asdf operates on a plugin based system
8-
to support the different tools. A full list of the supported plugins can be found here
9-
https://github.com/asdf-community. Asdf uses shims similar to pyenv, nvm, etc. and has the
10-
ability to install a tool globally, within a specific directory, or within a shell.
6+
Asdf is an all-in-one tool version manager designed to replace individual language-specific version managers such as pyenv, nvm, rbenv, and others. It operates on a plugin-based system to support different tools. A full list of supported plugins can be found at https://github.com/asdf-community.
117

128
Installing a tool with asdf is a multistep process:
139
1. Install asdf
14-
2. Install the plugin corresponding to the desired language/tool (ex: nodejs, golang, python, etc...)
15-
`asdf plugin add <name>`
16-
3. Install the desired version of the language/tool `asdf install <name> <version>`
17-
4. Load the language/tool to the global or local .tool-versions before it can used
18-
`asdf local <name> <version>` or `asdf global <name> <version>`. Installing the language/tool
19-
to locally means it can be used in the current directory or any subdirectories. Installing to global
20-
means that it can be used anywhere on the system. Tools that are not loaded cannot be used.
21-
22-
Additionally, asdf supports using a `.tool-versions` file to install multiple tools.
23-
Running `asdf install` in a directory with a `.tool-versions` will install the tools listed
24-
in the file. The installed tools are only be available in that directory or any subdirectories.
10+
2. Install the plugin for the desired language/tool: `asdf plugin add <name>`
11+
3. Install the desired version of the tool: `asdf install <name> <version>`
12+
4. Set the version globally or locally before it can be used: `asdf global <name> <version>` or `asdf local <name> <version>`
2513

26-
#### Codify Resources
14+
Asdf also supports `.tool-versions` files. Running `asdf install` in a directory containing a `.tool-versions` file installs all the tools listed in it. The installed tools are then available in that directory and its subdirectories.
15+
16+
#### Platform-specific installation
2717

28-
The Codify asdf resources are designed to replicate the same design model as the original tool.
18+
- **macOS**: Installed via Homebrew (`brew install asdf`). Homebrew must be present.
19+
- **Linux**: The latest release binary is downloaded directly from GitHub and placed in `~/.local/bin`. Codify also adds the asdf shims directory to `PATH` in your shell RC file.
2920

30-
- **asdf:** Installs asdf itself and optionally this resource can install plugins
31-
(as an added feature to help improve usability)
32-
- **asdf-plugin:** Installs an asdf plugin and optionally and install specific versions of the
33-
tool using the plugin (added feature).
34-
- **asdf-local:** Loads the asdf tool version locally to a directory or multiple directories.
35-
- **asdf-global:** Loads the asdf tool version globally.
36-
- **asdf-install:** Installs the `.tool-versions` file in a directory or installs
37-
a version of a tool. asdf-install will add missing plugins automatically (added feature)
21+
#### Codify Resources
22+
23+
- **asdf** — Installs asdf itself and optionally installs plugins.
24+
- **[asdf-plugin](/docs/resources/asdf/asdf-plugin)** — Installs an asdf plugin and optionally installs specific versions of the tool.
25+
- **[asdf-install](/docs/resources/asdf/asdf-install)** — Installs a `.tool-versions` file in a directory, or installs specific versions of a tool. Automatically installs missing plugins.
3826

3927
## Parameters:
4028

41-
- **plugins**: *(array[string])* An optional array of plugins to install. The plugin names must match
42-
the names found in https://github.com/asdf-community.
29+
- **plugins**: *(array[string])* An optional list of asdf plugins to install. The plugin names must match those found at https://github.com/asdf-community. This list is managed statefully — plugins are added when they appear in the list and removed when they are taken off.
4330

4431
## Example usage:
4532

46-
#### Install asdf:
33+
### Install asdf
34+
4735
```json title="codify.jsonc"
4836
[
4937
{
50-
"type": "asdf"
38+
"type": "asdf"
5139
}
5240
]
5341
```
5442

55-
#### Install asdf and the `nodejs` and `golang` plugins:
43+
### Install asdf with plugins
44+
5645
```json title="codify.jsonc"
5746
[
5847
{
59-
"type": "asdf",
60-
"plugins": ["nodejs", "golang"]
48+
"type": "asdf",
49+
"plugins": ["nodejs", "python"]
6150
}
6251
]
6352
```
6453

65-
#### A full config for installing a .tool-versions file
54+
### Install a `.tool-versions` file
6655

67-
The `asdf-install` resource will automatically install missing plugins if they exist in a
68-
`.tool-versions` file. This is additional functionality added by Codify. The config below
69-
installs asdf, installs the necessary plugins and then installs the tool versions specified
70-
in `~/path/to/dir/.tool-versions`.
56+
The `asdf-install` resource automatically installs missing plugins when using the `directory` parameter. The config below installs asdf and then installs all tool versions specified in `~/path/to/dir/.tool-versions`.
7157

7258
```json title="codify.jsonc"
7359
[
7460
{
75-
"type": "asdf"
61+
"type": "asdf"
7662
},
7763
{
7864
"type": "asdf-install",
@@ -81,27 +67,20 @@ in `~/path/to/dir/.tool-versions`.
8167
]
8268
```
8369

84-
#### Installing nodejs globally
70+
### Install and version-pin a tool
8571

86-
Asdf provides the `latest` keyword shortcut. Other-wise fully
87-
qualified version (down to the patch level) must be used. This config will install asdf,
88-
the nodejs plugin, install node versions `latest` and `20.18.0`, and then load
89-
`20.18.0` as the globally available version.
72+
Asdf provides the `latest` keyword as a shortcut. Otherwise a fully qualified version (down to the patch level) must be used. The config below installs asdf, the Node.js plugin, and two Node.js versions.
9073

9174
```json title="codify.jsonc"
9275
[
9376
{
94-
"type": "asdf"
77+
"type": "asdf",
78+
"plugins": ["nodejs"]
9579
},
9680
{
97-
"type": "asdf-plugin",
81+
"type": "asdf-install",
9882
"plugin": "nodejs",
9983
"versions": ["latest", "20.18.0"]
100-
},
101-
{
102-
"type": "asdf-global",
103-
"plugin": "nodejs",
104-
"version": "20.18.0"
10584
}
10685
]
10786
```
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"title": "asdf",
3-
"pages": ["asdf", "asdf-global", "asdf-install", "asdf-local", "asdf-plugin"]
3+
"pages": ["asdf", "asdf-install", "asdf-plugin"]
44
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: ollama
3+
description: A reference page for the ollama resource
4+
---
5+
6+
The ollama resource installs [Ollama](https://ollama.com/), a runtime for running large language models locally. On macOS it is installed via Homebrew and started as a background service; on Linux the official install script is used, which registers a systemd service automatically.
7+
8+
## Parameters:
9+
10+
- **models**: *(array[string])* AI models to pull and keep installed. Model names match those listed in the [Ollama library](https://ollama.com/library) (e.g. `"llama3.2"`, `"mistral"`, `"qwen2.5-coder:7b"`). Codify adds models that are missing and removes models that are no longer listed.
11+
12+
## Example usage:
13+
14+
### Install Ollama with a single model
15+
16+
```json title="codify.jsonc"
17+
[
18+
{
19+
"type": "ollama",
20+
"models": ["llama3.2"]
21+
}
22+
]
23+
```
24+
25+
### Install Ollama with multiple models
26+
27+
```json title="codify.jsonc"
28+
[
29+
{
30+
"type": "ollama",
31+
"models": ["llama3.2", "mistral", "qwen2.5-coder"]
32+
}
33+
]
34+
```
35+
36+
### Install Ollama without pulling any models
37+
38+
```json title="codify.jsonc"
39+
[
40+
{
41+
"type": "ollama"
42+
}
43+
]
44+
```
45+
46+
## Notes:
47+
48+
- On macOS, Homebrew must be installed before applying the ollama resource. The [homebrew](/docs/resources/homebrew) resource can install it.
49+
- On Linux, the official install script (`https://ollama.com/install.sh`) requires `curl` and `sudo` privileges. The script creates an `ollama` system user and registers a systemd service.
50+
- Models can be large (several gigabytes each). Make sure you have sufficient disk space before adding them to your configuration.
51+
- To see available model names and tags, visit [ollama.com/library](https://ollama.com/library) or run `ollama list` after installation.
52+
- Removing the ollama resource stops and uninstalls the Ollama binary but does **not** automatically remove downloaded model data (stored in `~/.ollama` on macOS or `/usr/share/ollama` on Linux for system-level data).
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"title": "python",
3-
"pages": ["pip", "pip-sync", "pyenv", "venv-project", "virtualenv", "virtualenv-project"]
3+
"pages": ["pip", "pip-sync", "pyenv", "uv", "venv-project", "virtualenv", "virtualenv-project"]
44
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: uv
3+
description: A reference page for the uv resource
4+
---
5+
6+
The uv resource installs [uv](https://github.com/astral-sh/uv), an extremely fast Python package and project manager from [Astral](https://astral.sh/). uv can replace pip, pip-tools, pyenv, virtualenv, and Poetry in a single tool. On macOS it is installed via Homebrew; on Linux the official install script is used.
7+
8+
## Parameters:
9+
10+
- **pythonVersions**: *(array[string])* Python versions to install via `uv python install` (e.g. `["3.12", "3.11"]`). Codify adds missing versions and removes versions that are no longer listed.
11+
12+
- **global**: *(string)* The Python version to set as the global default. This runs `uv python pin --global <version>` with the `--default` flag, which exposes `python` and `python3` on PATH as shims pointing to the selected version.
13+
14+
- **tools**: *(array[string])* Global CLI tools to install via `uv tool install` (e.g. `["ruff", "black", "httpie"]`). Each tool is installed into its own isolated environment and exposed on PATH. Codify adds missing tools and removes tools that are no longer listed.
15+
16+
## Example usage:
17+
18+
### Install uv with Python versions and set a global default
19+
20+
```json title="codify.jsonc"
21+
[
22+
{
23+
"type": "uv",
24+
"pythonVersions": ["3.12", "3.11"],
25+
"global": "3.12"
26+
}
27+
]
28+
```
29+
30+
### Install uv with Python and global CLI tools
31+
32+
```json title="codify.jsonc"
33+
[
34+
{
35+
"type": "uv",
36+
"pythonVersions": ["3.12"],
37+
"global": "3.12",
38+
"tools": ["ruff", "black", "httpie"]
39+
}
40+
]
41+
```
42+
43+
### Install uv only (no Python versions)
44+
45+
```json title="codify.jsonc"
46+
[
47+
{
48+
"type": "uv"
49+
}
50+
]
51+
```
52+
53+
## Notes:
54+
55+
- On macOS, Homebrew must be installed before applying the uv resource. The [homebrew](/docs/resources/homebrew) resource can install it.
56+
- On Linux, the official install script places the `uv` and `uvx` binaries in `~/.local/bin`. Codify adds this directory to `PATH` in your shell RC file automatically.
57+
- The `global` parameter requires the version to be installed (either via `pythonVersions` or already present on the system).
58+
- Tools installed via `tools` are managed as a stateful list — tools present in your configuration are added; tools removed from the list are uninstalled.
59+
- uv is compatible with existing `pyproject.toml`, `requirements.txt`, and `pip` workflows. It does not conflict with pip or virtualenv.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"title": "ruby",
3+
"pages": ["rbenv"]
4+
}

0 commit comments

Comments
 (0)