Initial commit
This commit is contained in:
commit
ecc51b2129
9 changed files with 2224 additions and 0 deletions
6
.envrc
Normal file
6
.envrc
Normal file
|
@ -0,0 +1,6 @@
|
|||
watch_file shell.nix
|
||||
watch_file flake.lock
|
||||
|
||||
# try to use flakes, if it fails use normal nix (ie. shell.nix)
|
||||
use flake || use nix
|
||||
eval "$shellHook"
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/target
|
||||
.direnv
|
2044
Cargo.lock
generated
Normal file
2044
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
30
Cargo.toml
Normal file
30
Cargo.toml
Normal file
|
@ -0,0 +1,30 @@
|
|||
[package]
|
||||
name = "todoodoo"
|
||||
description = "todoodoo"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[profile.release]
|
||||
strip = "symbols"
|
||||
lto = true
|
||||
opt-level = "s"
|
||||
codegen-units = 1
|
||||
|
||||
[profile.dev.package."*"]
|
||||
opt-level = "s"
|
||||
codegen-units = 1
|
||||
[profile.dev.build-override]
|
||||
opt-level = "s"
|
||||
codegen-units = 1
|
||||
|
||||
[profile.release.package."*"]
|
||||
opt-level = "s"
|
||||
codegen-units = 1
|
||||
[profile.release.build-override]
|
||||
opt-level = "s"
|
||||
codegen-units = 1
|
||||
|
||||
[dependencies.eframe]
|
||||
version = "0.24"
|
||||
default-features = false
|
||||
features = [ "wayland", "default_fonts", "glow", "persistence" ]
|
32
default.nix
Normal file
32
default.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
let manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
|
||||
packages = with pkgs; [
|
||||
pkg-config
|
||||
libGLU
|
||||
libGL
|
||||
libxkbcommon
|
||||
wayland
|
||||
];
|
||||
in
|
||||
pkgs.rustPlatform.buildRustPackage rec {
|
||||
pname = manifest.name;
|
||||
version = manifest.version;
|
||||
cargoLock.lockFile = ./Cargo.lock;
|
||||
src = pkgs.lib.cleanSource ./.;
|
||||
|
||||
meta = {
|
||||
description = manifest.description ? null;
|
||||
};
|
||||
postBuild = ''
|
||||
patchelf --add-needed libxkbcommon.so target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
patchelf --add-needed libwayland-client.so target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
patchelf --add-needed libGLU.so target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
patchelf --add-needed libEGL.so target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
old_rpath=$(patchelf --print-rpath target/x86_64-unknown-linux-gnu/release/todoodoo)
|
||||
if [[ -z "$old_rpath" ]]; then
|
||||
patchelf --set-rpath "${pkgs.lib.makeLibraryPath packages}" target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
else
|
||||
patchelf --set-rpath "${pkgs.lib.makeLibraryPath packages}:$old_rpath" target/x86_64-unknown-linux-gnu/release/todoodoo
|
||||
fi
|
||||
'';
|
||||
}
|
27
flake.lock
Normal file
27
flake.lock
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1704194953,
|
||||
"narHash": "sha256-RtDKd8Mynhe5CFnVT8s0/0yqtWFMM9LmCzXv/YKxnq4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "bd645e8668ec6612439a9ee7e71f7eac4099d4f6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
20
flake.nix
Normal file
20
flake.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
description = "ToDooDoo";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
};
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
supportedSystems = [ "x86_64-linux" ];
|
||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
||||
pkgsFor = nixpkgs.legacyPackages;
|
||||
in {
|
||||
packages = forAllSystems (system: {
|
||||
default = pkgsFor.${system}.callPackage ./default.nix { };
|
||||
});
|
||||
devShells = forAllSystems (system: {
|
||||
default = pkgsFor.${system}.callPackage ./shell.nix { };
|
||||
});
|
||||
};
|
||||
}
|
||||
|
29
shell.nix
Normal file
29
shell.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ pkgs ? import <nixpkgs> { }, lib }:
|
||||
let packages = with pkgs; [
|
||||
rust-analyzer
|
||||
rustfmt
|
||||
clippy
|
||||
|
||||
clang
|
||||
mold
|
||||
|
||||
pkg-config
|
||||
|
||||
libGLU
|
||||
libGL
|
||||
libxkbcommon
|
||||
|
||||
wayland
|
||||
];
|
||||
in
|
||||
pkgs.mkShell {
|
||||
# Get dependencies from the main package
|
||||
inputsFrom = [ (pkgs.callPackage ./default.nix { }) ];
|
||||
nativeBuildInputs = packages;
|
||||
buildInputs = packages;
|
||||
env = {
|
||||
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
||||
LD_LIBRARY_PATH = "${lib.makeLibraryPath packages}";
|
||||
};
|
||||
}
|
||||
|
34
src/main.rs
Normal file
34
src/main.rs
Normal file
|
@ -0,0 +1,34 @@
|
|||
use eframe::egui;
|
||||
|
||||
fn main() {
|
||||
std::env::set_var("WINIT_UNIX_BACKEND", "wayland");
|
||||
let native_options = eframe::NativeOptions::default();
|
||||
if let Err(err) = eframe::run_native(
|
||||
"My egui App",
|
||||
native_options,
|
||||
Box::new(|cc| Box::new(MyEguiApp::new(cc))),
|
||||
) {
|
||||
eprintln!("{err}");
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct MyEguiApp {}
|
||||
|
||||
impl MyEguiApp {
|
||||
fn new(_cc: &eframe::CreationContext<'_>) -> Self {
|
||||
// Customize egui here with cc.egui_ctx.set_fonts and cc.egui_ctx.set_visuals.
|
||||
// Restore app state using cc.storage (requires the "persistence" feature).
|
||||
// Use the cc.gl (a glow::Context) to create graphics shaders and buffers that you can use
|
||||
// for e.g. egui::PaintCallback.
|
||||
Self::default()
|
||||
}
|
||||
}
|
||||
|
||||
impl eframe::App for MyEguiApp {
|
||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
ui.heading("Hello World!");
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue