diff options
author | tv <tv@krebsco.de> | 2020-10-03 13:44:30 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2020-10-03 13:44:30 +0200 |
commit | d1e52425e0d5d79a33b11c92cc2afb498075d953 (patch) | |
tree | 29277982f014eaae680e006b6afc7fdb42e8d9b2 /makefu | |
parent | 654f64f05935a69607a540f2e8d15619cee9e15e (diff) | |
parent | 7e7499d86302d261c8f8404fb34f2ac091318d0e (diff) |
Merge remote-tracking branch 'prism/master'
Diffstat (limited to 'makefu')
-rw-r--r-- | makefu/1systems/wbob/config.nix | 4 | ||||
-rw-r--r-- | makefu/2configs/bureautomation/kalauerbot.nix | 17 | ||||
-rw-r--r-- | makefu/2configs/deployment/docker/template.md | 23 | ||||
-rw-r--r-- | makefu/2configs/ham/default.nix | 13 | ||||
-rw-r--r-- | makefu/2configs/ham/device_tracker/openwrt.nix | 10 | ||||
-rw-r--r-- | makefu/2configs/home-manager/cli.nix | 25 | ||||
-rw-r--r-- | makefu/2configs/hw/switch.nix | 6 | ||||
-rw-r--r-- | makefu/2configs/stats/server.nix | 33 | ||||
-rw-r--r-- | makefu/2configs/tools/consoles.nix | 1 | ||||
-rw-r--r-- | makefu/2configs/tools/dev.nix | 3 | ||||
-rw-r--r-- | makefu/5pkgs/awesomecfg/default.nix | 4 | ||||
-rw-r--r-- | makefu/5pkgs/awesomecfg/full.cfg | 21 | ||||
-rw-r--r-- | makefu/5pkgs/chapter-marker/default.nix | 9 | ||||
-rw-r--r-- | makefu/5pkgs/kalauerbot/default.nix | 18 | ||||
-rw-r--r-- | makefu/5pkgs/kalauerbot/matrixbot.patch | 12 | ||||
-rw-r--r-- | makefu/5pkgs/kalauerbot/python-matrixbot.nix | 31 | ||||
-rw-r--r-- | makefu/5pkgs/kalauerbot/translate.patch | 17 | ||||
-rw-r--r-- | makefu/5pkgs/nsrenamer/default.nix | 3 | ||||
-rwxr-xr-x | makefu/5pkgs/nsrenamer/nsrenamer.sh | 58 | ||||
-rw-r--r-- | makefu/5pkgs/tt-rss/default.nix | 25 |
20 files changed, 252 insertions, 81 deletions
diff --git a/makefu/1systems/wbob/config.nix b/makefu/1systems/wbob/config.nix index 9d0c7af61..32dedbde2 100644 --- a/makefu/1systems/wbob/config.nix +++ b/makefu/1systems/wbob/config.nix @@ -26,7 +26,8 @@ in { # <stockholm/makefu/2configs/audio/jack-on-pulse.nix> # <stockholm/makefu/2configs/audio/realtime-audio.nix> # <stockholm/makefu/2configs/vncserver.nix> - <stockholm/makefu/2configs/logging/server.nix> + ## no need for dns logs anymore + # <stockholm/makefu/2configs/logging/server.nix> # Services # <stockholm/makefu/2configs/hydra/stockholm.nix> @@ -48,6 +49,7 @@ in { <stockholm/makefu/2configs/bureautomation> # new hass entry point <stockholm/makefu/2configs/bureautomation/led-fader.nix> + <stockholm/makefu/2configs/bureautomation/kalauerbot.nix> # <stockholm/makefu/2configs/bureautomation/visitor-photostore.nix> # <stockholm/makefu/2configs/bureautomation/mpd.nix> #mpd is only used for TTS, this is the web interface <stockholm/makefu/2configs/mqtt.nix> diff --git a/makefu/2configs/bureautomation/kalauerbot.nix b/makefu/2configs/bureautomation/kalauerbot.nix new file mode 100644 index 000000000..d61b8885e --- /dev/null +++ b/makefu/2configs/bureautomation/kalauerbot.nix @@ -0,0 +1,17 @@ +{ config, lib, pkgs, ... }: + +{ + systemd.services.kalauerbot = { + description = "Kalauerbot"; + after = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + environment = import <secrets/bureautomation/citadel.nix>; + serviceConfig = { + DynamicUser = true; + StateDirectory = "kalauerbot"; + WorkingDirectory = "/var/lib/kalauerbot"; + ExecStart = "${pkgs.kalauerbot}/bin/kalauerbot"; + PrivateTmp = true; + }; + }; +} diff --git a/makefu/2configs/deployment/docker/template.md b/makefu/2configs/deployment/docker/template.md index a26b2f042..690ce236e 100644 --- a/makefu/2configs/deployment/docker/template.md +++ b/makefu/2configs/deployment/docker/template.md @@ -1,15 +1,20 @@ # BGT<NUMBER> -1. studio-link aufnehmen drücken (wichtig) - - markus 6407eb63@studio-link.de - - Felix1 1f1021b2@studio-link.de - - L33tFelix 4d47a82a@studio-link.de - - Ingo 03b33b4a@studio-link.de +1. studio-link aufnehmen drücken, schauen ob file größer wird (wichtig) + - markus 6407eb63@studio-link.de + - Felix1 1f1021b2@studio-link.de + - L33tFelix 842f85eb@studio-link.de + - Ingo 03b33b4a@studio-link.de 2. audiocity starten, 48000Hz einstellen, Audio-Device checken und aufnehmen drücken (wichtig) + * alternativ: + `$ pacmd list-sources | grep -e device.string -e 'name:' # keins der "monitor" devices` + `$ parecord --channels=1 -d alsa_input.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00.analog-stereo bgt.wav` 3. obs starten und aufnehmen drücken (eher unwichtig) -4. darkice starten (wichtig) -4. klatschen -5. Hallo und herzlich Willkommen +5. darkice starten (wichtig) +6. klatschen +7. Hallihallo und Herzlich Willkommen +8. chapter-marker starten mit ctrl-u auf "H" von "Halli" (wichtig) +9. Blast markieren und ctrl-j drücken für neuen Eintrag ## Vorschläge ### Backlog von Picks und Lesefoo aus der letzten Woche @@ -31,3 +36,5 @@ ## Lesefoo ## Picks + +## Ende diff --git a/makefu/2configs/ham/default.nix b/makefu/2configs/ham/default.nix index c7e8733b7..8311a1a76 100644 --- a/makefu/2configs/ham/default.nix +++ b/makefu/2configs/ham/default.nix @@ -39,6 +39,15 @@ in { ]; }; config = { + influxdb = { + database = "ham"; + host = "localhost:8086"; + tags = { + instance = "omo"; + source = "hass"; + }; + }; + config = {}; input_select = zigbee.input_select; # dict timer = zigbee.timer // kurzzeitwecker.timer; # dict @@ -91,6 +100,7 @@ in { ]; sun.elevation = 247; recorder = {}; + device_tracker = (import ./device_tracker/openwrt.nix); media_player = [ { platform = "FireTV Stick kodi"; host = firetv_stick; @@ -128,7 +138,7 @@ in { }; luftdaten = { show_on_map = true; - sensor_id = 679; + sensor_id = 10529; sensors.monitored_conditions = [ "P1" "P2" ]; }; #binary_sensor = @@ -162,4 +172,5 @@ in { configDir = hassdir; }; + state = [ "/var/lib/hass/known_devices.yaml" ]; } diff --git a/makefu/2configs/ham/device_tracker/openwrt.nix b/makefu/2configs/ham/device_tracker/openwrt.nix new file mode 100644 index 000000000..8173fcfcb --- /dev/null +++ b/makefu/2configs/ham/device_tracker/openwrt.nix @@ -0,0 +1,10 @@ +[ + { platform = "luci"; + host = "192.168.1.5"; + username = "root"; + password = import <secrets/hass/router.nix>; + interval_seconds = 30; # instead of 12seconds + consider_home = 300; # 5 minutes timeout + new_device_defaults.track_new_devices = true; + } +] diff --git a/makefu/2configs/home-manager/cli.nix b/makefu/2configs/home-manager/cli.nix index 5d5673b81..38d02424c 100644 --- a/makefu/2configs/home-manager/cli.nix +++ b/makefu/2configs/home-manager/cli.nix @@ -2,31 +2,6 @@ imports = [ ./zsh.nix ]; home-manager.users.makefu = { programs.direnv = { - stdlib = '' -use_nix() { - local cache=".direnv.$(nixos-version --hash)" - - if [[ ! -e "$cache" ]] || \ - [[ "$HOME/.direnvrc" -nt "$cache" ]] || \ - [[ ".envrc" -nt "$cache" ]] || \ - [[ "default.nix" -nt "$cache" ]] || \ - [[ "shell.nix" -nt "$cache" ]]; - then - local tmp="$(mktemp "$${cache}.tmp-XXXXXXXX")" - trap "rm -rf '$tmp' >/dev/null" EXIT - nix-shell --show-trace "$@" --run 'direnv dump' > "$tmp" && \ - mv "$tmp" "$cache" - fi - - direnv_load cat "$cache" - - if [[ $# = 0 ]]; then - watch_file default.nix - watch_file shell.nix - rm direnv.* 2>/dev/null - fi -} -''; enableZshIntegration = true; }; }; diff --git a/makefu/2configs/hw/switch.nix b/makefu/2configs/hw/switch.nix index d46e8cf3f..79de7ffb1 100644 --- a/makefu/2configs/hw/switch.nix +++ b/makefu/2configs/hw/switch.nix @@ -2,9 +2,11 @@ { - users.extraUsers.${config.krebs.build.user.name}.extraGroups = [ "plugdev" ]; - + users.users.makefu.extraGroups = [ "plugdev" ]; + users.groups.plugdev = {}; services.udev.extraRules = '' SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0664", GROUP="plugdev" + SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="27e2", SYMLINK+="switch-%k", MODE="0664", GROUP="plugdev" + SUBSYSTEM=="usb", ATTR{idVendor}=="057e", ATTR{idProduct}=="3000", SYMLINK+="switch-%k", MODE="0664", GROUP="plugdev" ''; } diff --git a/makefu/2configs/stats/server.nix b/makefu/2configs/stats/server.nix index bb8fd1750..a2d0693ab 100644 --- a/makefu/2configs/stats/server.nix +++ b/makefu/2configs/stats/server.nix @@ -41,40 +41,7 @@ in { bind-address = ":${toString collectd-port}"; }]; }; - krebs.kapacitor = - let - echoToIrc = pkgs.writeDash "echo_irc" '' - set -euf - data="$(${pkgs.jq}/bin/jq -r .message)" - export LOGNAME=${irc-nick} - ${pkgs.irc-announce}/bin/irc-announce \ - ${irc-server} 6667 ${irc-nick} \#noise "$data" >/dev/null - ''; - in { - enable = true; - alarms = { - cpu_deadman.database = db; - cpu_deadman.text = '' - var data = batch - |query(${"'''"} - SELECT mean("value") AS mean - FROM "collectd_db"."default"."cpu_value" - WHERE "type_instance" = 'idle' AND "type" = 'percent' fill(0) - ${"'''"}) - .period(10m) - .every(1m) - .groupBy('host') - data |alert() - .crit(lambda: "mean" < 50) - .stateChangesOnly() - .exec('${echoToIrc}') - data |deadman(1.0,5m) - .stateChangesOnly() - .exec('${echoToIrc}') - ''; - }; - }; networking.firewall.extraCommands = '' iptables -A INPUT -i retiolum -p udp --dport ${toString collectd-port} -j ACCEPT iptables -A INPUT -i retiolum -p tcp --dport ${toString influx-port} -j ACCEPT diff --git a/makefu/2configs/tools/consoles.nix b/makefu/2configs/tools/consoles.nix index e54ff4ff5..a4c474c5b 100644 --- a/makefu/2configs/tools/consoles.nix +++ b/makefu/2configs/tools/consoles.nix @@ -7,5 +7,6 @@ cue2pops nx_game_info hactool + nsrenamer ]; } diff --git a/makefu/2configs/tools/dev.nix b/makefu/2configs/tools/dev.nix index 276ed6cdc..2acdcf69c 100644 --- a/makefu/2configs/tools/dev.nix +++ b/makefu/2configs/tools/dev.nix @@ -13,8 +13,7 @@ gi flashrom mosquitto - nodemcu-uploader - esptool + esphome # nix related nix-index nix-review diff --git a/makefu/5pkgs/awesomecfg/default.nix b/makefu/5pkgs/awesomecfg/default.nix index 1ae2f50d9..acbe61f3f 100644 --- a/makefu/5pkgs/awesomecfg/default.nix +++ b/makefu/5pkgs/awesomecfg/default.nix @@ -6,15 +6,17 @@ , blueman , clipit , flameshot +, chapter-marker , modkey ? "Mod4" , locker? "${pkgs.xlock}/bin/xlock -mode blank" , ... }: { - # replace: @alsaUtils@ @xlockmore@ @xbacklight@ @modkey@ + # replace: @alsaUtils@ @xlockmore@ @xbacklight@ @modkey@ @chapter-marker@ full = lib.makeOverridable pkgs.substituteAll { name = "awesome_full_config"; inherit alsaUtils locker xbacklight modkey networkmanagerapplet blueman clipit flameshot ; + chaptermarker = chapter-marker; isExecutable = false; src = ./full.cfg; }; diff --git a/makefu/5pkgs/awesomecfg/full.cfg b/makefu/5pkgs/awesomecfg/full.cfg index d96b61ad6..86b401cfa 100644 --- a/makefu/5pkgs/awesomecfg/full.cfg +++ b/makefu/5pkgs/awesomecfg/full.cfg @@ -376,6 +376,12 @@ globalkeys = awful.util.table.join( awful.key({ }, "XF86AudioMute", function () awful.util.spawn("@alsaUtils@/bin/amixer -q -D default sset Master toggle", false) end), + -- chapter-marker + awful.key({ "Control" }, "u", function () awful.spawn("@chaptermarker@/bin/chapter-start") end, + {description = "start the chapter marker",}), + awful.key({ "Control" }, "j", function () awful.spawn("@chaptermarker@/bin/chapter-mark") end, + {description = "create a chapter mark",}), + -- Prompt awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, {description = "run prompt", group = "launcher"}), @@ -492,9 +498,16 @@ awful.rules.rules = { properties = { floating = true } }, --{ rule = { class = "gimp" }, -- properties = { floating = true } }, - -- Set Firefox to always map on tags number 2 of screen 1. - -- { rule = { class = "Firefox" }, - -- properties = { tag = tags[1][2] } }, + { rule = { class = "Firefox" }, + properties = { tag = tags[3] } }, + { rule = { class = "signal-desktop" }, + properties = { tag = tags[4] } }, + { rule = { class = "telegram-desktop" }, + properties = { tag = tags[4] } }, + { rule = { class = "mutt" }, + properties = { tag = tags[5] } }, + { rule = { class = "mosh" }, + properties = { tag = tags[2] } }, } -- }}} @@ -569,7 +582,7 @@ local os = { -- {{{ autostart do - awful.spawn("urxvt", { tag = tags[1] }) -- dev shell + -- awful.spawn("urxvt", { tag = tags[1] }) -- dev shell awful.spawn("urxvt -e mosh makefu@gum.i", { tag = tags[2] }) awful.spawn("firefox", { tag = tags[3] }) awful.spawn("telegram-desktop", { tag = tags[4] }) diff --git a/makefu/5pkgs/chapter-marker/default.nix b/makefu/5pkgs/chapter-marker/default.nix index fe3e48142..5ffb63ae9 100644 --- a/makefu/5pkgs/chapter-marker/default.nix +++ b/makefu/5pkgs/chapter-marker/default.nix @@ -1,4 +1,4 @@ -{ coreutils, fetchFromGitHub, makeWrapper, xdotool, stdenv, ... }: +{ coreutils, fetchFromGitHub, makeWrapper, xclip, libnotify, stdenv, ... }: stdenv.mkDerivation rec { name = "chapter-marker-${version}"; @@ -6,8 +6,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "makefu"; repo = "chapter-marker"; - rev = "7602b611fb3d67fdb8a86db23220074dfa9dfa1e"; - sha256 = "0cwh650c3qhdrcvrqfzgrwpsnj4lbq64fw2sfwvnbxz94b4q36av"; + rev = "71b9bb8bc4d6fa87de6bea8f42d5486d05cf5443"; + sha256 = "13cvk24pwwyv9i21h57690s5niwkcrcvn8l24zfxwbgq0wwzw38x"; }; buildInputs = [ makeWrapper ]; @@ -16,7 +16,8 @@ stdenv.mkDerivation rec { let path = stdenv.lib.makeBinPath [ coreutils - xdotool + libnotify + xclip ]; in '' diff --git a/makefu/5pkgs/kalauerbot/default.nix b/makefu/5pkgs/kalauerbot/default.nix new file mode 100644 index 000000000..2cecbc3f2 --- /dev/null +++ b/makefu/5pkgs/kalauerbot/default.nix @@ -0,0 +1,18 @@ +{ stdenv, python3, fetchgit }: +python3.pkgs.buildPythonPackage rec { +name = "kalauerbot"; +rev = "08d98aa"; + src = fetchgit { + url = "http://cgit.euer.krebsco.de/kalauerbot"; + inherit rev; + sha256 = "017hh61smgq4zsxd10brgwmykwgwabgllxjs31xayvs1hnqmkv2v"; + }; + propagatedBuildInputs = with python3.pkgs;[ + (callPackage ./python-matrixbot.nix {}) + (stdenv.lib.overrideDerivation googletrans (self: { + patches = [ ./translate.patch ]; + })) + ]; + checkInputs = [ python3.pkgs.black ]; +} + diff --git a/makefu/5pkgs/kalauerbot/matrixbot.patch b/makefu/5pkgs/kalauerbot/matrixbot.patch new file mode 100644 index 000000000..2b9bbbea1 --- /dev/null +++ b/makefu/5pkgs/kalauerbot/matrixbot.patch @@ -0,0 +1,12 @@ +diff --git a/matrixbot/matrixbot.py b/matrixbot/matrixbot.py +index 8e5598c..d8c23d2 100644 +--- a/matrixbot/matrixbot.py ++++ b/matrixbot/matrixbot.py +@@ -51,7 +51,6 @@ class MatrixBot: + self.user = None + if self.token is not None and self.user_id is not None: + self.user = self.client.get_user(self.user_id) +- self.user.set_display_name(self.display_name) + self.init_rooms(self.client.rooms) + self.invite_listener = self.client.add_invite_listener(self.handle_invite) + self.cache = Cache(dbfile=cache_db) diff --git a/makefu/5pkgs/kalauerbot/python-matrixbot.nix b/makefu/5pkgs/kalauerbot/python-matrixbot.nix new file mode 100644 index 000000000..7bc5aa7f3 --- /dev/null +++ b/makefu/5pkgs/kalauerbot/python-matrixbot.nix @@ -0,0 +1,31 @@ +{ lib +, buildPythonPackage +, fetchPypi +, markdown +, matrix-client +}: + +buildPythonPackage rec { + pname = "python-matrixbot"; + version = "0.0.7"; + CI_COMMIT_TAG = version; + + #src = ./python-matrixbot; + src = fetchPypi { + inherit pname version; + sha256 = "9412981b14ff3ab7ffbb1bfc1691758113ab8d71f731b3093d8808c286b69c71"; + }; + patches = [ ./matrixbot.patch ]; + + propagatedBuildInputs = [ + markdown + matrix-client + ]; + + meta = with lib; { + description = "A basic bot for Matrix"; + homepage = https://gitlab.com/gibberfish/python-matrixbot; + license = licenses.mit; + # maintainers = [ maintainers. ]; + }; +} diff --git a/makefu/5pkgs/kalauerbot/translate.patch b/makefu/5pkgs/kalauerbot/translate.patch new file mode 100644 index 000000000..6ff820726 --- /dev/null +++ b/makefu/5pkgs/kalauerbot/translate.patch @@ -0,0 +1,17 @@ +diff --git a/googletrans/client.py b/googletrans/client.py +index 89c2237..c203b44 100644 +--- a/googletrans/client.py ++++ b/googletrans/client.py +@@ -190,6 +190,13 @@ class Translator(object): + pass + if not PY3 and isinstance(pron, unicode) and isinstance(origin, str): # pragma: nocover + origin = origin.decode('utf-8') ++ ++ if pron is None: ++ try: ++ pron = data[0][2][2] ++ except: # pragma: nocover ++ pass ++ + if dest in EXCLUDES and pron == origin: + pron = translated diff --git a/makefu/5pkgs/nsrenamer/default.nix b/makefu/5pkgs/nsrenamer/default.nix new file mode 100644 index 000000000..16b9a4f20 --- /dev/null +++ b/makefu/5pkgs/nsrenamer/default.nix @@ -0,0 +1,3 @@ +{ pkgs,... }: +# TODO: dependencies: coreutils, nx_game_info, +pkgs.writeScriptBin "nsrenamer" (builtins.readFile ./nsrenamer.sh) diff --git a/makefu/5pkgs/nsrenamer/nsrenamer.sh b/makefu/5pkgs/nsrenamer/nsrenamer.sh new file mode 100755 index 000000000..16aec3113 --- /dev/null +++ b/makefu/5pkgs/nsrenamer/nsrenamer.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +set -euf +indir=$(dirname "$1") +inname=$(basename "$1") +out=$(nxgameinfo_cli "$1") +ext=${1##*.} +id=$(awk -F: '/├ Title ID:/{print $2}' <<<"$out" |xargs) +baseid=$(awk -F: '/Base Title ID:/{print $2}' <<<"$out" |xargs) +version=$(awk -F: '/├ Version:/{print $2}' <<<"$out" |xargs) +name=$(awk -F: '/Title Name/{print $2}' <<<"$out" | sed "s/[:']//g" | xargs ) +type=$(awk -F: '/Type:/{print $2}' <<<"$out" | xargs) + +! test -n "$id" && echo "Title ID cannot be empty!" && exit 1 +! test -n "$type" && echo "type cannot be empty!" && exit 1 + +if test "$type" == Base;then + ! test -n "$name" && echo "Title Name cannot be empty!" && exit 1 + NAME="$name [$id][v$version].$ext" +elif test "$type" == Update;then + ! test -n "$name" && echo "Title Name cannot be empty!" && exit 1 + ! test -n "$version" && echo "Version cannot be empty!" && exit 1 + NAME="$name [UPD][$id][v$version].$ext" +elif test "$type" == DLC;then + dlcname=$(jq -r --arg id "$id" '.[$id].name' < ~/.switch/titles.US.en.json | sed "s/[:']//g") + if test -n "$dlcname" ;then + NAME="$dlcname [DLC][$id][v$version].$ext" + else + ! test -n "$name" && echo "dlcname cannot be found in titles.US.en.json and $name is empty!" && exit 1 + NAME="$dlcname [DLC][$id][v$version].$ext" + fi +else + echo "unknown type '$type'" + exit 1 +fi +newname=$indir/$NAME + +if test "$NAME" == "${inname}";then + echo "name didn't change,doing nothing" + exit 0 +fi +if test -e "$newname" ;then + echo "'$NAME' already exists, will not override" + exit 1 +fi + +if test -n "${FORCE:-}" ;then + CONFIRM=y +else + read -p "rename '$inname' to '$NAME' - [y/N]" CONFIRM +fi + +if test -n "${FORCE:-}" -o "$CONFIRM" == "y" -o "$CONFIRM" == "Y";then + mv -nv "$1" "$newname" +else + echo "bailing out" + exit 1 +fi + diff --git a/makefu/5pkgs/tt-rss/default.nix b/makefu/5pkgs/tt-rss/default.nix new file mode 100644 index 000000000..4907a73a5 --- /dev/null +++ b/makefu/5pkgs/tt-rss/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "tt-rss"; + version = "2020-09-23"; + rev = "d0ed7890df"; + + src = fetchurl { + url = "https://git.tt-rss.org/git/tt-rss/archive/${rev}.tar.gz"; + sha256 = "1b2fczd41bqg9bq37r99svrqswr9qrp35m6gn3nz032yqcwc22ij"; + }; + + installPhase = '' + mkdir $out + cp -ra * $out/ + ''; + + meta = with stdenv.lib; { + description = "Web-based news feed (RSS/Atom) aggregator"; + license = licenses.gpl2Plus; + homepage = "https://tt-rss.org"; + maintainers = with maintainers; [ globin zohl ]; + platforms = platforms.all; + }; +} |