Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unified packaging process #252

Merged
merged 3 commits into from
Apr 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
PREFIX ?= /usr/local

all:
@echo "Usage: make (install|uninstall)"

.PHONY: all install uninstall

install:
install -Dm 0755 xdg-ninja.sh $(DESTDIR)$(PREFIX)/bin/xdg-ninja
install -d $(DESTDIR)$(PREFIX)/share/xdg-ninja/
cp -r programs $(DESTDIR)$(PREFIX)/share/xdg-ninja/
install -d $(DESTDIR)$(PREFIX)/share/doc/xdg-ninja/
install -m 0644 LICENSE README.md $(DESTDIR)$(PREFIX)/share/doc/xdg-ninja/

uninstall:
rm -rf $(DESTDIR)$(PREFIX)/bin/xdg-ninja \
$(DESTDIR)$(PREFIX)/share/xdg-ninja \
$(DESTDIR)$(PREFIX)/share/doc/xdg-ninja
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ To install xdg-ninja with [Homebrew](https://brew.sh), run `brew install xdg-nin

## Configuration

The configuration is done in the _programs/_ directory.
The configuration is done in the _programs/_ directory, which should be located in the same working directory as the xdg-ninja.sh script. This can be overriden with the `XN_PROGRAMS_DIR` environment variable.

You define a program, and then a list of files and directories which this program ruthlessly puts into your _$HOME_ directory.

Expand Down
22 changes: 20 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,25 @@
in rec {
packages = flake-utils.lib.flattenTree {
# The shell script and configurations, uses derivation from offical nixpkgs
xdg-ninja = pkgs.xdg-ninja;
xdg-ninja = pkgs.stdenv.mkDerivation rec {
pname = "xdg-ninja";
version = "0.1.0";

src = ./.;

nativeBuildInputs = with pkgs; [ makeWrapper ];

installPhase = ''
runHook preInstall

DESTDIR="$out" PREFIX="/usr" make install

wrapProgram "$out/usr/bin/xdg-ninja" \
--prefix PATH : "${pkgs.lib.makeBinPath [ pkgs.glow pkgs.jq ]}"

runHook postInstall
'';
};
# Pre-built binary of xdgnj tool downloaded from github
xdgnj-bin = pkgs.stdenvNoCC.mkDerivation {
name = "xdgnj-bin";
Expand All @@ -45,7 +63,7 @@
};
defaultPackage = packages.xdg-ninja;
apps = {
xdg-ninja = flake-utils.lib.mkApp { drv = packages.xdg-ninja; };
xdg-ninja = flake-utils.lib.mkApp { drv = packages.xdg-ninja; exePath = "/usr/bin/xdg-ninja"; };
xdgnj-bin = flake-utils.lib.mkApp { drv = packages.xdgnj-bin; exePath = "/bin/xdgnj"; };
};
defaultApp = apps.xdg-ninja;
Expand Down
5 changes: 4 additions & 1 deletion xdg-ninja.sh
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ do_check_programs() {
" read -r name; read -r filename; read -r movable; read -r help; do
check_file "$name" "$filename" "$movable" "$help"
done <<EOF
$(jq 'inputs as $input | $input.files[] as $file | $input.name, $file.path, $file.movable, $file.help' "$(realpath "$0" | xargs dirname)"/programs/* | sed -e 's/^"//' -e 's/"$//')
$(jq 'inputs as $input | $input.files[] as $file | $input.name, $file.path, $file.movable, $file.help' "$XN_PROGRAMS_DIR"/* | sed -e 's/^"//' -e 's/"$//')
EOF
# sed is to trim quotes
}
Expand All @@ -233,6 +233,9 @@ check_programs() {
printf "\n"
}

[ "$XN_PROGRAMS_DIR" ] ||
XN_PROGRAMS_DIR="$(realpath "$0" | xargs dirname | sed 's:/bin$:/share/xdg-ninja:g')/programs"

check_programs
if [ $FIXABLE -gt 100 ]; then
exit 101
Expand Down