From 0458ae081814081f3c2a071807a0855c74cc8f11 Mon Sep 17 00:00:00 2001 From: atagen Date: Sun, 24 May 2026 19:43:51 +1000 Subject: [PATCH] brand: change tagline to be more layman friendly --- Cargo.toml | 4 +-- README.md | 10 +++--- contrib/systemd/headroom.service | 4 +-- flake.nix | 2 +- nix/home-module.nix | 52 +++++++++++++++++++++++--------- nix/nixos-module.nix | 2 +- 6 files changed, 48 insertions(+), 26 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4186a1e..7433aac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,8 +14,8 @@ version = "0.1.0" edition = "2021" rust-version = "1.86" license = "GPL-3.0-or-later" -homepage = "https://github.com/amaanq/headroom" -repository = "https://github.com/amaanq/headroom" +homepage = "https://github.com/atagen/headroom" +repository = "https://github.com/atagen/headroom" authors = ["Headroom contributors"] [workspace.dependencies] diff --git a/README.md b/README.md index 13151d9..6c1e641 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # headroom -AGC + compressor + true-peak limiter daemon for PipeWire, in Rust. +Automatic loudness and per-app volume control for PipeWire, in Rust. Headroom puts a per-application audio safety net between noisy sources (browsers, voice chat, random video) and your speakers, while leaving @@ -46,15 +46,15 @@ This repo is a flake; the daemon plus its systemd user unit and the canonical profiles are exposed as a package. ```sh -nix run github:amaanq/headroom -- daemon # one-shot run -nix profile install github:amaanq/headroom # add to $PATH +nix run github:atagen/headroom -- daemon # one-shot run +nix profile install github:atagen/headroom # add to $PATH ``` For **Home Manager**, add the flake as an input and enable the module: ```nix { - inputs.headroom.url = "github:amaanq/headroom"; + inputs.headroom.url = "github:atagen/headroom"; # In your Home Manager configuration: imports = [ inputs.headroom.homeModules.default ]; @@ -72,7 +72,7 @@ For **NixOS** (system-wide binary install + systemd-user discovery): ```nix { - inputs.headroom.url = "github:amaanq/headroom"; + inputs.headroom.url = "github:atagen/headroom"; # In your NixOS configuration: imports = [ inputs.headroom.nixosModules.default ]; diff --git a/contrib/systemd/headroom.service b/contrib/systemd/headroom.service index a22b72f..024ce09 100644 --- a/contrib/systemd/headroom.service +++ b/contrib/systemd/headroom.service @@ -1,6 +1,6 @@ [Unit] -Description=Headroom audio daemon (PipeWire AGC + compressor + true-peak limiter) -Documentation=https://github.com/amaanq/headroom +Description=Headroom audio daemon (automatic loudness and per-app volume control for PipeWire) +Documentation=https://github.com/atagen/headroom # PipeWire is a hard dependency: headroom registers a virtual sink and # wires explicit links via PW's link-factory, so we can't start before # pw-mainloop is up. ConditionUser ensures this only ever runs as a diff --git a/flake.nix b/flake.nix index 28131b6..88f9557 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Headroom — AGC + compressor + true-peak limiter daemon for PipeWire"; + description = "Headroom — automatic loudness and per-app volume control for PipeWire"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; diff --git a/nix/home-module.nix b/nix/home-module.nix index 923c1e7..ab08aae 100644 --- a/nix/home-module.nix +++ b/nix/home-module.nix @@ -10,10 +10,21 @@ # delegates the heavy lifting to `services.headroom` (this file) when # Home Manager is in use. self: -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let - inherit (lib) mkEnableOption mkOption mkIf types literalExpression; + inherit (lib) + mkEnableOption + mkOption + mkIf + types + literalExpression + ; cfg = config.services.headroom; @@ -26,7 +37,7 @@ let in { options.services.headroom = { - enable = mkEnableOption "Headroom — PipeWire AGC + compressor + true-peak limiter daemon"; + enable = mkEnableOption "Headroom — automatic loudness and per-app volume control for PipeWire"; package = mkOption { type = types.package; @@ -74,17 +85,19 @@ in # regular files, so this is transparent. xdg.configFile = lib.mkMerge [ (mkIf cfg.installDefaultProfiles ( - lib.mapAttrs' - (name: _: lib.nameValuePair "headroom/profiles/${name}" { + lib.mapAttrs' ( + name: _: + lib.nameValuePair "headroom/profiles/${name}" { source = "${shippedProfilesDir}/${name}"; - }) - (builtins.readDir shippedProfilesDir) + } + ) (builtins.readDir shippedProfilesDir) )) - (lib.mapAttrs' - (name: path: lib.nameValuePair "headroom/profiles/${name}" { + (lib.mapAttrs' ( + name: path: + lib.nameValuePair "headroom/profiles/${name}" { source = path; - }) - cfg.extraProfiles) + } + ) cfg.extraProfiles) ]; # systemd user unit. The unit shipped by the package already @@ -93,11 +106,20 @@ in # let Home Manager start it via its systemd-user machinery. systemd.user.services.headroom = { Unit = { - Description = "Headroom audio daemon (PipeWire AGC + compressor + true-peak limiter)"; - Documentation = "https://github.com/amaanq/headroom"; - After = [ "pipewire.service" "pipewire-pulse.service" "wireplumber.service" ]; + Description = "Headroom audio daemon (automatic loudness and per-app volume control for PipeWire)"; + Documentation = "https://github.com/atagen/headroom"; + After = [ + "pipewire.service" + "pipewire-pulse.service" + "wireplumber.service" + "graphical-session.target" + ]; Requires = [ "pipewire.service" ]; Wants = [ "wireplumber.service" ]; + # Tie our lifecycle to the graphical session rather than the + # socket-activated pipewire.service (which has no stable + # "started for the session" lifecycle to WantedBy=). + PartOf = [ "graphical-session.target" ]; }; Service = { Type = "simple"; @@ -112,7 +134,7 @@ in LimitNICE = -11; }; Install = { - WantedBy = [ "pipewire.service" ]; + WantedBy = [ "graphical-session.target" ]; }; }; }; diff --git a/nix/nixos-module.nix b/nix/nixos-module.nix index a64dad3..408395d 100644 --- a/nix/nixos-module.nix +++ b/nix/nixos-module.nix @@ -33,7 +33,7 @@ let in { options.programs.headroom = { - enable = mkEnableOption "Headroom — PipeWire AGC + compressor + true-peak limiter daemon"; + enable = mkEnableOption "Headroom — automatic loudness and per-app volume control for PipeWire"; package = mkOption { type = types.package;