Skip to content

Commit

Permalink
Merge pull request #252 from fourchettes/unified_packaging_process
Browse files Browse the repository at this point in the history
  • Loading branch information
b3nj5m1n authored Apr 23, 2023
2 parents 8f8d4bd + 3a7e267 commit 619f172
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 4 deletions.
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

0 comments on commit 619f172

Please sign in to comment.