From cd4de50188af8836b8450c15d5b60332e1f2174b Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Thu, 25 Nov 2021 20:17:27 +0100 Subject: misc: add nix derivation --- .gitignore | 2 + Makefile | 18 ++++++- .../nixos/pkgs/os-specific/linux/vtcol/default.nix | 57 ++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 misc/nixos/pkgs/os-specific/linux/vtcol/default.nix diff --git a/.gitignore b/.gitignore index ae0df3a..88c4ac6 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ todo # cargo junk Cargo.lock +misc/nixos/pkgs/os-specific/linux/vtcol/cargo-lock.patch # manpage doc/vtcol.1.gz + diff --git a/Makefile b/Makefile index a8db336..50dd1b2 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,10 @@ lib-src = src/lib.rs src = $(bin-src) $(lib-src) meta = Cargo.toml rustdoc-entry = target/doc/vtcol/index.html +cargo-lock = Cargo.lock +cargo-lock-patch= misc/nixos/pkgs/os-specific/linux/vtcol/cargo-lock.patch -all: bin lib doc +all: bin lib doc nix check: $(src) cargo test @@ -23,6 +25,18 @@ man: $(manpage) rustdoc: $(rustdoc-entry) +nix: lockpatch + +lockpatch: $(cargo-lock-patch) + +$(cargo-lock-patch): $(meta) + rm -f -- $(cargo-lock) + cargo update + cargo generate-lockfile + mkdir -p tmp + mv -f -- $(cargo-lock) tmp/ + diff -u /dev/null tmp/$(cargo-lock) >$(cargo-lock-patch) ; : + $(lib): $(lib-src) $(meta) cargo build --release @@ -37,6 +51,8 @@ $(rustdoc-entry): $(src) $(meta) clean: rm -f -- $(manpage) + rm -f -- $(cargo-lock) rm -rf -- $(cargo-target) + rm -rf -- tmp .PHONY: clean check diff --git a/misc/nixos/pkgs/os-specific/linux/vtcol/default.nix b/misc/nixos/pkgs/os-specific/linux/vtcol/default.nix new file mode 100644 index 0000000..dec074b --- /dev/null +++ b/misc/nixos/pkgs/os-specific/linux/vtcol/default.nix @@ -0,0 +1,57 @@ +{ lib, stdenv +, cpio +, docutils +, rust +, installShellFiles +, fetchFromGitLab +, rustPlatform +}: + +rustPlatform.buildRustPackage rec { + pname = "vtcol"; + version = "0.42.5"; + + src = fetchFromGitLab { + domain = "gitlab.com"; + owner = "phgsng"; + repo = pname; + rev = "d6e8a37767644b50001e14ebbab594e799a94db7"; + sha256 = "sha256-fHWxiuCFO+N+ubPCS/Is64V2pLzh7xozDcRo7pQLMBg="; + }; + + cargoSha256 = "sha256-NSwn3vavrsPr+qn6oQY6kO5d9TKrxwcnqO7a3qpBphs=="; + + nativeBuildInputs = [ docutils cpio installShellFiles ]; + + buildFeatures = [ "vtcol-bin" ]; + + cargoPatches = [ ./cargo-lock.patch ]; + + target = rust.toRustTargetSpec stdenv.hostPlatform; + + # building the manpage requires docutils/rst2man + postInstall = '' + echo "create and install manpage" + make man + installManPage doc/vtcol.1.gz + + echo "create cpio archive for initrd" + binout="target/${target}/release/${pname}" + ls "$binout" + mkdir -p -- tmp/usr/bin + ls + ls tmp + cp -f -- "$binout" tmp/usr/bin + pushd tmp + <<${pname}.cpio + + install -D -m644 ${pname}.cpio $out/share/vtcol/${pname}.cpio + ''; + + meta = with lib; { + description = "Color schemes for the Linux console"; + homepage = "https://gitlab.com/phgsng/vtcol"; + license = licenses.gpl3; + mainProgram = "vtcol"; + }; +} -- cgit v1.2.3