summaryrefslogtreecommitdiffstats
path: root/krebs
diff options
context:
space:
mode:
Diffstat (limited to 'krebs')
-rw-r--r--krebs/1systems/puyak/config.nix4
-rw-r--r--krebs/1systems/puyak/net.nix2
-rw-r--r--krebs/2configs/news-host.nix3
-rw-r--r--krebs/2configs/shack/esphome.nix7
-rw-r--r--krebs/2configs/shack/glados/default.nix13
-rw-r--r--krebs/2configs/shack/glados/zigbee-quirks/__init__.py0
-rw-r--r--krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py96
-rw-r--r--krebs/2configs/shack/glados/zigbee.nix5
-rw-r--r--krebs/3modules/git.nix10
-rw-r--r--krebs/3modules/os-release.nix38
-rw-r--r--krebs/3modules/zones.nix3
-rw-r--r--krebs/5pkgs/haskell/desktop-pager.nix24
-rw-r--r--krebs/5pkgs/haskell/hack.nix21
-rw-r--r--krebs/5pkgs/haskell/much.nix36
-rw-r--r--krebs/5pkgs/simple/brain/default.nix20
-rw-r--r--krebs/5pkgs/simple/cabal-read.nix39
-rw-r--r--krebs/5pkgs/simple/flameshot-once/flameshot/default.nix1
-rw-r--r--krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch26
-rw-r--r--krebs/5pkgs/simple/krebs-pages/fixtures/index.html2
-rw-r--r--krebs/5pkgs/simple/pager.nix40
-rw-r--r--krebs/5pkgs/simple/q-power_supply.nix146
21 files changed, 195 insertions, 341 deletions
diff --git a/krebs/1systems/puyak/config.nix b/krebs/1systems/puyak/config.nix
index 60c1c941a..d3891af82 100644
--- a/krebs/1systems/puyak/config.nix
+++ b/krebs/1systems/puyak/config.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ config, pkgs, lib, ... }:
{
imports = [
./net.nix
@@ -73,6 +73,7 @@
# hass.shack
<stockholm/krebs/2configs/shack/glados>
+ <stockholm/krebs/2configs/shack/esphome.nix>
# connect to git.shackspace.de as group runner for rz
<stockholm/krebs/2configs/shack/gitlab-runner.nix>
@@ -170,4 +171,5 @@
isNormalUser = true;
shell = "/run/current-system/sw/bin/zsh";
};
+ system.stateVersion = lib.mkForce "24.05";
}
diff --git a/krebs/1systems/puyak/net.nix b/krebs/1systems/puyak/net.nix
index 59b22b380..fe2fd238e 100644
--- a/krebs/1systems/puyak/net.nix
+++ b/krebs/1systems/puyak/net.nix
@@ -14,7 +14,7 @@ in {
interfaces."${ext-if}".ipv4.addresses = [
{
address = shack-ip;
- prefixLength = 22;
+ prefixLength = 20;
}
];
diff --git a/krebs/2configs/news-host.nix b/krebs/2configs/news-host.nix
index 81922ef87..9b8627d61 100644
--- a/krebs/2configs/news-host.nix
+++ b/krebs/2configs/news-host.nix
@@ -1,5 +1,6 @@
-{ config, ... }:
+{ config,lib, ... }:
{
+ nixpkgs.config.allowUnfree = true; # "consul-1.18.0"
krebs.sync-containers3.containers.news = {
sshKey = "${config.krebs.secret.directory}/news.sync.key";
};
diff --git a/krebs/2configs/shack/esphome.nix b/krebs/2configs/shack/esphome.nix
new file mode 100644
index 000000000..b6bcbce3e
--- /dev/null
+++ b/krebs/2configs/shack/esphome.nix
@@ -0,0 +1,7 @@
+{
+ services.esphome = {
+ enable = true;
+ address = "0.0.0.0";
+ openFirewall = true;
+ };
+}
diff --git a/krebs/2configs/shack/glados/default.nix b/krebs/2configs/shack/glados/default.nix
index 236b5000d..e8ed18f0d 100644
--- a/krebs/2configs/shack/glados/default.nix
+++ b/krebs/2configs/shack/glados/default.nix
@@ -3,29 +3,26 @@ let
kodi-host = "192.168.8.11";
confdir = "/var/lib/homeassistant-docker";
in {
- imports = [
- ];
+ imports = [ ./zigbee.nix ];
- # networking.firewall.allowedTCPPorts = [ 8123 ];
+ networking.firewall.allowedTCPPorts = [ 8123 ];
virtualisation.oci-containers.containers.hass = {
image = "homeassistant/home-assistant:latest";
environment = {
TZ = "Europe/Berlin";
- # TODO create unique users
- PUID = toString config.users.users.news_container.uid;
- PGID = toString config.users.groups.news_container.gid;
UMASK = "007";
};
- extraOptions = ["--net=host" ];
+ extraOptions = ["--net=host" "--device=/dev/zigbee" ];
volumes = [
"${confdir}:/config"
+ "${./zigbee-quirks}:/quirks"
#"${confdir}/docker-run:/etc/services.d/home-assistant/run:"
];
};
systemd.tmpfiles.rules = [
#"f ${confdir}/docker-run 0770 kiosk kiosk - -"
# TODO:
- "d ${confdir} 0770 news_container news_container - -"
+ "d ${confdir} 0770 root root - -"
];
services.nginx.virtualHosts."hass.shack" = {
diff --git a/krebs/2configs/shack/glados/zigbee-quirks/__init__.py b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee-quirks/__init__.py
diff --git a/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py
new file mode 100644
index 000000000..b520fe947
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee-quirks/ts011f_power_monitoring.py
@@ -0,0 +1,96 @@
+"""TS011F plug."""
+
+from zigpy.profiles import zgp, zha
+from zigpy.quirks import CustomDevice
+from zigpy.zcl.clusters.general import (
+ Basic,
+ GreenPowerProxy,
+ Groups,
+ Identify,
+ OnOff,
+ Ota,
+ Scenes,
+ Time,
+)
+from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement
+from zigpy.zcl.clusters.lightlink import LightLink
+from zigpy.zcl.clusters.measurement import TemperatureMeasurement
+from zigpy.zcl.clusters.smartenergy import Metering
+
+from zhaquirks.const import (
+ DEVICE_TYPE,
+ ENDPOINTS,
+ INPUT_CLUSTERS,
+ MODEL,
+ MODELS_INFO,
+ OUTPUT_CLUSTERS,
+ PROFILE_ID,
+)
+from zhaquirks.quirk_ids import TUYA_PLUG_ONOFF
+from zhaquirks.tuya import (
+ EnchantedDevice,
+ TuyaNewManufCluster,
+ TuyaZB1888Cluster,
+ TuyaZBE000Cluster,
+ TuyaZBElectricalMeasurement,
+ TuyaZBExternalSwitchTypeCluster,
+ TuyaZBMeteringCluster,
+ TuyaZBMeteringClusterWithUnit,
+ TuyaZBOnOffAttributeCluster,
+)
+
+class Plug_v2l(EnchantedDevice):
+ """Another TS011F Tuya plug. First one using this definition is _TZ3000_okaz9tjs."""
+
+ quirk_id = TUYA_PLUG_ONOFF
+
+ signature = {
+ MODEL: "TS011F",
+ ENDPOINTS: {
+ # "profile_id": 260,
+ # "device_type": "0x0100",
+ # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0702", "0x0b04", "0xe001"],
+ # "in_clusters": ["0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x000a", "0x0702", "0x0b04", "0x1000", "0xe000", "0xe001"],
+ # "out_clusters": []
+ 1: {
+ PROFILE_ID: zha.PROFILE_ID,
+ DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT,
+ INPUT_CLUSTERS: [
+ Basic.cluster_id,
+ Identify.cluster_id,
+ Groups.cluster_id,
+ Scenes.cluster_id,
+ OnOff.cluster_id,
+ Time.cluster_id,
+ Metering.cluster_id,
+ ElectricalMeasurement.cluster_id,
+ LightLink.cluster_id,
+ TuyaZBE000Cluster.cluster_id,
+ TuyaZBExternalSwitchTypeCluster.cluster_id,
+ ],
+ OUTPUT_CLUSTERS: [],
+ },
+ },
+ }
+ replacement = {
+ ENDPOINTS: {
+ 1: {
+ PROFILE_ID: zha.PROFILE_ID,
+ DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
+ INPUT_CLUSTERS: [
+ Basic.cluster_id,
+ Identify.cluster_id,
+ Groups.cluster_id,
+ Scenes.cluster_id,
+ TuyaZBOnOffAttributeCluster,
+ Time.cluster_id,
+ TuyaZBMeteringClusterWithUnit,
+ TuyaZBElectricalMeasurement,
+ LightLink.cluster_id,
+ TuyaZBE000Cluster.cluster_id,
+ TuyaZBExternalSwitchTypeCluster,
+ ],
+ OUTPUT_CLUSTERS: [],
+ },
+ },
+ }
diff --git a/krebs/2configs/shack/glados/zigbee.nix b/krebs/2configs/shack/glados/zigbee.nix
new file mode 100644
index 000000000..a8967cc37
--- /dev/null
+++ b/krebs/2configs/shack/glados/zigbee.nix
@@ -0,0 +1,5 @@
+{
+ services.udev.extraRules = ''
+ SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="zigbee", MODE="0666"
+ '';
+}
diff --git a/krebs/3modules/git.nix b/krebs/3modules/git.nix
index 347a2c32b..961b217e1 100644
--- a/krebs/3modules/git.nix
+++ b/krebs/3modules/git.nix
@@ -468,6 +468,16 @@ let
include ${pkgs.nginx}/conf/fastcgi_params;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT ${cfg.dataDir};
+ fastcgi_param HOME ${pkgs.write "git-http-backend.home" {
+ "/.gitconfig".text = /* ini */ ''
+ [safe]
+ directory = .
+ ${concatMapStrings
+ (repo: "directory = ${cfg.dataDir}/${repo.name}\n")
+ (attrValues cfg.repos)
+ }
+ '';
+ }};
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME ${pkgs.git}/bin/git-http-backend;
fastcgi_pass unix:${config.services.fcgiwrap.socketAddress};
diff --git a/krebs/3modules/os-release.nix b/krebs/3modules/os-release.nix
index bfd352825..929ec45d9 100644
--- a/krebs/3modules/os-release.nix
+++ b/krebs/3modules/os-release.nix
@@ -8,28 +8,34 @@ let
nixos-version = "${nixos-version-id} (${nixos-codeName})";
nixos-pretty-name = "NixOS ${nixos-version}";
- stockholm-version-id = let
- eval = builtins.tryEval (removeSuffix "\n" (readFile <stockholm-version>));
- in
- if eval.success then eval.value else "unknown";
-
- stockholm-version = "${stockholm-version-id}";
+ stockholm-version = "${config.krebs.os-release.stockholm-version-id}";
stockholm-pretty-name = "stockholm ${stockholm-version}";
version = "${stockholm-version}/${nixos-version}";
- version-id = "${stockholm-version-id}/${nixos-version-id}";
+ version-id = "${config.krebs.os-release.stockholm-version-id}/${nixos-version-id}";
pretty-name = "${stockholm-pretty-name} / ${nixos-pretty-name}";
home-url = http://cgit.ni.krebsco.de/stockholm;
in
{
- # http://0pointer.de/public/systemd-man/os-release.html
- environment.etc."os-release".text = mkForce ''
- NAME="stockholm/NixOS"
- ID=stockholm
- VERSION="${version}"
- VERSION_ID="${version-id}"
- PRETTY_NAME="${pretty-name}"
- HOME_URL="${home-url}"
- '';
+ options.krebs.os-release = {
+ stockholm-version-id = lib.mkOption {
+ type = lib.types.str;
+ default = let
+ eval = builtins.tryEval (removeSuffix "\n" (readFile <stockholm-version>));
+ in
+ if eval.success then eval.value else "unknown";
+ };
+ };
+ config = {
+ # http://0pointer.de/public/systemd-man/os-release.html
+ environment.etc."os-release".text = mkForce ''
+ NAME="stockholm/NixOS"
+ ID=stockholm
+ VERSION="${version}"
+ VERSION_ID="${version-id}"
+ PRETTY_NAME="${pretty-name}"
+ HOME_URL="${home-url}"
+ '';
+ };
}
diff --git a/krebs/3modules/zones.nix b/krebs/3modules/zones.nix
index 7a9cf5be1..51e559d88 100644
--- a/krebs/3modules/zones.nix
+++ b/krebs/3modules/zones.nix
@@ -21,6 +21,9 @@ with lib; {
panda NS panda
panda A 130.61.237.100
+
+ xkey A 217.197.83.17
+ xkey AAAA 2a0a:4580:5011::1
'';
};
};
diff --git a/krebs/5pkgs/haskell/desktop-pager.nix b/krebs/5pkgs/haskell/desktop-pager.nix
deleted file mode 100644
index 1a4f94db3..000000000
--- a/krebs/5pkgs/haskell/desktop-pager.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ mkDerivation, aeson, base, blessings, bytestring, containers
-, data-default, extra, fetchgit, hack, lib, optparse-applicative
-, probability, scanner, speculate, split, terminal-size, text, unix
-, utf8-string, X11
-}:
-mkDerivation {
- pname = "desktop-pager";
- version = "1.0.0";
- src = fetchgit {
- url = "https://cgit.krebsco.de/pager";
- sha256 = "07wjlhnb27vfhkqq5vhi768mlrcpwl4b2yfk04v3lw047q6pmby0";
- rev = "dfa3ff346d22d332ffbadd46963f1cc5cb2a4939";
- fetchSubmodules = true;
- };
- isLibrary = true;
- isExecutable = true;
- libraryHaskellDepends = [ base extra utf8-string X11 ];
- executableHaskellDepends = [
- aeson base blessings bytestring containers data-default hack
- optparse-applicative probability scanner speculate split
- terminal-size text unix X11
- ];
- license = lib.licenses.mit;
-}
diff --git a/krebs/5pkgs/haskell/hack.nix b/krebs/5pkgs/haskell/hack.nix
deleted file mode 100644
index df3343818..000000000
--- a/krebs/5pkgs/haskell/hack.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ mkDerivation, base, blessings, containers, data-default, fetchgit
-, lens, lib, mtl, old-locale, process, scanner, time, unix, zippers
-}:
-mkDerivation {
- pname = "hack";
- version = "1.0.1";
- src = fetchgit {
- url = "https://cgit.krebsco.de/hack";
- sha256 = "0ry5ikn89ij512qvk1xhdhfz4s8a6b9yawgx6lxgnw5jkiyjd7ka";
- rev = "f3ea150aca5cc86878fa10bc5b1f0918fc154e2a";
- fetchSubmodules = true;
- };
- isLibrary = true;
- isExecutable = true;
- libraryHaskellDepends = [ base ];
- executableHaskellDepends = [
- base blessings containers data-default lens mtl old-locale process
- scanner time unix zippers
- ];
- license = lib.licenses.mit;
-}
diff --git a/krebs/5pkgs/haskell/much.nix b/krebs/5pkgs/haskell/much.nix
deleted file mode 100644
index 865294daf..000000000
--- a/krebs/5pkgs/haskell/much.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ mkDerivation, aeson, attoparsec, base, base64-bytestring
-, blaze-builder, blessings, bytestring, case-insensitive
-, containers, data-default, deepseq, directory, either
-, email-header, fetchgit, filepath, friendly-time, http-types
-, hyphenation, lib, linebreak, network, old-locale
-, optparse-applicative, process, random, rosezipper, safe, scanner
-, servant-server, split, terminal-size, text, time, transformers
-, transformers-compat, unix, vector, wai, warp
-}:
-mkDerivation rec {
- pname = "much";
- version = "1.3.2";
- src = fetchgit {
- url = "https://cgit.krebsco.de/much";
- hash = "sha256-q65EYO1d3NYVv2NECkGWPb1TyHGdARNi/GX4pgQmljc=";
- rev = "refs/tags/${version}";
- fetchSubmodules = true;
- };
- isLibrary = true;
- isExecutable = true;
- libraryHaskellDepends = [
- aeson attoparsec base base64-bytestring blaze-builder blessings
- bytestring case-insensitive containers data-default deepseq
- directory either email-header filepath friendly-time http-types
- hyphenation linebreak network old-locale optparse-applicative
- process random rosezipper safe scanner servant-server split
- terminal-size text time transformers transformers-compat unix
- vector wai warp
- ];
- executableHaskellDepends = [
- aeson base blessings bytestring case-insensitive containers
- data-default deepseq directory filepath hyphenation linebreak
- process rosezipper safe scanner text time transformers unix
- ];
- license = lib.licenses.mit;
-}
diff --git a/krebs/5pkgs/simple/brain/default.nix b/krebs/5pkgs/simple/brain/default.nix
index bf52da75f..d7e36a527 100644
--- a/krebs/5pkgs/simple/brain/default.nix
+++ b/krebs/5pkgs/simple/brain/default.nix
@@ -1,16 +1,22 @@
-{ pass, runCommand, write, writeDash, ... }:
+{ pkgs }:
-write "brain" {
- "/bin/brain".link = writeDash "brain" ''
+let
+ pass = pkgs.pass.withExtensions (ext: [
+ ext.pass-otp
+ ]);
+in
+
+pkgs.write "brain" {
+ "/bin/brain".link = pkgs.writeDash "brain" ''
PASSWORD_STORE_DIR=$HOME/brain \
- exec ${pass}/bin/pass $@
+ exec ${pass}/bin/pass "$@"
'';
- "/bin/brainmenu".link = writeDash "brainmenu" ''
+ "/bin/brainmenu".link = pkgs.writeDash "brainmenu" ''
PASSWORD_STORE_DIR=$HOME/brain \
- exec ${pass}/bin/passmenu $@
+ exec ${pass}/bin/passmenu "$@"
'';
"/share/bash-completion/completions/brain".link =
- runCommand "brain-completions" {
+ pkgs.runCommand "brain-completions" {
} /* sh */ ''
sed -r '
s/\<_pass?(_|\>)/_brain\1/g
diff --git a/krebs/5pkgs/simple/cabal-read.nix b/krebs/5pkgs/simple/cabal-read.nix
deleted file mode 100644
index 03b42ef2c..000000000
--- a/krebs/5pkgs/simple/cabal-read.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ writeHaskellPackage }:
-
-# Because `sed -n 's/.*\<ghc-options:\s\+\(.*\)/\1/p'` is too simple.
-writeHaskellPackage "cabal-read" {
- executables.ghc-options = {
- extra-depends = ["Cabal"];
- text = /* haskell */ ''
- {-# LANGUAGE CPP #-}
- module Main (main) where
- import Data.List
- import Data.Maybe
- import Distribution.Compiler
- import Distribution.PackageDescription.Parsec
- import Distribution.Types.BuildInfo
- import Distribution.Types.CondTree
- import Distribution.Types.Executable
- import Distribution.Types.GenericPackageDescription
- import Distribution.Types.UnqualComponentName
- import Distribution.Verbosity
- import System.Environment
- main :: IO ()
- main = do
- [path, name] <- getArgs
-
- desc <- readGenericPackageDescription normal path
-
- case lookup (mkUnqualComponentName name) (condExecutables desc) of
- Just exe ->
- putStrLn . intercalate " " . fromMaybe [] . lookup GHC
- #if MIN_VERSION_Cabal(3,0,0)
- . perCompilerFlavorToList
- #endif
- . options . buildInfo . condTreeData $ exe
-
- Nothing ->
- error ("executable " <> name <> " not found in " <> path)
- '';
- };
-}
diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix b/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix
index f60acef08..43cfdb00d 100644
--- a/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix
+++ b/krebs/5pkgs/simple/flameshot-once/flameshot/default.nix
@@ -12,5 +12,6 @@ pkgs.flameshot.overrideAttrs (old: rec {
patches = old.patches or [] ++ [
./flameshot-12.imgur.patch
./flameshot-12.history.patch
+ ./flameshot-12.applauncher.patch
];
})
diff --git a/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch b/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch
new file mode 100644
index 000000000..6937c55b3
--- /dev/null
+++ b/krebs/5pkgs/simple/flameshot-once/flameshot/flameshot-12.applauncher.patch
@@ -0,0 +1,26 @@
+diff --git a/src/tools/launcher/applauncherwidget.cpp b/src/tools/launcher/applauncherwidget.cpp
+index 8a202c89..7427aeb9 100644
+--- a/src/tools/launcher/applauncherwidget.cpp
++++ b/src/tools/launcher/applauncherwidget.cpp
+@@ -20,6 +20,7 @@
+ #include <QProcess>
+ #include <QStandardPaths>
+ #include <QTabWidget>
++#include <stdlib.h>
+
+ namespace {
+ #if defined(Q_OS_WIN)
+@@ -66,7 +67,12 @@ AppLauncherWidget::AppLauncherWidget(const QPixmap& p, QWidget* parent)
+ QDir appsDirLocal(dirLocal);
+ m_parser.processDirectory(appsDirLocal);
+
+- QString dir = QStringLiteral("/usr/share/applications/");
++ const char *USER = secure_getenv("USER");
++ QString dirUser = "/etc/profiles/per-user/" + QString::fromUtf8(USER) + "/share/applications/";
++ QDir appsDirUser(dirUser);
++ m_parser.processDirectory(appsDirUser);
++
++ QString dir = QStringLiteral("/run/current-system/sw/share/applications/");
+ QDir appsDir(dir);
+ m_parser.processDirectory(appsDir);
+ #endif
diff --git a/krebs/5pkgs/simple/krebs-pages/fixtures/index.html b/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
index 68b2cbad6..040580520 100644
--- a/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
+++ b/krebs/5pkgs/simple/krebs-pages/fixtures/index.html
@@ -26,7 +26,7 @@
<body>
<p><a href='https://cgit.krebsco.de/krops/about/'>krops</a></p>
<p><a href='https://github.com/krebs/cholerab/blob/master/thesauron.adoc'>Thesauron</a></p>
- <p><a href='https://nixos.wiki/'>Project: The new NixOS wiki</a></p>
+ <p><a href='https://wiki.nixos.org/'>Project: The new NixOS wiki</a></p>
<p><a target="_blank" href="https://www.amazon.de/?&_encoding=UTF8&tag=krebscode06-21&linkCode=ur2&linkId=d4430b368b8aceeca92101cd4a4cdd1d&camp=1638&creative=6742">Go through this amazon affiliate link and generate krebsgold</a><img src="//ir-de.amazon-adsystem.com/e/ir?t=krebscode06-21&l=ur2&o=3" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
<p> <a href="https://s.click.aliexpress.com/e/_A5luNt" target="_parent">Go through this aliexpress affiliate link and generate krebsgold</a></p>
diff --git a/krebs/5pkgs/simple/pager.nix b/krebs/5pkgs/simple/pager.nix
deleted file mode 100644
index adc2cc67b..000000000
--- a/krebs/5pkgs/simple/pager.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ pkgs }:
-
-pkgs.symlinkJoin {
- name = "pager-wrapper";
- paths = [
- (pkgs.writeDashBin "pager" ''
- # usage: pager {view,shift,shiftview}
- #
- # Environment variables
- #
- # PAGER_NAME (default: Pager)
- # The environment variables specifies the application name under
- # which resources are to be obtained. PAGER_NAME should not contain
- # “.” or “*” characters.
- #
- set -efu
-
- pidfile=$XDG_RUNTIME_DIR/pager.lock
- name=''${PAGER_NAME-Pager}
-
- if test -e "$pidfile" &&
- ${pkgs.procps}/bin/pgrep --pidfile="$pidfile" >/dev/null
- then
- ${pkgs.procps}/bin/pkill --pidfile="$pidfile"
- ${pkgs.coreutils}/bin/rm "$pidfile"
- exit
- fi
-
- echo $$ > "$pidfile"
-
- exec ${pkgs.xterm}/bin/xterm \
- -name "$name" \
- -ti vt340 \
- -xrm '*geometry: 32x10' \
- -xrm '*internalBorder: 2' \
- -e ${pkgs.haskellPackages.desktop-pager}/bin/pager "$@"
- '')
- pkgs.haskellPackages.pager
- ];
-}
diff --git a/krebs/5pkgs/simple/q-power_supply.nix b/krebs/5pkgs/simple/q-power_supply.nix
deleted file mode 100644
index ef133bfbd..000000000
--- a/krebs/5pkgs/simple/q-power_supply.nix
+++ /dev/null
@@ -1,146 +0,0 @@
-{ gawk, gnused, writeDashBin }:
-
-writeDashBin "q-power_supply" ''
- power_supply() {(
- set -efu
- uevent=$1
- eval "$(${gnused}/bin/sed -n '
- s/^\([A-Z_]\+=[0-9A-Za-z_-]*\)$/export \1/p
- ' $uevent)"
- case $POWER_SUPPLY_NAME in
- AC|Mains)
- exit # not battery
- ;;
- esac
- exec </dev/null
- exec ${gawk}/bin/awk '
- function die(s) {
- printf "%s: %s\n", name, s
- exit 1
- }
-
- function print_hm(h, m) {
- m = (h - int(h)) * 60
- return sprintf("%dh%dm", h, m)
- }
-
- function print_bar(r) {
- return \
- (r >= .1 ? bar_gradient[0] : bar_background) "■" \
- (r >= .2 ? bar_gradient[1] : bar_background) "■" \
- (r >= .3 ? bar_gradient[2] : bar_background) "■" \
- (r >= .4 ? bar_gradient[3] : bar_background) "■" \
- (r >= .5 ? bar_gradient[4] : bar_background) "■" \
- (r >= .6 ? bar_gradient[5] : bar_background) "■" \
- (r >= .7 ? bar_gradient[6] : bar_background) "■" \
- (r >= .8 ? bar_gradient[7] : bar_background) "■" \
- (r >= .9 ? bar_gradient[8] : bar_background) "■" \
- (r >= 1 ? bar_gradient[9] : bar_background) "■" \
- sgr()
- }
-
- function rgb(r, g, b) {
- return sgr("38;2;" r ";" g ";" b)
- }
-
- function sgr(p) {
- return "\x1b[" p "m"
- }
-
- BEGIN {
- bar_gradient[0] = rgb(216, 100, 83)
- bar_gradient[1] = rgb(210, 113, 72)
- bar_gradient[2] = rgb(201, 125, 65)
- bar_gradient[3] = rgb(190, 137, 63)
- bar_gradient[4] = rgb(178, 148, 67)
- bar_gradient[5] = rgb(166, 158, 75)
- bar_gradient[6] = rgb(153, 167, 88)
- bar_gradient[7] = rgb(140, 174, 104)
- bar_gradient[8] = rgb(127, 181, 122)
- bar_gradient[9] = rgb(116, 187, 141)
- bar_background = rgb( 64, 64, 64)
- }
-
- END {
- name = ENVIRON["POWER_SUPPLY_NAME"]
- status = ENVIRON["POWER_SUPPLY_STATUS"]
-
- charge_unit = "Ah"
- charge_now = ENVIRON["POWER_SUPPLY_CHARGE_NOW"] / 10^6
- charge_full = ENVIRON["POWER_SUPPLY_CHARGE_FULL"] / 10^6
-
- current_unit = "A"
- current_now = ENVIRON["POWER_SUPPLY_CURRENT_NOW"] / 10^6
-
- energy_unit = "Wh"
- energy_now = ENVIRON["POWER_SUPPLY_ENERGY_NOW"] / 10^6
- energy_full = ENVIRON["POWER_SUPPLY_ENERGY_FULL"] / 10^6
-
- power_unit = "W"
- power_now = ENVIRON["POWER_SUPPLY_POWER_NOW"] / 10^6
-
- voltage_unit = "V"
- voltage_now = ENVIRON["POWER_SUPPLY_VOLTAGE_NOW"] / 10^6
- voltage_min_design = ENVIRON["POWER_SUPPLY_VOLTAGE_MIN_DESIGN"] / 10^6
-
- #printf "charge_now: %s\n", charge_now
- #printf "charge_full: %s\n", charge_full
- #printf "current_now: %s\n", current_now
- #printf "energy_now: %s\n", energy_now
- #printf "energy_full: %s\n", energy_full
- #printf "energy_full: %s\n", ENVIRON["POWER_SUPPLY_ENERGY_FULL"]
- #printf "energy_full: %s\n", ENVIRON["POWER_SUPPLY_ENERGY_FULL"] / 10^6
- #printf "power_now: %s\n", power_now
- #printf "voltage_now: %s\n", voltage_now
-
- if (current_now == 0 && voltage_now != 0) {
- current_now = power_now / voltage_now
- }
- if (power_now == 0) {
- power_now = current_now * voltage_now
- }
- if (charge_now == 0 && voltage_min_design != 0) {
- charge_now = energy_now / voltage_min_design
- }
- if (energy_now == 0) {
- energy_now = charge_now * voltage_min_design
- }
- if (charge_full == 0 && voltage_min_design != 0) {
- charge_full = energy_full / voltage_min_design
- }
- if (energy_full == 0) {
- energy_full = charge_full * voltage_min_design
- }
-
- if (charge_now == 0 || charge_full == 0) {
- die("unknown charge")
- }
-
- charge_ratio = charge_now / charge_full
-
- out = out name
- out = out sprintf(" %s", print_bar(charge_ratio))
- out = out sprintf(" %d%", charge_ratio * 100)
- out = out sprintf(" %.2f%s", charge_now, charge_unit)
- if (current_now != 0) {
- out = out sprintf("/%.1f%s", current_now, current_unit)
- }
- out = out sprintf(" %d%s", energy_full, energy_unit)
- if (power_now != 0) {
- out = out sprintf("/%.1f%s", power_now, power_unit)
- }
- if (current_now != 0) {
- out = out sprintf(" %s", print_hm(charge_now / current_now))
- }
-
- out = out " " status
-
- print out
- }
- '
- )}
-
- for uevent in /sys/class/power_supply/*/uevent; do
- power_supply "$uevent" || :
- done
-''