Skip to content

Commit

Permalink
flake: fix package creation
Browse files Browse the repository at this point in the history
  • Loading branch information
TornaxO7 committed Jan 13, 2024
1 parent b9aa653 commit 9ca7555
Showing 1 changed file with 123 additions and 90 deletions.
213 changes: 123 additions & 90 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,107 +11,140 @@
};
};

outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} {
imports = [];
outputs = inputs @ { flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ ];

systems = import inputs.systems;

perSystem = {
config,
self',
inputs',
pkgs,
system,
lib,
...
}: let
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
rust-toolchain = (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml).override {
extensions = ["rust-src" "rust-analyzer"];
};
perSystem =
{ config
, self'
, inputs'
, pkgs
, system
, lib
, ...
}:
let
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
rust-toolchain = (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml).override {
extensions = [ "rust-src" "rust-analyzer" ];
};

mkRio =
{ rustPlatform
, stdenv
, lib
, fontconfig
, darwin
, gcc-unwrapped
, libGL
, libxkbcommon
, vulkan-loader
, libX11
, libXcursor
, libXi
, libXrandr
, libxcb
, wayland
, ncurses
, pkg-config
, cmake
, autoPatchelfHook
, withX11 ? !stdenv.isDarwin
, withWayland ? !stdenv.isDarwin
, ...
}:
let
rlinkLibs =
if stdenv.isDarwin
then [
darwin.libobjc
darwin.apple_sdk_11_0.frameworks.AppKit
darwin.apple_sdk_11_0.frameworks.AVFoundation
darwin.apple_sdk_11_0.frameworks.Vision
]
else
[
(lib.getLib gcc-unwrapped)
fontconfig
libGL
libxkbcommon
vulkan-loader
]
++ lib.optionals withX11 [
libX11
libXcursor
libXi
libXrandr
libxcb
]
++ lib.optionals withWayland [
wayland
];
in
rustPlatform.buildRustPackage {
inherit (cargoToml.workspace.package) version;
name = "rio";
src = ./.;
cargoLock.lockFile = ./Cargo.lock;

runtimeDeps = with pkgs;
if stdenv.isDarwin
then [
darwin.libobjc
darwin.apple_sdk_11_0.frameworks.AppKit
darwin.apple_sdk_11_0.frameworks.AVFoundation
darwin.apple_sdk_11_0.frameworks.Vision
]
else
(with pkgs; [
(lib.getLib gcc-unwrapped)
fontconfig
libGL
libxkbcommon
vulkan-loader
wayland
])
++ (with pkgs.xorg; [
libX11
libXcursor
libXi
libXrandr
libxcb
xkbutils
]);
cargoBuildFlags = "-p rioterm";

buildDeps = with pkgs;
[
ncurses
]
++ lib.optionals stdenv.isLinux [
pkg-config
cmake
autoPatchelfHook
];
buildInputs = rlinkLibs;
runtimeDependencies = rlinkLibs;

rustPackage = rust-toolchain:
pkgs.rustPlatform.buildRustPackage {
inherit (cargoToml.workspace.package) version;
name = "rio";
src = ./.;
cargoLock.lockFile = ./Cargo.lock;
cargoBuildFlags = "-p rioterm";
buildInputs = runtimeDeps ++ buildDeps;
nativeBuildInputs = buildDeps;
buildNoDefaultFeatures = true;
buildFeatures = ["x11" "wayland"];
meta = {
description = "A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers";
homepage = "https://raphamorim.io/rio";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
changelog = "https://github.com/raphamorim/rio/blob/master/CHANGELOG.md";
mainProgram = "rio";
nativeBuildInputs =
[
ncurses
]
++ lib.optionals stdenv.isLinux [
pkg-config
cmake
autoPatchelfHook
];

buildNoDefaultFeatures = true;
buildFeatures = [ "x11" "wayland" ];
meta = {
description = "A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers";
homepage = "https://raphamorim.io/rio";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
changelog = "https://github.com/raphamorim/rio/blob/master/CHANGELOG.md";
mainProgram = "rio";
};
};
};

mkDevShell = rust-toolchain:
pkgs.mkShell {
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath (runtimeDeps ++ buildDeps)}:$LD_LIBRARY_PATH";
packages = buildDeps ++ runtimeDeps ++ [rust-toolchain];
mkDevShell = rust-toolchain:
let
dependencies = self'.packages.rio.nativeBuildInputs ++ self'.packages.rio.buildInputs;
in
pkgs.mkShell {
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath dependencies}:$LD_LIBRARY_PATH";
packages = dependencies ++ [ rust-toolchain ];
};
in
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [ (import inputs.rust-overlay) ];
};
in {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [(import inputs.rust-overlay)];
};

formatter = pkgs.alejandra;
packages.default = self'.packages.rio;
devShells.default = self'.devShells.msrv;
formatter = pkgs.alejandra;
packages.default = self'.packages.rio;
devShells.default = self'.devShells.msrv;

apps.default = {
type = "app";
program = self'.packages.rio;
};
packages.rio = rustPackage "rio";
apps.default = {
type = "app";
program = self'.packages.rio;
};
packages.rio = pkgs.callPackage mkRio { };

devShells.msrv = mkDevShell rust-toolchain;
devShells.stable = mkDevShell pkgs.rust-bin.stable.latest.default;
devShells.nightly = mkDevShell (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default));
};
devShells.msrv = mkDevShell rust-toolchain;
devShells.stable = mkDevShell pkgs.rust-bin.stable.latest.default;
devShells.nightly = mkDevShell (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default));
};
};
}

0 comments on commit 9ca7555

Please sign in to comment.