Compare commits

...
Sign in to create a new pull request.

9 commits

Author SHA1 Message Date
96d4beeb6b Update vscode-insiders package for improved platform support and permissions handling
Some checks failed
CI / check (push) Successful in 4s
CI / list-packages (push) Successful in 3s
CI / build (vscode-insiders) (push) Failing after 16s
CI / build (waterfox-bin) (push) Successful in 4s
CI / build (xcursor-mizuki) (push) Successful in 2s
CI / build (helium) (push) Successful in 4s
CI / build (pjsk-cursor) (push) Successful in 3s
2026-05-26 09:58:10 +09:00
e880422959 wow
Some checks failed
CI / check (push) Successful in 4s
CI / list-packages (push) Successful in 3s
CI / build (helium) (push) Successful in 5s
CI / build (pjsk-cursor) (push) Successful in 3s
CI / build (vscode-insiders) (push) Failing after 12s
CI / build (waterfox-bin) (push) Successful in 4s
CI / build (xcursor-mizuki) (push) Successful in 2s
2026-05-26 09:26:51 +09:00
c293ad4c67 wow
Some checks failed
CI / check (push) Failing after 2s
CI / list-packages (push) Failing after 2s
2026-05-26 09:24:30 +09:00
e4841b0f8f wow
Some checks failed
CI / check (push) Failing after 3s
CI / list-packages (push) Failing after 2s
2026-05-26 09:22:33 +09:00
3df4a4c055 wow
Some checks failed
CI / check (push) Failing after 4s
CI / list-packages (push) Successful in 2s
2026-05-26 09:21:58 +09:00
92723c4a7a Add .forgejo/workflows/pull-request.yml
Some checks failed
CI / check (push) Successful in 5s
CI / build (waterfox-bin) (push) Successful in 4s
CI / build (xcursor-mizuki) (push) Successful in 3s
CI / list-packages (push) Successful in 2s
CI / build (helium) (push) Successful in 4s
CI / build (pjsk-cursor) (push) Successful in 3s
CI / build (vscode-insiders) (push) Failing after 25s
2026-05-25 21:59:02 +09:00
96bb7feef0 Update .forgejo/workflows/main.yml
Some checks failed
CI / check (push) Successful in 8s
CI / list-packages (push) Successful in 2s
CI / build (helium) (push) Successful in 4s
CI / build (pjsk-cursor) (push) Successful in 2s
CI / build (vscode-insiders) (push) Failing after 26s
CI / build (xcursor-mizuki) (push) Has been cancelled
CI / build (waterfox-bin) (push) Has been cancelled
2026-05-25 21:58:06 +09:00
4ea2f6c218 Update pkgs/vscode-insiders/default.nix
Some checks failed
CI / list-packages (push) Successful in 2s
CI / build (helium) (push) Successful in 4s
CI / build (pjsk-cursor) (push) Successful in 2s
CI / build (waterfox-bin) (push) Has been cancelled
CI / build (xcursor-mizuki) (push) Has been cancelled
CI / check (push) Successful in 4s
CI / build (vscode-insiders) (push) Has been cancelled
2026-05-25 21:57:24 +09:00
8c8d696346 Merge pull request 'flake.lock: update 2026-05-25' (#17) from update/flake-lock-2026-05-25 into main
Some checks failed
CI / check (push) Successful in 4s
CI / list-packages (push) Successful in 2s
CI / build (helium) (push) Successful in 8s
CI / build (pjsk-cursor) (push) Successful in 3s
CI / build (vscode-insiders) (push) Failing after 26s
CI / build (waterfox-bin) (push) Successful in 7s
CI / build (xcursor-mizuki) (push) Successful in 3s
Reviewed-on: #17
2026-05-25 15:04:12 +09:00
5 changed files with 280 additions and 48 deletions

View file

@ -4,7 +4,6 @@ on:
push:
branches:
- main
pull_request:
jobs:
check:

View file

@ -0,0 +1,81 @@
name: Pull Request
on:
pull_request:
jobs:
check:
runs-on: x86_64
steps:
- uses: actions/checkout@v4
- name: Check flake
run: |
source /etc/bashrc
nix flake check
list-packages:
runs-on: x86_64
outputs:
packages: ${{ steps.set-matrix.outputs.packages }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- id: set-matrix
run: |
source /etc/bashrc
ALL_PACKAGES=$(nix flake show --json | nix run nixpkgs#jq -- -r '.packages."x86_64-linux" | keys[]')
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "Detecting changed packages for PR..."
BASE_REF="${{ github.base_ref }}"
# Ensure the base branch is available for diffing
git fetch origin "$BASE_REF" --depth=1
CHANGED_FILES=$(git diff --name-only "origin/$BASE_REF"...HEAD)
if echo "$CHANGED_FILES" | grep -qE 'flake.nix|flake.lock'; then
echo "Flake files changed, building all packages."
SELECTED_PACKAGES=$(echo "$ALL_PACKAGES" | nix run nixpkgs#jq -- -R . | nix run nixpkgs#jq -- -s -c .)
else
# Extract package names from pkgs/<name>/
CHANGED_PKGS=$(echo "$CHANGED_FILES" | grep '^pkgs/' | cut -d'/' -f2 | sort -u || true)
FINAL_PKGS=()
for pkg in $CHANGED_PKGS; do
if echo "$ALL_PACKAGES" | grep -q "^$pkg$"; then
FINAL_PKGS+=("$pkg")
fi
done
if [ ${#FINAL_PKGS[@]} -eq 0 ]; then
SELECTED_PACKAGES="[]"
else
SELECTED_PACKAGES=$(printf '%s\n' "${FINAL_PKGS[@]}" | nix run nixpkgs#jq -- -R . | nix run nixpkgs#jq -- -s -c .)
fi
fi
else
echo "Push event, listing all packages."
SELECTED_PACKAGES=$(echo "$ALL_PACKAGES" | nix run nixpkgs#jq -- -R . | nix run nixpkgs#jq -- -s -c .)
fi
echo "packages=$SELECTED_PACKAGES" >> $GITHUB_OUTPUT
build:
needs: [check, list-packages]
runs-on: x86_64
if: ${{ fromJson(needs.list-packages.outputs.packages)[0] != null }}
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.list-packages.outputs.packages) }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Build package
run: |
source /etc/bashrc
nix build .#${{ matrix.package }}

View file

@ -7,15 +7,17 @@ on:
jobs:
update:
runs-on: x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check for new vscode-insiders release
id: check
shell: bash
run: |
source /etc/bashrc
source /etc/bashrc || true
CURRENT_VERSION=$(grep 'version = ' pkgs/vscode-insiders/default.nix | head -1 | grep -oP '"[^"]+"' | tr -d '"')
echo "Current version: $CURRENT_VERSION"
@ -25,45 +27,109 @@ jobs:
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
echo "Already up to date."
echo "updated=false" >> $GITHUB_OUTPUT
echo "updated=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "New version found: $LATEST_VERSION"
echo "latest_version=$LATEST_VERSION" >> $GITHUB_OUTPUT
echo "updated=true" >> $GITHUB_OUTPUT
echo "latest_version=$LATEST_VERSION" >> "$GITHUB_OUTPUT"
echo "updated=true" >> "$GITHUB_OUTPUT"
- name: Update version and sha256
if: steps.check.outputs.updated == 'true'
id: update
shell: bash
run: |
source /etc/bashrc
source /etc/bashrc || true
LATEST="${{ steps.check.outputs.latest_version }}"
URL="https://code.visualstudio.com/sha/download?build=insider&os=linux-x64"
echo "Fetching new sha256 for VSCode Insiders..."
NEW_SHA256=$(nix-prefetch-url --type sha256 "$URL" 2>/dev/null | tail -1)
NEW_SHA256_SRI=$(nix hash convert --hash-algo sha256 --to sri "$NEW_SHA256")
echo "New sha256 (SRI): $NEW_SHA256_SRI"
fetch_sri() {
local url="$1"
sed -i "s|version = \".*\";|version = \"${LATEST}\";|" pkgs/vscode-insiders/default.nix
sed -i "s|sha256 = \"sha256-.*\";|sha256 = \"${NEW_SHA256_SRI}\";|" pkgs/vscode-insiders/default.nix
HASH=$(nix-prefetch-url --type sha256 "$url" 2>/dev/null | tail -1)
nix hash convert --hash-algo sha256 --to sri "$HASH"
}
echo "new_sha256=$NEW_SHA256_SRI" >> $GITHUB_OUTPUT
echo "Fetching hashes..."
LINUX_SHA=$(fetch_sri "https://code.visualstudio.com/sha/download?build=insider&os=linux-x64")
DARWIN_ARM_SHA=$(fetch_sri "https://code.visualstudio.com/sha/download?build=insider&os=darwin-arm64")
DARWIN_X64_SHA=$(fetch_sri "https://code.visualstudio.com/sha/download?build=insider&os=darwin")
echo "Linux SHA: $LINUX_SHA"
echo "Darwin ARM SHA: $DARWIN_ARM_SHA"
echo "Darwin x64 SHA: $DARWIN_X64_SHA"
export LATEST
export LINUX_SHA
export DARWIN_ARM_SHA
export DARWIN_X64_SHA
python <<'PY'
import os
import re
from pathlib import Path
path = Path("pkgs/vscode-insiders/default.nix")
text = path.read_text()
text = re.sub(
r'version = ".*?";',
f'version = "{os.environ["LATEST"]}";',
text,
count=1
)
text = re.sub(
r'(os=darwin-arm64";\s+sha256 = ").*?(";\s+)',
rf'\g<1>{os.environ["DARWIN_ARM_SHA"]}\2',
text,
count=1,
flags=re.S
)
text = re.sub(
r'(os=darwin";\s+sha256 = ").*?(";\s+)',
rf'\g<1>{os.environ["DARWIN_X64_SHA"]}\2',
text,
count=1,
flags=re.S
)
text = re.sub(
r'(os=linux-x64";\s+sha256 = ").*?(";\s+)',
rf'\g<1>{os.environ["LINUX_SHA"]}\2',
text,
count=1,
flags=re.S
)
path.write_text(text)
PY
echo "linux_sha=$LINUX_SHA" >> "$GITHUB_OUTPUT"
echo "darwin_arm_sha=$DARWIN_ARM_SHA" >> "$GITHUB_OUTPUT"
echo "darwin_x64_sha=$DARWIN_X64_SHA" >> "$GITHUB_OUTPUT"
- name: Verify build
if: steps.check.outputs.updated == 'true'
shell: bash
run: |
source /etc/bashrc
NIXPKGS_ALLOW_UNFREE=1 nix build .#vscode-insiders
source /etc/bashrc || true
export NIXPKGS_ALLOW_UNFREE=1
nix build .#vscode-insiders
- name: Create Pull Request
if: steps.check.outputs.updated == 'true'
env:
API_FORGEJO_TOKEN: ${{ secrets.API_FORGEJO_TOKEN }}
shell: bash
run: |
source /etc/bashrc
source /etc/bashrc || true
LATEST="${{ steps.check.outputs.latest_version }}"
BRANCH="update/vscode-insiders-${LATEST}"
@ -72,16 +138,20 @@ jobs:
git config user.email "akiyama@mizuki.guru"
git checkout -b "$BRANCH"
git add pkgs/vscode-insiders/default.nix
git commit -m "pkgs/vscode-insiders: update to ${LATEST}"
REPO_URL=$(git remote get-url origin | sed 's|https://||')
git push "https://oauth2:${API_FORGEJO_TOKEN}@${REPO_URL}" "$BRANCH"
FORGEJO_HOST=$(echo "$REPO_URL" | cut -d'/' -f1)
REPO_PATH=$(echo "$REPO_URL" | cut -d'/' -f2-)
curl -fsSL -X POST \
curl -fsSL \
-X POST \
-H "Authorization: token ${API_FORGEJO_TOKEN}" \
-H "Content-Type: application/json" \
"https://${FORGEJO_HOST}/api/v1/repos/${REPO_PATH}/pulls" \
@ -89,5 +159,4 @@ jobs:
\"title\": \"pkgs/vscode-insiders: update to ${LATEST}\",
\"head\": \"${BRANCH}\",
\"base\": \"main\",
\"body\": \"Automated update of VSCode Insiders to version \`${LATEST}\`.\n\nNew SRI Hash: \`${{ steps.update.outputs.new_sha256 }}\`\"
}"
\"body\": \"Automated update of VSCode Insiders to version \`${LATEST}\`.\n\nLinux SHA:\n\`${{ steps.update.outputs.linux_sha }}\`\n\nDarwin ARM SHA:\n\`${{ steps.update.outputs.darwin_arm_sha }}\`\n\nDarwin x64 SHA:\n\`${{ steps.update.outputs.darwin_x64_sha }}\`\"}"

View file

@ -7,9 +7,12 @@
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
# Overlay 정의
supportedSystems = [
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
overlay = final: prev: {
waterfox-bin = final.callPackage ./pkgs/waterfox-bin/default.nix { };
xcursor-mizuki = final.callPackage ./pkgs/xcursor-mizuki/default.nix { };
@ -18,22 +21,31 @@
vscode-insiders = final.callPackage ./pkgs/vscode-insiders/default.nix { };
};
pkgs = import nixpkgs {
inherit system;
overlays = [ overlay ];
config.allowUnfree = true;
};
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f (
import nixpkgs {
inherit system;
overlays = [ overlay ];
config.allowUnfree = true;
}
));
in {
overlays.default = overlay;
packages.${system} = {
inherit (pkgs)
waterfox-bin
xcursor-mizuki
pjsk-cursor
helium
vscode-insiders;
};
packages = forAllSystems (pkgs:
let
allPkgs = {
inherit (pkgs)
waterfox-bin
xcursor-mizuki
pjsk-cursor
helium
vscode-insiders;
};
in
nixpkgs.lib.filterAttrs (name: pkg:
nixpkgs.lib.elem pkgs.stdenv.hostPlatform.system (pkg.meta.platforms or [ "x86_64-linux" ])
) allPkgs
);
nixConfig = {
extra-substituters = [

View file

@ -1,29 +1,100 @@
{ pkgs }:
{ pkgs, lib, fetchurl }:
let
src = fetchTarball {
url = "https://code.visualstudio.com/sha/download?build=insider&os=linux-x64";
sha256 = "04brczgkvpkqrg018wss9z5hk56n4d58r1bd7zq83wsycma9mq2b";
inherit (pkgs) stdenv;
sysAttrs =
if stdenv.hostPlatform.isDarwin then
if stdenv.hostPlatform.isAarch64 then {
url = "https://code.visualstudio.com/sha/download?build=insider&os=darwin-arm64-dmg";
sha256 = "sha256-K+U6JtVNz1PRzL/0SIEK7RXwQu6LL3p+248Ywbn+mDc=";
name = "vscode-insiders-darwin-arm64.dmg";
} else {
url = "https://code.visualstudio.com/sha/download?build=insider&os=darwin-x64-dmg";
sha256 = "sha256-ex0ESS9APZxgc7b96Q7EQbckUXE51LmTqDfsnN07W3I=";
name = "vscode-insiders-darwin-x64.dmg";
}
else {
url = "https://code.visualstudio.com/sha/download?build=insider&os=linux-x64";
sha256 = "sha256-kE99FyilwwFv3zTCkufGwD3s1WwoJ2krg10l3Xy5PRE=";
name = "vscode-insiders-linux-x64.tar.gz";
};
src = fetchurl {
inherit (sysAttrs) url sha256 name;
};
in
(pkgs.vscode.override {
isInsiders = true;
}).overrideAttrs (oldAttrs: {
pname = "vscode-insiders";
version = "1.122.0-insider";
isInsiders = true;
inherit src;
buildInputs = (oldAttrs.buildInputs or []) ++ [ pkgs.krb5 pkgs.libsoup_3 pkgs.webkitgtk_4_1 ];
sourceRoot = lib.optionalString stdenv.hostPlatform.isDarwin ".";
postUnpack = lib.optionalString stdenv.hostPlatform.isDarwin ''
export sourceRoot="$(ls -d *.app)"
chmod -R +w "$sourceRoot"
'';
prePatch = ''
nativeBuildInputs = (oldAttrs.nativeBuildInputs or [])
++ lib.optionals stdenv.hostPlatform.isDarwin [ pkgs.undmg pkgs.darwin.xattr ];
buildInputs =
(oldAttrs.buildInputs or [])
++ lib.optionals stdenv.hostPlatform.isLinux [
pkgs.krb5
pkgs.libsoup_3
pkgs.webkitgtk_4_1
];
prePatch = if stdenv.hostPlatform.isDarwin then ''
${oldAttrs.prePatch or ""}
mkdir -p Contents/Resources/app/node_modules/@vscode/ripgrep/bin
touch Contents/Resources/app/node_modules/@vscode/ripgrep/bin/rg
'' else if stdenv.hostPlatform.isLinux then ''
${oldAttrs.prePatch or ""}
mkdir -p resources/app/node_modules/@vscode/ripgrep/bin
touch resources/app/node_modules/@vscode/ripgrep/bin/rg
'' else "";
installPhase = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
cp -r . $out/Applications/Visual\ Studio\ Code\ -\ Insiders.app
# Create a wrapper script in bin/ to launch the app
mkdir -p $out/bin
cat > $out/bin/code-insiders << 'EOF'
#!/bin/sh
exec "$out/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron" "$@"
EOF
chmod +x $out/bin/code-insiders
'';
preFixup =
if stdenv.hostPlatform.isDarwin then ''
${oldAttrs.preFixup or ""}
# Fix executable permissions in the app bundle
chmod +x "Contents/MacOS/Electron"
find Contents -type f -perm +111 -exec chmod +x {} \;
# Make the app executable for Gatekeeper/notarization checks
xattr -d com.apple.quarantine . 2>/dev/null || true
'' else ''
${oldAttrs.preFixup or ""}
rm -rf resources/app/node_modules/@github/copilot-linuxmusl-x64
'';
meta = (oldAttrs.meta or {}) // {
mainProgram = "code-insiders";
};
})
})