(feat): merge nix flakes
(fix): workflows
This commit is contained in:
parent
74b152969b
commit
6df912f428
11 changed files with 324 additions and 460 deletions
|
|
@ -12,29 +12,20 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#electron --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#electron --command bun run build:packages
|
||||||
|
|
||||||
- name: Build web
|
- name: Build web
|
||||||
run: bun run build:web
|
run: nix develop .#electron --command bun run build:web
|
||||||
|
|
||||||
- name: Install rsync
|
|
||||||
run: apt-get update && apt-get install -y rsync
|
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
run: rsync -a --delete apps/web/dist/ /var/lib/www/tensamin-web-dev/
|
run: nix develop .#electron --command rsync -a --delete apps/web/dist/ /var/lib/www/tensamin-web-dev/
|
||||||
|
|
||||||
build-mobile:
|
build-mobile:
|
||||||
runs-on: nixos
|
runs-on: nixos
|
||||||
|
|
@ -42,20 +33,14 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#tauri --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#tauri --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#tauri --command bun run build:packages
|
||||||
|
|
||||||
- name: Setup Android Keystore
|
- name: Setup Android Keystore
|
||||||
env:
|
env:
|
||||||
|
|
@ -112,7 +97,7 @@ jobs:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build mobile
|
- name: Build mobile
|
||||||
run: bun run build:mobile
|
run: nix develop .#tauri --command bun run build:mobile
|
||||||
|
|
||||||
- name: Upload mobile artifact
|
- name: Upload mobile artifact
|
||||||
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
||||||
|
|
@ -129,23 +114,19 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm xz-utils
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#electron --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#electron --command bun run build:packages
|
||||||
|
|
||||||
- name: Set Electron dev version
|
- name: Set Electron dev version
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
VERSION="$(node -p "require('./package.json').version")"
|
VERSION="$(node -p "require('./package.json').version")"
|
||||||
SHORT_SHA="$(git rev-parse --short HEAD)"
|
SHORT_SHA="$(git rev-parse --short HEAD)"
|
||||||
DEV_VERSION="$VERSION-dev-$SHORT_SHA"
|
DEV_VERSION="$VERSION-dev-$SHORT_SHA"
|
||||||
|
|
@ -157,9 +138,10 @@ jobs:
|
||||||
pkg.version = process.env.DEV_VERSION;
|
pkg.version = process.env.DEV_VERSION;
|
||||||
fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + "\n");
|
fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + "\n");
|
||||||
'
|
'
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Build Electron desktop
|
- name: Build Electron desktop
|
||||||
run: bun run build:desktop
|
run: nix develop .#electron --command bun run build:desktop
|
||||||
|
|
||||||
- name: Upload desktop artifacts
|
- name: Upload desktop artifacts
|
||||||
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
||||||
|
|
@ -176,14 +158,8 @@ jobs:
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Download mobile artifact
|
- name: Download mobile artifact
|
||||||
uses: https://data.forgejo.org/actions/download-artifact@v3
|
uses: https://data.forgejo.org/actions/download-artifact@v3
|
||||||
|
|
@ -200,21 +176,27 @@ jobs:
|
||||||
- name: Read version and hash
|
- name: Read version and hash
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
VERSION="$(node -p "require('./package.json').version")"
|
VERSION="$(node -p "require('./package.json').version")"
|
||||||
SHORT_SHA="$(git rev-parse --short HEAD)"
|
SHORT_SHA="$(git rev-parse --short HEAD)"
|
||||||
echo "version=$VERSION" >> "$FORGEJO_OUTPUT"
|
echo "version=$VERSION" >> "$FORGEJO_OUTPUT"
|
||||||
echo "short_sha=$SHORT_SHA" >> "$FORGEJO_OUTPUT"
|
echo "short_sha=$SHORT_SHA" >> "$FORGEJO_OUTPUT"
|
||||||
echo "tag=${VERSION}-dev-${SHORT_SHA}" >> "$FORGEJO_OUTPUT"
|
echo "tag=${VERSION}-dev-${SHORT_SHA}" >> "$FORGEJO_OUTPUT"
|
||||||
echo "title=${VERSION}-dev-${SHORT_SHA}" >> "$FORGEJO_OUTPUT"
|
echo "title=${VERSION}-dev-${SHORT_SHA}" >> "$FORGEJO_OUTPUT"
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Copy releases
|
- name: Copy releases
|
||||||
env:
|
env:
|
||||||
TENSAMIN_RELEASE_VERSION: ${{ steps.version.outputs.tag }}
|
TENSAMIN_RELEASE_VERSION: ${{ steps.version.outputs.tag }}
|
||||||
TENSAMIN_RELEASE_TAG: ${{ steps.version.outputs.tag }}
|
TENSAMIN_RELEASE_TAG: ${{ steps.version.outputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
ASSET_BASE_URL="${{ forgejo.api_url }}"
|
ASSET_BASE_URL="${{ forgejo.api_url }}"
|
||||||
ASSET_BASE_URL="${ASSET_BASE_URL%/api/v1}/${{ forgejo.repository }}/releases/download/${{ steps.version.outputs.tag }}"
|
ASSET_BASE_URL="${ASSET_BASE_URL%/api/v1}/${{ forgejo.repository }}/releases/download/${{ steps.version.outputs.tag }}"
|
||||||
FORGEJO_RELEASE_ASSET_BASE_URL="$ASSET_BASE_URL" bun --bun run copy-releases
|
FORGEJO_RELEASE_ASSET_BASE_URL="$ASSET_BASE_URL" bun --bun run copy-releases
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Create pre-release and upload files
|
- name: Create pre-release and upload files
|
||||||
env:
|
env:
|
||||||
|
|
@ -225,6 +207,7 @@ jobs:
|
||||||
TAG: ${{ steps.version.outputs.tag }}
|
TAG: ${{ steps.version.outputs.tag }}
|
||||||
TITLE: ${{ steps.version.outputs.title }}
|
TITLE: ${{ steps.version.outputs.title }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
test -d releases
|
test -d releases
|
||||||
|
|
@ -313,3 +296,4 @@ jobs:
|
||||||
-H "Authorization: token $TOKEN" \
|
-H "Authorization: token $TOKEN" \
|
||||||
-F "attachment=@$file"
|
-F "attachment=@$file"
|
||||||
done
|
done
|
||||||
|
EOF
|
||||||
|
|
|
||||||
|
|
@ -13,29 +13,20 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#electron --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#electron --command bun run build:packages
|
||||||
|
|
||||||
- name: Build web
|
- name: Build web
|
||||||
run: bun run build:web
|
run: nix develop .#electron --command bun run build:web
|
||||||
|
|
||||||
- name: Install rsync
|
|
||||||
run: apt-get update && apt-get install -y rsync
|
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
run: rsync -a --delete apps/web/dist/ /var/lib/www/tensamin-web-prod/
|
run: nix develop .#electron --command rsync -a --delete apps/web/dist/ /var/lib/www/tensamin-web-prod/
|
||||||
|
|
||||||
build-mobile:
|
build-mobile:
|
||||||
runs-on: nixos
|
runs-on: nixos
|
||||||
|
|
@ -43,20 +34,14 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#tauri --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#tauri --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#tauri --command bun run build:packages
|
||||||
|
|
||||||
- name: Setup Android Keystore
|
- name: Setup Android Keystore
|
||||||
env:
|
env:
|
||||||
|
|
@ -113,7 +98,7 @@ jobs:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Build mobile
|
- name: Build mobile
|
||||||
run: bun run build:mobile
|
run: nix develop .#tauri --command bun run build:mobile
|
||||||
|
|
||||||
- name: Upload mobile artifact
|
- name: Upload mobile artifact
|
||||||
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
||||||
|
|
@ -130,23 +115,19 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq fakeroot dpkg rpm xz-utils
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Copy licenses
|
- name: Copy licenses
|
||||||
run: bun run copy-licenses
|
run: nix develop .#electron --command bun run copy-licenses
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
run: bun run build:packages
|
run: nix develop .#electron --command bun run build:packages
|
||||||
|
|
||||||
- name: Set Electron prod version
|
- name: Set Electron prod version
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
VERSION="$(node -p "require('./package.json').version")"
|
VERSION="$(node -p "require('./package.json').version")"
|
||||||
export VERSION
|
export VERSION
|
||||||
node -e '
|
node -e '
|
||||||
|
|
@ -156,9 +137,10 @@ jobs:
|
||||||
pkg.version = process.env.VERSION;
|
pkg.version = process.env.VERSION;
|
||||||
fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + "\n");
|
fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + "\n");
|
||||||
'
|
'
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Build Electron desktop
|
- name: Build Electron desktop
|
||||||
run: bun run build:desktop
|
run: nix develop .#electron --command bun run build:desktop
|
||||||
|
|
||||||
- name: Upload desktop artifacts
|
- name: Upload desktop artifacts
|
||||||
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
uses: https://data.forgejo.org/actions/upload-artifact@v3
|
||||||
|
|
@ -173,14 +155,8 @@ jobs:
|
||||||
- name: Check out repo
|
- name: Check out repo
|
||||||
uses: https://data.forgejo.org/actions/checkout@v4
|
uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Packages
|
|
||||||
run: apt-get update && apt-get install -y sudo curl jq
|
|
||||||
|
|
||||||
- name: Install Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: nix develop .#electron --command bun install --frozen-lockfile
|
||||||
|
|
||||||
- name: Download mobile artifact
|
- name: Download mobile artifact
|
||||||
uses: https://data.forgejo.org/actions/download-artifact@v3
|
uses: https://data.forgejo.org/actions/download-artifact@v3
|
||||||
|
|
@ -197,18 +173,24 @@ jobs:
|
||||||
- name: Read version
|
- name: Read version
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
VERSION="$(node -p "require('./package.json').version")"
|
VERSION="$(node -p "require('./package.json').version")"
|
||||||
echo "version=$VERSION" >> "$FORGEJO_OUTPUT"
|
echo "version=$VERSION" >> "$FORGEJO_OUTPUT"
|
||||||
echo "tag=$VERSION" >> "$FORGEJO_OUTPUT"
|
echo "tag=$VERSION" >> "$FORGEJO_OUTPUT"
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Copy releases
|
- name: Copy releases
|
||||||
env:
|
env:
|
||||||
TENSAMIN_RELEASE_VERSION: ${{ steps.version.outputs.tag }}
|
TENSAMIN_RELEASE_VERSION: ${{ steps.version.outputs.tag }}
|
||||||
TENSAMIN_RELEASE_TAG: ${{ steps.version.outputs.tag }}
|
TENSAMIN_RELEASE_TAG: ${{ steps.version.outputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
ASSET_BASE_URL="${{ forgejo.api_url }}"
|
ASSET_BASE_URL="${{ forgejo.api_url }}"
|
||||||
ASSET_BASE_URL="${ASSET_BASE_URL%/api/v1}/${{ forgejo.repository }}/releases/download/${{ steps.version.outputs.tag }}"
|
ASSET_BASE_URL="${ASSET_BASE_URL%/api/v1}/${{ forgejo.repository }}/releases/download/${{ steps.version.outputs.tag }}"
|
||||||
FORGEJO_RELEASE_ASSET_BASE_URL="$ASSET_BASE_URL" bun --bun run copy-releases
|
FORGEJO_RELEASE_ASSET_BASE_URL="$ASSET_BASE_URL" bun --bun run copy-releases
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Create release and upload files
|
- name: Create release and upload files
|
||||||
env:
|
env:
|
||||||
|
|
@ -218,6 +200,7 @@ jobs:
|
||||||
SHA: ${{ forgejo.sha }}
|
SHA: ${{ forgejo.sha }}
|
||||||
TAG: ${{ steps.version.outputs.tag }}
|
TAG: ${{ steps.version.outputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
test -d releases
|
test -d releases
|
||||||
|
|
@ -271,6 +254,7 @@ jobs:
|
||||||
-H "Authorization: token $TOKEN" \
|
-H "Authorization: token $TOKEN" \
|
||||||
-F "attachment=@$file"
|
-F "attachment=@$file"
|
||||||
done
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Delete dev releases
|
- name: Delete dev releases
|
||||||
env:
|
env:
|
||||||
|
|
@ -278,6 +262,7 @@ jobs:
|
||||||
API: ${{ forgejo.api_url }}
|
API: ${{ forgejo.api_url }}
|
||||||
REPO: ${{ forgejo.repository }}
|
REPO: ${{ forgejo.repository }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
PAGE=1
|
PAGE=1
|
||||||
|
|
@ -308,11 +293,13 @@ jobs:
|
||||||
-H "Authorization: token $TOKEN" \
|
-H "Authorization: token $TOKEN" \
|
||||||
"$API/repos/$REPO/releases/$release_id"
|
"$API/repos/$REPO/releases/$release_id"
|
||||||
done < "$DELETE_RELEASES"
|
done < "$DELETE_RELEASES"
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Update root flake release hash
|
- name: Update root flake release hash
|
||||||
env:
|
env:
|
||||||
TAG: ${{ steps.version.outputs.tag }}
|
TAG: ${{ steps.version.outputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
|
nix develop .#electron --command bash <<'EOF'
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
DEB="$(find releases -maxdepth 1 -type f -name 'Tensamin-*-linux-amd64.deb' -print -quit)"
|
DEB="$(find releases -maxdepth 1 -type f -name 'Tensamin-*-linux-amd64.deb' -print -quit)"
|
||||||
|
|
@ -361,3 +348,4 @@ jobs:
|
||||||
git add flake.nix
|
git add flake.nix
|
||||||
git -c user.name="forgejo-actions" -c user.email="forgejo-actions@localhost" commit -m "(qol): update release flake hash"
|
git -c user.name="forgejo-actions" -c user.email="forgejo-actions@localhost" commit -m "(qol): update release flake hash"
|
||||||
git push origin HEAD:dev
|
git push origin HEAD:dev
|
||||||
|
EOF
|
||||||
|
|
|
||||||
61
apps/electron/flake.lock
generated
61
apps/electron/flake.lock
generated
|
|
@ -1,61 +0,0 @@
|
||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1779508470,
|
|
||||||
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "29916453413845e54a65b8a1cf996842300cd299",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
{
|
|
||||||
description = "Electron Development Environment";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {nixpkgs, flake-utils, ...}:
|
|
||||||
flake-utils.lib.eachDefaultSystem (system: let
|
|
||||||
pkgs = import nixpkgs {inherit system; config.allowUnfree = true;};
|
|
||||||
electronRuntimeLibs = with pkgs; [
|
|
||||||
alsa-lib
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
atk
|
|
||||||
cairo
|
|
||||||
cups
|
|
||||||
dbus
|
|
||||||
expat
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
gdk-pixbuf
|
|
||||||
glib
|
|
||||||
gtk3
|
|
||||||
libdrm
|
|
||||||
libgbm
|
|
||||||
libglvnd
|
|
||||||
libnotify
|
|
||||||
libpulseaudio
|
|
||||||
libuuid
|
|
||||||
libxkbcommon
|
|
||||||
mesa
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
pango
|
|
||||||
pipewire
|
|
||||||
systemd
|
|
||||||
wayland
|
|
||||||
# xorg
|
|
||||||
libX11
|
|
||||||
libXScrnSaver
|
|
||||||
libXcomposite
|
|
||||||
libXcursor
|
|
||||||
libXdamage
|
|
||||||
libXext
|
|
||||||
libXfixes
|
|
||||||
libXi
|
|
||||||
libXrandr
|
|
||||||
libXtst
|
|
||||||
libxcb
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
devShells.default = pkgs.mkShell {
|
|
||||||
packages = with pkgs; [
|
|
||||||
nodejs_22
|
|
||||||
corepack_22
|
|
||||||
bun
|
|
||||||
electron
|
|
||||||
pkg-config
|
|
||||||
python3
|
|
||||||
gcc
|
|
||||||
gnumake
|
|
||||||
git
|
|
||||||
jq
|
|
||||||
patchelf
|
|
||||||
dpkg
|
|
||||||
rpm
|
|
||||||
fpm
|
|
||||||
sudo
|
|
||||||
curl
|
|
||||||
jq
|
|
||||||
fakeroot
|
|
||||||
xz-utils
|
|
||||||
] ++ electronRuntimeLibs;
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath electronRuntimeLibs}:$LD_LIBRARY_PATH"
|
|
||||||
export ELECTRON_ENABLE_LOGGING=1
|
|
||||||
export ELECTRON_OZONE_PLATFORM_HINT="''${ELECTRON_OZONE_PLATFORM_HINT:-auto}"
|
|
||||||
export NPM_CONFIG_TARGET_ARCH="''${NPM_CONFIG_TARGET_ARCH:-x64}"
|
|
||||||
export npm_config_build_from_source=true
|
|
||||||
export USE_SYSTEM_FPM=true
|
|
||||||
|
|
||||||
alias electron-install='cd ../.. && bun install'
|
|
||||||
alias electron-build-web='cd ../.. && bun run build:web'
|
|
||||||
alias electron-dev='bun run dev'
|
|
||||||
alias electron-package='bun run package:linux'
|
|
||||||
alias electron-validate='bun run validate'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -13,19 +13,19 @@
|
||||||
"build:web": "cd ../.. && bun run build:web",
|
"build:web": "cd ../.. && bun run build:web",
|
||||||
"build": "tsc -p tsconfig.json && esbuild src/preload/preload.ts --bundle --platform=node --format=cjs --external:electron --outfile=dist/preload/preload.cjs",
|
"build": "tsc -p tsconfig.json && esbuild src/preload/preload.ts --bundle --platform=node --format=cjs --external:electron --outfile=dist/preload/preload.cjs",
|
||||||
"dev:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron . --verbose",
|
"dev:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron . --verbose",
|
||||||
"dev": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run dev:raw; else bun run dev:raw; fi",
|
"dev": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run dev:raw; else bun run dev:raw; fi",
|
||||||
"start:raw": "bun run build && electron .",
|
"start:raw": "bun run build && electron .",
|
||||||
"start": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run start:raw; else bun run start:raw; fi",
|
"start": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run start:raw; else bun run start:raw; fi",
|
||||||
"package:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --publish never",
|
"package:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --publish never",
|
||||||
"package": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run package:raw; else bun run package:raw; fi",
|
"package": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run package:raw; else bun run package:raw; fi",
|
||||||
"package:linux:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --linux --publish never",
|
"package:linux:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --linux --publish never",
|
||||||
"package:linux": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run package:linux:raw; else bun run package:linux:raw; fi",
|
"package:linux": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run package:linux:raw; else bun run package:linux:raw; fi",
|
||||||
"package:windows:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --win --publish never",
|
"package:windows:raw": "cd ../.. && bun run build:web && cd apps/electron && bun run build && electron-builder --win --publish never",
|
||||||
"package:windows": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run package:windows:raw; else bun run package:windows:raw; fi",
|
"package:windows": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run package:windows:raw; else bun run package:windows:raw; fi",
|
||||||
"checksum": "bun scripts/generate-release-metadata.ts",
|
"checksum": "bun scripts/generate-release-metadata.ts",
|
||||||
"generate-signing-key": "bun scripts/generate-signing-key.ts",
|
"generate-signing-key": "bun scripts/generate-signing-key.ts",
|
||||||
"validate:raw": "bun run build && bun run package:linux:raw",
|
"validate:raw": "bun run build && bun run package:linux:raw",
|
||||||
"validate": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop --command bun run validate:raw; else bun run validate:raw; fi"
|
"validate": "if command -v nix >/dev/null 2>&1 && [ -z \"$IN_NIX_SHELL\" ]; then nix develop ../..#electron --command bun run validate:raw; else bun run validate:raw; fi"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
96
apps/tauri/flake.lock
generated
96
apps/tauri/flake.lock
generated
|
|
@ -1,96 +0,0 @@
|
||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1775036866,
|
|
||||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744536153,
|
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"rust-overlay": "rust-overlay"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1775272153,
|
|
||||||
"narHash": "sha256-FwYb64ysv8J2TxaqsYYcDyHAHBUEaQlriPMWPMi1K7M=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "740fb0203b2852917b909a72b948d34d0b171ec0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
{
|
|
||||||
description = "Tauri mobile development environment";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
rust-overlay,
|
|
||||||
flake-utils,
|
|
||||||
}:
|
|
||||||
flake-utils.lib.eachDefaultSystem (
|
|
||||||
system: let
|
|
||||||
overlays = [(import rust-overlay)];
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system overlays;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
android_sdk.accept_license = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
projectRoot = ".";
|
|
||||||
androidHome = "${projectRoot}/.android";
|
|
||||||
sdkRoot = "${androidHome}/sdk";
|
|
||||||
ndkVersion = "29.0.14206865";
|
|
||||||
|
|
||||||
android = pkgs.androidenv.composeAndroidPackages {
|
|
||||||
cmdLineToolsVersion = "8.0";
|
|
||||||
toolsVersion = "26.1.1";
|
|
||||||
platformToolsVersion = "35.0.2";
|
|
||||||
buildToolsVersions = ["35.0.0"];
|
|
||||||
platformVersions = ["35" "36"];
|
|
||||||
includeSources = false;
|
|
||||||
includeSystemImages = false;
|
|
||||||
includeNDK = true;
|
|
||||||
ndkVersions = [ndkVersion];
|
|
||||||
useGoogleAPIs = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
|
||||||
extensions = ["rust-src" "rust-analyzer"];
|
|
||||||
targets = [
|
|
||||||
"aarch64-linux-android"
|
|
||||||
"armv7-linux-androideabi"
|
|
||||||
"i686-linux-android"
|
|
||||||
"x86_64-linux-android"
|
|
||||||
"wasm32-unknown-unknown"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
devShells.default = pkgs.mkShell {
|
|
||||||
buildInputs = with pkgs;
|
|
||||||
[
|
|
||||||
jdk17
|
|
||||||
rustToolchain
|
|
||||||
gradle
|
|
||||||
nodejs
|
|
||||||
pkg-config
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
android.androidsdk
|
|
||||||
pkgs.android-studio-tools
|
|
||||||
];
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
sdkSource="${android.androidsdk}/libexec/android-sdk"
|
|
||||||
|
|
||||||
mkdir -p "${androidHome}"
|
|
||||||
if [ -L "${sdkRoot}" ]; then
|
|
||||||
rm -f "${sdkRoot}"
|
|
||||||
fi
|
|
||||||
mkdir -p "${sdkRoot}"
|
|
||||||
|
|
||||||
ln -sfn "$sdkSource/build-tools" "${sdkRoot}/build-tools"
|
|
||||||
ln -sfn "$sdkSource/cmake" "${sdkRoot}/cmake"
|
|
||||||
ln -sfn "$sdkSource/licenses" "${sdkRoot}/licenses"
|
|
||||||
ln -sfn "$sdkSource/ndk" "${sdkRoot}/ndk"
|
|
||||||
ln -sfn "$sdkSource/ndk-bundle" "${sdkRoot}/ndk-bundle"
|
|
||||||
ln -sfn "$sdkSource/platforms" "${sdkRoot}/platforms"
|
|
||||||
ln -sfn "$sdkSource/platform-tools" "${sdkRoot}/platform-tools"
|
|
||||||
ln -sfn "$sdkSource/tools" "${sdkRoot}/tools"
|
|
||||||
|
|
||||||
mkdir -p "${sdkRoot}/cmdline-tools"
|
|
||||||
ln -sfn "$sdkSource/cmdline-tools/8.0" "${sdkRoot}/cmdline-tools/8.0"
|
|
||||||
ln -sfn "8.0" "${sdkRoot}/cmdline-tools/latest"
|
|
||||||
|
|
||||||
sdkRootAbs="$(realpath "${sdkRoot}")"
|
|
||||||
ndkRootAbs="''${sdkRootAbs}/ndk/${ndkVersion}"
|
|
||||||
|
|
||||||
export PATH="''${sdkRootAbs}/cmdline-tools/latest/bin:''${sdkRootAbs}/platform-tools:''${ndkRootAbs}:${pkgs.android-studio-tools}/bin:$PATH"
|
|
||||||
export ANDROID_HOME="''${sdkRootAbs}"
|
|
||||||
export ANDROID_SDK_ROOT="''${sdkRootAbs}"
|
|
||||||
export ANDROID_NDK_ROOT="''${ndkRootAbs}"
|
|
||||||
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
|
|
||||||
export NDK_HOME="$ANDROID_NDK_ROOT"
|
|
||||||
export NDK_PATH="$ANDROID_NDK_ROOT"
|
|
||||||
export JAVA_HOME="${pkgs.jdk17}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -21,9 +21,9 @@
|
||||||
"dev:mobile:raw": "tauri android dev --host ${TAURI_DEV_HOST:-127.0.0.1}",
|
"dev:mobile:raw": "tauri android dev --host ${TAURI_DEV_HOST:-127.0.0.1}",
|
||||||
"start-adb:mobile:raw": "adb devices",
|
"start-adb:mobile:raw": "adb devices",
|
||||||
"build:mobile:raw": "tauri android build",
|
"build:mobile:raw": "tauri android build",
|
||||||
"dev:mobile": "if command -v nix >/dev/null 2>&1; then nix develop --command bun dev:mobile:raw; else bun dev:mobile:raw; fi",
|
"dev:mobile": "if command -v nix >/dev/null 2>&1; then nix develop ../..#tauri --command bun dev:mobile:raw; else bun dev:mobile:raw; fi",
|
||||||
"start-adb:mobile": "if command -v nix >/dev/null 2>&1; then nix develop --command bun start-adb:mobile:raw; else bun start-adb:mobile:raw; fi",
|
"start-adb:mobile": "if command -v nix >/dev/null 2>&1; then nix develop ../..#tauri --command bun start-adb:mobile:raw; else bun start-adb:mobile:raw; fi",
|
||||||
"build:mobile": "bun run render-version.ts && if command -v nix >/dev/null 2>&1; then nix develop --command bun build:mobile:raw; else bun build:mobile:raw; fi && bun run render-version.ts --unrender",
|
"build:mobile": "bun run render-version.ts && if command -v nix >/dev/null 2>&1; then nix develop ../..#tauri --command bun build:mobile:raw; else bun build:mobile:raw; fi && bun run render-version.ts --unrender",
|
||||||
"gen-icons": "tauri icon ./logo.json && bun scripts/sync-electron-icons.ts",
|
"gen-icons": "tauri icon ./logo.json && bun scripts/sync-electron-icons.ts",
|
||||||
"format": "bunx prettier --write .",
|
"format": "bunx prettier --write .",
|
||||||
"lint": "eslint src"
|
"lint": "eslint src"
|
||||||
|
|
|
||||||
48
flake.lock
generated
48
flake.lock
generated
|
|
@ -2,22 +2,58 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779508470,
|
"lastModified": 1782467914,
|
||||||
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
|
"narHash": "sha256-pGvFkM8N0xEkIIXDe5YYfbEAvHrk4IxBrjB/x8OomhE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "29916453413845e54a65b8a1cf996842300cd299",
|
"rev": "e73de5be04e0eff4190a1432b946d469c794e7b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"type": "indirect"
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744536153,
|
||||||
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1782616745,
|
||||||
|
"narHash": "sha256-NN5B1cKBXF6h1Ec681gMGZ2o/99d7vKXAAfFNEvyOKA=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "b916d014dc57eb555f84e51172a82f7f6fb560d7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
222
flake.nix
222
flake.nix
|
|
@ -1,9 +1,17 @@
|
||||||
{
|
{
|
||||||
description = "Tensamin desktop client";
|
description = "Tensamin Client";
|
||||||
|
|
||||||
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
|
};
|
||||||
|
|
||||||
outputs = {nixpkgs, ...}: let
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
rust-overlay,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
systems = ["x86_64-linux"];
|
systems = ["x86_64-linux"];
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
version = "0.0.10";
|
version = "0.0.10";
|
||||||
|
|
@ -11,13 +19,21 @@
|
||||||
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
|
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
|
||||||
in {
|
in {
|
||||||
packages = forAllSystems (system: let
|
packages = forAllSystems (system: let
|
||||||
pkgs = import nixpkgs {inherit system;};
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [(import rust-overlay)];
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
android_sdk.accept_license = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
debArtifact = "Tensamin-${version}-linux-amd64.deb";
|
debArtifact = "Tensamin-${version}-linux-amd64.deb";
|
||||||
|
|
||||||
electronRuntimeLibs = with pkgs; [
|
electronRuntimeLibs = with pkgs; [
|
||||||
alsa-lib
|
alsa-lib
|
||||||
at-spi2-atk
|
at-spi2-atk
|
||||||
at-spi2-core
|
at-spi2-core
|
||||||
|
atk
|
||||||
cairo
|
cairo
|
||||||
cups
|
cups
|
||||||
dbus
|
dbus
|
||||||
|
|
@ -29,6 +45,7 @@
|
||||||
gtk3
|
gtk3
|
||||||
libdrm
|
libdrm
|
||||||
libgbm
|
libgbm
|
||||||
|
libglvnd
|
||||||
libnotify
|
libnotify
|
||||||
libpulseaudio
|
libpulseaudio
|
||||||
libuuid
|
libuuid
|
||||||
|
|
@ -37,6 +54,7 @@
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
pango
|
pango
|
||||||
|
pipewire
|
||||||
systemd
|
systemd
|
||||||
wayland
|
wayland
|
||||||
libX11
|
libX11
|
||||||
|
|
@ -92,8 +110,204 @@
|
||||||
url = "${forgejoBaseUrl}/${debArtifact}";
|
url = "${forgejoBaseUrl}/${debArtifact}";
|
||||||
hash = x86_64DebHash;
|
hash = x86_64DebHash;
|
||||||
});
|
});
|
||||||
|
localDebPath = builtins.getEnv "TENSAMIN_DEB";
|
||||||
|
localPathPackage =
|
||||||
|
if localDebPath == ""
|
||||||
|
then
|
||||||
|
pkgs.writeShellScriptBin "tensamin" ''
|
||||||
|
echo "Set TENSAMIN_DEB to a local .deb path and run with --impure." >&2
|
||||||
|
exit 1
|
||||||
|
''
|
||||||
|
else
|
||||||
|
packageDeb (builtins.path {
|
||||||
|
path = localDebPath;
|
||||||
|
name = debArtifact;
|
||||||
|
});
|
||||||
in {
|
in {
|
||||||
default = defaultPackage;
|
default = defaultPackage;
|
||||||
|
tensamin = defaultPackage;
|
||||||
|
electron = defaultPackage;
|
||||||
|
localPathForDev = localPathPackage;
|
||||||
|
});
|
||||||
|
|
||||||
|
devShells = forAllSystems (system: let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [(import rust-overlay)];
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
android_sdk.accept_license = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
electronRuntimeLibs = with pkgs; [
|
||||||
|
alsa-lib
|
||||||
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
|
atk
|
||||||
|
cairo
|
||||||
|
cups
|
||||||
|
dbus
|
||||||
|
expat
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libdrm
|
||||||
|
libgbm
|
||||||
|
libglvnd
|
||||||
|
libnotify
|
||||||
|
libpulseaudio
|
||||||
|
libuuid
|
||||||
|
libxkbcommon
|
||||||
|
mesa
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
pango
|
||||||
|
pipewire
|
||||||
|
systemd
|
||||||
|
wayland
|
||||||
|
libX11
|
||||||
|
libXScrnSaver
|
||||||
|
libXcomposite
|
||||||
|
libXcursor
|
||||||
|
libXdamage
|
||||||
|
libXext
|
||||||
|
libXfixes
|
||||||
|
libXi
|
||||||
|
libXrandr
|
||||||
|
libXtst
|
||||||
|
libxcb
|
||||||
|
];
|
||||||
|
|
||||||
|
ndkVersion = "29.0.14206865";
|
||||||
|
android = pkgs.androidenv.composeAndroidPackages {
|
||||||
|
cmdLineToolsVersion = "8.0";
|
||||||
|
toolsVersion = "26.1.1";
|
||||||
|
platformToolsVersion = "35.0.2";
|
||||||
|
buildToolsVersions = ["35.0.0"];
|
||||||
|
platformVersions = ["35" "36"];
|
||||||
|
includeSources = false;
|
||||||
|
includeSystemImages = false;
|
||||||
|
includeNDK = true;
|
||||||
|
ndkVersions = [ndkVersion];
|
||||||
|
useGoogleAPIs = false;
|
||||||
|
};
|
||||||
|
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
||||||
|
extensions = ["rust-src" "rust-analyzer"];
|
||||||
|
targets = [
|
||||||
|
"aarch64-linux-android"
|
||||||
|
"armv7-linux-androideabi"
|
||||||
|
"i686-linux-android"
|
||||||
|
"x86_64-linux-android"
|
||||||
|
"wasm32-unknown-unknown"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in rec {
|
||||||
|
default = electron;
|
||||||
|
|
||||||
|
electron = pkgs.mkShell {
|
||||||
|
packages = with pkgs;
|
||||||
|
[
|
||||||
|
nodejs_22
|
||||||
|
corepack_22
|
||||||
|
bun
|
||||||
|
electron
|
||||||
|
pkg-config
|
||||||
|
python3
|
||||||
|
gcc
|
||||||
|
gnumake
|
||||||
|
git
|
||||||
|
jq
|
||||||
|
patchelf
|
||||||
|
dpkg
|
||||||
|
rpm
|
||||||
|
fpm
|
||||||
|
sudo
|
||||||
|
curl
|
||||||
|
fakeroot
|
||||||
|
rsync
|
||||||
|
xz-utils
|
||||||
|
]
|
||||||
|
++ electronRuntimeLibs;
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath electronRuntimeLibs}:$LD_LIBRARY_PATH"
|
||||||
|
export ELECTRON_ENABLE_LOGGING=1
|
||||||
|
export ELECTRON_OZONE_PLATFORM_HINT="''${ELECTRON_OZONE_PLATFORM_HINT:-auto}"
|
||||||
|
export NPM_CONFIG_TARGET_ARCH="''${NPM_CONFIG_TARGET_ARCH:-x64}"
|
||||||
|
export npm_config_build_from_source=true
|
||||||
|
export USE_SYSTEM_FPM=true
|
||||||
|
|
||||||
|
alias electron-install='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && bun install'
|
||||||
|
alias electron-build-web='cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && bun run build:web'
|
||||||
|
alias electron-dev='bun run dev'
|
||||||
|
alias electron-package='bun run package:linux'
|
||||||
|
alias electron-validate='bun run validate'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
tauri = pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs;
|
||||||
|
[
|
||||||
|
jdk17
|
||||||
|
rustToolchain
|
||||||
|
gradle
|
||||||
|
bun
|
||||||
|
nodejs
|
||||||
|
pkg-config
|
||||||
|
git
|
||||||
|
jq
|
||||||
|
curl
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
android.androidsdk
|
||||||
|
android-studio-tools
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
sdkSource="${android.androidsdk}/libexec/android-sdk"
|
||||||
|
if [ -d apps/tauri/src-tauri ]; then
|
||||||
|
projectRoot="$PWD/apps/tauri"
|
||||||
|
else
|
||||||
|
projectRoot="$PWD"
|
||||||
|
fi
|
||||||
|
androidHome="$projectRoot/.android"
|
||||||
|
sdkRoot="$androidHome/sdk"
|
||||||
|
|
||||||
|
mkdir -p "$androidHome"
|
||||||
|
if [ -L "$sdkRoot" ]; then
|
||||||
|
rm -f "$sdkRoot"
|
||||||
|
fi
|
||||||
|
mkdir -p "$sdkRoot"
|
||||||
|
|
||||||
|
ln -sfn "$sdkSource/build-tools" "$sdkRoot/build-tools"
|
||||||
|
ln -sfn "$sdkSource/cmake" "$sdkRoot/cmake"
|
||||||
|
ln -sfn "$sdkSource/licenses" "$sdkRoot/licenses"
|
||||||
|
ln -sfn "$sdkSource/ndk" "$sdkRoot/ndk"
|
||||||
|
ln -sfn "$sdkSource/ndk-bundle" "$sdkRoot/ndk-bundle"
|
||||||
|
ln -sfn "$sdkSource/platforms" "$sdkRoot/platforms"
|
||||||
|
ln -sfn "$sdkSource/platform-tools" "$sdkRoot/platform-tools"
|
||||||
|
ln -sfn "$sdkSource/tools" "$sdkRoot/tools"
|
||||||
|
|
||||||
|
mkdir -p "$sdkRoot/cmdline-tools"
|
||||||
|
ln -sfn "$sdkSource/cmdline-tools/8.0" "$sdkRoot/cmdline-tools/8.0"
|
||||||
|
ln -sfn "8.0" "$sdkRoot/cmdline-tools/latest"
|
||||||
|
|
||||||
|
sdkRootAbs="$(realpath "$sdkRoot")"
|
||||||
|
ndkRootAbs="''${sdkRootAbs}/ndk/${ndkVersion}"
|
||||||
|
|
||||||
|
export PATH="''${sdkRootAbs}/cmdline-tools/latest/bin:''${sdkRootAbs}/platform-tools:''${ndkRootAbs}:${pkgs.android-studio-tools}/bin:$PATH"
|
||||||
|
export ANDROID_HOME="''${sdkRootAbs}"
|
||||||
|
export ANDROID_SDK_ROOT="''${sdkRootAbs}"
|
||||||
|
export ANDROID_NDK_ROOT="''${ndkRootAbs}"
|
||||||
|
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
|
||||||
|
export NDK_HOME="$ANDROID_NDK_ROOT"
|
||||||
|
export NDK_PATH="$ANDROID_NDK_ROOT"
|
||||||
|
export JAVA_HOME="${pkgs.jdk17}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
"dev:desktop": "cd apps/electron && bun run dev",
|
"dev:desktop": "cd apps/electron && bun run dev",
|
||||||
"build:desktop": "cd apps/electron && bun run package",
|
"build:desktop": "cd apps/electron && bun run package",
|
||||||
"run:desktop": "TENSAMIN_DEB=\"$PWD/apps/electron/release/Tensamin-$(node -p \\\"require('./package.json').version\\\")-linux-amd64.deb\" nix run .#localPathForDev --impure",
|
"run:desktop": "TENSAMIN_DEB=\"$PWD/apps/electron/release/Tensamin-$(node -p \\\"require('./package.json').version\\\")-linux-amd64.deb\" nix run .#localPathForDev --impure",
|
||||||
"delete:mobile": "cd apps/tauri && nix develop --command adb uninstall net.tensamin.client"
|
"delete:mobile": "cd apps/tauri && nix develop ../..#tauri --command adb uninstall net.tensamin.client"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.1",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue