mirror of
https://github.com/soywod/himalaya.git
synced 2024-11-22 02:50:19 +00:00
improve cross compilation, prepare v0.7.2
This commit is contained in:
parent
9cf5003697
commit
84003f951a
10 changed files with 404 additions and 334 deletions
121
.github/workflows/deployment.yml
vendored
121
.github/workflows/deployment.yml
vendored
|
@ -1,121 +0,0 @@
|
||||||
name: deployment
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- v*
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
create_release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
steps:
|
|
||||||
- name: Create release
|
|
||||||
id: create_release
|
|
||||||
uses: actions/create-release@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
tag_name: ${{ github.ref }}
|
|
||||||
release_name: ${{ github.ref }}
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
deploy_linux_macos_windows_github:
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
needs: create_release
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: ubuntu-latest
|
|
||||||
os_name: linux
|
|
||||||
- os: macos-latest
|
|
||||||
os_name: macos
|
|
||||||
- os: windows-latest
|
|
||||||
os_name: windows
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Install rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
override: true
|
|
||||||
- name: Check project
|
|
||||||
uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: check
|
|
||||||
- name: Builds release
|
|
||||||
uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: build
|
|
||||||
args: --release
|
|
||||||
- name: Compress executable (unix)
|
|
||||||
if: matrix.os_name == 'linux' || matrix.os_name == 'macos'
|
|
||||||
run: |
|
|
||||||
mkdir -p target/release/{man,completions}
|
|
||||||
target/release/himalaya man target/release/man
|
|
||||||
target/release/himalaya completion bash > target/release/completions/himalaya.bash
|
|
||||||
target/release/himalaya completion elvish > target/release/completions/himalaya.elvish
|
|
||||||
target/release/himalaya completion fish > target/release/completions/himalaya.fish
|
|
||||||
target/release/himalaya completion powershell > target/release/completions/himalaya.powershell
|
|
||||||
target/release/himalaya completion zsh > target/release/completions/himalaya.zsh
|
|
||||||
tar czf himalaya.tar.gz -C target/release himalaya man completions
|
|
||||||
- name: Compress executable (windows)
|
|
||||||
if: matrix.os_name == 'windows'
|
|
||||||
run: |
|
|
||||||
mkdir -p target/release/{man,completions}
|
|
||||||
target/release/himalaya.exe man target/release/man
|
|
||||||
target/release/himalaya.exe completion bash > target/release/completions/himalaya.bash
|
|
||||||
target/release/himalaya.exe completion elvish > target/release/completions/himalaya.elvish
|
|
||||||
target/release/himalaya.exe completion fish > target/release/completions/himalaya.fish
|
|
||||||
target/release/himalaya.exe completion powershell > target/release/completions/himalaya.powershell
|
|
||||||
target/release/himalaya.exe completion zsh > target/release/completions/himalaya.zsh
|
|
||||||
tar czf himalaya.tar.gz -C target/release himalaya.exe man completions
|
|
||||||
- name: Upload release asset
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
|
||||||
asset_path: himalaya.tar.gz
|
|
||||||
asset_name: himalaya-${{ matrix.os_name }}.tar.gz
|
|
||||||
asset_content_type: application/gzip
|
|
||||||
deploy_musl_github:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: create_release
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Build release
|
|
||||||
run: |
|
|
||||||
docker run -v "${PWD}:/volume" --rm -t clux/muslrust:stable cargo build --release
|
|
||||||
- name: Compress executable
|
|
||||||
run: tar czf himalaya.tar.gz -C target/x86_64-unknown-linux-musl/release himalaya
|
|
||||||
- name: Upload release asset
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
|
||||||
asset_path: himalaya.tar.gz
|
|
||||||
asset_name: himalaya-musl.tar.gz
|
|
||||||
asset_content_type: application/gzip
|
|
||||||
deploy_crates:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: create_release
|
|
||||||
environment: deployment
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Install rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
override: true
|
|
||||||
- uses: katyo/publish-crates@v1
|
|
||||||
with:
|
|
||||||
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
38
.github/workflows/nix.yml
vendored
38
.github/workflows/nix.yml
vendored
|
@ -1,38 +0,0 @@
|
||||||
name: nix
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
nix-build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkouts code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Caches Nix store
|
|
||||||
uses: actions/cache@v3
|
|
||||||
id: nix-cache
|
|
||||||
with:
|
|
||||||
path: /tmp/nix-cache
|
|
||||||
key: nix-${{ hashFiles('**/flake.*') }}
|
|
||||||
|
|
||||||
- name: Installs Nix
|
|
||||||
uses: cachix/install-nix-action@v18
|
|
||||||
with:
|
|
||||||
extra_nix_config: |
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
|
|
||||||
- name: Imports Nix store cache
|
|
||||||
if: ${{ steps.nix-cache.outputs.cache-hit == 'true' }}
|
|
||||||
run: nix-store --import < /tmp/nix-cache
|
|
||||||
|
|
||||||
- name: Builds the project
|
|
||||||
run: nix build
|
|
||||||
|
|
||||||
- name: Exports Nix store cache
|
|
||||||
if: ${{ steps.nix-cache.outputs.cache-hit != 'true' }}
|
|
||||||
run: nix-store --export $(find /nix/store -maxdepth 1 -name '*-*') > /tmp/nix-cache
|
|
150
.github/workflows/release.yml
vendored
Normal file
150
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
steps:
|
||||||
|
- name: Create release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref }}
|
||||||
|
release_name: ${{ github.ref }}
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
deploy_github:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
needs: create_release
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- target: linux
|
||||||
|
os: ubuntu-latest
|
||||||
|
- target: macos
|
||||||
|
os: macos-latest
|
||||||
|
- target: musl
|
||||||
|
os: ubuntu-latest
|
||||||
|
# TODO: put back when nix package .#windows is fixed
|
||||||
|
# - target: windows
|
||||||
|
# os: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@v20
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
|
extra_nix_config: |
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
- uses: cachix/cachix-action@v12
|
||||||
|
with:
|
||||||
|
name: soywod
|
||||||
|
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||||
|
- name: Build release
|
||||||
|
run: nix build .#${{ matrix.target }}
|
||||||
|
- name: Compress executable
|
||||||
|
run: |
|
||||||
|
mkdir -p {man,completions}
|
||||||
|
cp result/bin/himalaya* .
|
||||||
|
nix run .#${{ matrix.target }} man ./man
|
||||||
|
nix run .#${{ matrix.target }} completion bash > ./completions/himalaya.bash
|
||||||
|
nix run .#${{ matrix.target }} completion elvish > ./completions/himalaya.elvish
|
||||||
|
nix run .#${{ matrix.target }} completion fish > ./completions/himalaya.fish
|
||||||
|
nix run .#${{ matrix.target }} completion powershell > ./completions/himalaya.powershell
|
||||||
|
nix run .#${{ matrix.target }} completion zsh > ./completions/himalaya.zsh
|
||||||
|
tar -czf himalaya.tar.gz himalaya* man completions
|
||||||
|
zip -r himalaya.zip himalaya* man completions
|
||||||
|
- name: Upload tar.gz release asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||||
|
asset_path: himalaya.tar.gz
|
||||||
|
asset_name: himalaya-${{ matrix.target }}.tar.gz
|
||||||
|
asset_content_type: application/gzip
|
||||||
|
- name: Upload zip release asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||||
|
asset_path: himalaya.zip
|
||||||
|
asset_name: himalaya-${{ matrix.target }}.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
# TODO: remove me when nix package .#windows is fixed
|
||||||
|
deploy_windows_github:
|
||||||
|
runs-on: windows-latest
|
||||||
|
needs: create_release
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Install rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
- name: Builds release
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: build
|
||||||
|
args: --release
|
||||||
|
- name: Compress executable
|
||||||
|
run: |
|
||||||
|
mkdir man
|
||||||
|
mkdir completions
|
||||||
|
copy target/release/himalaya.exe .
|
||||||
|
./himalaya.exe man ./man
|
||||||
|
./himalaya.exe completion bash > ./completions/himalaya.bash
|
||||||
|
./himalaya.exe completion elvish > ./completions/himalaya.elvish
|
||||||
|
./himalaya.exe completion fish > ./completions/himalaya.fish
|
||||||
|
./himalaya.exe completion powershell > ./completions/himalaya.powershell
|
||||||
|
./himalaya.exe completion zsh > ./completions/himalaya.zsh
|
||||||
|
tar -czf himalaya.tar.gz himalaya.exe man completions
|
||||||
|
zip -r himalaya.zip himalaya.exe man completions
|
||||||
|
- name: Upload tar.gz release asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||||
|
asset_path: himalaya.tar.gz
|
||||||
|
asset_name: himalaya-windows.tar.gz
|
||||||
|
asset_content_type: application/gzip
|
||||||
|
- name: Upload zip release asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||||
|
asset_path: himalaya.zip
|
||||||
|
asset_name: himalaya-windows.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
deploy_crates:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: create_release
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@v20
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
|
extra_nix_config: |
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
- name: Publish library to crates.io
|
||||||
|
env:
|
||||||
|
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||||
|
run: nix develop -c cargo publish --no-verify --token ${CARGO_REGISTRY_TOKEN}
|
36
.github/workflows/tests.yml
vendored
36
.github/workflows/tests.yml
vendored
|
@ -3,36 +3,22 @@ name: tests
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
push:
|
push:
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install libnotmuch
|
|
||||||
run: sudo apt-get install -y libnotmuch-dev
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Start GreenMail testing server
|
- name: Install Nix
|
||||||
run: |
|
uses: cachix/install-nix-action@v20
|
||||||
docker run \
|
|
||||||
--rm \
|
|
||||||
-d \
|
|
||||||
-e GREENMAIL_OPTS='-Dgreenmail.setup.test.all -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose' \
|
|
||||||
-p 3025:3025 \
|
|
||||||
-p 3110:3110 \
|
|
||||||
-p 3143:3143 \
|
|
||||||
-p 3465:3465 \
|
|
||||||
-p 3993:3993 \
|
|
||||||
-p 3995:3995 \
|
|
||||||
greenmail/standalone:1.6.11
|
|
||||||
- name: Install rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
with:
|
||||||
toolchain: stable
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
- name: Run tests
|
extra_nix_config: |
|
||||||
uses: actions-rs/cargo@v1
|
experimental-features = nix-command flakes
|
||||||
|
- uses: cachix/cachix-action@v12
|
||||||
with:
|
with:
|
||||||
command: test
|
name: soywod
|
||||||
args: --all-features
|
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||||
|
- name: Test
|
||||||
|
run: nix run .#test
|
||||||
|
|
|
@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.7.2] - 2023-05-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Added `create` and `delete` folder commands [sourcehut#54].
|
- Added `create` and `delete` folder commands [sourcehut#54].
|
||||||
|
@ -546,7 +548,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- Password from command [#22]
|
- Password from command [#22]
|
||||||
- Set up README [#20]
|
- Set up README [#20]
|
||||||
|
|
||||||
[Unreleased]: https://github.com/soywod/himalaya/compare/v0.7.1...develop
|
[Unreleased]: https://github.com/soywod/himalaya/compare/v0.7.2...develop
|
||||||
|
[0.7.2]: https://github.com/soywod/himalaya/compare/v0.7.1...v0.7.2
|
||||||
[0.7.1]: https://github.com/soywod/himalaya/compare/v0.7.0...v0.7.1
|
[0.7.1]: https://github.com/soywod/himalaya/compare/v0.7.0...v0.7.1
|
||||||
[0.7.0]: https://github.com/soywod/himalaya/compare/v0.6.1...v0.7.0
|
[0.7.0]: https://github.com/soywod/himalaya/compare/v0.6.1...v0.7.0
|
||||||
[0.6.1]: https://github.com/soywod/himalaya/compare/v0.6.0...v0.6.1
|
[0.6.1]: https://github.com/soywod/himalaya/compare/v0.6.0...v0.6.1
|
||||||
|
|
34
Cargo.lock
generated
34
Cargo.lock
generated
|
@ -106,6 +106,12 @@ version = "1.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "2.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bufstream"
|
name = "bufstream"
|
||||||
version = "0.1.4"
|
version = "0.1.4"
|
||||||
|
@ -186,7 +192,7 @@ version = "4.1.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
|
checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
"is-terminal",
|
"is-terminal",
|
||||||
"strsim 0.10.0",
|
"strsim 0.10.0",
|
||||||
|
@ -227,7 +233,7 @@ version = "0.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
|
checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -771,7 +777,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "himalaya"
|
name = "himalaya"
|
||||||
version = "0.7.1"
|
version = "0.7.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"atty",
|
"atty",
|
||||||
|
@ -1023,9 +1029,9 @@ checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libsqlite3-sys"
|
name = "libsqlite3-sys"
|
||||||
version = "0.25.2"
|
version = "0.26.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa"
|
checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
|
@ -1327,7 +1333,7 @@ version = "0.10.43"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "020433887e44c27ff16365eaa2d380547a94544ad509aff6eb5b6e3e0b27b376"
|
checksum = "020433887e44c27ff16365eaa2d380547a94544ad509aff6eb5b6e3e0b27b376"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
"foreign-types",
|
"foreign-types",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1508,9 +1514,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pimalaya-email"
|
name = "pimalaya-email"
|
||||||
version = "0.6.0"
|
version = "0.7.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "15171f3839bb7b7938f78b0c43902247d7f1e80befccd63f6cab93ac55613405"
|
checksum = "bab7e9b0747644aecff24024c88348146bd74bba78fa5ecca10e7e5938d6873a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ammonia",
|
"ammonia",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -1741,7 +1747,7 @@ version = "0.2.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1818,11 +1824,11 @@ checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusqlite"
|
name = "rusqlite"
|
||||||
version = "0.28.0"
|
version = "0.29.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a"
|
checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 2.2.1",
|
||||||
"fallible-iterator",
|
"fallible-iterator",
|
||||||
"fallible-streaming-iterator",
|
"fallible-streaming-iterator",
|
||||||
"hashlink",
|
"hashlink",
|
||||||
|
@ -1836,7 +1842,7 @@ version = "0.36.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588"
|
checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
"errno",
|
"errno",
|
||||||
"io-lifetimes",
|
"io-lifetimes",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1933,7 +1939,7 @@ version = "2.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
|
checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags 1.3.2",
|
||||||
"core-foundation",
|
"core-foundation",
|
||||||
"core-foundation-sys",
|
"core-foundation-sys",
|
||||||
"libc",
|
"libc",
|
||||||
|
|
22
Cargo.toml
22
Cargo.toml
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "himalaya"
|
name = "himalaya"
|
||||||
description = "CLI to manage your emails."
|
description = "CLI to manage your emails."
|
||||||
version = "0.7.1"
|
version = "0.7.2"
|
||||||
authors = ["soywod <clement.douin@posteo.net>"]
|
authors = ["soywod <clement.douin@posteo.net>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
@ -15,7 +15,15 @@ repository = "https://github.com/soywod/himalaya"
|
||||||
all-features = true
|
all-features = true
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["imap-backend", "smtp-sender", "native-tls"]
|
default = ["rustls-tls", "rustls-native-certs", "imap-backend", "smtp-sender"]
|
||||||
|
|
||||||
|
# rustls
|
||||||
|
rustls-tls = ["pimalaya-email/rustls-tls"]
|
||||||
|
rustls-native-certs = ["pimalaya-email/rustls-native-certs"]
|
||||||
|
|
||||||
|
# native tls
|
||||||
|
native-tls = ["pimalaya-email/native-tls"]
|
||||||
|
native-tls-vendored = ["pimalaya-email/native-tls-vendored"]
|
||||||
|
|
||||||
# backends
|
# backends
|
||||||
imap-backend = ["pimalaya-email/imap-backend"]
|
imap-backend = ["pimalaya-email/imap-backend"]
|
||||||
|
@ -24,14 +32,6 @@ notmuch-backend = ["pimalaya-email/notmuch-backend"]
|
||||||
# senders
|
# senders
|
||||||
smtp-sender = ["pimalaya-email/smtp-sender"]
|
smtp-sender = ["pimalaya-email/smtp-sender"]
|
||||||
|
|
||||||
# native tls
|
|
||||||
native-tls = ["pimalaya-email/native-tls"]
|
|
||||||
native-tls-vendored = ["pimalaya-email/native-tls-vendored"]
|
|
||||||
|
|
||||||
# rustls
|
|
||||||
rustls-tls = ["pimalaya-email/rustls-tls"]
|
|
||||||
rustls-native-certs = ["pimalaya-email/rustls-native-certs"]
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.3"
|
tempfile = "3.3"
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ dialoguer = "0.10.2"
|
||||||
email_address = "0.2.4"
|
email_address = "0.2.4"
|
||||||
env_logger = "0.8"
|
env_logger = "0.8"
|
||||||
erased-serde = "0.3"
|
erased-serde = "0.3"
|
||||||
pimalaya-email = "0.6.0"
|
pimalaya-email = "0.7.1"
|
||||||
indicatif = "0.17"
|
indicatif = "0.17"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
once_cell = "1.16.0"
|
once_cell = "1.16.0"
|
||||||
|
|
152
flake.lock
152
flake.lock
|
@ -1,28 +1,36 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-compat": {
|
"fenix": {
|
||||||
"flake": false,
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1682835640,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-rAYEOd4nZFLjDlrF9KNlcopPKNVtr1svSXcEValVRMY=",
|
||||||
"owner": "edolstra",
|
"owner": "nix-community",
|
||||||
"repo": "flake-compat",
|
"repo": "fenix",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "006b429d3c493f4c5b1743a94f71ad961c7693ab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "edolstra",
|
"owner": "nix-community",
|
||||||
"repo": "flake-compat",
|
"repo": "fenix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1659877975,
|
"lastModified": 1681202837,
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -31,16 +39,38 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1660459072,
|
||||||
|
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"naersk": {
|
"naersk": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1671096816,
|
"lastModified": 1679567394,
|
||||||
"narHash": "sha256-ezQCsNgmpUHdZANDCILm3RvtO1xH8uujk/+EqNvzIOg=",
|
"narHash": "sha256-ZvLuzPeARDLiQUt6zSZFGOs+HZmE+3g4QURc8mkBsfM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "naersk",
|
"repo": "naersk",
|
||||||
"rev": "d998160d6a076cfe8f9741e56aeec7e267e3e114",
|
"rev": "88cd22380154a2c36799fe8098888f0f59861a15",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -51,88 +81,58 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675698036,
|
"lastModified": 1682669017,
|
||||||
"narHash": "sha256-BgsQkQewdlQi8gapJN4phpxkI/FCE/2sORBaFcYbp/A=",
|
"narHash": "sha256-Vi+p4y3wnl0/4gcwTdmCO398kKlDaUrNROtf3GOD2NY=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1046c7b92e908a1202c0f1ba3fc21d19e1cf1b62",
|
"rev": "7449971a3ecf857b4a554cf79b1d9dcc1a4647d8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "nixos",
|
||||||
"type": "indirect"
|
"ref": "nixos-22.11",
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1664356419,
|
|
||||||
"narHash": "sha256-PD0hM9YWp2lepAJk7edh8g1VtzJip5rals1fpoQUlY0=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "46e8398474ac3b1b7bb198bf9097fc213bbf59b1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665296151,
|
|
||||||
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"fenix": "fenix",
|
||||||
"naersk": "naersk",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"rust-overlay": "rust-overlay",
|
|
||||||
"utils": "utils"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"gitignore": "gitignore",
|
||||||
},
|
"naersk": "naersk",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-analyzer-src": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675823425,
|
"lastModified": 1682792082,
|
||||||
"narHash": "sha256-o/uLXQdq3OrRAv4BZVVY0VmhMmQBLWw6Y4o+p6ZiaR4=",
|
"narHash": "sha256-1nuP2rqipsdB8IJ3N5ws3FQm4dX3mKIueIrCUSu1bWw=",
|
||||||
"owner": "oxalica",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-analyzer",
|
||||||
"rev": "02e1abbdcbc2d516193ff8a7add71f44cd976ba0",
|
"rev": "7bcb4c2ef23e151a639ff918fbb8ab9d521eabb9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "oxalica",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-overlay",
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "nix-systems",
|
||||||
"repo": "flake-utils",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
171
flake.nix
171
flake.nix
|
@ -1,65 +1,140 @@
|
||||||
{
|
{
|
||||||
description = "Command-line interface for email management.";
|
description = "CLI to manage your emails.";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
utils.url = "github:numtide/flake-utils";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
naersk.url = "github:nix-community/naersk";
|
gitignore = {
|
||||||
flake-compat = {
|
url = "github:hercules-ci/gitignore.nix";
|
||||||
url = "github:edolstra/flake-compat";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
flake = false;
|
};
|
||||||
|
fenix = {
|
||||||
|
url = "github:nix-community/fenix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
naersk = {
|
||||||
|
url = "github:nix-community/naersk";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, utils, rust-overlay, naersk, ... }:
|
outputs = { self, nixpkgs, flake-utils, gitignore, fenix, naersk }:
|
||||||
utils.lib.eachDefaultSystem
|
let
|
||||||
(system:
|
inherit (gitignore.lib) gitignoreSource;
|
||||||
|
|
||||||
|
mkToolchain = buildPlatform:
|
||||||
|
fenix.packages.${buildPlatform}.minimal.toolchain;
|
||||||
|
|
||||||
|
mkToolchainWithTarget = buildPlatform: targetPlatform:
|
||||||
|
with fenix.packages.${buildPlatform}; combine [
|
||||||
|
stable.rustc
|
||||||
|
stable.cargo
|
||||||
|
targets.${targetPlatform}.stable.rust-std
|
||||||
|
];
|
||||||
|
|
||||||
|
mkDevShells = buildPlatform:
|
||||||
let
|
let
|
||||||
name = "himalaya";
|
pkgs = import nixpkgs { system = buildPlatform; };
|
||||||
overlays = [ (import rust-overlay) ];
|
rust-toolchain = fenix.packages.${buildPlatform}.fromToolchainFile {
|
||||||
pkgs = import nixpkgs { inherit system overlays; };
|
file = ./rust-toolchain.toml;
|
||||||
|
sha256 = "eMJethw5ZLrJHmoN2/l0bIyQjoTX1NsvalWSscTixpI=";
|
||||||
|
};
|
||||||
in
|
in
|
||||||
rec {
|
{
|
||||||
# nix build
|
default = pkgs.mkShell {
|
||||||
defaultPackage = packages.${name};
|
buildInputs = with pkgs; [
|
||||||
packages = {
|
# Nix env
|
||||||
${name} = naersk.lib.${system}.buildPackage {
|
|
||||||
pname = name;
|
|
||||||
root = ./.;
|
|
||||||
nativeBuildInputs = with pkgs; [ openssl.dev pkg-config ];
|
|
||||||
overrideMain = _: {
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/share/applications/
|
|
||||||
cp assets/himalaya.desktop $out/share/applications/
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# nix run
|
|
||||||
defaultApp = apps.${name};
|
|
||||||
apps.${name} = utils.lib.mkApp {
|
|
||||||
inherit name;
|
|
||||||
drv = packages.${name};
|
|
||||||
};
|
|
||||||
|
|
||||||
# nix develop
|
|
||||||
devShell = pkgs.mkShell {
|
|
||||||
inputsFrom = builtins.attrValues self.packages.${system};
|
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
# Nix LSP + formatter
|
|
||||||
rnix-lsp
|
rnix-lsp
|
||||||
nixpkgs-fmt
|
nixpkgs-fmt
|
||||||
|
|
||||||
# Rust env
|
# Rust env
|
||||||
(rust-bin.fromRustupToolchainFile ./rust-toolchain.toml)
|
rust-toolchain
|
||||||
cargo-watch
|
|
||||||
rust-analyzer
|
|
||||||
|
|
||||||
# Notmuch
|
# notmuch
|
||||||
notmuch
|
notmuch
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
);
|
|
||||||
|
mkPackage = pkgs: buildPlatform: targetPlatform: package:
|
||||||
|
let
|
||||||
|
toolchain =
|
||||||
|
if isNull targetPlatform
|
||||||
|
then mkToolchain buildPlatform
|
||||||
|
else mkToolchainWithTarget buildPlatform targetPlatform;
|
||||||
|
naersk' = naersk.lib.${buildPlatform}.override {
|
||||||
|
cargo = toolchain;
|
||||||
|
rustc = toolchain;
|
||||||
|
};
|
||||||
|
package' = {
|
||||||
|
name = "himalaya";
|
||||||
|
src = gitignoreSource ./.;
|
||||||
|
overrideMain = _: {
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/share/applications/
|
||||||
|
cp assets/himalaya.desktop $out/share/applications/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
} // pkgs.lib.optionalAttrs (!isNull targetPlatform) {
|
||||||
|
CARGO_BUILD_TARGET = targetPlatform;
|
||||||
|
} // package;
|
||||||
|
in
|
||||||
|
naersk'.buildPackage package';
|
||||||
|
|
||||||
|
mkPackages = buildPlatform:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { system = buildPlatform; };
|
||||||
|
mkPackageWithTarget = mkPackage pkgs buildPlatform;
|
||||||
|
defaultPackage = mkPackage pkgs buildPlatform null { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
default = defaultPackage;
|
||||||
|
linux = defaultPackage;
|
||||||
|
macos = defaultPackage;
|
||||||
|
musl = mkPackageWithTarget "x86_64-unknown-linux-musl" (with pkgs.pkgsStatic; {
|
||||||
|
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
|
||||||
|
SQLITE3_STATIC = 1;
|
||||||
|
SQLITE3_LIB_DIR = "${sqlite.out}/lib";
|
||||||
|
hardeningDisable = [ "all" ];
|
||||||
|
});
|
||||||
|
# FIXME: package does not build, assembler messages: unknown
|
||||||
|
# pseudo-op…
|
||||||
|
windows = mkPackageWithTarget "x86_64-pc-windows-gnu" {
|
||||||
|
strictDeps = true;
|
||||||
|
depsBuildBuild = with pkgs.pkgsCross.mingwW64; [
|
||||||
|
stdenv.cc
|
||||||
|
windows.pthreads
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkApp = drv: flake-utils.lib.mkApp {
|
||||||
|
inherit drv;
|
||||||
|
name = "himalaya";
|
||||||
|
};
|
||||||
|
|
||||||
|
mkApps = buildPlatform: {
|
||||||
|
default = mkApp self.packages.${buildPlatform}.default;
|
||||||
|
linux = mkApp self.packages.${buildPlatform}.linux;
|
||||||
|
macos = mkApp self.packages.${buildPlatform}.macos;
|
||||||
|
musl = mkApp self.packages.${buildPlatform}.musl;
|
||||||
|
windows =
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { system = buildPlatform; };
|
||||||
|
wine = pkgs.wine.override { wineBuild = "wine64"; };
|
||||||
|
himalaya = self.packages.${buildPlatform}.windows;
|
||||||
|
app = pkgs.writeShellScriptBin "himalaya" ''
|
||||||
|
export WINEPREFIX="$(mktemp -d)"
|
||||||
|
${wine}/bin/wine64 ${himalaya}/bin/himalaya.exe $@
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
mkApp app;
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
flake-utils.lib.eachDefaultSystem (system: {
|
||||||
|
devShells = mkDevShells system;
|
||||||
|
packages = mkPackages system;
|
||||||
|
apps = mkApps system;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,11 @@
|
||||||
[toolchain]
|
[toolchain]
|
||||||
channel = "stable"
|
channel = "stable"
|
||||||
|
profile = "default"
|
||||||
|
components = [
|
||||||
|
"cargo",
|
||||||
|
"clippy",
|
||||||
|
"rust-analyzer",
|
||||||
|
"rust-std",
|
||||||
|
"rustc",
|
||||||
|
"rustfmt",
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in a new issue