From 7899484942847285238a5d627a2e0ebe18c9dec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Thu, 18 Apr 2024 16:54:48 +0200 Subject: [PATCH 01/15] separate simple packages from archives packages for releases --- flake.nix | 205 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 119 insertions(+), 86 deletions(-) diff --git a/flake.nix b/flake.nix index 0ac1797e..46783e1e 100644 --- a/flake.nix +++ b/flake.nix @@ -33,81 +33,98 @@ x86_64-linux = { x86_64-linux = { rustTarget = "x86_64-unknown-linux-musl"; - override = { ... }: { }; }; - arm64-linux = rec { + aarch64-linux = rec { rustTarget = "aarch64-unknown-linux-musl"; - override = { system, pkgs }: + runner = pkgs: "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; + mkPackage = { system, pkgs }: package: let inherit (mkPkgsCross system rustTarget) stdenv; - cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; in - rec { + cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; + in + package // { TARGET_CC = cc; - CARGO_BUILD_RUSTFLAGS = staticRustFlags ++ [ "-Clinker=${cc}" ]; - postInstall = mkPostInstall { - inherit pkgs; - bin = "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; - }; + CARGO_BUILD_RUSTFLAGS = package.CARGO_BUILD_RUSTFLAGS ++ [ "-Clinker=${cc}" ]; }; }; x86_64-windows = { rustTarget = "x86_64-pc-windows-gnu"; - override = { system, pkgs }: + runner = pkgs: + let wine = pkgs.wine.override { wineBuild = "wine64"; }; + in "${wine}/bin/wine64 ./himalaya.exe"; + mkPackage = { system, pkgs }: package: let - inherit (pkgs) pkgsCross zip; - inherit (pkgsCross.mingwW64) stdenv windows; + inherit (pkgs.pkgsCross.mingwW64) stdenv windows; cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; - wine = pkgs.wine.override { wineBuild = "wine64"; }; - postInstall = mkPostInstall { - inherit pkgs; - bin = "${wine}/bin/wine64 ./himalaya.exe"; - }; in - { + package // { depsBuildBuild = [ stdenv.cc windows.pthreads ]; TARGET_CC = cc; - CARGO_BUILD_RUSTFLAGS = staticRustFlags ++ [ "-Clinker=${cc}" ]; - postInstall = '' - export WINEPREFIX="$(mktemp -d)" - ${postInstall} - ''; + CARGO_BUILD_RUSTFLAGS = package.CARGO_BUILD_RUSTFLAGS ++ [ "-Clinker=${cc}" ]; }; }; }; + aarch64-linux = { + aarch64-linux = { + rustTarget = "aarch64-unknown-linux-musl"; + }; + }; + + # FIXME: attribute 'sharedLibrary' missing? + # x86_64-windows = { + # x86_64-windows = { + # rustTarget = "x86_64-pc-windows-gnu"; + # runner = _: "./himalaya.exe"; + # mkPackage = { system, pkgs }: package: package; + # }; + # }; + x86_64-darwin = { - x86_64-macos = { + x86_64-darwin = { rustTarget = "x86_64-apple-darwin"; - override = { pkgs, ... }: - let inherit (pkgs.darwin.apple_sdk.frameworks) AppKit Cocoa; in - { + mkPackage = { pkgs, ... }: package: + let inherit (pkgs.darwin.apple_sdk.frameworks) AppKit Cocoa; + in package // { buildInputs = [ Cocoa ]; NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit"; }; }; # FIXME: infinite recursion in stdenv?! - arm64-macos = { + # aarch64-darwin = { + # rustTarget = "aarch64-apple-darwin"; + # override = { system, pkgs }: + # let + # # inherit (mkPkgsCross system "aarch64-darwin") stdenv; + # inherit ((mkPkgsCross system "aarch64-darwin").pkgsStatic) stdenv darwin; + # inherit (darwin.apple_sdk.frameworks) AppKit Cocoa; + # cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; + # in + # { + # buildInputs = [ Cocoa ]; + # NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; + # NIX_CFLAGS_COMPILE = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; + # TARGET_CC = cc; + # CARGO_BUILD_RUSTFLAGS = staticRustFlags ++ [ "-Clinker=${cc}" "-lframework=${Cocoa}/Library/Frameworks" ]; + # postInstall = mkPostInstall { + # inherit pkgs; + # bin = "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; + # }; + # }; + # }; + }; + + aarch64-darwin = { + aarch64-darwin = { rustTarget = "aarch64-apple-darwin"; - override = { system, pkgs }: - let - # inherit (mkPkgsCross system "aarch64-darwin") stdenv; - inherit ((mkPkgsCross system "aarch64-darwin").pkgsStatic) stdenv darwin; - inherit (darwin.apple_sdk.frameworks) AppKit Cocoa; - cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; - in - rec { + mkPackage = { pkgs, ... }: package: + let inherit (pkgs.darwin.apple_sdk.frameworks) AppKit Cocoa; + in package // { buildInputs = [ Cocoa ]; - NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; - NIX_CFLAGS_COMPILE = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; - TARGET_CC = cc; - CARGO_BUILD_RUSTFLAGS = staticRustFlags ++ [ "-Clinker=${cc}" "-lframework=${Cocoa}/Library/Frameworks" ]; - postInstall = mkPostInstall { - inherit pkgs; - bin = "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; - }; + NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit"; }; }; }; @@ -120,17 +137,18 @@ crossSystem.config = crossSystem; }; - mkPostInstall = { pkgs, bin ? "./himalaya" }: with pkgs; '' + mkPackageArchives = { pkgs, runner ? "./himalaya" }: '' + export WINEPREFIX="$(mktemp -d)" cd $out/bin mkdir -p {man,completions} - ${bin} man ./man - ${bin} completion bash > ./completions/himalaya.bash - ${bin} completion elvish > ./completions/himalaya.elvish - ${bin} completion fish > ./completions/himalaya.fish - ${bin} completion powershell > ./completions/himalaya.powershell - ${bin} completion zsh > ./completions/himalaya.zsh + ${runner} man ./man + ${runner} completion bash > ./completions/himalaya.bash + ${runner} completion elvish > ./completions/himalaya.elvish + ${runner} completion fish > ./completions/himalaya.fish + ${runner} completion powershell > ./completions/himalaya.powershell + ${runner} completion zsh > ./completions/himalaya.zsh tar -czf himalaya.tgz himalaya* man completions - ${zip}/bin/zip -r himalaya.zip himalaya* man completions + ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions ''; mkDevShells = buildPlatform: @@ -143,7 +161,7 @@ nativeBuildInputs = with pkgs; [ pkg-config ]; buildInputs = with pkgs; [ # Nix - # rnix-lsp + nixd nixpkgs-fmt # Rust @@ -159,43 +177,58 @@ }; }; - mkPackage = pkgs: buildPlatform: targetPlatform: package: + mkPackages = buildPlatform: let - toolchain = mkToolchain.fromTarget { - inherit pkgs 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/ - # ''; - # }; - doCheck = false; - auditable = false; - strictDeps = true; - CARGO_BUILD_TARGET = targetPlatform; - CARGO_BUILD_RUSTFLAGS = staticRustFlags; - postInstall = mkPostInstall { inherit pkgs; }; - } // package; - in - naersk'.buildPackage package'; + pkgs = import nixpkgs { system = buildPlatform; }; + + mkPackage = targetPlatform: crossBuild: + let mkPackage' = crossBuild.mkPackage or (_: p: p); + in mkPackage' { inherit pkgs; system = buildPlatform; } { + name = "himalaya"; + src = gitignoreSource ./.; + # overrideMain = _: { + # postInstall = '' + # mkdir -p $out/share/applications/ + # cp assets/himalaya.desktop $out/share/applications/ + # ''; + # }; + doCheck = false; + auditable = false; + strictDeps = true; + CARGO_BUILD_TARGET = targetPlatform; + CARGO_BUILD_RUSTFLAGS = staticRustFlags; + }; + + buildPackage = doPostInstall: targetPlatform: crossBuild: + let + toolchain = mkToolchain.fromTarget { + inherit pkgs buildPlatform; + targetPlatform = crossBuild.rustTarget; + }; + rust = naersk.lib.${buildPlatform}.override { + cargo = toolchain; + rustc = toolchain; + }; + package = mkPackage targetPlatform crossBuild; + postInstall = pkgs.lib.optionalAttrs doPostInstall { + postInstall = mkPackageArchives { + inherit pkgs; + runner = (crossBuild.runner or (_: null)) pkgs; + }; + }; + in + rust.buildPackage package // postInstall; + + defaultPackage = buildPackage false buildPlatform crossBuildTargets.${buildPlatform}.${buildPlatform}; + packages = builtins.mapAttrs (buildPackage false) crossBuildTargets.${buildPlatform}; + archives = pkgs.lib.foldlAttrs (p: k: v: p // { "${k}-archives" = buildPackage true k v; }) { } crossBuildTargets.${buildPlatform}; - mkPackages = system: - let - pkgs = import nixpkgs { inherit system; }; - mkPackage' = target: package: mkPackage pkgs system package.rustTarget (package.override { inherit system pkgs; }); in - builtins.mapAttrs mkPackage' crossBuildTargets.${system}; + { default = defaultPackage; } // packages // archives; mkApp = drv: - let exePath = drv.passthru.exePath or "/bin/himalaya"; in + let exePath = drv.passthru.exePath or "/bin/himalaya"; + in { type = "app"; program = "${drv}${exePath}"; From 7fbd97ceba96b7bea146ba122a83fd7e0c50bfb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Thu, 18 Apr 2024 22:06:24 +0200 Subject: [PATCH 02/15] add nix test github workflow --- .github/workflows/test.yml | 36 ++++++++++ flake.nix | 134 ++++++++++++++++++------------------- rust-toolchain.nix | 8 +-- 3 files changed, 105 insertions(+), 73 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..972ef470 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,36 @@ +name: test + +on: + push: + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - target: x86_64-linux + os: ubuntu-latest + - target: arm64-linux + os: ubuntu-latest + - target: x86_64-windows + os: ubuntu-latest + - target: x86_64-macos + os: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Install Nix + uses: cachix/install-nix-action@v24 + with: + nix_path: nixpkgs=channel:nixos-23.11 + extra_nix_config: | + experimental-features = nix-command flakes + - uses: cachix/cachix-action@v12 + with: + name: soywod + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - name: Run app + run: | + nix run -L .#${{ matrix.target }} diff --git a/flake.nix b/flake.nix index 46783e1e..a2c96c5c 100644 --- a/flake.nix +++ b/flake.nix @@ -29,7 +29,7 @@ # Map of map matching supported Nix build systems with Rust # cross target systems. - crossBuildTargets = { + crossSystems = { x86_64-linux = { x86_64-linux = { rustTarget = "x86_64-unknown-linux-musl"; @@ -37,7 +37,7 @@ aarch64-linux = rec { rustTarget = "aarch64-unknown-linux-musl"; - runner = pkgs: "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; + runner = { pkgs, himalaya }: "${pkgs.qemu}/bin/qemu-aarch64 ${himalaya}"; mkPackage = { system, pkgs }: package: let inherit (mkPkgsCross system rustTarget) stdenv; @@ -51,9 +51,9 @@ x86_64-windows = { rustTarget = "x86_64-pc-windows-gnu"; - runner = pkgs: + runner = { pkgs, himalaya }: let wine = pkgs.wine.override { wineBuild = "wine64"; }; - in "${wine}/bin/wine64 ./himalaya.exe"; + in "${wine}/bin/wine64 ${himalaya}"; mkPackage = { system, pkgs }: package: let inherit (pkgs.pkgsCross.mingwW64) stdenv windows; @@ -73,15 +73,6 @@ }; }; - # FIXME: attribute 'sharedLibrary' missing? - # x86_64-windows = { - # x86_64-windows = { - # rustTarget = "x86_64-pc-windows-gnu"; - # runner = _: "./himalaya.exe"; - # mkPackage = { system, pkgs }: package: package; - # }; - # }; - x86_64-darwin = { x86_64-darwin = { rustTarget = "x86_64-apple-darwin"; @@ -137,24 +128,10 @@ crossSystem.config = crossSystem; }; - mkPackageArchives = { pkgs, runner ? "./himalaya" }: '' - export WINEPREFIX="$(mktemp -d)" - cd $out/bin - mkdir -p {man,completions} - ${runner} man ./man - ${runner} completion bash > ./completions/himalaya.bash - ${runner} completion elvish > ./completions/himalaya.elvish - ${runner} completion fish > ./completions/himalaya.fish - ${runner} completion powershell > ./completions/himalaya.powershell - ${runner} completion zsh > ./completions/himalaya.zsh - tar -czf himalaya.tgz himalaya* man completions - ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions - ''; - - mkDevShells = buildPlatform: + mkDevShells = buildSystem: let - pkgs = import nixpkgs { system = buildPlatform; }; - rust-toolchain = mkToolchain.fromFile { system = buildPlatform; }; + pkgs = import nixpkgs { system = buildSystem; }; + rust-toolchain = mkToolchain.fromFile { inherit buildSystem; }; in { default = pkgs.mkShell { @@ -177,71 +154,90 @@ }; }; - mkPackages = buildPlatform: + mkPackages = buildSystem: let - pkgs = import nixpkgs { system = buildPlatform; }; + pkgs = import nixpkgs { system = buildSystem; }; - mkPackage = targetPlatform: crossBuild: - let mkPackage' = crossBuild.mkPackage or (_: p: p); - in mkPackage' { inherit pkgs; system = buildPlatform; } { + mkPackage = targetSystem: targetConfig: + let mkPackage' = targetConfig.mkPackage or (_: p: p); + in mkPackage' { inherit pkgs; system = buildSystem; } { name = "himalaya"; src = gitignoreSource ./.; - # overrideMain = _: { - # postInstall = '' - # mkdir -p $out/share/applications/ - # cp assets/himalaya.desktop $out/share/applications/ - # ''; - # }; + overrideMain = _: { + postInstall = '' + mkdir -p $out/share/applications/ + cp assets/himalaya.desktop $out/share/applications/ + ''; + }; doCheck = false; auditable = false; strictDeps = true; - CARGO_BUILD_TARGET = targetPlatform; + CARGO_BUILD_TARGET = targetConfig.rustTarget; CARGO_BUILD_RUSTFLAGS = staticRustFlags; + nativeBuildInputs = with pkgs; [ pkg-config ]; }; - buildPackage = doPostInstall: targetPlatform: crossBuild: + buildPackage = targetSystem: targetConfig: let toolchain = mkToolchain.fromTarget { - inherit pkgs buildPlatform; - targetPlatform = crossBuild.rustTarget; + inherit pkgs buildSystem; + targetSystem = targetConfig.rustTarget; }; - rust = naersk.lib.${buildPlatform}.override { + rust = naersk.lib.${buildSystem}.override { cargo = toolchain; rustc = toolchain; }; - package = mkPackage targetPlatform crossBuild; - postInstall = pkgs.lib.optionalAttrs doPostInstall { - postInstall = mkPackageArchives { - inherit pkgs; - runner = (crossBuild.runner or (_: null)) pkgs; - }; - }; + package = mkPackage targetSystem targetConfig; in - rust.buildPackage package // postInstall; + rust.buildPackage package; - defaultPackage = buildPackage false buildPlatform crossBuildTargets.${buildPlatform}.${buildPlatform}; - packages = builtins.mapAttrs (buildPackage false) crossBuildTargets.${buildPlatform}; - archives = pkgs.lib.foldlAttrs (p: k: v: p // { "${k}-archives" = buildPackage true k v; }) { } crossBuildTargets.${buildPlatform}; + buildArchives = targetSystem: + let himalaya = pkgs.lib.getExe self.apps.${buildSystem}.${targetSystem}; + in pkgs.writeShellScriptBin "himalaya-archives" '' + export WINEPREFIX="$(mktemp -d)" + mkdir -p {man,completions} + ${himalaya} man ./man + ${himalaya} completion bash > ./completions/himalaya.bash + ${himalaya} completion elvish > ./completions/himalaya.elvish + ${himalaya} completion fish > ./completions/himalaya.fish + ${himalaya} completion powershell > ./completions/himalaya.powershell + ${himalaya} completion zsh > ./completions/himalaya.zsh + tar -czf himalaya.tgz himalaya* man completions + ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions + ''; - in - { default = defaultPackage; } // packages // archives; + defaultPackage = buildPackage buildSystem crossSystems.${buildSystem}.${buildSystem}; + packages = builtins.mapAttrs buildPackage crossSystems.${buildSystem}; + archives = pkgs.lib.foldlAttrs (p: k: _: p // { "${k}-archives" = buildArchives k; }) { } crossSystems.${buildSystem}; - mkApp = drv: - let exePath = drv.passthru.exePath or "/bin/himalaya"; in { - type = "app"; - program = "${drv}${exePath}"; - }; + default = defaultPackage; + } // packages // archives; - mkApps = buildPlatform: + mkApps = buildSystem: let - pkgs = import nixpkgs { system = buildPlatform; }; - mkApp' = target: package: mkApp self.packages.${buildPlatform}.${target}; + pkgs = import nixpkgs { system = buildSystem; }; + mkAppWrapper = { targetSystem }: + let + targetConfig = crossSystems.${buildSystem}.${targetSystem}; + drv = self.packages.${buildSystem}.${targetSystem}; + exePath = drv.passthru.exePath or "/bin/himalaya"; + himalaya = "${drv}${exePath}"; + himalayaWrapper = targetConfig.runner or (_: himalaya) { inherit pkgs himalaya; }; + wrapper = pkgs.writeShellScriptBin "himalaya" "${himalayaWrapper} $@"; + in + { + type = "app"; + program = "${wrapper}/bin/himalaya"; + }; + mkApp = targetSystem: _: mkAppWrapper { inherit targetSystem; }; + defaultApp = mkApp buildSystem null; + apps = builtins.mapAttrs mkApp crossSystems.${buildSystem}; in - builtins.mapAttrs mkApp' crossBuildTargets.${buildPlatform}; + { default = defaultApp; } // apps; - supportedSystems = builtins.attrNames crossBuildTargets; + supportedSystems = builtins.attrNames crossSystems; mapSupportedSystem = nixpkgs.lib.genAttrs supportedSystems; in { diff --git a/rust-toolchain.nix b/rust-toolchain.nix index 5c3d36ac..57140c22 100644 --- a/rust-toolchain.nix +++ b/rust-toolchain.nix @@ -5,16 +5,16 @@ let sha256 = "+syqAd2kX8KVa8/U2gz3blIQTTsYYt3U63xBWaGOSc8="; in { - fromFile = { system }: fenix.packages.${system}.fromToolchainFile { + fromFile = { buildSystem }: fenix.packages.${buildSystem}.fromToolchainFile { inherit file sha256; }; - fromTarget = { pkgs, buildPlatform, targetPlatform }: + fromTarget = { pkgs, buildSystem, targetSystem }: let name = (pkgs.lib.importTOML file).toolchain.channel; - fenixPackage = fenix.packages.${buildPlatform}; + fenixPackage = fenix.packages.${buildSystem}; toolchain = fenixPackage.fromToolchainName { inherit name sha256; }; - targetToolchain = fenixPackage.targets.${targetPlatform}.fromToolchainName { inherit name sha256; }; + targetToolchain = fenixPackage.targets.${targetSystem}.fromToolchainName { inherit name sha256; }; in fenixPackage.combine [ toolchain.rustc From 9b1a09032903dda7b3c03776703961ee58c782c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Thu, 18 Apr 2024 22:29:10 +0200 Subject: [PATCH 03/15] fix nix run args --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 972ef470..e92211ee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: include: - target: x86_64-linux os: ubuntu-latest - - target: arm64-linux + - target: aarch64-linux os: ubuntu-latest - target: x86_64-windows os: ubuntu-latest @@ -33,4 +33,4 @@ jobs: authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Run app run: | - nix run -L .#${{ matrix.target }} + nix run -L .#${{ matrix.target }} -- --version From c57988770aeb682362e82f8054561c5518716508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Thu, 18 Apr 2024 22:42:11 +0200 Subject: [PATCH 04/15] fix windows ext --- .github/workflows/test.yml | 2 +- flake.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e92211ee..31cba4de 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,7 @@ jobs: os: ubuntu-latest - target: x86_64-windows os: ubuntu-latest - - target: x86_64-macos + - target: x86_64-darwin os: macos-latest steps: - name: Checkout code diff --git a/flake.nix b/flake.nix index a2c96c5c..174c5ae6 100644 --- a/flake.nix +++ b/flake.nix @@ -53,7 +53,7 @@ rustTarget = "x86_64-pc-windows-gnu"; runner = { pkgs, himalaya }: let wine = pkgs.wine.override { wineBuild = "wine64"; }; - in "${wine}/bin/wine64 ${himalaya}"; + in "${wine}/bin/wine64 ${himalaya}.exe"; mkPackage = { system, pkgs }: package: let inherit (pkgs.pkgsCross.mingwW64) stdenv windows; From a066774f22db0ef208f7ec3f795187fa0d1a41c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Thu, 18 Apr 2024 23:34:15 +0200 Subject: [PATCH 05/15] clean namings --- flake.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/flake.nix b/flake.nix index 174c5ae6..28653084 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,7 @@ outputs = { self, nixpkgs, gitignore, fenix, naersk, ... }: let + inherit (nixpkgs) lib; inherit (gitignore.lib) gitignoreSource; staticRustFlags = [ "-Ctarget-feature=+crt-static" ]; @@ -191,8 +192,9 @@ in rust.buildPackage package; + # TODO: move this to postInstall buildArchives = targetSystem: - let himalaya = pkgs.lib.getExe self.apps.${buildSystem}.${targetSystem}; + let himalaya = self.apps.${buildSystem}.${targetSystem}.program; in pkgs.writeShellScriptBin "himalaya-archives" '' export WINEPREFIX="$(mktemp -d)" mkdir -p {man,completions} @@ -208,12 +210,10 @@ defaultPackage = buildPackage buildSystem crossSystems.${buildSystem}.${buildSystem}; packages = builtins.mapAttrs buildPackage crossSystems.${buildSystem}; - archives = pkgs.lib.foldlAttrs (p: k: _: p // { "${k}-archives" = buildArchives k; }) { } crossSystems.${buildSystem}; + archives = lib.foldlAttrs (p: k: _: p // { "${k}-archives" = buildArchives k; }) { } crossSystems.${buildSystem}; in - { - default = defaultPackage; - } // packages // archives; + { default = defaultPackage; } // packages // archives; mkApps = buildSystem: let @@ -237,12 +237,12 @@ in { default = defaultApp; } // apps; - supportedSystems = builtins.attrNames crossSystems; - mapSupportedSystem = nixpkgs.lib.genAttrs supportedSystems; + eachSystem = lib.genAttrs (builtins.attrNames crossSystems); + in { - apps = mapSupportedSystem mkApps; - packages = mapSupportedSystem mkPackages; - devShells = mapSupportedSystem mkDevShells; + apps = eachSystem mkApps; + packages = eachSystem mkPackages; + devShells = eachSystem mkDevShells; }; } From 4590348bf23ae0081b6a66bcc07f8f6f74feb6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 07:22:25 +0200 Subject: [PATCH 06/15] merge archives packages with regular ones --- .github/workflows/test.yml | 2 + flake.nix | 76 ++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 41 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31cba4de..f2447061 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,3 +34,5 @@ jobs: - name: Run app run: | nix run -L .#${{ matrix.target }} -- --version + ls result/bin -al + ls result/share/applications -al diff --git a/flake.nix b/flake.nix index 28653084..78748e26 100644 --- a/flake.nix +++ b/flake.nix @@ -86,27 +86,22 @@ }; # FIXME: infinite recursion in stdenv?! - # aarch64-darwin = { - # rustTarget = "aarch64-apple-darwin"; - # override = { system, pkgs }: - # let - # # inherit (mkPkgsCross system "aarch64-darwin") stdenv; - # inherit ((mkPkgsCross system "aarch64-darwin").pkgsStatic) stdenv darwin; - # inherit (darwin.apple_sdk.frameworks) AppKit Cocoa; - # cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; - # in - # { - # buildInputs = [ Cocoa ]; - # NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; - # NIX_CFLAGS_COMPILE = "-F${AppKit}/Library/Frameworks -framework AppKit -F${Cocoa}/Library/Frameworks -framework Cocoa"; - # TARGET_CC = cc; - # CARGO_BUILD_RUSTFLAGS = staticRustFlags ++ [ "-Clinker=${cc}" "-lframework=${Cocoa}/Library/Frameworks" ]; - # postInstall = mkPostInstall { - # inherit pkgs; - # bin = "${pkgs.qemu}/bin/qemu-aarch64 ./himalaya"; - # }; - # }; - # }; + aarch64-darwin = { + rustTarget = "aarch64-apple-darwin"; + runner = { pkgs, himalaya }: "${pkgs.qemu}/bin/qemu-aarch64 ${himalaya}"; + mkPackage = { system, pkgs }: package: + let + inherit ((mkPkgsCross system "aarch64-darwin").pkgsStatic) stdenv darwin; + inherit (darwin.apple_sdk.frameworks) AppKit Cocoa; + cc = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; + in + package // { + buildInputs = [ Cocoa ]; + NIX_LDFLAGS = "-F${AppKit}/Library/Frameworks -framework AppKit"; + TARGET_CC = cc; + CARGO_BUILD_RUSTFLAGS = package.CARGO_BUILD_RUSTFLAGS ++ [ "-Clinker=${cc}" ]; + }; + }; }; aarch64-darwin = { @@ -160,14 +155,29 @@ pkgs = import nixpkgs { system = buildSystem; }; mkPackage = targetSystem: targetConfig: - let mkPackage' = targetConfig.mkPackage or (_: p: p); - in mkPackage' { inherit pkgs; system = buildSystem; } { + let + mkPackage' = targetConfig.mkPackage or (_: p: p); + himalaya = "./himalaya"; + runner = targetConfig.runner or (_: himalaya) { inherit pkgs himalaya; }; + in + mkPackage' { inherit pkgs; system = buildSystem; } { name = "himalaya"; src = gitignoreSource ./.; overrideMain = _: { postInstall = '' + export WINEPREFIX="$(mktemp -d)" mkdir -p $out/share/applications/ cp assets/himalaya.desktop $out/share/applications/ + cd $out/bin + mkdir -p {man,completions} + ${runner} man ./man + ${runner} completion bash > ./completions/himalaya.bash + ${runner} completion elvish > ./completions/himalaya.elvish + ${runner} completion fish > ./completions/himalaya.fish + ${runner} completion powershell > ./completions/himalaya.powershell + ${runner} completion zsh > ./completions/himalaya.zsh + tar -czf himalaya.tgz himalaya* man completions + ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions ''; }; doCheck = false; @@ -192,28 +202,11 @@ in rust.buildPackage package; - # TODO: move this to postInstall - buildArchives = targetSystem: - let himalaya = self.apps.${buildSystem}.${targetSystem}.program; - in pkgs.writeShellScriptBin "himalaya-archives" '' - export WINEPREFIX="$(mktemp -d)" - mkdir -p {man,completions} - ${himalaya} man ./man - ${himalaya} completion bash > ./completions/himalaya.bash - ${himalaya} completion elvish > ./completions/himalaya.elvish - ${himalaya} completion fish > ./completions/himalaya.fish - ${himalaya} completion powershell > ./completions/himalaya.powershell - ${himalaya} completion zsh > ./completions/himalaya.zsh - tar -czf himalaya.tgz himalaya* man completions - ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions - ''; - defaultPackage = buildPackage buildSystem crossSystems.${buildSystem}.${buildSystem}; packages = builtins.mapAttrs buildPackage crossSystems.${buildSystem}; - archives = lib.foldlAttrs (p: k: _: p // { "${k}-archives" = buildArchives k; }) { } crossSystems.${buildSystem}; in - { default = defaultPackage; } // packages // archives; + { default = defaultPackage; } // packages; mkApps = buildSystem: let @@ -232,6 +225,7 @@ program = "${wrapper}/bin/himalaya"; }; mkApp = targetSystem: _: mkAppWrapper { inherit targetSystem; }; + defaultApp = mkApp buildSystem null; apps = builtins.mapAttrs mkApp crossSystems.${buildSystem}; in From 5003abe1e1eccbe2ea57764924a0f88c33677bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 07:52:02 +0200 Subject: [PATCH 07/15] fix post install --- .github/workflows/test.yml | 5 +++++ flake.nix | 41 ++++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f2447061..2d393131 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,6 +18,8 @@ jobs: os: ubuntu-latest - target: x86_64-darwin os: macos-latest + - target: aarch64-darwin + os: macos-latest steps: - name: Checkout code uses: actions/checkout@v2 @@ -35,4 +37,7 @@ jobs: run: | nix run -L .#${{ matrix.target }} -- --version ls result/bin -al + ls result/share -al ls result/share/applications -al + ls result/share/man -al + ls result/share/completions -al diff --git a/flake.nix b/flake.nix index 78748e26..4e5c344d 100644 --- a/flake.nix +++ b/flake.nix @@ -163,29 +163,32 @@ mkPackage' { inherit pkgs; system = buildSystem; } { name = "himalaya"; src = gitignoreSource ./.; - overrideMain = _: { - postInstall = '' - export WINEPREFIX="$(mktemp -d)" - mkdir -p $out/share/applications/ - cp assets/himalaya.desktop $out/share/applications/ - cd $out/bin - mkdir -p {man,completions} - ${runner} man ./man - ${runner} completion bash > ./completions/himalaya.bash - ${runner} completion elvish > ./completions/himalaya.elvish - ${runner} completion fish > ./completions/himalaya.fish - ${runner} completion powershell > ./completions/himalaya.powershell - ${runner} completion zsh > ./completions/himalaya.zsh - tar -czf himalaya.tgz himalaya* man completions - ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* man completions - ''; - }; + strictDeps = true; doCheck = false; auditable = false; - strictDeps = true; + nativeBuildInputs = with pkgs; [ pkg-config ]; CARGO_BUILD_TARGET = targetConfig.rustTarget; CARGO_BUILD_RUSTFLAGS = staticRustFlags; - nativeBuildInputs = with pkgs; [ pkg-config ]; + postInstall = '' + export WINEPREFIX="$(mktemp -d)" + + mkdir -p $out/bin/share/{applications,completions,man,services} + cp assets/himalaya.desktop $out/bin/share/applications/ + cp assets/himalaya-watch@.service $out/bin/share/services/ + + cd $out/bin + ${runner} man ./share/man + ${runner} completion bash > ./share/completions/himalaya.bash + ${runner} completion elvish > ./share/completions/himalaya.elvish + ${runner} completion fish > ./share/completions/himalaya.fish + ${runner} completion powershell > ./share/completions/himalaya.powershell + ${runner} completion zsh > ./share/completions/himalaya.zsh + tar -czf himalaya.tgz himalaya* share + ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* share + + mv share ../ + mv himalaya.tgz himalaya.zip ../ + ''; }; buildPackage = targetSystem: targetConfig: From c022e662899d315d39e7f44e6ca7d03b0c30bb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 09:44:16 +0200 Subject: [PATCH 08/15] fix gh action ls --- .github/workflows/test.yml | 6 +----- flake.nix | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d393131..6127c277 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,8 +36,4 @@ jobs: - name: Run app run: | nix run -L .#${{ matrix.target }} -- --version - ls result/bin -al - ls result/share -al - ls result/share/applications -al - ls result/share/man -al - ls result/share/completions -al + ls result -al diff --git a/flake.nix b/flake.nix index 4e5c344d..f8bc54fb 100644 --- a/flake.nix +++ b/flake.nix @@ -26,8 +26,6 @@ inherit (nixpkgs) lib; inherit (gitignore.lib) gitignoreSource; - staticRustFlags = [ "-Ctarget-feature=+crt-static" ]; - # Map of map matching supported Nix build systems with Rust # cross target systems. crossSystems = { @@ -168,7 +166,7 @@ auditable = false; nativeBuildInputs = with pkgs; [ pkg-config ]; CARGO_BUILD_TARGET = targetConfig.rustTarget; - CARGO_BUILD_RUSTFLAGS = staticRustFlags; + CARGO_BUILD_RUSTFLAGS = [ "-Ctarget-feature=+crt-static" ]; postInstall = '' export WINEPREFIX="$(mktemp -d)" From 849deb9a20dc33cdb20d8cd858662960c8b0efac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 09:56:25 +0200 Subject: [PATCH 09/15] replace ls by tree --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6127c277..6148436a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,5 +35,6 @@ jobs: authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Run app run: | + nix build -L .#${{ matrix.target }} nix run -L .#${{ matrix.target }} -- --version - ls result -al + tree result From b4fcb427a4de3dc796ac558882a678e08c23ed34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 11:57:59 +0200 Subject: [PATCH 10/15] replace tree by ls -R --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6148436a..5ad7df51 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,4 +37,4 @@ jobs: run: | nix build -L .#${{ matrix.target }} nix run -L .#${{ matrix.target }} -- --version - tree result + ls -R result From cf6000f1e4d6d47899941e67125b9a6565220d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 17:04:02 +0200 Subject: [PATCH 11/15] clean apps and packages part 1 --- flake.nix | 93 ++++++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/flake.nix b/flake.nix index f8bc54fb..aa7f5c83 100644 --- a/flake.nix +++ b/flake.nix @@ -26,8 +26,6 @@ inherit (nixpkgs) lib; inherit (gitignore.lib) gitignoreSource; - # Map of map matching supported Nix build systems with Rust - # cross target systems. crossSystems = { x86_64-linux = { x86_64-linux = { @@ -83,7 +81,7 @@ }; }; - # FIXME: infinite recursion in stdenv?! + # FIXME: https://github.com/NixOS/nixpkgs/issues/273442 aarch64-darwin = { rustTarget = "aarch64-apple-darwin"; runner = { pkgs, himalaya }: "${pkgs.qemu}/bin/qemu-aarch64 ${himalaya}"; @@ -115,39 +113,36 @@ }; }; - mkToolchain = import ./rust-toolchain.nix fenix; + eachBuildSystem = lib.genAttrs (builtins.attrNames crossSystems); mkPkgsCross = buildSystem: crossSystem: import nixpkgs { system = buildSystem; crossSystem.config = crossSystem; }; - mkDevShells = buildSystem: + mkToolchain = import ./rust-toolchain.nix fenix; + + mkApp = { pkgs, buildSystem, targetSystem ? buildSystem }: let - pkgs = import nixpkgs { system = buildSystem; }; - rust-toolchain = mkToolchain.fromFile { inherit buildSystem; }; + himalaya = lib.getExec self.packages.${buildSystem}.${targetSystem}; + wrapper = crossSystems.${buildSystem}.${targetSystem}.runner or (_: himalaya) { + inherit pkgs himalaya; + }; in { - default = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ pkg-config ]; - buildInputs = with pkgs; [ - # Nix - nixd - nixpkgs-fmt - - # Rust - rust-toolchain - cargo-watch - - # Email env - gnupg - gpgme - msmtp - notmuch - ]; - }; + type = "app"; + program = lib.getExe (pkgs.writeShellScriptBin "himalaya" "${wrapper} $@"); }; + mkApps = buildSystem: + let + pkgs = import nixpkgs { system = buildSystem; }; + mkApp' = targetSystem: _: mkApp { inherit pkgs buildSystem targetSystem; }; + defaultApp = mkApp { inherit pkgs buildSystem; }; + apps = builtins.mapAttrs mkApp' crossSystems.${buildSystem}; + in + apps // { default = defaultApp; }; + mkPackages = buildSystem: let pkgs = import nixpkgs { system = buildSystem; }; @@ -207,37 +202,37 @@ packages = builtins.mapAttrs buildPackage crossSystems.${buildSystem}; in - { default = defaultPackage; } // packages; + packages // { default = defaultPackage; }; - mkApps = buildSystem: + mkDevShells = buildSystem: let pkgs = import nixpkgs { system = buildSystem; }; - mkAppWrapper = { targetSystem }: - let - targetConfig = crossSystems.${buildSystem}.${targetSystem}; - drv = self.packages.${buildSystem}.${targetSystem}; - exePath = drv.passthru.exePath or "/bin/himalaya"; - himalaya = "${drv}${exePath}"; - himalayaWrapper = targetConfig.runner or (_: himalaya) { inherit pkgs himalaya; }; - wrapper = pkgs.writeShellScriptBin "himalaya" "${himalayaWrapper} $@"; - in - { - type = "app"; - program = "${wrapper}/bin/himalaya"; - }; - mkApp = targetSystem: _: mkAppWrapper { inherit targetSystem; }; + rust-toolchain = mkToolchain.fromFile { inherit buildSystem; }; + defaultShell = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ pkg-config ]; + buildInputs = with pkgs; [ + # Nix + nixd + nixpkgs-fmt - defaultApp = mkApp buildSystem null; - apps = builtins.mapAttrs mkApp crossSystems.${buildSystem}; + # Rust + rust-toolchain + cargo-watch + + # Email env + gnupg + gpgme + msmtp + notmuch + ]; + }; in - { default = defaultApp; } // apps; - - eachSystem = lib.genAttrs (builtins.attrNames crossSystems); + { default = defaultShell; }; in { - apps = eachSystem mkApps; - packages = eachSystem mkPackages; - devShells = eachSystem mkDevShells; + apps = eachBuildSystem mkApps; + packages = eachBuildSystem mkPackages; + devShells = eachBuildSystem mkDevShells; }; } From 087a0821bc42328ee37080834de6e085f98f6b83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 20:44:03 +0200 Subject: [PATCH 12/15] fix typo getExec --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index aa7f5c83..e2de6756 100644 --- a/flake.nix +++ b/flake.nix @@ -124,7 +124,7 @@ mkApp = { pkgs, buildSystem, targetSystem ? buildSystem }: let - himalaya = lib.getExec self.packages.${buildSystem}.${targetSystem}; + himalaya = lib.getExe self.packages.${buildSystem}.${targetSystem}; wrapper = crossSystems.${buildSystem}.${targetSystem}.runner or (_: himalaya) { inherit pkgs himalaya; }; From 095d519dd000845362f78c3a86ccfc1b25d84ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 22:11:16 +0200 Subject: [PATCH 13/15] clean remaining parts --- flake.nix | 116 +++++++++++++++++++++++++----------------------------- 1 file changed, 54 insertions(+), 62 deletions(-) diff --git a/flake.nix b/flake.nix index e2de6756..86a00ae1 100644 --- a/flake.nix +++ b/flake.nix @@ -125,14 +125,11 @@ mkApp = { pkgs, buildSystem, targetSystem ? buildSystem }: let himalaya = lib.getExe self.packages.${buildSystem}.${targetSystem}; - wrapper = crossSystems.${buildSystem}.${targetSystem}.runner or (_: himalaya) { - inherit pkgs himalaya; - }; - in - { - type = "app"; + wrapper = crossSystems.${buildSystem}.${targetSystem}.runner or (_: himalaya) { inherit pkgs himalaya; }; program = lib.getExe (pkgs.writeShellScriptBin "himalaya" "${wrapper} $@"); - }; + app = { inherit program; type = "app"; }; + in + app; mkApps = buildSystem: let @@ -143,64 +140,59 @@ in apps // { default = defaultApp; }; + mkPackage = { pkgs, buildSystem, targetSystem ? buildSystem }: + let + targetConfig = crossSystems.${buildSystem}.${targetSystem}; + toolchain = mkToolchain.fromTarget { + inherit pkgs buildSystem; + targetSystem = targetConfig.rustTarget; + }; + rust = naersk.lib.${buildSystem}.override { + cargo = toolchain; + rustc = toolchain; + }; + mkPackage' = targetConfig.mkPackage or (_: p: p); + himalaya = "./himalaya"; + runner = targetConfig.runner or (_: himalaya) { inherit pkgs himalaya; }; + package = mkPackage' { inherit pkgs; system = buildSystem; } { + name = "himalaya"; + src = gitignoreSource ./.; + strictDeps = true; + doCheck = false; + auditable = false; + nativeBuildInputs = with pkgs; [ pkg-config ]; + CARGO_BUILD_TARGET = targetConfig.rustTarget; + CARGO_BUILD_RUSTFLAGS = [ "-Ctarget-feature=+crt-static" ]; + postInstall = '' + export WINEPREFIX="$(mktemp -d)" + + mkdir -p $out/bin/share/{applications,completions,man,services} + cp assets/himalaya.desktop $out/bin/share/applications/ + cp assets/himalaya-watch@.service $out/bin/share/services/ + + cd $out/bin + ${runner} man ./share/man + ${runner} completion bash > ./share/completions/himalaya.bash + ${runner} completion elvish > ./share/completions/himalaya.elvish + ${runner} completion fish > ./share/completions/himalaya.fish + ${runner} completion powershell > ./share/completions/himalaya.powershell + ${runner} completion zsh > ./share/completions/himalaya.zsh + tar -czf himalaya.tgz himalaya* share + ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* share + + mv share ../ + mv himalaya.tgz himalaya.zip ../ + ''; + }; + in + rust.buildPackage package; + mkPackages = buildSystem: let pkgs = import nixpkgs { system = buildSystem; }; - - mkPackage = targetSystem: targetConfig: - let - mkPackage' = targetConfig.mkPackage or (_: p: p); - himalaya = "./himalaya"; - runner = targetConfig.runner or (_: himalaya) { inherit pkgs himalaya; }; - in - mkPackage' { inherit pkgs; system = buildSystem; } { - name = "himalaya"; - src = gitignoreSource ./.; - strictDeps = true; - doCheck = false; - auditable = false; - nativeBuildInputs = with pkgs; [ pkg-config ]; - CARGO_BUILD_TARGET = targetConfig.rustTarget; - CARGO_BUILD_RUSTFLAGS = [ "-Ctarget-feature=+crt-static" ]; - postInstall = '' - export WINEPREFIX="$(mktemp -d)" - - mkdir -p $out/bin/share/{applications,completions,man,services} - cp assets/himalaya.desktop $out/bin/share/applications/ - cp assets/himalaya-watch@.service $out/bin/share/services/ - - cd $out/bin - ${runner} man ./share/man - ${runner} completion bash > ./share/completions/himalaya.bash - ${runner} completion elvish > ./share/completions/himalaya.elvish - ${runner} completion fish > ./share/completions/himalaya.fish - ${runner} completion powershell > ./share/completions/himalaya.powershell - ${runner} completion zsh > ./share/completions/himalaya.zsh - tar -czf himalaya.tgz himalaya* share - ${pkgs.zip}/bin/zip -r himalaya.zip himalaya* share - - mv share ../ - mv himalaya.tgz himalaya.zip ../ - ''; - }; - - buildPackage = targetSystem: targetConfig: - let - toolchain = mkToolchain.fromTarget { - inherit pkgs buildSystem; - targetSystem = targetConfig.rustTarget; - }; - rust = naersk.lib.${buildSystem}.override { - cargo = toolchain; - rustc = toolchain; - }; - package = mkPackage targetSystem targetConfig; - in - rust.buildPackage package; - - defaultPackage = buildPackage buildSystem crossSystems.${buildSystem}.${buildSystem}; - packages = builtins.mapAttrs buildPackage crossSystems.${buildSystem}; - + mkPackage' = targetSystem: _: mkPackage { inherit pkgs buildSystem targetSystem; }; + defaultPackage = mkPackage { inherit pkgs buildSystem; }; + packages = builtins.mapAttrs mkPackage' crossSystems.${buildSystem}; in packages // { default = defaultPackage; }; From a389434fde3a594885f704c06c3bb41bf4ab737c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Fri, 19 Apr 2024 22:11:59 +0200 Subject: [PATCH 14/15] remove darwing cross compile --- .github/workflows/test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5ad7df51..c8dc6fef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,8 +18,9 @@ jobs: os: ubuntu-latest - target: x86_64-darwin os: macos-latest - - target: aarch64-darwin - os: macos-latest + # FIXME: build broken + # - target: aarch64-darwin + # os: macos-latest steps: - name: Checkout code uses: actions/checkout@v2 From 8d0f0133747989ff5ce9b421e6dd7ae979e0964b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Sat, 20 Apr 2024 07:50:57 +0200 Subject: [PATCH 15/15] fix release gh action --- .github/workflows/release.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5520e5c4..2111a4bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,12 +31,15 @@ jobs: include: - target: x86_64-linux os: ubuntu-latest - - target: arm64-linux + - target: aarch64-linux os: ubuntu-latest - target: x86_64-windows os: ubuntu-latest - - target: x86_64-macos + - target: x86_64-darwin os: macos-latest + # FIXME: build broken + # - target: aarch64-darwin + # os: macos-latest steps: - name: Checkout code uses: actions/checkout@v2 @@ -53,7 +56,7 @@ jobs: - name: Build release archive run: | nix build -L .#${{ matrix.target }} - cp result/bin/himalaya* . + cp result/himalaya* . - name: Upload tgz release archive uses: actions/upload-release-asset@v1 env: