From d21c8fac350aa6d82ce75aa68f4d4daccf22356b Mon Sep 17 00:00:00 2001 From: Gabriel Simmer Date: Tue, 7 Nov 2023 12:33:12 +0000 Subject: [PATCH] Experimental Coder --- nix/oracle-gitea-runner/coder.nix | 82 +++++++++++++++++++++++ nix/oracle-gitea-runner/configuration.nix | 9 +++ 2 files changed, 91 insertions(+) create mode 100644 nix/oracle-gitea-runner/coder.nix diff --git a/nix/oracle-gitea-runner/coder.nix b/nix/oracle-gitea-runner/coder.nix new file mode 100644 index 0000000..63a1a23 --- /dev/null +++ b/nix/oracle-gitea-runner/coder.nix @@ -0,0 +1,82 @@ +{ lib +, fetchurl +, installShellFiles +, makeWrapper +, terraform +, stdenvNoCC +, unzip +}: +let + inherit (stdenvNoCC.hostPlatform) system; +in + +stdenvNoCC.mkDerivation rec { + pname = "coder"; + version = "2.3.3"; + + src = fetchurl { + sha256 = { + x86_64-linux = "sha256-3gO71Eii3KBjn/oQ1Q3OCJ7S6H12iDYjOfqf43ph1nQ="; + x86_64-darwin = lib.fakeHash; + aarch64-linux = "sha256-v7S22I62EKPcHO9yZGciKKftRlzIowfAeVgnccOdlSs="; + aarch64-darwin = ""; + }.${system}; + + url = + let + systemName = { + x86_64-linux = "linux_amd64"; + aarch64-linux = "linux_arm64"; + x86_64-darwin = "darwin_amd64"; + aarch64-darwin = "darwin_arm64"; + }.${system}; + + ext = { + x86_64-linux = "tar.gz"; + aarch64-linux = "tar.gz"; + x86_64-darwin = "zip"; + aarch64-darwin = "zip"; + }.${system}; + in + "https://github.com/coder/coder/releases/download/v${version}/coder_${version}_${systemName}.${ext}"; + }; + + nativeBuildInputs = [ + installShellFiles + makeWrapper + unzip + ]; + + unpackPhase = '' + printf 'Decompressing %s\n' "$src" + case $src in + *.tar.gz) tar -xz -f "$src" ;; + *.zip) unzip "$src" ;; + esac + ''; + + installPhase = '' + mkdir -p $out/bin + cp coder $out/bin + ''; + + postInstall = '' + installShellCompletion --cmd coder \ + --bash <($out/bin/coder completion bash) \ + --fish <($out/bin/coder completion fish) \ + --zsh <($out/bin/coder completion zsh) + + wrapProgram $out/bin/coder --prefix PATH : ${lib.makeBinPath [ terraform ]} + ''; + + # integration tests require network access + doCheck = false; + + meta = { + description = "Provision software development environments via Terraform on Linux, macOS, Windows, X86, ARM, and of course, Kubernetes"; + homepage = "https://coder.com"; + license = lib.licenses.agpl3; + maintainers = [ lib.maintainers.ghuntley lib.maintainers.urandom ]; + broken = false; + }; +} diff --git a/nix/oracle-gitea-runner/configuration.nix b/nix/oracle-gitea-runner/configuration.nix index 37e91b4..5718792 100644 --- a/nix/oracle-gitea-runner/configuration.nix +++ b/nix/oracle-gitea-runner/configuration.nix @@ -5,6 +5,8 @@ [ # Include the results of the hardware scan. ./hardware.nix ]; + + nixpkgs.config.allowUnfree = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; boot.tmp.cleanOnBoot = true; zramSwap.enable = true; @@ -16,6 +18,13 @@ tailscale ]; + services.coder = { + enable = true; + group = "docker"; + listenAddress = "0.0.0.0:3000"; + package = (pkgs.callPackage ./coder.nix {}); + }; + services.gitea-actions-runner = { package = pkgs.forgejo-actions-runner; instances = {