Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix ujust command for installing k8s dev tools #89

Merged
merged 4 commits into from
Jan 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
branches:
- main
merge_group:
merge_group:
workflow_dispatch:

jobs:
Expand Down
34 changes: 17 additions & 17 deletions .github/workflows/pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ on:
push:
branches:
- main
workflow_dispatch:
workflow_dispatch:
jobs:
pdf:
runs-on: ubuntu-latest
steps:
- name: Install Prince
run: |
curl https://www.princexml.com/download/prince-15.4.1-linux-generic-x86_64.tar.gz -O
tar zxf prince-15.4.1-linux-generic-x86_64.tar.gz
cd prince-15.4.1-linux-generic-x86_64
yes "" | sudo ./install.sh
- name: Build PDF
run: npx docusaurus-prince-pdf -u https://docs.projectbluefin.io -o pdf/bluefin.pdf
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: bluefin
# The output filename can be specified with --output option
path: pdf/bluefin.pdf
if-no-files-found: error
steps:
- name: Install Prince
run: |
curl https://www.princexml.com/download/prince-15.4.1-linux-generic-x86_64.tar.gz -O
tar zxf prince-15.4.1-linux-generic-x86_64.tar.gz
cd prince-15.4.1-linux-generic-x86_64
yes "" | sudo ./install.sh
- name: Build PDF
run: npx docusaurus-prince-pdf -u https://docs.projectbluefin.io -o pdf/bluefin.pdf
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: bluefin
# The output filename can be specified with --output option
path: pdf/bluefin.pdf
if-no-files-found: error
6 changes: 2 additions & 4 deletions docs/administration.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ The [brew](https://brew.sh/) application is the package manager used for install
- [Homebrew Packages](https://formulae.brew.sh/)
- [Cheatsheet](https://devhints.io/homebrew)

Note that the cask functionality in homebrew is MacOS specific and non functional in Bluefin, flatpak is used instead.
Note that the cask functionality in homebrew is MacOS specific and non functional in Bluefin, flatpak is used instead.

## System Updates

Expand All @@ -44,7 +44,7 @@ Machine firmware updates are provided through the standard Software Center:

### Upgrades and Throttle Settings

Bluefin publishes images based on the current and last stable version of Fedora. This is to give users maximum flexibility by allowing them to rebase to the version they want. You can choose from three rolling tags, or lock to a specific version of Fedora. Check the [release notes](https://github.com/ublue-os/bluefin/releases) for specific version information.
Bluefin publishes images based on the current and last stable version of Fedora. This is to give users maximum flexibility by allowing them to rebase to the version they want. You can choose from three rolling tags, or lock to a specific version of Fedora. Check the [release notes](https://github.com/ublue-os/bluefin/releases) for specific version information.

| | `gts` (default) | `stable` or `stable-daily` | `latest` |
| -------------------- | --------------- | -------------------------- | -------------- |
Expand All @@ -69,7 +69,6 @@ One of Bluefin's strengths is being able to atomically adjust versions. All the

:::


#### Gated Kernel

The `gts` and `stable` tags feature a gated kernel. This kernel follows the same version as the [Fedora CoreOS stable stream](https://fedoraproject.org/coreos/release-notes?arch=x86_64&stream=stable), which is a slower cadence than default Fedora Silverblue. The Universal Blue team may temporarily pin to a specific kernel in order to avoid regressions that may affect users.
Expand Down Expand Up @@ -172,7 +171,6 @@ This will show all the available tags and useful metadata like image and kernel

Check the [Fedora Silverblue User Guide](https://docs.fedoraproject.org/en-US/fedora-silverblue/) for more information.


### Virtual Private Networks (VPN)

[Tailscale](https://tailscale.com) is included by default to provide VPN services for both desktop and development use cases.
Expand Down
14 changes: 10 additions & 4 deletions docs/ai.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ slug: /ai

# AI and Machine Learning

GPU Acceleration for both Nvidia and AMD are included out of the box and usually do not require any extra setup.
GPU Acceleration for both Nvidia and AMD are included out of the box and usually do not require any extra setup.

### Ollama GUI

[Install Alpaca](https://flathub.org/apps/com.jeffser.Alpaca) to manage and chat with your LLM models from within a native desktop application. Alpaca supports Nvidia and AMD acceleration natively and *includes ollama*.
[Install Alpaca](https://flathub.org/apps/com.jeffser.Alpaca) to manage and chat with your LLM models from within a native desktop application. Alpaca supports Nvidia and AMD acceleration natively and _includes ollama_.

![image](https://github.com/user-attachments/assets/9fd38164-e2a9-4da1-9bcd-29e0e7add071)

Expand All @@ -18,11 +18,14 @@ GPU Acceleration for both Nvidia and AMD are included out of the box and usually
Since Alpaca doesn't expose any API, if you need other applications than Alpaca to interact with your ollama instance (for example an IDE) you should consider installing it [in a docker container](https://hub.docker.com/r/ollama/ollama).

To do so, first configure docker to use the nvidia drivers (that come preinstalled with Bluefin) with:

```bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
```

Then, choose a folder where to install the ollama container (for example `~/Containers/ollama`) and inside it create a new file named `docker-compose.yaml` with the following content:

```yaml
---
services:
Expand All @@ -41,11 +44,14 @@ services:
- capabilities:
- gpu
```

Finally, open a terminal in the folder containing the file just created and start the container with

```bash
docker compose up -d
```

and your ollama instance should be up and running at `http://127.0.0.1:11434`!

> **NOTE:** if you still want to use Alpaca as one of the way of interacting with Ollama, you can open the application, then go to *Preferences*, toggle the option *Use the Remote Connection to Ollama*, specify the endpoint above (`http://127.0.0.1:11434`) as *Server URL* (leave *Bearer Token* empty) in the dialog that will pop up and then press *Connect*.
> This way you should be able to manage the models installed on your ollama container and chat with them from the Alpaca GUI.
> **NOTE:** if you still want to use Alpaca as one of the way of interacting with Ollama, you can open the application, then go to _Preferences_, toggle the option _Use the Remote Connection to Ollama_, specify the endpoint above (`http://127.0.0.1:11434`) as _Server URL_ (leave _Bearer Token_ empty) in the dialog that will pop up and then press _Connect_.
> This way you should be able to manage the models installed on your ollama container and chat with them from the Alpaca GUI.
50 changes: 25 additions & 25 deletions docs/bluefin-dx.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,25 @@ Bluefin goes "all in" on cloud native development and is used differently than a

- Development is done in [devcontainers](https://containers.dev/)
- Command line applications are installed using [homebrew](https://brew.sh)
- Preconfigured ad-hoc containers for Ubuntu, Fedora, and Wolfi. Use whichever distribution you want.
- Preconfigured ad-hoc containers for Ubuntu, Fedora, and Wolfi are included. Use whichever distribution you want.

This differs from traditional distributions by making the development process operating system agnostic. There is no equivalent to `apt install php` on Bluefin, development is done with `podman` or `docker` directly via an IDE.
This differs from traditional distributions by making the development process operating system agnostic. There is no equivalent to `apt install php` on Bluefin; development is done with `podman` or `docker` directly via an IDE.

> We picked the cloud native pattern because local development in containers translates to deployment of containers on modern infrastructure.

![image](https://github.com/user-attachments/assets/51415b6c-b7fe-45e9-af74-c01694b26fbe)

The pattern in `bluefin-dx` (and `aurora-dx`) is centered around [devcontainers](https://containers.dev). Since the devcontainers live in the project's git repository, and they can deployed on any operating system, Linux, MacOS, or Windows (via WSL). This facilitates "distributed by default" development and avoids Linux users being "the odd one out" when working with teammates on other operating systems.
The pattern in `bluefin-dx` (and `aurora-dx`) is centered around [devcontainers](https://containers.dev). Since devcontainers live in the project's git repository, they can be deployed on any operating system: Linux, MacOS, or Windows (via WSL). This facilitates "distributed by default" development and avoids Linux users being "the odd one out" when working with teammates on other operating systems.

Each project has a declarative environment that is intended to be start the user with a "best practice" cloud-native workflow out of the box. The [Ultimate Guide to Dev Containers](https://www.daytona.io/dotfiles/ultimate-guide-to-dev-containers) has a good write up of the advantages of using devcontainers. This means that the development environment is kept in version control instead of coupled to the host.
Each project includes a declarative environment intended to start the user with a "best practice" cloud-native workflow out of the box. The [Ultimate Guide to Dev Containers](https://www.daytona.io/dotfiles/ultimate-guide-to-dev-containers) has a good write-up on the advantages of using devcontainers. This means that the development environment is kept in version control instead of coupled to the host.

Homebrew can also be used for installation of development tools. However it is recommended to avoid that and declare the project's dependencies in version control. It's so easy sometimes, [it's okay](https://www.youtube.com/shorts/lKwavoyaaFA).
Homebrew can also be used to install development tools. However, it is recommended to avoid that and declare the project's dependencies in version control. It's so easy sometimes, [it's okay](https://www.youtube.com/shorts/lKwavoyaaFA).

> You can always use whatever you want, you do not need to use everything in here in order to be productive -- at the end of the day it's your computer, this is just a set of defaults.
> You can always use whatever you want. You do not need to use everything in here in order to be productive -- at the end of the day it's your computer and this is just a set of defaults.

# Enabling Developer Mode

Turning on developer mode is a two step process:
Turning on developer mode is a two-step process:

## Step 1: Turn it on

Expand All @@ -51,7 +51,7 @@ Like all Universal Blue images, switching is atomic, allowing for clean switchin

## Visual Studio Code with Docker

[Visual Studio Code](https://code.visualstudio.com/) is included on the image as the default IDE. It comes with the [devcontainers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) already installed. It's the recommended developer experience, start here if you're new to containerized development!
[Visual Studio Code](https://code.visualstudio.com/) is included in the image as the default IDE. It comes with the [devcontainers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) already installed. It's the recommended developer experience, so start here if you're new to containerized development!

- [Dev Containers Documentation](https://code.visualstudio.com/docs/devcontainers/containers) - you can skip most of the installation instructions and go directly to [the tutorial](https://code.visualstudio.com/docs/devcontainers/tutorial#_install-the-extension)
- [Dev Containers Specification](https://containers.dev/)
Expand All @@ -61,13 +61,13 @@ Like all Universal Blue images, switching is atomic, allowing for clean switchin

The most current [Docker Engine](https://docs.docker.com/engine/) is included by default and is set up to be the default container runtime for vscode. Using [docker compose](https://danielquinn.org/blog/developing-with-docker/) is also a great way to get started in container development and is an option if devcontainers don't fit your style.

## Devpod
## DevPod

DevPod is an open source tool used to create reproducible developer environments. Each developer environment runs in a separate container and is specified through a `devcontainer.json`. Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just localhost `docker`.
DevPod is an open source tool used to create reproducible developer environments. Each developer environment runs in a separate container and is specified through a `devcontainer.json` file. It's like Codespaces but is open-source, client-only, and unopinionated: it works with any IDE and lets you use any cloud, Kubernetes, or even local `docker` environment.

- [Devpod Website](https://devpod.sh/)
- [Devpod Documentation](https://devpod.sh/docs/what-is-devpod)
- [Devpod Quickstart VS Code](https://devpod.sh/docs/getting-started/quickstart-vscode)
- [DevPod Website](https://devpod.sh/)
- [DevPod Documentation](https://devpod.sh/docs/what-is-devpod)
- [DevPod Quickstart VS Code](https://devpod.sh/docs/getting-started/quickstart-vscode)
- [Loft.sh](https://www.loft.sh/)

Check out this talk from [Rich Burroughs](https://timeline.richburroughs.dev/):
Expand All @@ -78,11 +78,11 @@ Check out this talk from [Rich Burroughs](https://timeline.richburroughs.dev/):

![Podman Desktop](https://github.com/user-attachments/assets/69f64ed1-7fcc-4040-9a3d-12b71308da1b)

[Podman Desktop](https://podman-desktop.io/) is included to provide container management. Check out the Podman Desktop [documentation](https://podman-desktop.io/docs/intro) for more information. All the upstream `podman` tools are included. This is the default system container runtime, and is the recommended developer configuration that Fedora ships with.
[Podman Desktop](https://podman-desktop.io/) is included to provide container management. Check out the Podman Desktop [documentation](https://podman-desktop.io/docs/intro) for more information. All the upstream `podman` tools are included. This is the default system container runtime and is the recommended developer configuration that Fedora ships with.

> Though Bluefin defaults to docker and vscode for development, all of the Fedora upstream tools are included for those that prefer that experience.
> Though Bluefin defaults to docker and vscode for development, all of the Fedora upstream tools are included for those who prefer that experience.

## Built in Performance Tooling
## Built-in Performance Tooling

[Sysprof](https://www.sysprof.com/) is included as a systemwide performance profiler. As well as [Brendan Gregg's](https://www.brendangregg.com/) recommended CLI tools:

Expand All @@ -93,7 +93,7 @@ Thanks to Ubuntu and Canonical for the [detailed specification](https://discours
## Quality of Life Improvements

- [Cockpit](https://cockpit-project.org/) for local and remote management
- A collection of well curated monospace fonts
- A collection of well-curated monospace fonts
- [Tailscale](https://universal-blue.discourse.group/t/tailscale-vpn-on-bluefin/290) for VPN
- [Just](https://github.com/casey/just) task runner for automation tasks
- `fish` and `zsh` available as optional shells
Expand All @@ -111,7 +111,7 @@ Thanks to Ubuntu and Canonical for the [detailed specification](https://discours
- [fzf](https://github.com/junegunn/fzf) for command line fuzzy finding
- [ripgrep](https://github.com/BurntSushi/ripgrep) for search
- [tealdeer](https://github.com/dbrgn/tealdeer) for `tldr`
- [television](https://github.com/alexpasmantier/television) - a blazing fast general purpose fuzzy finder TUI - (`tv`)
- [television](https://github.com/alexpasmantier/television) - a blazing fast general-purpose fuzzy finder TUI - (`tv`)
- [trash-cli](https://github.com/andreafrancia/trash-cli) to manage the system trashcan. (Strongly recommended for new CLI users)
- [ugrep](https://github.com/Genivia/ugrep) for grep
- [yq](https://github.com/mikefarah/yq) - for yaml, json, and xml processing
Expand All @@ -131,7 +131,7 @@ Use BoxBuddy's interface to create your own pet containers from whichever distri

![image](https://github.com/user-attachments/assets/79570148-98f9-458f-b46e-2a87cfaa00ed)

For CLI warriors you can manage your containers with the Terminal's built in container support:
For CLI warriors you can manage your containers with the Terminal's built-in container support:

![image](https://github.com/user-attachments/assets/2a4dc4b5-f1a8-4781-80a4-92ea4dfeeb97)

Expand All @@ -153,22 +153,22 @@ The included [Terminal](https://gitlab.gnome.org/chergert/ptyxis) includes a hos

The JetBrains blog also has more information on JetBrains Dev Containers support:

- [Using Dev Containers in JetBrains IDEs](https://blog.jetbrains.com/idea/2024/07/using-dev-containers-in-jetbrains-ides-part-1/) – Part 1
- [Using Dev Containers in JetBrains IDEs – Part 1](https://blog.jetbrains.com/idea/2024/07/using-dev-containers-in-jetbrains-ides-part-1/)

Devpod also has support for JetBrains
DevPod also has support for JetBrains:

- [Devpod Quickstart JetBrains](https://devpod.sh/docs/getting-started/quickstart-jetbrains)
- [DevPod Quickstart JetBrains](https://devpod.sh/docs/getting-started/quickstart-jetbrains)

## Neovim

`brew install neovim devcontainer` then follow these directions for a devcontainer setup:

- [Running Neovim with Devcontainers](https://cadu.dev/running-neovim-on-devcontainers/)
- [Devpod Quickstart for Neovim](https://devpod.sh/docs/getting-started/quickstart-vim)
- [DevPod Quickstart for Neovim](https://devpod.sh/docs/getting-started/quickstart-vim)

## Kubernetes and other Cloud Native Tooling

`ujust k8s-dev-tools` to get started:
`ujust install-k8s-dev-tools` to get started:

- [kind](https://kind.sigs.k8s.io/) - Run a Kubernetes cluster on your machine. Run `kind create cluster` on the host to get started!
- [kubectl](https://kubernetes.io/docs/reference/kubectl/) - Administer Kubernetes Clusters
Expand All @@ -178,4 +178,4 @@ Devpod also has support for JetBrains

- [virt-manager](https://virt-manager.org/) and associated tooling (KVM, qemu)
- [Incus](https://linuxcontainers.org/incus/) provides system containers
- [LXC](https://linuxcontainers.org/) and [LXD](https://ubuntu.com/lxd) are also provided for compatibility reasons, however these tools are deprecated and will be removed in Spring 2025
- [LXC](https://linuxcontainers.org/) and [LXD](https://ubuntu.com/lxd) are also provided for compatibility reasons, however, these tools are deprecated and will be removed in Spring 2025
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ If you come to the Discord you might be asked to report an issue or start a disc

### How to test incoming changes

One of the nice things about the image model is that we can generate an entire OS image for every change we want to commit, so this makes testing way easier than in the past.
One of the nice things about the image model is that we can generate an entire OS image for every change we want to commit, so this makes testing way easier than in the past.
You can rebase to it, see if it works, and then move back.
This also means we can increase the amount of testers!

Expand Down
Loading
Loading