Skip to content
Draft
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
32 changes: 0 additions & 32 deletions .github/actions/nix-devshell/action.yaml

This file was deleted.

10 changes: 10 additions & 0 deletions .github/actions/setup-mise/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: "Setup mise"
description: "This action installs the tools pinned in mise.toml"
runs:
using: "composite"
steps:
- name: Setup mise
uses: jdx/mise-action@82a612c5ab8bcda7cc5db6b7e81a8e7584c3dc6e # v5.2.3
with:
version: 2026.10.19
cache: false
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ jobs:
with:
xcode-version: "26.5.0"

- name: Setup Nix
uses: ./.github/actions/nix-devshell
- name: Setup mise
uses: ./.github/actions/setup-mise

- run: make test

Expand All @@ -63,8 +63,8 @@ jobs:
with:
xcode-version: "26.5.0"

- name: Setup Nix
uses: ./.github/actions/nix-devshell
- name: Setup mise
uses: ./.github/actions/setup-mise

- run: make fmt

Expand All @@ -79,8 +79,8 @@ jobs:
fetch-tags: true
persist-credentials: false

- name: Setup Nix
uses: ./.github/actions/nix-devshell
- name: Setup mise
uses: ./.github/actions/setup-mise

- run: make lint
env:
Expand Down
11 changes: 6 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ jobs:
env:
# See the test job in ci.yml.
DEPOT_XCODE_CACHE_ENABLED: 0
out: ${{ github.workspace }}/release
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -48,8 +49,8 @@ jobs:
with:
xcode-version: "26.5.0"

- name: Setup Nix
uses: ./.github/actions/nix-devshell
- name: Setup mise
uses: ./.github/actions/setup-mise

- name: Authenticate to Google Cloud
id: gcloud_auth
Expand Down Expand Up @@ -81,7 +82,7 @@ jobs:
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: coder-desktop-build
path: ${{ github.workspace }}/outputs/out
path: ${{ env.out }}
retention-days: 7

# Upload to release in non-dry-run mode
Expand Down Expand Up @@ -121,8 +122,8 @@ jobs:
fetch-tags: true
persist-credentials: false

- name: Setup Nix
uses: ./.github/actions/nix-devshell
- name: Setup mise
uses: ./.github/actions/setup-mise

- name: Update homebrew-coder
env:
Expand Down
10 changes: 3 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# Created by https://www.toptal.com/developers/gitignore/api/xcode,jetbrains,macos,direnv,swift,swiftpm,objective-c
# Edit at https://www.toptal.com/developers/gitignore?templates=xcode,jetbrains,macos,direnv,swift,swiftpm,objective-c

### direnv ###
.direnv
.envrc
# Created by https://www.toptal.com/developers/gitignore/api/xcode,jetbrains,macos,swift,swiftpm,objective-c
# Edit at https://www.toptal.com/developers/gitignore?templates=xcode,jetbrains,macos,swift,swiftpm,objective-c

### JetBrains ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
Expand Down Expand Up @@ -294,7 +290,7 @@ xcuserdata
**/.vscode/**
buildServer.json

# End of https://www.toptal.com/developers/gitignore/api/xcode,jetbrains,macos,direnv,swift,swiftpm,objective-c
# End of https://www.toptal.com/developers/gitignore/api/xcode,jetbrains,macos,swift,swiftpm,objective-c

*.entitlements
app-signing.keychain-db
Expand Down
61 changes: 16 additions & 45 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,61 +17,32 @@ and bundle identifiers.

## Setting Up the Development Environment

To ensure a consistent and reliable development environment, we recommend using
[**Nix**](https://nix.dev/) with Flake support. All the tools required for
development are defined in the `flake.nix` file.
To ensure a consistent and reliable development environment, we use
[**mise**](https://mise.jdx.dev/) to install the tools required for development.
Their versions are pinned in `mise.toml`.

**Note:** Nix is the only supported development environment for this project.
While setups outside of Nix may work, we do not support custom tool installations
or address issues related to missing path setups or other tooling installation
problems. Using Nix ensures consistency across development environments and avoids
these potential issues.
**Note:** mise is the only supported way to install these tools. While other
setups may work, we do not support custom tool installations or address issues
related to missing path setups or other tooling installation problems. For
example, a Homebrew `swiftformat` may format the code differently from CI.

### Installing Nix with Flakes Enabled

If you don’t already have Nix installed, you can:

1. Use the [Determinate Systems installer](https://nixinstaller.com/) for a
simple setup.
2. Alternatively, use the [official installer](https://nixos.org/download.html)
and enable Flake support by adding the following to your Nix configuration:

```nix
experimental-features = nix-command flakes
```

This project does **not** support non-Flake versions of Nix.

### Entering the Development Environment

Run the following command to enter the development environment with all necessary
tools:

```bash
nix develop
```

### Using `direnv` for Environment Automation (Optional)

As an optional recommendation, you can use [`direnv`](https://direnv.net/) to
automatically load and unload the Nix development environment when you navigate
to the project directory. After installing `direnv`, enable it for this project by:

1. Adding the following line to your `.envrc` file in the project directory:
1. [Install mise](https://mise.jdx.dev/installing-mise.html).
2. From the project directory, [trust](https://mise.jdx.dev/cli/trust.html) its
`mise.toml`. mise asks for this because the file changes mise settings:

```bash
use flake
mise trust
```

2. Allowing the `.envrc` file by running:
3. Install the tools:

```bash
direnv allow
mise install
```

With `direnv`, the development environment will automatically be set up whenever
you enter the project directory. This step is optional but can significantly
streamline your workflow.
4. [Activate mise in your shell](https://mise.jdx.dev/getting-started.html#activate-mise),
so the pinned tools are on your `PATH` whenever you are in the project
directory.

## Generating the Xcode Project Files

Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
SHELL := bash
.SHELLFLAGS := -ceu

ifeq ($(filter oneshell,$(.FEATURES)),)
$(error GNU Make 3.82 or later is required for .SHELLFLAGS, but this is $(MAKE_VERSION). Install the tools with mise, see CONTRIBUTING.md)
endif

# This doesn't work on directories.
# See https://stackoverflow.com/questions/25752543/make-delete-on-error-for-directory-targets
.DELETE_ON_ERROR:
Expand Down
61 changes: 0 additions & 61 deletions flake.lock

This file was deleted.

72 changes: 0 additions & 72 deletions flake.nix

This file was deleted.

Loading
Loading