aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/no
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--pkgs/by-name/no/notify-run/.envrc22
-rw-r--r--pkgs/by-name/no/notify-run/.gitignore16
-rw-r--r--pkgs/by-name/no/notify-run/Cargo.lock25
-rw-r--r--pkgs/by-name/no/notify-run/Cargo.toml20
-rw-r--r--pkgs/by-name/no/notify-run/flake.nix35
-rw-r--r--pkgs/by-name/no/notify-run/package.nix41
-rw-r--r--pkgs/by-name/no/notify-run/src/main.rs65
-rwxr-xr-xpkgs/by-name/no/notify-run/update.sh14
8 files changed, 238 insertions, 0 deletions
diff --git a/pkgs/by-name/no/notify-run/.envrc b/pkgs/by-name/no/notify-run/.envrc
new file mode 100644
index 00000000..880b1809
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/.envrc
@@ -0,0 +1,22 @@
+#!/usr/bin/env sh
+
+# 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>.
+
+use flake || use nix
+watch_file flake.nix
+
+PATH_add ./target/debug
+PATH_add ./target/release
+PATH_add ./scripts
+
+if on_git_branch; then
+ echo && git status --short --branch
+fi
diff --git a/pkgs/by-name/no/notify-run/.gitignore b/pkgs/by-name/no/notify-run/.gitignore
new file mode 100644
index 00000000..8f29eabf
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/.gitignore
@@ -0,0 +1,16 @@
+# 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>.
+
+# build
+/target
+/result
+
+# dev env
+.direnv
diff --git a/pkgs/by-name/no/notify-run/Cargo.lock b/pkgs/by-name/no/notify-run/Cargo.lock
new file mode 100644
index 00000000..ef352c0f
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/Cargo.lock
@@ -0,0 +1,25 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+# 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>.
+version = 4
+
+[[package]]
+name = "anyhow"
+version = "1.0.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
+
+[[package]]
+name = "notify-run"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+]
diff --git a/pkgs/by-name/no/notify-run/Cargo.toml b/pkgs/by-name/no/notify-run/Cargo.toml
new file mode 100644
index 00000000..f7da67de
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/Cargo.toml
@@ -0,0 +1,20 @@
+# 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>.
+
+[package]
+name = "notify-run"
+description = "An safe way to run applications that might fail"
+version = "0.1.0"
+edition = "2024"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+anyhow = "1.0.102"
diff --git a/pkgs/by-name/no/notify-run/flake.nix b/pkgs/by-name/no/notify-run/flake.nix
new file mode 100644
index 00000000..ea5fecb2
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/flake.nix
@@ -0,0 +1,35 @@
+# 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>.
+{
+ description = "An safe way to run applications, that might fail";
+
+ inputs = {
+ };
+
+ outputs = {...}: let
+ system = "x86_64-linux";
+ sources = import ../../../../npins/full.nix {};
+
+ pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}";
+ in {
+ devShells."${system}".default = pkgs.mkShell {
+ packages = [
+ pkgs.cargo
+ pkgs.clippy
+ pkgs.rustc
+ pkgs.rustfmt
+
+ pkgs.cargo-edit
+ ];
+ };
+ };
+}
+# vim: ts=2
+
diff --git a/pkgs/by-name/no/notify-run/package.nix b/pkgs/by-name/no/notify-run/package.nix
new file mode 100644
index 00000000..1f9337be
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/package.nix
@@ -0,0 +1,41 @@
+# 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>.
+{
+ rustPlatform,
+ lib,
+ libnotify,
+ makeWrapper,
+}:
+rustPlatform.buildRustPackage (finalAttrs: {
+ pname = "notify-run";
+ version = "0.1.0";
+
+ buildInputs = [
+ libnotify
+ ];
+ nativeBuildInputs = [
+ makeWrapper
+ ];
+
+ src = ./.;
+ cargoLock = {
+ lockFile = ./Cargo.lock;
+ };
+
+ postInstall = ''
+ # NOTE: We cannot clear the path, because we need access to the programs to start. <2025-12-03>
+ wrapProgram $out/bin/notify-run \
+ --prefix PATH : ${lib.makeBinPath finalAttrs.buildInputs}
+ '';
+
+ meta = {
+ mainProgram = "notify-run";
+ };
+})
diff --git a/pkgs/by-name/no/notify-run/src/main.rs b/pkgs/by-name/no/notify-run/src/main.rs
new file mode 100644
index 00000000..a6a0165a
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/src/main.rs
@@ -0,0 +1,65 @@
+// 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>.
+
+use std::{env::args, path::PathBuf, process::Command};
+
+use anyhow::{Context, Result};
+
+fn main() -> Result<()> {
+ let args = args().skip(1).collect::<Vec<_>>();
+
+ let mut cmd = Command::new(&args[0]);
+ if let Some(arguments) = args.get(1) {
+ cmd.args(arguments.split(" ").collect::<Vec<_>>().as_slice());
+ }
+
+ eprintln!("Spawning {:?}", cmd);
+
+ let output = cmd
+ .output()
+ .with_context(|| format!("Failed to spawn and await output of {:?}", cmd))?;
+
+ if !output.status.success() {
+ let mut notify_send = Command::new("notify-send");
+ notify_send.args([
+ format!("Command {:?} failed", cmd).as_str(),
+ &String::from_utf8_lossy(output.stderr.as_slice()),
+ ]);
+
+ notify_send.status().with_context(|| {
+ format!(
+ "Failed to run `notify-send` to tell about failed command ({:?}).",
+ cmd
+ )
+ })?;
+ } else {
+ let name = PathBuf::from(&args[0])
+ .file_name()
+ .expect("this to be a command, and thus have a file_name")
+ .to_string_lossy()
+ .to_string();
+
+ print!("{}", append_name(&name, &output.stdout));
+ eprint!("{}", append_name(&name, &output.stderr));
+ }
+
+ Ok(())
+}
+
+fn append_name(name: &str, base: &[u8]) -> String {
+ let base = String::from_utf8_lossy(base).to_string();
+
+ let mut output = String::new();
+ for line in base.lines() {
+ output.push_str(format!("{name}> {line}\n").as_str());
+ }
+
+ output
+}
diff --git a/pkgs/by-name/no/notify-run/update.sh b/pkgs/by-name/no/notify-run/update.sh
new file mode 100755
index 00000000..188771c4
--- /dev/null
+++ b/pkgs/by-name/no/notify-run/update.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env sh
+
+# 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>.
+
+[ "$1" = "upgrade" ] && cargo upgrade --incompatible allow --pinned allow --recursive true
+cargo update --recursive