--- /dev/null
+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
## 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.
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";
};
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;
" 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
}
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