Compare commits

..
Author SHA1 Message Date
e489d9f812
iced-template: generalize desktopItem linking 2026-08-28 21:51:36 -07:00
9b308d6b54
iced-template: remove commonArgs
these are mostly useful for crane,
and were only acting as unnecessary complexity here
2026-08-22 17:56:48 -07:00
4d21ca0e6f
iced-template: avoid duplicating Cargo.lock in nix store 2026-08-22 17:51:54 -07:00
459eac3fff
iced-template: filter source files
(to reduce rebuilds)
crane does something similar automatically
2026-08-22 17:51:50 -07:00
e9847f58c7
iced-template: use strictDeps and __structuredAttrs 2026-08-22 17:45:14 -07:00
8ead7e6eb0
iced-template: use more efficient nixpkgs input 2026-08-22 17:36:09 -07:00
9c3419782b
iced-template: remove nonexistent icon 2026-08-22 17:36:00 -07:00
27f6371c2c
iced-template: factor out Element, explicit Error
the type alias Element is quite useful for defining subfunctions for view
and it also helps to not pull unnecessary things into scope
2026-08-22 17:35:56 -07:00
0095d05e80
iced-template: replace crane 2026-08-03 12:22:43 -07:00
2 changed files with 37 additions and 74 deletions

16
flake.lock generated
View file

@ -1,20 +1,5 @@
{ {
"nodes": { "nodes": {
"crane": {
"locked": {
"lastModified": 1785782307,
"narHash": "sha256-MPaRdVkf6zZP5fCPxYCi8Dr4pZzgmXzg8T9nVEbp3Mw=",
"owner": "ipetkov",
"repo": "crane",
"rev": "2c71e194474d13de031d729b729c968ddbe3507f",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@ -48,7 +33,6 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"crane": "crane",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }

View file

@ -2,8 +2,6 @@
inputs = { inputs = {
nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.zst"; nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.zst";
crane.url = "github:ipetkov/crane";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
}; };
@ -14,7 +12,6 @@
let let
pkgs = import inputs.nixpkgs { inherit system; }; pkgs = import inputs.nixpkgs { inherit system; };
lib = pkgs.lib; lib = pkgs.lib;
craneLib = inputs.crane.mkLib pkgs;
cargoToml = fromTOML (builtins.readFile ./Cargo.toml); cargoToml = fromTOML (builtins.readFile ./Cargo.toml);
name = cargoToml.package.name; name = cargoToml.package.name;
@ -36,26 +33,6 @@
wayland wayland
]; ];
commonArgs = {
# all that's needed for artifacts and checks
nativeBuildInputs = with pkgs; [
# pkg-config
];
buildInputs = with pkgs; [
];
strictDeps = true;
__structuredAttrs = true;
src = ./.;
};
# Build *just* the cargo dependencies,
# to reuse them for build and test derivations.
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
# Build the actual crate itself,
# reusing the dependency artifacts from above.
crate = crate =
let let
desktopItem = pkgs.makeDesktopItem { desktopItem = pkgs.makeDesktopItem {
@ -64,48 +41,50 @@
exec = name; exec = name;
}; };
in in
craneLib.buildPackage ( pkgs.rustPlatform.buildRustPackage rec {
commonArgs inherit name;
// {
inherit cargoArtifacts;
nativeBuildInputs = commonArgs.nativeBuildInputs ++ [ src = lib.sourceFilesBySuffices ./. [
pkgs.autoPatchelfHook "Cargo.toml"
"Cargo.lock"
".rs"
]; ];
cargoLock.lockFile = "${src}/Cargo.lock";
buildInputs = commonArgs.buildInputs ++ [ nativeBuildInputs = with pkgs; [
pkgs.libgcc autoPatchelfHook
];
buildInputs = with pkgs; [
libgcc
]; ];
runtimeDependencies = dlDeps; runtimeDependencies = dlDeps;
doCheck = false;
postFixup = '' postFixup = ''
cp -rs "${desktopItem}"/* "$out" cp -rs "${desktopItem}"/* "$out"
''; '';
}
); doCheck = false;
strictDeps = true;
__structuredAttrs = true;
};
in in
{ {
packages.default = crate; packages.default = crate;
checks = { devShells.default = pkgs.mkShell {
crate-clippy = craneLib.cargoClippy (
commonArgs
// {
inherit cargoArtifacts;
cargoClippyExtraArgs = "-- --deny warnings";
}
);
};
devShells.default = craneLib.devShell {
env.LD_LIBRARY_PATH = lib.makeLibraryPath dlDeps; env.LD_LIBRARY_PATH = lib.makeLibraryPath dlDeps;
inputsFrom = [ crate ]; inputsFrom = [ crate ];
packages = [ pkgs.rust-analyzer ];
packages = with pkgs; [
rustc
cargo
clippy
rustfmt
rust-analyzer
];
strictDeps = true; strictDeps = true;
__structuredAttrs = true; __structuredAttrs = true;