--- /dev/null
+;; Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; volume.scm - package for controling system's volume.
+
+(define-module (conf system volume)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu services)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix gexp)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:export (volume))
+
+(define volume
+ (package
+ (name "volume")
+ (version "1.0")
+ (source
+ (local-file
+ (string-concatenate
+ (list (getenv "GUIX_PACKAGE_PATH")
+ "/scripts/volume"))))
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+
+ (let* ((ins (assoc-ref %build-inputs "source"))
+ (out (assoc-ref %outputs "out"))
+ (dir (string-concatenate (list out "/bin")))
+ (file (string-append dir "/volume")))
+ (mkdir-p dir)
+ (copy-file ins file)
+ (chmod file #o555)))))
+ (synopsis "Script for controlling the volume level.")
+ (description "Wraps a scripts which can control system's volume level.")
+ (home-page "https://git.ekhem.eu.org")
+ (license gpl3+)))
--- /dev/null
+#!/bin/sh
+# Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+
+if [ -z "${1}" ]
+then
+ echo "New volume level not specified"
+ exit 1
+fi
+
+SCARD=$(amixer | head -n1 | cut -d\' -f2)
+amixer set "${SCARD}" "${1}"
;;
;; system.scm - system configuration for GNU Guix.
-(use-modules (gnu)
+(use-modules (conf system volume)
+ (gnu)
(gnu system nss))
(use-package-modules certs
(packages
(append
(list gnu-make
- nss-certs)
+ nss-certs
+ volume)
%base-packages))
(timezone "Europe/Warsaw")
(locale "en_US.UTF-8")