diff options
Diffstat (limited to '')
| -rw-r--r-- | pkgs/by-name/sw/sw/package.nix | 25 | ||||
| -rwxr-xr-x | pkgs/by-name/sw/sw/sw.sh | 49 |
2 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/by-name/sw/sw/package.nix b/pkgs/by-name/sw/sw/package.nix new file mode 100644 index 00000000..dea7e16c --- /dev/null +++ b/pkgs/by-name/sw/sw/package.nix @@ -0,0 +1,25 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + writeShellApplication, + # Dependencies + river-classic, +}: +writeShellApplication { + name = "sw"; + text = builtins.readFile ./sw.sh; + + # We need to inherit the path, so that we can spawn stuff in a swallowed mode. + inheritPath = true; + + runtimeInputs = [ + river-classic + ]; +} diff --git a/pkgs/by-name/sw/sw/sw.sh b/pkgs/by-name/sw/sw/sw.sh new file mode 100755 index 00000000..f71f65ee --- /dev/null +++ b/pkgs/by-name/sw/sw/sw.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env dash +# Based on: https://codeberg.org/nirodhvana/reservoir/src/commit/2fa8c14877799a03bb927f048c2907dbb418fd68/dot-local/bin/gobble + +# Inspired by https://github.com/swindlesmccoop/not-just-dotfiles/blob/master/.local/bin/swallow + +swallow_tag=$((1 << 9)) +eat() { + riverctl set-view-tags $swallow_tag +} + +throwup() { + riverctl set-focused-tags $swallow_tag && + riverctl send-to-previous-tags && + riverctl focus-previous-tags +} + +swallow() { + # Make sure that we actually `throwup`, when the command fails + set +e + + eat && "$@" + throwup + + set -e +} + +if [ -z "$*" ]; then + printf "sw: No arguments supplied\n" + exit 2 +else + case "$1" in + "-n" | "--nix") + shift 1 + [ -z "$1" ] && { + printf "sw: --nix requires a nix installible\n" + exit 2 + } + + # Build it first, so the user still sees a progress bar + nix build --no-link "n#$1" + + swallow nix run "n#$1" + ;; + *) + swallow "$@" + ;; + esac + +fi |
