1
0
mirror of https://github.com/kmein/niveum synced 2026-03-20 12:01:06 +01:00

164 Commits

Author SHA1 Message Date
b9149c8d9a chore: meddl -> radio 2021-01-31 13:55:41 +01:00
36502ecfd8 feat: lyrikline and lyrik (from youtube) stream 2021-01-31 13:54:52 +01:00
43fd4bbf19 feat: stream meddl to radio.kierán.de 2021-01-31 10:08:09 +01:00
37e851cc50 feat(zaatar): add wake news 2021-01-30 20:25:57 +01:00
018f79f88d feat(makanek): host drachenlord radio and stream from zaatar
the streaming links from antenne-asb.ga serve OGG but they say they
serve MP3. so mpd gets confused.
therefore regularly fetches song urls from antenne-asb.ga, queues, and
broadcasts them.
2021-01-30 20:24:43 +01:00
6843ac90b5 feat(pls): notify in irc channel 2021-01-27 09:56:46 +01:00
afb69bf334 feat(zaatar): add kiosk for controlling the radio 2021-01-27 09:19:21 +01:00
ea57f539b0 feat(zaatar): stream mpd via http, proxy control panel and stream via nginx 2021-01-27 09:13:29 +01:00
3d10ac09ab fix(streams): orthography 2021-01-27 08:21:12 +01:00
38f088d9e5 feat(zaatar): clean up mpd 2021-01-27 00:03:32 +01:00
422f2b8676 feat(zaatar): mpd.fm 2021-01-26 23:05:19 +01:00
7c1ca72a29 feat(zaatar): no need for ncmpcpp when using mpd-fm 2021-01-26 23:04:22 +01:00
f171284b71 feat: script for handling lassulus radio 2021-01-26 23:01:31 +01:00
ca50ba931a fix: use stable nix to avoid ETag error 2021-01-26 23:00:16 +01:00
63ad607d46 feat: power-action to suspend on low battery 2021-01-26 22:59:57 +01:00
e553f1bcda feat(zaatar): remove kiosk, use windows instead of panes on music tmux 2021-01-25 18:39:06 +01:00
8923f7a2c9 chore: update 2021-01-25 18:38:29 +01:00
07024df1c9 feat(zaatar): add worldradio 2021-01-23 17:12:08 +01:00
cb9bcf2d1d feat(playlists): caster-fm shortcut 2021-01-23 17:11:33 +01:00
7aeda72026 feat(playlists): add antenne asb 2021-01-23 14:05:58 +01:00
95c93cc565 feat(traadfri): add desk 2021-01-21 09:58:51 +01:00
c9979de250 feat(zaatar): run audio control tmux session 2021-01-20 07:53:46 +01:00
7889d56b99 feat(i3): add @lassulus kaomoji to emoji menu 2021-01-20 07:53:46 +01:00
03be9636ad fix: disable dpms and blanking 2021-01-20 07:53:46 +01:00
5d36ed4cd6 fix: disable nextcloud client 2021-01-20 07:53:46 +01:00
c33446aee3 chore: update 2021-01-20 07:53:46 +01:00
fe7744bedb feat: pup 2021-01-20 07:53:46 +01:00
9673e9d3e8 feat(haskell): ormolu 2021-01-15 18:37:37 +01:00
5175f3f819 feat: use newest zoom-us 2021-01-15 14:09:06 +01:00
5923f3341a fix(nextcloud): force ssl, otherwise the acme challenge wont work 2021-01-15 14:08:45 +01:00
901cf6f711 fix: codimd -> hedgedoc 2021-01-15 10:05:12 +01:00
859e536159 chore: update (remove firefox temporarily) 2021-01-13 10:07:14 +01:00
4ea18d0152 feat(wifi): update filli 2021-01-06 22:09:39 +01:00
c7c7017070 fix(much): arrow keys 2021-01-06 22:09:29 +01:00
7c80f160db fix(retiolum): dont reload on change 2021-01-01 11:58:16 +01:00
6fce803c70 chore: update 2021-01-01 11:55:05 +01:00
a6bff424b0 feat(nix): enable flakes 2021-01-01 02:48:37 +01:00
d61b17c656 Revert "feat(matterbridge): add nixos-rc3 bridge"
This reverts commit 9c1bf37d50c481ffbbe252da7ee1cf2ed3620628.
2021-01-01 02:46:30 +01:00
cbdf8ef038 feat(wifi): add vodafone-8012 2021-01-01 02:46:30 +01:00
876dbe785b feat(mime): set pcmanfm as file manager, and libreoffice as office 2021-01-01 02:46:30 +01:00
fb4a14a6bf feat(matterbridge): add nixos-rc3 bridge 2021-01-01 02:46:30 +01:00
02977ea936 feat: replace xournal by &++ 2021-01-01 02:46:30 +01:00
dcca34d5c1 feat(hu-berlin): hu-ip script 2021-01-01 02:46:30 +01:00
8bd8ec611f fix(htop): dont show threads 2020-12-22 09:29:13 +01:00
96a67a937e feat(retiolum): update tinc module to add hosts declaratively 2020-12-21 14:49:45 +01:00
fb85c29651 fix(retiolum): depend on palos retiolum again 2020-12-20 19:45:36 +01:00
3344af5339 feat: pcmanfm instead of nautilus 2020-12-20 19:22:15 +01:00
fdfd8a687f feat(neovim): add vim as wrapper, so that ghci can find it 2020-12-20 19:21:44 +01:00
e804da180d chore: update 2020-12-20 19:21:18 +01:00
2af8e1aa86 fix(spotifyd): always restart 2020-12-20 19:21:09 +01:00
10224de58a feat(hu-berlin): add network filesystems 2020-12-18 10:27:34 +01:00
2bf095c553 feat(tinc): reaload if changed (stolen from @Mic92) 2020-12-16 22:25:27 +01:00
a7d994abe7 feat: devanagari script 2020-12-16 22:25:04 +01:00
680997fb12 feat(i3): change klem to Meta+F12 2020-12-16 22:24:50 +01:00
a2d1ab6f53 feat(wallpaper): use lassulus worldmap with astronomy 2020-12-16 22:24:32 +01:00
52761a13e2 feat(wallpaper): use lassulus worldmap 2020-12-15 17:28:41 +01:00
98f7de9680 fix(mpv): only watch best quality 2020-12-14 07:45:08 +01:00
72f04f9391 feat: disable xautolock, lock only manually 2020-12-13 20:08:26 +01:00
10ad21a39c chore: update 2020-12-13 09:40:58 +01:00
5c9e25f27a fix(todo.txt): dont respect git repos 2020-12-12 17:36:19 +01:00
4b563ddf00 feat(vim): add nim.vim 2020-12-12 17:35:28 +01:00
d041e6fa52 feat(mail): meinhaki 2020-12-11 18:43:54 +01:00
8749646101 fix: aliases 2020-12-11 18:43:41 +01:00
960311c65f feat(matterbridge): rename irc bot to ponte 2020-12-03 10:09:44 +01:00
a70f05239a feat(moodle-dl): download descriptions 2020-12-03 10:09:01 +01:00
d716e5716f feat: hc 2020-12-03 10:08:47 +01:00
2781930ecf feat: access ympd via nginx with password auth 2020-11-25 10:07:26 +01:00
f34a938968 feat(git): auto stash on merge and rebase 2020-11-24 08:49:21 +01:00
080439604b feat(playlists): add youtube lo-fi 2020-11-24 08:45:59 +01:00
72df03fbf6 chore: format 2020-11-24 08:45:41 +01:00
b799e7c26f feat: remove exa
sometimes, seldomly, it failed. but an `ls` should never(!) fail
2020-11-24 08:45:41 +01:00
2a450e2f36 feat(moodle-dl): sync via syncthing instead of sshfs 2020-11-23 15:29:39 +01:00
485e07ec9e feat(i3): move windows around quicker 2020-11-23 11:59:10 +01:00
dcf3452353 feat(playlists): reactivate di.fm 2020-11-23 11:58:36 +01:00
edc8e83594 feat(moodle-dl): sync via syncthing instead of sshfs 2020-11-23 11:58:24 +01:00
01bc8178ad chore: update 2020-11-23 11:57:35 +01:00
eff303a854 feat(urlwatch): give up tellonym 2020-11-20 07:48:31 +01:00
bc992a170c feat(moodle): watch FSR, improve format 2020-11-20 07:47:49 +01:00
78e9bedcb4 feat(moodle-dl): change telegram formatting 2020-11-18 00:08:54 +01:00
d5cdbf3795 feat(matterbridge): bridge mumble and move to makanek 2020-11-18 00:07:30 +01:00
bcb5949e15 fix(toum): use 1G swapfile 2020-11-17 22:17:41 +01:00
dd61883648 feat: use starry wallpapers 2020-11-17 17:39:42 +01:00
1d7a432bec feat(urlwatch): no footer, tellonym 2020-11-17 14:06:13 +01:00
0e7652ff46 chore: resize fonts 2020-11-17 14:05:52 +01:00
a96c0d9ab3 feat(urlwatch): only watch dlf article 2020-11-16 21:02:23 +01:00
82bb2d9f17 feat(chrome): remove youtube recommendations 2020-11-14 13:46:20 +01:00
4fa0256095 feat: install pulsemixer pass-otp 2020-11-14 13:24:25 +01:00
2915594238 feat(urlwatch): move to makanek, watch dlf 2020-11-14 13:23:25 +01:00
cf48d89ea6 chore: update 2020-11-14 13:23:25 +01:00
37f570a979 fix(playlists): remove laut.fm lofi because its quality was killing my speakers 2020-11-12 21:26:58 +01:00
f8af039913 chore(gitea): move into own config 2020-11-11 10:18:04 +01:00
46882af11e feat: run gitea on makanek 2020-11-11 08:51:52 +01:00
2c5d2f4add chore: get stockholm from my mirror 2020-11-11 08:51:22 +01:00
bd089bd408 chore: update keys 2020-11-11 07:31:22 +01:00
fce8d15356 fix(i3, alacritty): make fonts bigger 2020-11-11 07:30:50 +01:00
acec2505e4 feat: add zramfs as swap 2020-11-10 22:17:47 +01:00
218c251d31 feat(retiolum): generate hosts from stockholm, finally add zaatar 2020-11-10 22:17:33 +01:00
8cda7861f9 feat(i3-status-rust): remove newsboat as it was blocking, change separator 2020-11-10 21:03:10 +01:00
a35c883eca feat(wifi): add o2wlan66 2020-11-10 21:01:45 +01:00
db61bc4b91 chore: RIP homeros 2020-11-09 09:40:03 +01:00
43fc9ebba2 feat(manakish): add to retiolum 2020-11-06 10:52:35 +01:00
23d60233a0 fix(zaatar): add new retiolum config 2020-11-06 10:52:35 +01:00
f2fcc3be9a chore: move tuner over from toum to zaatar 2020-11-06 10:38:43 +01:00
30e3baa335 feat(mpd): install ncmpcpp and mpc 2020-11-06 10:38:33 +01:00
616a530c64 fix(playlists): comment out di.fm, add more stations
di.fm returned 404
2020-11-06 10:38:12 +01:00
e5d437949b feat: take dropbox module from dropbox 2020-11-05 21:29:47 +01:00
80c3b143ca feat: write own urlwatch config 2020-11-05 21:29:20 +01:00
263a732580 feat(toum): add tuner website 2020-11-05 21:29:09 +01:00
c638ef93f5 feat: add manakish 2020-11-05 21:28:23 +01:00
69c2f506ae feat(moodle): open for manakish 2020-11-05 20:24:39 +01:00
db4857c86d feat(mpd): group into playlists by style 2020-11-04 08:51:55 +01:00
6668542d53 chore: clean up zigbee2mqtt config 2020-11-04 08:51:19 +01:00
561faed161 feat: add makanek to retiolum 2020-11-03 20:18:57 +01:00
36ed681e99 feat: move some non-packageworthy scripts to packages/scripts/ 2020-11-02 21:49:49 +01:00
be84688b63 feat: install dnsutils 2020-11-02 21:43:54 +01:00
de296c4e62 feat: package much-secripts and dns-sledgehammer 2020-11-02 21:43:38 +01:00
d7807ba1b9 fix(zaatar): make kiosk have german keyboard layout 2020-11-02 21:05:17 +01:00
51fba9baa6 chore(shell.nix): remove histfile setting 2020-11-02 15:44:33 +01:00
a0fb2bd819 feat(moodle): add more courses 2020-11-02 15:43:20 +01:00
a0830070f3 feat(wilde): add swapfile 2020-11-02 15:42:52 +01:00
c860529161 feat(moodle): add more courses 2020-11-02 15:42:41 +01:00
03461dcaaa fix(hu-berlin): fix sshfs mount on homeros 2020-11-01 22:05:59 +01:00
1cd7039759 feat(moodle): add homeros to sshfs share 2020-11-01 21:10:52 +01:00
af0806b766 feat(moodle-dl): add more courses 2020-11-01 21:09:07 +01:00
bd8960fd44 fix(wilde): only build on one core 2020-11-01 15:12:22 +01:00
1bc90b2e84 fix: replace libreoffice by abiword 2020-11-01 15:12:08 +01:00
d2939795ac chore: move hass to configs 2020-11-01 09:45:15 +01:00
4a4d5a148d chore: move matterbridge to configs 2020-11-01 09:44:50 +01:00
f30cfbf142 chore: simplify zigbee2mqtt config 2020-11-01 09:23:27 +01:00
15bda4721d chore: update ssh keys to add termux 2020-11-01 08:27:32 +01:00
4d610461b8 feat(toum): remove kfm user, enable login as weechat 2020-11-01 08:26:30 +01:00
eed54d1593 fix(sshfs): depend on tinc and wpa_supplicant 2020-11-01 08:25:11 +01:00
ddec0551e8 feat(zaatar): allow vt switching from cage 2020-11-01 08:22:20 +01:00
b0f2a74372 chore: update 2020-11-01 08:21:43 +01:00
65584ec52f feat(zaatar): add kiosk to audio group and remove ssh keys 2020-10-31 20:52:53 +01:00
96f5d750ef feat: run moodle-dl on toum, sshfs from wilde 2020-10-31 20:52:10 +01:00
77e97e84a9 feat(makanek): host codimd, nextcloud 2020-10-31 20:51:25 +01:00
96cb298584 feat: make fonts smaller 2020-10-31 20:50:17 +01:00
5dc561da83 chore: move module/constants.nix to lib/default.nix 2020-10-30 11:05:26 +01:00
b8c79fd21c fix(wilde): only build on two cores to still be able to use the computer while building 2020-10-30 08:09:40 +01:00
a98333a6b8 chore: reformat 2020-10-30 08:09:18 +01:00
fa5fe37610 feat(mpd): refine playlist generation 2020-10-30 08:09:00 +01:00
0be0356005 feat(git): dont automatically merge on pull 2020-10-30 08:08:20 +01:00
394615168d feat(mpd): generate streaming links 2020-10-29 08:19:52 +01:00
b6e77f77af feat(mpd): split playlists 2020-10-29 07:54:57 +01:00
d7727433fd feat(zaatar): use ublock for kiosk 2020-10-29 07:54:26 +01:00
3f02559da2 chore: curate radio stations 2020-10-28 22:39:33 +01:00
e7c801b6c4 feat(zaatar): restart kiosk browser if closed 2020-10-28 22:26:04 +01:00
3092fcda85 fix(wilde): dont generate mandb cache 2020-10-28 22:25:45 +01:00
43a1ecedac chore: clean up by removing .todo 2020-10-28 22:25:45 +01:00
da55a342e3 chore: dot -> lib 2020-10-28 22:25:45 +01:00
48fcb08427 chore: scardanelli -> zaatar 2020-10-28 22:25:24 +01:00
a0855f8bbb chore: organize
use read-made spotifyd module
move sshPort to niveum lib (used also from deploy.nix)
factor out sshd config, use from toum
factor out urlwatch
access scardanelli locally
mpd: configure webradio playlist
scardanelli: use cage for kiosk
toum: use wifi config
toum: use spacetime, dont redeclare
toum: use ssh config
2020-10-28 22:25:18 +01:00
3efb4682f2 feat(scardanelli): host media server 2020-10-28 20:29:41 +01:00
048429f593 feat: split spotify config into spotifyd 2020-10-28 20:29:01 +01:00
59cacae72e feat: interdimensional-cable 2020-10-28 20:27:36 +01:00
420245231a feat: factor out wifi config 2020-10-28 20:26:47 +01:00
2911972900 feat: factor out spacetime config 2020-10-28 20:26:47 +01:00
5efcb813f0 chore: remove nixpkgs-unstable 2020-10-28 20:25:26 +01:00
fd8f5d3a5c fix(wilde): only have 2 nix jobs as more will fill up RAM 2020-10-28 11:37:06 +01:00
3508575ebe chore: make 20.09 work 2020-10-28 11:36:46 +01:00
3741304284 feat(toum): run irc bouncer 2020-10-28 11:35:09 +01:00
6bfaf551d2 feat: generate mandb cache to use apropos and whatis 2020-10-28 11:34:36 +01:00
423cb074a0 fix(much): pin nixpkgs so much compiles with email-header 2020-10-27 21:27:12 +01:00
120 changed files with 6466 additions and 1283 deletions

3
.gitignore vendored
View File

@@ -1,6 +1,5 @@
secrets.nix
result
.direnv
.envrc
.history
**/*.bak
.todo

View File

@@ -1,2 +0,0 @@
x 2020-04-27 2019-08-27 fix offlineimap password
x 2020-04-27 2019-07-09 @package fzf wrappers

View File

View File

@@ -1,6 +0,0 @@
(C) 2019-08-25 environment.etc."sshd/banner-line".text = config.networking.hostName;
(C) 2019-08-25 fix man-pdf: man-pdf 1p env, man-pdf env: man $options -t $command | ps2pdf - $command.pdf
(A) 2019-08-26 run services as their own @users
(A) use lassulus xdg-open wrapper https://cgit.krebsco.de/stockholm/tree/lass/2configs/xdg-open.nix

View File

@@ -1,7 +1,10 @@
{
"url": "https://github.com/rycee/home-manager.git",
"rev": "abaebf3b346c4bef500c5bd2fdebbed109261a0c",
"date": "2020-10-25T19:44:12+01:00",
"sha256": "1gcv2ni4nsicpmi4ain568msvgxch8cj04fxf6qgvhdklmh2y84k",
"fetchSubmodules": false
"rev": "91bd34620d73340be03642279ee0d1c64110ee6c",
"date": "2021-01-22T14:53:58+01:00",
"path": "/nix/store/ybmjqanz6r1zg2k5hw5d9131cadms06s-home-manager",
"sha256": "1pwn2w21rmnk7nqzx9wmgb4k4kph7vfd1r9wcq9xdn7w27cjdg7v",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -2,6 +2,9 @@
"url": "https://cgit.krebsco.de/krops",
"rev": "55aa2c77ce8183f3d2b24f54efa33ab6a42e1e02",
"date": "2020-04-19T01:06:20+02:00",
"path": "/nix/store/08wg2yrcgkr6iwipjd6g0fbwb7gacqax-krops",
"sha256": "00rvx9h596ync8wgic6xc9srzajzm28wlp9q7mv4z0jsb27l5bj8",
"fetchSubmodules": false
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -1,7 +1,10 @@
{
"url": "https://github.com/NixOS/nixpkgs.git",
"rev": "95d26c9a9f2a102e25cf318a648de44537f42e09",
"date": "2020-10-24T10:37:53+02:00",
"sha256": "0ymhj252dq7z2ajdjsdz99h106ylm4vsmz5v3xiwsylcs4bz2nl8",
"fetchSubmodules": false
"rev": "a058d005b3cbb370bf171ebce01839dd6ff52222",
"date": "2021-01-23T17:41:51-05:00",
"path": "/nix/store/6ps307ghgrp10q3mwgw4lq143pmz0h25-nixpkgs",
"sha256": "154mpqw0ya31hzgz9hggg1rb26yx8d00rsj9l90ndsdldrssgvbb",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -1,7 +1,10 @@
{
"url": "https://github.com/krebs/retiolum",
"rev": "21244d55c10234b09a9f121015de1175f5facc69",
"date": "2020-10-25T17:02:11+01:00",
"sha256": "0jzifani14rd68zv728mjq97p04njk8syrqbmn2vjd3plphvl5y5",
"fetchSubmodules": false
"rev": "dc2ff145babdee97c03b336e9601f6ab7498c21f",
"date": "2021-01-24T16:32:13+01:00",
"path": "/nix/store/pzdsyx2ra3v0zyfnncjrgzhbxakgr5as-retiolum",
"sha256": "0wa4jx9v920qj9zgr6dagj7cr8dmb5db6rb94bbk4g104lysmz5b",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -1,7 +1,10 @@
{
"url": "https://cgit.krebsco.de/stockholm",
"rev": "b034f63f7a2e4361b32c33c0e1a980eecf1a5aa6",
"date": "2020-10-17T01:00:54+02:00",
"sha256": "1ji45h7xp3za5lq9qdg3f8gldrvqfpr8grinblzvf9iqxjgidr68",
"fetchSubmodules": false
"url": "https://github.com/kmein/stockholm",
"rev": "f0325bef7954cb946674050847c6d52112cb658f",
"date": "2020-11-11T07:45:58+01:00",
"path": "/nix/store/lka6fhjfbwdx9bc7lk1bz4gizdv7nrbm-stockholm",
"sha256": "0gbw6n5yq36ysc30afa5d2dbsl2d46f73ms6f0rprdbr4nhdw8l2",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -1,18 +1,19 @@
{ pkgs, lib, config, ... }:
let
inherit (import <niveum/lib>) colours;
colourNames =
[ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
colours = lib.getAttrs colourNames config.niveum.colours;
colourPairs = lib.getAttrs colourNames colours;
alacrittyConfig = {
background_opacity = 0.9;
colors = {
primary = { inherit (config.niveum.colours) background foreground; };
normal = lib.mapAttrs (_: colour: colour.dark) colours;
bright = lib.mapAttrs (_: colour: colour.bright) colours;
primary = { inherit (colours) background foreground; };
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};
font = {
normal.family = "Monospace";
size = config.niveum.fonts.size - 2;
size = 6;
};
key_bindings = [
{
@@ -36,7 +37,7 @@ in {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
pkgs.unstable.alacritty
pkgs.alacritty
];
home-manager.users.me.xdg.configFile = {

View File

@@ -6,6 +6,7 @@
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos
];
};

View File

@@ -16,7 +16,7 @@
'';
home-manager.users.me = {
services.nextcloud-client.enable = true;
services.nextcloud-client.enable = false;
};
services.syncthing = rec {
@@ -28,26 +28,18 @@
declarative = rec {
cert = toString <system-secrets/syncthing/cert.pem>;
key = toString <system-secrets/syncthing/key.pem>;
devices = {
homeros.id =
"HSOL72W-MMN346W-C3WCWCH-OTRKJYG-MY2WWV6-P7JUHN7-5WYYYRV-ZMH4KAA";
scardanelli.id =
"7CZYHEX-3CSFDQU-PEEMYHG-6XGQ2ZD-KGVUWH5-GFRB2XK-FP57ERX-7APZUQU";
rilke.id =
"NYNNHXP-7JMSTXG-SVNOPWD-RWXCCCL-CBOVBEI-X4QPLF4-NJA5G2P-RSGYRQQ";
wilde.id =
"R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
heym.id =
"HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
};
inherit ((import <niveum/lib>).syncthing) devices;
folders =
let syncthing-dir = "${config.users.users.me.home}/cloud/syncthing";
let cloud-dir = "${config.users.users.me.home}/cloud";
in {
"${syncthing-dir}/common".devices =
[ "homeros" "scardanelli" "wilde" ];
"${syncthing-dir}/library".devices = lib.attrNames devices;
"${syncthing-dir}/mundoiu".devices = lib.attrNames devices;
"${syncthing-dir}/music".devices = lib.attrNames devices;
"${cloud-dir}/syncthing/common".devices = [ "wilde" "manakish" ];
"${cloud-dir}/syncthing/library".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/syncthing/mundoiu".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/syncthing/music".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/moodle" = {
devices = [ "wilde" "toum" "manakish" ];
id = "moodle-dl";
};
};
};
};

View File

@@ -1,40 +1,14 @@
{ pkgs, lib, config, options, ... }:
let
inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses;
inherit (import <niveum/lib>) localAddresses kieran;
in {
imports = [
<niveum/modules/constants.nix>
<home-manager/nixos>
<niveum/modules/system-dependent.nix>
{
boot.supportedFilesystems = [ "ntfs" ];
}
{
niveum.user = {
github = "kmein";
email = "kmein@posteo.de";
name = "Kierán Meinhardt";
};
niveum.applications = rec {
fileManager = "$TERMINAL -e ${pkgs.ranger}/bin/ranger";
};
niveum.theme = {
gtk = {
name = "Adwaita-dark";
package = pkgs.gnome3.gnome-themes-extra;
};
icon = {
name = "Adwaita";
package = pkgs.gnome3.adwaita-icon-theme;
};
cursor = {
name = "capitaine-cursors-white";
package = pkgs.capitaine-cursors;
};
};
}
{
nix.nixPath = [
"/var/src"
@@ -42,32 +16,18 @@ in {
];
}
{ services.dbus.packages = [ pkgs.gnome3.dconf ]; }
{
environment.systemPackages = [
(pkgs.writers.writeDashBin "x-www-browser" ''
for browser in $BROWSER firefox chromium google-chrome google-chrome-stable opera vivaldi qupzilla iceweasel konqueror firefox-aurora google-chrome-beta opera-beta vivaldi-beta google-chrome-dev opera-developer vivaldi-snapshot luakit midori epiphany lynx w3m dillo elinks vimb; do
if command -v $browser > /dev/null 2>&1; then
exec $browser "$@"
fi
done
exit 1
'')
];
}
{
nixpkgs = {
config = {
allowUnfree = true;
packageOverrides = pkgs: {
nur = import (builtins.fetchTarball
"https://github.com/nix-community/NUR/archive/aea85375c7a82297d977904de8dd7f41baf2d59a.tar.gz") {
"https://github.com/nix-community/NUR/archive/222ea29ec4afb09c5565a7e5dda14bfd65a4a9f6.tar.gz") {
inherit pkgs;
};
writeDashBin = pkgs.writers.writeDashBin;
writeDash = pkgs.writers.writeDash;
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {
scardanelli = config.networking.hostName == "scardanelli";
};
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
};
@@ -88,13 +48,6 @@ in {
boot.loader.timeout = 1;
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
}
{
time.timeZone = "Europe/Berlin";
location = {
latitude = 52.517;
longitude = 13.3872;
};
}
{
home-manager.users.me = {
programs.zathura = {
@@ -113,10 +66,11 @@ in {
users.users.me = {
name = "kfm";
description = config.niveum.user.name;
description = kieran.name;
hashedPassword =
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
isNormalUser = true;
uid = 1000;
};
}
{
@@ -129,7 +83,7 @@ in {
users.users.me.extraGroups = [ "audio" ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer pkgs.pulsemixer ];
}
{
environment.interactiveShellInit =
@@ -150,29 +104,27 @@ in {
cat = "${pkgs.bat}/bin/bat --style=plain";
chromium-incognito =
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp -i";
dig = "dig +short";
cp = "cp --interactive";
ip = "${pkgs.iproute}/bin/ip -c";
l = "${pkgs.exa}/bin/exa -s type -a";
la = "${pkgs.exa}/bin/exa -s type -la";
ll = "${pkgs.exa}/bin/exa -s type -l";
ls = "${pkgs.exa}/bin/exa -s type";
mv = "mv -i";
l = "ls --color=auto --time-style=long-iso --almost-all";
ls = "ls --color=auto --time-style=long-iso";
ll = "ls --color=auto --time-style=long-iso -l";
la = "ls --color=auto --time-style=long-iso --almost-all -l";
mv = "mv --interactive";
nixi = "nix repl '<nixpkgs>'";
ns = "nix-shell --run zsh";
o = "${pkgs.xdg_utils}/bin/xdg-open";
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
rm = "rm -i";
rm = "rm --interactive";
s = "${pkgs.systemd}/bin/systemctl";
take = "source ${take}";
tmux = "${pkgs.tmux}/bin/tmux -2";
tree = "${pkgs.exa}/bin/exa --tree";
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
zathura = swallow "${pkgs.zathura}/bin/zathura";
us = "${pkgs.systemd}/bin/systemctl --user";
wcd = "source ${wcd}";
weechat = "${pkgs.openssh}/bin/ssh kmein@prism.r -t tmux attach";
weechat = "${pkgs.openssh}/bin/ssh weechat@toum -t screen -x weechat-screen";
where = "source ${where}";
yt =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
@@ -180,50 +132,6 @@ in {
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
};
}
{
networking.wireless = {
enable = true;
userControlled.enable = true;
networks = {
"Aether" = {
pskRaw = "e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
priority = 10;
};
"Asoziales Netzwerk" = {
pskRaw = "8e234041ec5f0cd1b6a14e9adeee9840ed51b2f18856a52137485523e46b0cb6";
priority = 10;
};
"Libertarian WiFi" = {
pskRaw = "e9beaae6ffa55d10e80b8a2e7d997411d676a3cc6f1f29d0b080391f04555050";
priority = 9;
};
"EasyBox-927376".pskRaw = "dbd490ab69b39bd67cfa06daf70fc3ef3ee90f482972a668ed758f90f5577c22";
"FlixBus Wi-Fi" = { };
"FlixBus" = { };
"FlixTrain" = { };
"BVG Wi-Fi" = { };
"wannseeforum" = { }; # login via curl -XPOST http://WannseeLancom.intern.:80/authen/login/ -d userid=$USER_ID -d password=$PASSWORD
"Hotel_Krone" = { }; # login: http://192.168.10.1/
"Ni/Schukajlow".pskRaw = "ffc47f6829da59c48aea878a32252223303f5c47a3859edc90971ffc63346781";
"WIFIonICE" = { }; # login: http://10.101.64.10/
"WLAN-914742".psk = "67647139648174545446";
"KDG-CEAA4".psk = "PBkBSmejcvM4";
"KDG-4ECF7".psk = "Gdbwh7afw2Bx";
"WLAN-XVMU6T".pskRaw =
"46ea807283255a3d7029233bd79c18837df582666c007c86a8d591f65fae17cc";
"c-base-public" = { };
"discord".psk = "baraustrinken";
"GoOnline".psk = "airbnbguest";
"security-by-obscurity".psk = "44629828256481964386";
"Mayflower".psk = "Fr31EsLan";
"Born11".psk = "56LMVLbw840EGNWk0RYRqvgicx3FSO";
"FactoryCommunityGuest".psk = "Factory4ever";
"krebs".psk = "aidsballs";
};
};
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
}
{ i18n.defaultLocale = "en_GB.UTF-8"; }
{ services.illum.enable = true; }
{
@@ -254,7 +162,10 @@ in {
{
programs.gnupg.agent.enable = true;
environment.systemPackages = [ pkgs.gnupg pkgs.pass ];
environment.systemPackages = [
pkgs.gnupg
(pkgs.pass.withExtensions (e: [e.pass-otp]))
];
}
{
services.atd.enable = true;
@@ -300,20 +211,21 @@ in {
./mime.nix
./nano.nix
./neovim.nix
./nix.nix
./newsboat.nix
./flameshot-once.nix
./nixpkgs-unstable.nix
./packages
./power-action.nix
./printing.nix
./wallpaper.nix
./redshift.nix
./retiolum.nix
./rofi.nix
./spotify.nix
./spacetime.nix
./ssh.nix
./sshd.nix
./sudo.nix
./sxiv.nix
./themes/mac-os.nix
./theming.nix
./tmux.nix
./tor.nix
@@ -323,7 +235,7 @@ in {
./version.nix
./vscode.nix
./watson.nix
./xautolock.nix
./wifi.nix
./zsh.nix
];
}

View File

@@ -1,12 +1,14 @@
{ config, pkgs, ... }:
with config.niveum; {
let
inherit (import <niveum/lib>) defaultApplications colours theme;
in {
home-manager.users.me.services.dunst = {
enable = true;
iconTheme = theme.icon;
iconTheme = (theme pkgs).icon;
settings = {
global = {
transparency = 10;
font = "Sans ${toString fonts.size}";
font = "Monospace 8";
geometry = "200x5-30+20";
frame_color = colours.foreground;
follow = "mouse";
@@ -31,7 +33,7 @@ with config.niveum; {
sticky_history = true;
history_length = 20;
dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run";
browser = "x-www-browser";
browser = (defaultApplications pkgs).browser;
verbosity = "mesg";
corner_radius = 0;
mouse_left_click = "do_action";

View File

@@ -1,5 +1,6 @@
{ lib, pkgs, ... }:
let
inherit (import <niveum/lib>) defaultApplications;
flameshot-once =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
in {
@@ -16,7 +17,7 @@ in {
enable = true;
createUrl = "http://p.r/image";
deleteUrl = "http://p.r/image/delete/%1";
xdg-open.browser = "x-www-browser";
xdg-open.browser = (defaultApplications pkgs).browser;
};
config.timeout = 200;
})

View File

@@ -1,6 +1,4 @@
{ pkgs, ... }: {
niveum.fonts.size = 9;
fonts = {
enableDefaultFonts = true;
enableFontDir = true;

View File

@@ -1,4 +1,8 @@
{ pkgs, config, lib, ... }: {
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran ignorePaths;
in
{
environment.systemPackages = [
pkgs.mr
pkgs.git
@@ -6,7 +10,7 @@
pkgs.gitAndTools.hub
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras
pkgs.unstable.gitAndTools.git-trim
pkgs.gitAndTools.git-trim
pkgs.gitstats
pkgs.patch
pkgs.patchutils
@@ -53,8 +57,8 @@
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
userName = config.niveum.user.name;
userEmail = config.niveum.user.email;
userName = kieran.name;
userEmail = kieran.email;
aliases = {
br = "branch";
co = "checkout";
@@ -69,8 +73,11 @@
graph =
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
};
ignores = config.niveum.ignore;
ignores = ignorePaths;
extraConfig = {
pull.ff = "only";
rebase.autoStash = true;
merge.autoStash = true;
core.pager =
"${pkgs.gitAndTools.diff-so-fancy}/bin/diff-so-fancy | ${pkgs.less}/bin/less --tabs=4 -RFX";
color = {

13
configs/gitea.nix Normal file
View File

@@ -0,0 +1,13 @@
{
services.gitea = {
enable = true;
disableRegistration = true;
rootUrl = "https://code.xn--kiern-0qa.de";
appName = "code.kierán.de";
};
services.nginx.virtualHosts."code.xn--kiern-0qa.de" = {
forceSSL = true;
enableACME = true;
locations."/".extraConfig = "proxy_pass http://localhost:3000;";
};
}

View File

@@ -4,14 +4,9 @@ let
inherit (import <niveum/lib>) localAddresses;
in
{
disabledModules = [
"services/misc/home-assistant.nix"
];
imports = [
./zigbee.nix
./frontend.nix
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
];
services.home-assistant = {
@@ -22,8 +17,8 @@ in
config = {
homeassistant = {
name = "Toum";
latitude = 52.461;
longitude = 13.378;
latitude = config.location.latitude;
longitude = config.location.longitude;
elevation = 90; # TODO find out how high I live
unit_system = "metric";
time_zone = config.time.timeZone;

View File

@@ -2,15 +2,6 @@ let
inherit (import ./lib.nix) triggers;
in
{
disabledModules = [
"services/misc/home-assistant.nix"
];
imports = [
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
];
services.home-assistant.config = {
frontend = {
themes = {

View File

@@ -1,63 +1,25 @@
{ config, pkgs, lib, ... }:
let
inherit (import <stockholm/lib>) genid;
inherit (import <niveum/lib>) localAddresses;
zigbee2mqttDevice = "/dev/ttyACM0";
zigbee2mqttConfig = {
permit_join = false;
homeassistant = true;
serial = {
port = zigbee2mqttDevice;
disable_led = true;
};
mqtt = {
discovery = true;
base_topic = "zigbee";
server = "mqtt://${localAddresses.toum}"; # Rasperry local IP
user = "albrecht";
password = lib.strings.fileContents <system-secrets/mosquitto>;
};
};
zigbee2mqtt_cfg = pkgs.writeText "zigbee2mqtt.json" (builtins.toJSON zigbee2mqttConfig);
in
{
disabledModules = [
"services/misc/home-assistant.nix"
];
imports = [
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
<nixpkgs-unstable/nixos/modules/services/misc/zigbee2mqtt.nix>
];
/*
ids = {
uids.zigbee2mqtt = genid "zigbee2mqtt";
gids.zigbee2mqtt = genid "zigbee2mqtt";
};
services.zigbee2mqtt = {
enable = true;
config = zigbee2mqttConfig;
package = pkgs.unstable.zigbee2mqtt;
};
*/
system.activationScripts.installZigbee = ''
install -d /var/lib/zigbee2mqtt
install ${zigbee2mqtt_cfg} /var/lib/zigbee2mqtt/configuration.yaml
'';
# hack to restart docker container on config change
systemd.services.docker-zigbee2mqtt.environment.cfg = zigbee2mqtt_cfg;
docker-containers.zigbee2mqtt = {
image = "koenkk/zigbee2mqtt";
extraDockerOptions = [
"--device=${zigbee2mqttDevice}:${zigbee2mqttDevice}"
];
volumes = ["/var/lib/zigbee2mqtt:/app/data"];
config = {
permit_join = false;
homeassistant = true;
serial = {
port = "/dev/ttyACM0";
disable_led = true;
};
mqtt = {
discovery = true;
base_topic = "zigbee";
server = "mqtt://${localAddresses.toum}";
user = "albrecht";
password = lib.strings.fileContents <system-secrets/mosquitto>;
};
};
};
services.mosquitto = {

25
configs/hedgedoc.nix Normal file
View File

@@ -0,0 +1,25 @@
{
services.nginx.virtualHosts."pad.xn--kiern-0qa.de" = {
enableACME = true;
addSSL = true;
locations."/".extraConfig = ''
client_max_body_size 4G;
proxy_set_header Host $host;
proxy_pass http://localhost:3091;
'';
};
services.hedgedoc = {
enable = true;
configuration = {
allowAnonymous = false;
allowGravatar = false;
db = {
dialect = "sqlite";
storage = "/var/lib/codimd/db.codimd.sqlite";
useCDN = false;
};
port = 3091;
};
};
}

View File

@@ -9,14 +9,14 @@
detailedCpuTime = false;
headerMargin = true;
hideKernelThreads = true;
hideThreads = false;
hideUserlandThreads = false;
hideThreads = true;
hideUserlandThreads = true;
highlightBaseName = true;
highlightMegabytes = true;
highlightThreads = true;
shadowOtherUsers = true;
showProgramPath = false;
showThreadNames = true;
showThreadNames = false;
sortDescending = true;
sortKey = "PERCENT_CPU";
treeView = true;

View File

@@ -1,6 +1,7 @@
{ pkgs, lib, ... }:
{ config, pkgs, lib, ... }:
let
inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort;
eduroam = {
identity = fileContents <secrets/eduroam/identity>;
password = fileContents <secrets/eduroam/password>;
@@ -22,22 +23,56 @@ let
}"
phase2="auth=PAP"
'';
hu-berlin-cifs-options = [
"uid=${toString config.users.users.me.uid}"
"gid=${toString config.users.groups.users.gid}"
"sec=ntlmv2"
"workgroup=german"
"username=meinhaki"
"password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
"noauto"
"x-systemd.requires=hu-vpn.service"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
];
in {
networking.wireless.networks = {
eduroam_5GHz.auth = eduroamAuth;
eduroam.auth = eduroamAuth;
};
fileSystems."/media/hu-berlin/germpro2" = {
device = "//hugerm31c.user.hu-berlin.de/germpro2/ling";
fsType = "cifs";
options = hu-berlin-cifs-options;
};
fileSystems."/media/hu-berlin/germhome" = {
device = "//hugerm31c.user.hu-berlin.de/germhome/ling/meinhaki";
fsType = "cifs";
options = hu-berlin-cifs-options;
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "hu-vpn" ''
${pkgs.openfortivpn}/bin/openfortivpn -p "${eduroam.password}" -c ${pkgs.writeText "hu-berlin.config" ''
(pkgs.writers.writeDashBin "hu-ip" ''
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
'')
];
systemd.services.hu-vpn = {
enable = true;
wants = [ "network-online.target" ];
script = ''
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de
port = 443
trusted-cert = e5a7d56543002ffe1e8962caa5fd6d94053aa702381458247b670877a66f3c6f
username = ${eduroam.identity}
password = ${eduroam.password}
''}
'')
];
'';
};
services.openvpn.servers.hu-berlin = {
autoStart = false;

View File

@@ -1,5 +1,6 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) defaultApplications colours;
klem = import <niveum/packages/scripts/klem.nix> {
inherit pkgs lib;
config.scripts = {
@@ -26,6 +27,9 @@ let
"betacode" = pkgs.writers.writeDash "betacode" ''
${pkgs.scripts.betacode}/bin/betacode
'';
"devanagari" = pkgs.writers.writeDash "devanagari" ''
${pkgs.scripts.devanagari}/bin/devanagari
'';
};
};
@@ -41,12 +45,32 @@ let
emoji-file = pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.local/share/larbs/emoji";
sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk";
sha256 = "03fv69ah8msh2j6i3lm4sdkckqq8jwn1kj43j98dh0xjpzazsy46";
};
kaomoji-file = pkgs.writeText "kaomoji.txt" ''
¯\(°_o)/¯ dunno lol shrug dlol
¯\_()_/¯ dunno lol shrug dlol
( ͡° ͜ʖ ͡°) lenny
¯\_( ͡° ͜ʖ ͡°)_/¯ lenny shrug dlol
( д) aaah sad noo
(^o^)丿 hi yay hello
(^o^: ups hehe
(^^) yay
(´) angry argh
(^_^) byebye!! bye
<(^.^<) <(^.^)> (>^.^)> (7^.^)7 (>^.^<) dance
(-.-)Zzz... sleep
() oh noes woot
(°°  table flip
() why woot
(___) gloom I see you
    sad
(\/) (°,,,,°) (\/) krebs
'';
in with pkgs;
writers.writeDashBin "emoji-menu" ''
PATH=${lib.makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]}
chosen=$(cut -d ';' -f1 ${emoji-file} | dmenu -i -l 10 | sed "s/ .*//")
chosen=$(cat ${emoji-file} ${kaomoji-file} | cut -d ';' -f1 | dmenu -i -l 10 | sed "s/ .*//")
[ "$chosen" != "" ] || exit
@@ -59,7 +83,7 @@ let
fi
'';
in with config.niveum; {
in {
services.xserver = {
displayManager.defaultSession = "none+i3";
windowManager.i3 = {
@@ -68,10 +92,25 @@ in with config.niveum; {
};
};
services.xserver = {
monitorSection = ''Option "DPMS" "false"'';
serverFlagsSection = ''
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
'';
extraConfig = ''
Section "Extensions"
Option "DPMS" "Disable"
EndSection
'';
};
home-manager.users.me.xsession.windowManager.i3 = {
enable = true;
config = rec {
fonts = [ "Monospace ${toString config.niveum.fonts.size}" ];
fonts = [ "Monospace 10" ];
modifier = "Mod4";
window = {
titlebar = false;
@@ -133,7 +172,7 @@ in with config.niveum; {
};
bars = [{
workspaceButtons = false;
fonts = [ "Monospace ${toString (config.niveum.fonts.size - 1)}" ];
fonts = [ "Monospace 8" ];
mode = "hide"; # "dock"
position = "bottom";
colors = rec {
@@ -147,10 +186,9 @@ in with config.niveum; {
};
};
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
pkgs.writeTOML (import <niveum/dot/i3status-rust.nix> {
wifi-interface = networkInterfaces.wireless;
batteryBlock = batteryBlocks.default;
inherit (config.niveum) colours;
pkgs.writeTOML (import <niveum/lib/i3status-rust.nix> {
inherit (config.niveum) batteryName wirelessInterface;
inherit colours;
inherit pkgs;
})
}";
@@ -164,17 +202,15 @@ in with config.niveum; {
"l" = "resize grow width 10 px or 5 ppt";
};
keybindings = {
"${modifier}+Shift+h" = "move left";
"${modifier}+Shift+j" = "move down";
"${modifier}+Shift+k" = "move up";
"${modifier}+Shift+l" = "move right";
"${modifier}+Shift+h" = "move left 25 px";
"${modifier}+Shift+j" = "move down 25 px";
"${modifier}+Shift+k" = "move up 25 px";
"${modifier}+Shift+l" = "move right 25 px";
"${modifier}+h" = "focus left";
"${modifier}+j" = "focus down";
"${modifier}+k" = "focus up";
"${modifier}+l" = "focus right";
"${modifier}+Menu" = "exec ${klem}/bin/klem";
"${modifier}+Shift+b" = "move window to workspace prev";
"${modifier}+Shift+n" = "move window to workspace next";
"${modifier}+Shift+x" = "exec --no-startup-id ${move-to-new-workspace}";
@@ -196,12 +232,12 @@ in with config.niveum; {
"${modifier}+v" = "split v";
"${modifier}+w" = "layout tabbed";
"${modifier}+Return" = "exec i3-sensible-terminal";
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
"${modifier}+t" = "exec ${applications.fileManager}";
"${modifier}+y" = "exec x-www-browser";
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
"${modifier}+Shift+w" = "exec ${pkgs.xautolock}/bin/xautolock -locknow";
"${modifier}+Shift+w" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"${modifier}+a" =
"exec --no-startup-id ${pkgs.rofi}/bin/rofi -display-window -show window";
"${modifier}+d" = "exec --no-startup-id ${pkgs.dmenu}/bin/dmenu_run";
@@ -228,6 +264,7 @@ in with config.niveum; {
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";
"${modifier}+F12" = "exec ${klem}/bin/klem";
"Print" = "exec flameshot-once";
"XF86AudioLowerVolume" =
@@ -245,7 +282,7 @@ in with config.niveum; {
"exec --no-startup-id ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" =
"exec --no-startup-id ${pkgs.playerctl}/bin/playerctl previous";
"XF86ScreenSaver" = "exec ${pkgs.xautolock}/bin/xautolock -locknow";
"XF86ScreenSaver" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"XF86Display" = "exec ${pkgs.scripts.dmenurandr}/bin/dmenurandr";

View File

@@ -1,5 +1,20 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
nixpkgs-much = import (pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "7c2a362b58a1c2ba72d24aa3869da3b1a91d39e1";
sha256 = "0gl4xndyahasa9dv5mi3x9w8s457wl2xh9lcldizcn1irjvkrzs4";
}) {
overlays = [
(import <stockholm/krebs/5pkgs/haskell>)
];
};
much-pkg = nixpkgs-much.haskellPackages.callCabal2nix "much" <niveum/submodules/much> {};
much = nixpkgs-much.haskell.lib.dontHaddock much-pkg;
tagRules = [
{
query = "to:miaengiadina-pwa@noreply.github.com AND subject:\"PR run failed\"";
@@ -42,9 +57,6 @@ let
notmuch.enable = true;
};
much-pkg = pkgs.haskellPackages.callCabal2nix "much" <niveum/submodules/much> {};
much = pkgs.haskell.lib.dontHaddock much-pkg;
mail-sync = pkgs.writers.writeDashBin "mail-sync" ''
${pkgs.isync}/bin/mbsync --all
${pkgs.notmuch}/bin/notmuch new
@@ -107,7 +119,7 @@ in {
};
in lib.listToAttrs (map muchsyncConfig [
"wilde"
"homeros"
"manakish"
]);
programs.msmtp.enable = true;
@@ -139,7 +151,7 @@ in {
};
userName = "kieran@fysi.tech";
address = "kieran@fysi.tech";
realName = config.niveum.user.name;
realName = kieran.name;
passwordCommand = pass_ <secrets/mail/fastmail>;
};
cock = enableDefaults {
@@ -166,7 +178,7 @@ in {
primary = false;
flavor = "gmail.com";
address = "kieran.meinhardt@gmail.com";
realName = config.niveum.user.name;
realName = kieran.name;
userName = "kieran.meinhardt";
passwordCommand = pass_ <secrets/mail/gmail/kieran.meinhardt>;
folders = {
@@ -179,7 +191,7 @@ in {
primary = false;
flavor = "gmail.com";
address = "amroplay@gmail.com";
realName = config.niveum.user.name;
realName = kieran.name;
userName = "amroplay";
passwordCommand = pass_ <secrets/mail/gmail/amroplay>;
folders = {
@@ -204,14 +216,14 @@ in {
tls.enable = true;
};
address = "kieran.meinhardt@posteo.net";
realName = config.niveum.user.name;
realName = kieran.name;
userName = "kieran.meinhardt@posteo.net";
passwordCommand = pass_ <secrets/mail/posteo>;
};
hu-berlin = enableDefaults {
primary = false;
address = "meinhark@hu-berlin.de";
realName = config.niveum.user.name;
realName = kieran.name;
userName = "meinhark";
passwordCommand = pass_ <secrets/eduroam/password>;
smtp = {
@@ -228,6 +240,26 @@ in {
tls.enable = true;
};
};
hu-berlin-work = enableDefaults {
primary = false;
address = "meinhaki@hu-berlin.de";
realName = kieran.name;
userName = "meinhaki";
passwordCommand = pass_ <secrets/mail/meinhaki>;
smtp = {
host = "mailhost.cms.hu-berlin.de";
port = 25;
tls = {
enable = true;
useStartTls = true;
};
};
imap = {
host = "mailbox.cms.hu-berlin.de";
port = 993;
tls.enable = true;
};
};
};
};
}

72
configs/matterbridge.nix Normal file
View File

@@ -0,0 +1,72 @@
{ pkgs, lib, ... }:
let
bridgeBotToken = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
config = {
general = {
RemoteNickFormat = "[{NOPINGNICK}] ";
Charset = "utf-8";
};
telegram.kmein.Token = bridgeBotToken;
irc.freenode = {
Server = "irc.freenode.net:6667";
Nick = "ponte";
};
mumble.lassulus = {
Server = "lassul.us:64738";
Nick = "krebs_bridge";
SkipTLSVerify = true;
};
gateway = [
{
name = "krebs-bridge";
enable = true;
inout = [
{
account = "irc.freenode";
channel = "#krebs";
}
{
account = "telegram.kmein";
channel = "-330372458";
}
{
account = "mumble.lassulus";
channel = 6; # "nixos"
}
];
}
{
name = "myengadin-bridge";
enable = true;
inout = [
{
account = "irc.freenode";
channel = "##myengadin";
}
{
account = "telegram.kmein";
channel = "-425759153";
}
];
}
];
};
in
{
nixpkgs.overlays = [
(import <niveum/overlays/toml.nix>)
(self: super: {
matterbridge = (import (super.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "e45d91ee65db293a172ec506759d1248e40c35f5";
sha256 = "03cjs5xcx09lw0djyrx2kfakw7gkg4iqmy9w25azai62im39l30k";
}) {}).matterbridge;
})
];
services.matterbridge = {
enable = true;
configPath = toString (pkgs.writeTOML config);
};
}

View File

@@ -19,6 +19,7 @@
"x-scheme-handler/mailto" = "brave-browser.desktop";
"x-scheme-handler/unknown" = "brave-browser.desktop";
"x-scheme-handler/webcal" = "brave-browser.desktop";
"inode/directory" = "pcmanfm.desktop";
};
};

86
configs/moodle-dl.nix Normal file
View File

@@ -0,0 +1,86 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
moodle-dl = pkgs.callPackage <niveum/packages/moodle-dl> {};
moodle-dl-config = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = true;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
download_course_ids = [
99881 # Dialektologie
100183 # Onomastik
100353 # Sanskrit I
100692 # Sanskrit Tutorium
99832 # Germanisch
99823 # Gotisch
99813 # Altalbanisch
98681 # Geistliche Lyrik von Luther bis Lehnert
99667 # Antike Mythologie
# 52365 # FSR KlassPhil
];
download_submissions = true;
download_descriptions = true;
download_links_in_descriptions = false;
download_databases = false;
download_forums = false;
download_linked_files = false;
download_also_with_cookie = false;
};
moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config);
moodle-dl-directory = "/var/lib/moodle";
in
{
users.extraUsers.moodle = {
isNormalUser = false;
home = moodle-dl-directory;
createHome = true;
openssh.authorizedKeys.keys = [
# for sshfs mount
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtIFmbspaBHaSkLEx43V0uaVd7l9NUFiwt2VOP++KzLjvRMLkyF2hg2HjmogTjUvTyoDs7RHwEH/cHZlJ5JQkM1jRqQpnYwGfkZEwYvmXAl6LY9+vQMP36gNPfXmKX3y3LelO7oD2uhUs0guTtg0tHUyN5/UY5u+VinyD6djxDkHaCUn3S7CS/odBcs/4flXT654wsvzgYicnSKH9R4W+7C0YsckZ/NoIkA4jnuwtWZYWrUkxd4/290buX6pAc5+zVVZqyy0sI4i8s6pO9RL5W7xvYt+w+U0u0dMxm5ckiRmLVKfIbMN4YtDxsZbZDajlQ1nDbOsEsrSXWz4H4cSNot7J820x1qh5SSxL4GSQlcT+6xCFk9kKyflxoS3oLoPLttx3rmOMkZKJWxF/IKLW47orxV6wkG5mHxdeR3cf6jX4j3nkwFVyC9R+WG4w2Z4vKONVE7uWGYU3y4OpR1e6MGHVShkNKqEvC/Kjcc/6v7I7AKRAuPZB0WEw36tA65/8= root@wilde"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFPHt+FPQ6gq8Ev65YsBZrafdtpWGpCNnlVvy67S1BK root@manakish"
];
useDefaultShell = true;
};
system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json";
services.syncthing = {
enable = true;
user = "moodle"; # config.users.extraUsers.moodle.name;
openDefaultPorts = true;
configDir = "${moodle-dl-directory}/.config/syncthing";
dataDir = "${moodle-dl-directory}/.config/syncthing";
declarative = rec {
cert = toString <system-secrets/syncthing/cert.pem>;
key = toString <system-secrets/syncthing/key.pem>;
devices = {
inherit ((import <niveum/lib>).syncthing.devices) wilde manakish toum;
};
folders.${moodle-dl-directory} = {
devices = [ "toum" "wilde" "manakish" ];
id = "moodle-dl";
};
};
};
systemd.services.moodle-dl = {
enable = true;
startAt = "hourly";
serviceConfig = {
Type = "oneshot";
User = config.users.extraUsers.moodle.name;
WorkingDirectory = config.users.extraUsers.moodle.home;
};
wants = [ "network-online.target" ];
script = "${moodle-dl}/bin/moodle-dl";
};
}

83
configs/mpd.nix Normal file
View File

@@ -0,0 +1,83 @@
{ config, pkgs, lib, ... }:
let
streams = import <niveum/lib/streams.nix> {
di-fm-key = lib.strings.fileContents <secrets/di.fm/key>;
};
multi-room-audio-port = 8000;
in
{
imports = [
<niveum/modules/mpd-fm.nix>
];
services.mpd = {
enable = true;
extraConfig = ''
log_level "default"
auto_update "yes"
audio_output {
type "alsa"
name "zaatar single room audio system"
}
audio_output {
type "httpd"
name "zaatar multi room audio system"
encoder "vorbis" # optional
port "${toString multi-room-audio-port}"
quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
format "44100:16:2"
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
tags "yes" # httpd supports sending tags to listening streams.
}
'';
};
environment.systemPackages = [ pkgs.mpc_cli ];
services.mpd-fm = {
enable = true;
# stationsFile = "/etc/mpd-fm/stations.json";
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
webPort = 8080;
};
systemd.services.mpd-fm-stations =
let
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
stationsJson = pkgs.writeText "stations.json" (builtins.toJSON stations);
in {
wantedBy = [ "mpd-fm.service" ];
startAt = "hourly";
script = ''
mkdir -p /etc/mpd-fm
antenne_asb_url=$(
${pkgs.curl}/bin/curl -sS 'https://www.caster.fm/widgets/em_player.php?jsinit=true&uid=529295&t=blue&c=' \
| grep streamUrl \
| sed ${lib.escapeShellArg "s/^.*'\\([^']*\\)'.*/\\1/"}
)
${pkgs.jq}/bin/jq "map(if .station == \"Antenne ASB\" then .stream |= \"$antenne_asb_url\" else . end)" < ${stationsJson} > /etc/mpd-fm/stations.json
'';
};
networking.firewall.allowedTCPPorts = [ 80 ];
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
virtualHosts.default = {
basicAuth.dj = lib.strings.fileContents <system-secrets/mpd-web.key>;
locations."= /listen.ogg" = {
proxyPass = "http://127.0.0.1:${toString multi-room-audio-port}";
};
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.mpd-fm.webPort}";
proxyWebsockets = true;
};
};
};
}

View File

@@ -8,7 +8,7 @@ in {
enable = true;
config = {
force-window = "yes";
ytdl-format = "bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
ytdl-format = "bestvideo+bestaudio/best";
};
bindings = {
"Alt+RIGHT" = "add video-rotate 90";

View File

@@ -20,9 +20,10 @@
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
(pkgs.neovim.override {
configure = {
customRC = builtins.readFile <niveum/dot/init.vim>;
customRC = builtins.readFile <niveum/lib/vim/init.vim>;
packages.nvim = with pkgs.vimPlugins; {
start = [
# cheat-sh-vim
@@ -60,6 +61,7 @@
haskell-vim
icalendar-vim
idris-vim
nim-vim
jq-vim
purescript-vim
rust-vim

View File

@@ -3,35 +3,22 @@ let
inherit (import <niveum/lib>) localAddresses;
in
{
networking.firewall.allowedTCPPorts = [ 80 ];
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
# Only allow PFS-enabled ciphers with AES256
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
};
services.nextcloud = {
enable = true;
package = pkgs.nextcloud19;
package = pkgs.nextcloud20;
https = true;
autoUpdateApps = {
enable = true;
startAt = "05:00:00";
};
hostName = localAddresses.toum;
hostName = "cloud.xn--kiern-0qa.de";
nginx.enable = true;
# https = true;
config = {
# overwriteProtocol = "https";
overwriteProtocol = "https";
dbtype = "pgsql";
dbuser = "nextcloud";
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
@@ -39,7 +26,7 @@ in
dbpass = lib.strings.fileContents <system-secrets/nextcloud/database>;
adminpass = lib.strings.fileContents <system-secrets/nextcloud/admin>;
adminuser = "admin";
extraTrustedDomains = [ "toum.r" ];
# extraTrustedDomains = [ "toum.r" ];
};
};
@@ -54,6 +41,12 @@ in
];
};
services.nginx.virtualHosts."cloud.xn--kiern-0qa.de" = {
enableACME = true;
forceSSL = true;
};
# Ensure that postgres is running before running the setup
systemd.services."nextcloud-setup" = {
requires = ["postgresql.service"];

10
configs/nix.nix Normal file
View File

@@ -0,0 +1,10 @@
{ pkgs, ... }:
{
# enable `nix flake`
nix = {
package = pkgs.nix;
# extraOptions = ''
# experimental-features = nix-command
# '';
};
}

View File

@@ -1,5 +0,0 @@
{ config, ... }: {
nixpkgs.config.packageOverrides = pkgs: {
unstable = import <nixpkgs-unstable> { config = config.nixpkgs.config; };
};
}

View File

@@ -1,4 +1,8 @@
{ pkgs, lib, ... }: {
{ pkgs, lib, ... }:
let
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
inherit (import <niveum/lib>) nixpkgs-unstable;
in {
imports = [
./krebs.nix
./writing.nix
@@ -32,23 +36,20 @@
environment.systemPackages = with pkgs; [
# INTERNET
aria2
firefox
# tor-browser-bundle-bin
# qutebrowser
# firefox
tdesktop
skypeforlinux
w3m
wget
httpie
whois
ddgr
ix
# thunderbird
nur.repos.kmein.python3Packages.instaloader
dnsutils
# mtr # my traceroute
# FILE MANAGERS
ranger
gnome3.nautilus
pcmanfm
# MEDIA
ffmpeg
imagemagick
@@ -74,12 +75,14 @@
ncdu # ncurses disk usage
python3Packages.jsonschema # json validation
jq # json toolkit
pup # html toolkit
jo # json creation
xsv # csv toolkit
xmlstarlet # xml toolkit
manpages
posix_man_pages
# moreutils # for parallel, sponge, combine
tree
parallel # for parallel, since moreutils shadows task spooler
ripgrep # better grep
rlwrap
@@ -97,17 +100,20 @@
audacity
calibre
inkscape
zoom-us # video conferencing
nixpkgs-unstable.zoom-us # video conferencing
pdfgrep # search in pdf
pdftk # pdf toolkit
evince # for viewing pdf annotations
xournal # for annotating pdfs
xournalpp # for annotating pdfs
hc # print files as qr codes
youtubeDL
bc # calculator
scripts.default-gateway
scripts.showkeys-toggle
scripts.favicon
scripts.ipa # XSAMPA to IPA converter
scripts.playlist
scripts.devanagari
scripts.betacode # ancient greek betacode to unicode converter
nur.repos.kmein.mahlzeit
# nur.repos.kmein.slide
@@ -121,8 +127,11 @@
scripts.notetags
scripts.booksplit
scripts.dmenurandr
scripts.interdimensional-cable
scripts.dmenubluetooth
scripts.manual-sort
scripts.much-scripts
scripts.dns-sledgehammer
ts
scripts.vg
scripts.fkill
@@ -135,6 +144,10 @@
par
qrencode
wtf
spotify
spotify-tui
playerctl
];
}

View File

@@ -10,13 +10,13 @@
'';
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
# :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\""
".stack/config.yaml".text = let inherit (config.niveum) user;
".stack/config.yaml".text = let inherit (import <niveum/lib>) kieran;
in builtins.toJSON {
templates.params = {
author-name = user.name;
author-email = user.email;
copyright = "Copyright: (c) 2019 ${user.name}";
github-username = user.github;
author-name = kieran.name;
author-email = kieran.email;
copyright = "Copyright: (c) 2020 ${kieran.name}";
github-username = kieran.github;
};
};
};
@@ -32,8 +32,7 @@
cabal2nix
cabal-install
hlint
haskellPackages.brittany
# haskellPackages.hfmt
haskellPackages.ormolu
(haskellPackages.ghcWithHoogle (import ./packages.nix))
] ++ map haskell.lib.justStaticExecutables [
haskellPackages.ghcid

View File

@@ -1,5 +1,7 @@
{ pkgs, lib, config, ... }:
let
inherit (import <niveum/lib>) nixpkgs-unstable;
zoteroStyle = { name, sha256 }: {
name = "${name}.csl";
path = pkgs.fetchurl {
@@ -15,17 +17,11 @@ let
})
(zoteroStyle {
name = "din-1505-2";
sha256 = if scardanelli then
"1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"
else
"150kbnxl1r4g1s40khdavv5s6ah10ws135r9k883f6srk78sz6zi";
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq";
})
(zoteroStyle {
name = "apa";
sha256 = if scardanelli then
"0g8vhp7gnd315h5b60r3zqp49kaq3fkxqnz2v7j2a0zp6s3cisdk"
else
"1rg41mblmqifba1azb6481dwxhsbl606kf6ysqkqd786f9l9dcf8";
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111";
})
];
@@ -34,7 +30,6 @@ let
name = "dic/${name}";
inherit path;
}) dicts);
scardanelli = config.networking.hostName == "scardanelli";
in {
environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [
{
@@ -69,9 +64,11 @@ in {
texlive.combined.scheme-full
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
haskellPackages.pandoc-citeproc
# nur.repos.kmein.text2pdf
nur.repos.kmein.text2pdf
libreoffice
unstable.pandoc
# gnumeric
dia
nixpkgs-unstable.pandoc
# proselint
asciidoctor
wordnet

24
configs/power-action.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, config, ... }:
let
suspend = pkgs.writers.writeDash "suspend" "${pkgs.systemd}/bin/systemctl suspend";
in
{
imports = [ <stockholm/krebs/3modules/power-action.nix> ];
krebs.power-action = {
enable = true;
plans.suspend = {
upperLimit = 3;
lowerLimit = 0;
charging = false;
action = pkgs.writeDash "suspend-wrapper" ''
/run/wrappers/bin/sudo ${suspend}
'';
};
user = config.users.users.me.name;
};
security.sudo.extraConfig = ''
${config.krebs.power-action.user} ALL= (root) NOPASSWD: ${suspend}
'';
}

179
configs/radio.nix Normal file
View File

@@ -0,0 +1,179 @@
{ lib, pkgs, config, ... }:
let
meddl = {
streamPort = 8000;
mpdPort = 6600;
};
lyrikline = {
streamPort = 8001;
mpdPort = 6601;
};
lyrik = {
streamPort = 8002;
mpdPort = 6602;
};
in
{
containers.lyrik = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = lyrik.mpdPort;
extraConfig = ''
log_level "default"
audio_output {
name "Lyrik-Radio"
type "httpd"
encoder "vorbis"
port "${toString lyrik.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
containers.meddl = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = meddl.mpdPort;
extraConfig = ''
log_level "default"
volume_normalization "yes"
audio_output {
name "DrachenLord Radio"
type "httpd"
encoder "vorbis"
port "${toString meddl.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
containers.lyrikline = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = lyrikline.mpdPort;
extraConfig = ''
log_level "default"
audio_output {
name "lyrikline.org Radio"
type "httpd"
encoder "vorbis"
port "${toString lyrikline.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
systemd.services.lyrikline = {
after = [ "container@lyrikline.service" ];
wantedBy = [ "container@lyrikline.service" ];
startAt = "*:00/5";
environment.MPD_PORT = toString lyrikline.mpdPort;
script = ''
set -efu
lyrikline=https://www.lyrikline.org
for _ in $(seq 1 10); do
random_route="$(${pkgs.curl}/bin/curl -sSL "$lyrikline/index.php/tools/getrandompoem" --data-raw 'lang=de' --compressed | ${pkgs.jq}/bin/jq -r .link)"
poem_url="$(${pkgs.curl}/bin/curl -sSL "$lyrikline$random_route" | grep -o 'https://.*\.mp3' | head -n1)"
${pkgs.mpc_cli}/bin/mpc add "$poem_url"
done
${pkgs.mpc_cli}/bin/mpc play
'';
};
systemd.services.lyrik = {
after = [ "container@lyrik.service" ];
wantedBy = [ "container@lyrik.service" ];
environment.MPD_PORT = toString lyrik.mpdPort;
preStart = "${pkgs.mpc_cli}/bin/mpc crop";
restartIfChanged = true;
script =
let
videoIds = import <niveum/lib/hot-rotation/lyrik.nix>;
streams = lib.concatMapStringsSep "\n" (id: "https://au.ytprivate.com/latest_version?id=${id}&itag=251") videoIds;
streamsFile = pkgs.writeText "hotrot" streams;
in ''
set -efu
${pkgs.mpc_cli}/bin/mpc add < ${toString streamsFile}
${pkgs.mpc_cli}/bin/mpc crossfade 5
${pkgs.mpc_cli}/bin/mpc random on
${pkgs.mpc_cli}/bin/mpc repeat on
${pkgs.mpc_cli}/bin/mpc play
'';
};
systemd.services.meddl = {
after = [ "container@meddl.service" ];
wantedBy = [ "container@meddl.service" ];
startAt = "*:00/10";
environment.MPD_PORT = toString meddl.mpdPort;
script = ''
set -efu
host=http://antenne-asb.ga
prepend_host() {
sed "s#^#$host/#"
}
${pkgs.curl}/bin/curl -sSL "$host" \
| ${pkgs.pup}/bin/pup 'li a attr{href}' \
| prepend_host \
| while read -r song; do
song_url="$(${pkgs.curl}/bin/curl -sSL "$song" \
| ${pkgs.pup}/bin/pup 'audio source attr{src}' \
| prepend_host
)"
${pkgs.mpc_cli}/bin/mpc add "$song_url"
done
${pkgs.mpc_cli}/bin/mpc play
'';
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "mpc-lyrikline" ''
MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
(pkgs.writers.writeDashBin "mpc-meddl" ''
MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
(pkgs.writers.writeDashBin "mpc-lyrik" ''
MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
'')
];
services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = {
"= /meddl.ogg".proxyPass = "http://127.0.0.1:${toString meddl.streamPort}";
"= /lyrikline.ogg".proxyPass = "http://127.0.0.1:${toString lyrikline.streamPort}";
"= /lyrik.ogg".proxyPass = "http://127.0.0.1:${toString lyrik.streamPort}";
};
}

View File

@@ -1,10 +1,7 @@
{ config, pkgs, ... }: {
imports = [ <niveum/modules/retiolum.nix> ];
imports = [
<niveum/modules/retiolum.nix>
];
networking.hosts = { "42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ]; };
environment.etc."tinc/retiolum/rsa_key.priv" = {
text = builtins.readFile <system-secrets/retiolum.key>;
mode = "400";
};
}

View File

@@ -1,12 +1,14 @@
{ config, ... }:
with config.niveum; {
let
inherit (import <niveum/lib>) colours;
in{
home-manager.users.me.programs.rofi = {
enable = true;
separator = "solid";
scrollbar = false;
borderWidth = 0;
lines = 5;
font = "Monospace ${toString (fonts.size - 1)}";
font = "Monospace 10";
colors = rec {
window = rec {
background = colours.foreground;

View File

@@ -3,6 +3,7 @@
documentation.enable = false;
documentation.info.enable = false;
documentation.man.enable = false;
documentation.man.generateCaches = false;
fonts.fontconfig.enable = false;
nix.gc.automatic = true;
nix.optimise.automatic = true;

7
configs/spacetime.nix Normal file
View File

@@ -0,0 +1,7 @@
{
time.timeZone = "Europe/Berlin";
location = {
latitude = 52.517;
longitude = 13.3872;
};
}

View File

@@ -1,42 +0,0 @@
{ pkgs, lib, ... }:
let
inherit (lib.strings) fileContents;
in {
environment.systemPackages = with pkgs; [ spotify spotify-tui playerctl ];
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/audio/spotifyd.nix
systemd.user.services.spotifyd = let
spotifyd = pkgs.unstable.spotifyd.override {
withMpris = true;
withPulseAudio = true;
inherit (pkgs) libpulseaudio dbus;
};
spotifydConf = pkgs.writeText "spotifyd.conf" (lib.generators.toINI { } {
global = {
username = fileContents <secrets/spotify/username>;
password = fileContents <secrets/spotify/password>;
backend = "pulseaudio";
on_song_change_hook = toString (pkgs.writers.writeDash "songinfo" ''
PATH=$PATH:${
lib.makeBinPath [ pkgs.playerctl pkgs.gawk pkgs.libnotify ]
}
metadata=$(playerctl metadata --player spotifyd)
title=$(echo "$metadata" | awk '/^xesam:title\s/ { print substr($0, index($0, $3)) }')
artist=$(echo "$metadata" | awk '/^xesam:artist\s/ { print substr($0, index($0, $3)) }' | paste --serial --delimiters "/")
album=$(echo "$metadata" | awk '/^xesam:album\s/ { print substr($0, index($0, $3)) }')
notify-send --app-name=" Spotify" "$title" "$artist $album"
'');
};
});
in {
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" "sound.target" ];
description = "spotifyd, a Spotify playing daemon";
serviceConfig = {
ExecStart =
"${spotifyd}/bin/spotifyd --no-daemon --config-path ${spotifydConf}";
Restart = "always";
RestartSec = 12;
};
};
}

14
configs/spotifyd.nix Normal file
View File

@@ -0,0 +1,14 @@
{ lib, ... }:
{
services.spotifyd = {
enable = true;
config = lib.generators.toINI { } {
global = {
username = lib.strings.fileContents <secrets/spotify/username>;
password = lib.strings.fileContents <secrets/spotify/password>;
};
};
};
systemd.services.spotifyd.serviceConfig.Restart = "always";
}

View File

@@ -1,27 +1,12 @@
{ pkgs, config, lib, ... }:
let
sshPort = 22022;
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
}));
inherit (import <niveum/lib>) sshPort kieran;
in {
services.xserver.displayManager.sessionCommands =
"${pkgs.openssh}/bin/ssh-add";
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
programs.ssh.startAgent = true;
services.openssh = {
ports = [ sshPort ];
enable = true;
passwordAuthentication = false;
forwardX11 = true;
};
users.motd = "Welcome to ${config.networking.hostName}!";
users.users.root.openssh.authorizedKeys.keys = kmeinKeys;
users.users.me.openssh.authorizedKeys.keys = kmeinKeys;
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
home-manager.users.me.programs.ssh = {
enable = true;
@@ -30,19 +15,24 @@ in {
hostname = "ssh.github.com";
port = 443;
};
scardanelli = {
hostname = "scardanelli.r";
user = "kfm";
zaatar = {
hostname = "zaatar.r";
user = "root";
port = sshPort;
};
homeros = {
hostname = "homeros.r";
makanek = {
hostname = "makanek.r";
user = "root";
port = sshPort;
};
manakish = {
hostname = "manakish.r";
user = "kfm";
port = sshPort;
};
toum = {
hostname = "toum.r";
user = "kfm";
user = "root";
port = sshPort;
};
wilde = {

16
configs/sshd.nix Normal file
View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let
inherit (import <niveum/lib>) sshPort kieran;
in
{
users.motd = "Welcome to ${config.networking.hostName}!";
services.openssh = {
enable = true;
ports = [ sshPort ];
passwordAuthentication = false;
forwardX11 = true;
};
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
bright = "#151515";
dark = "#000000";
};
red = {
bright = "#de575c";
dark = "#de575c";
};
yellow = {
bright = "#ebe971";
dark = "#ebe971";
};
green = {
bright = "#00b853";
dark = "#00b853";
};
blue = {
bright = "#90d0f0";
dark = "#7fc6f0";
};
magenta = {
bright = "#cf9ffa";
dark = "#cf9ffa";
};
cyan = {
bright = "#4ae5e8";
dark = "#4ae5e8";
};
white = {
bright = "#ffffff";
dark = "#bbbbbb";
};
background = black.dark;
foreground = white.dark;
cursor = green.bright;
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = {
black = {
bright = "#444444";
dark = "#1c1c1c";
};
red = {
bright = "#ff8700";
dark = "#af5f5f";
};
green = {
bright = "#87af87";
dark = "#5f875f";
};
yellow = {
bright = "#ffffaf";
dark = "#87875f";
};
blue = {
bright = "#8fafd7";
dark = "#5f87af";
};
magenta = {
bright = "#8787af";
dark = "#5f5f87";
};
cyan = {
bright = "#5fafaf";
dark = "#5f8787";
};
white = {
bright = "#999999";
dark = "#6c6c6c";
};
background = "#262626";
foreground = "#bcbcbc";
cursor = "#bcbcbc";
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
bright = "#454545";
dark = "#222222";
};
red = {
bright = "#FA8072";
dark = "#B22222";
};
green = {
bright = "#779A3E";
dark = "#556B2F";
};
yellow = {
bright = "#DAA520";
dark = "#B8860B";
};
blue = {
bright = "#6495ED";
dark = "#4682B4";
};
magenta = {
bright = "#DA70D6";
dark = "#9932CC";
};
cyan = {
bright = "#B0E0E6";
dark = "#87CEEB";
};
white = {
bright = "#FFFFFF";
dark = "#C0C0C0";
};
background = "#000000";
foreground = "#AAAAAA";
cursor = green.bright;
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
bright = "#818383";
dark = "#000000";
};
red = {
bright = "#fc391f";
dark = "#c23621";
};
yellow = {
bright = "#eaec23";
dark = "#adad27";
};
green = {
bright = "#31e722";
dark = "#25bc24";
};
blue = {
bright = "#5833ff";
dark = "#492ee1";
};
magenta = {
bright = "#f935f8";
dark = "#d338d3";
};
cyan = {
bright = "#14f0f0";
dark = "#33bbc8";
};
white = {
bright = "#e9ebeb";
dark = "#cbcccd";
};
background = black.dark;
foreground = white.dark;
cursor = green.bright;
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
bright = "#4b4b4b";
dark = "#242424";
};
red = {
bright = "#fc1c18";
dark = "#d71c15";
};
green = {
bright = "#6bc219";
dark = "#5aa513";
};
yellow = {
bright = "#fec80e";
dark = "#fdb40c";
};
blue = {
bright = "#0955ff";
dark = "#063b8c";
};
magenta = {
bright = "#fb0050";
dark = "#e40038";
};
cyan = {
bright = "#3ea8fc";
dark = "#2595e1";
};
white = {
bright = "#8c00ec";
dark = "#efefef";
};
background = "#181818";
foreground = white.dark;
cursor = "#bbbbbb";
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
bright = "#282c34";
dark = "#282c34";
};
red = {
bright = "#e06c75";
dark = "#e06c75";
};
green = {
bright = "#98c379";
dark = "#98c379";
};
yellow = {
bright = "#e5c07b";
dark = "#e5c07b";
};
blue = {
bright = "#61afef";
dark = "#61afef";
};
magenta = {
bright = "#c678dd";
dark = "#c678dd";
};
cyan = {
bright = "#56b6c2";
dark = "#56b6c2";
};
white = {
bright = "#dcdfe4";
dark = "#dcdfe4";
};
background = black.dark;
foreground = white.bright;
cursor = "#a3b3cc";
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
dark = "#073642";
bright = "#002b36";
};
red = {
dark = "#dc322f";
bright = "#cb4b16";
};
yellow = {
dark = "#b58900";
bright = "#657b83";
};
green = {
dark = "#859900";
bright = "#586e75";
};
blue = {
dark = "#268bd2";
bright = "#839496";
};
magenta = {
dark = "#d33682";
bright = "#6c71c4";
};
cyan = {
dark = "#2aa198";
bright = "#93a1a1";
};
white = {
dark = "#eee8d5";
bright = "#fdf6e3";
};
background = black.bright;
foreground = blue.bright;
cursor = cyan.bright;
};
}

View File

@@ -1,39 +0,0 @@
{
niveum.colours = rec {
black = {
dark = "#073642";
bright = "#002b36";
};
red = {
dark = "#dc322f";
bright = "#cb4b16";
};
yellow = {
dark = "#b58900";
bright = "#657b83";
};
green = {
dark = "#859900";
bright = "#586e75";
};
blue = {
dark = "#268bd2";
bright = "#839496";
};
magenta = {
dark = "#d33682";
bright = "#6c71c4";
};
cyan = {
dark = "#2aa198";
bright = "#93a1a1";
};
white = {
dark = "#eee8d5";
bright = "#fdf6e3";
};
background = white.bright;
foreground = yellow.bright;
cursor = green.bright;
};
}

View File

@@ -1,8 +1,7 @@
{ lib, config, ... }:
let inherit (config.niveum) theme colourPalette;
{ lib, config, pkgs, ... }:
let
theme = (import <niveum/lib>).theme pkgs;
in {
console.colors = map (c: lib.strings.removePrefix "#" c) colourPalette;
environment.systemPackages =
[ theme.gtk.package theme.icon.package theme.cursor.package ];

View File

@@ -9,7 +9,8 @@ let
'';
in {
home-manager.users.me.home.file.".todo/config".text = ''
export TODO_DIR="$(${get-todo-dir})"
# export TODO_DIR="$(${get-todo-dir})"
export TODO_DIR="$HOME/cloud/Dropbox/todo"
export TODO_FILE="$TODO_DIR/todo.txt"
export DONE_FILE="$TODO_DIR/done.txt"

View File

@@ -29,6 +29,7 @@ in
bedroom = 131082;
living-room = living-room-id;
bedside = 131087;
desk = 131089;
};
};
}

93
configs/urlwatch.nix Normal file
View File

@@ -0,0 +1,93 @@
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
urlwatchDir = "/var/lib/urlwatch";
urlsFile = pkgs.writeText "urls" (builtins.concatStringsSep "\n---\n" (map builtins.toJSON urls));
urls = [
{
name = "Corona-Verordnung";
url = "https://www.berlin.de/corona/massnahmen/verordnung/";
filter = [
{
css = "[role=main]";
}
"html2text"
"strip"
];
}
{
name = "Christian-Metz-Blamage";
url = "https://www.deutschlandfunk.de/meine-nacht-schlaeft-nicht-pflanze-mich-nicht-in-dein-herz.700.de.html?dram:article_id=486475";
filter = [
{
element-by-class = "dlf-articledetail";
}
"html2text"
"strip"
];
}
];
configFile = pkgs.writeText "urlwatch.yaml" (builtins.toJSON {
display = {
error = true;
new = true;
unchanged = false;
};
report = {
email = {
enabled = true;
from = "2210@cock.li";
html = false;
method = "smtp";
smtp = {
host = "mail.cock.li";
port = 587;
starttls = true;
auth = true;
insecure_password = lib.strings.fileContents <secrets/mail/cock>;
};
subject = "{count} changes: {jobs}";
to = kieran.email;
};
html.diff = "unified";
stdout = {
color = true;
enabled = true;
};
text.footer = false;
# telegram = {
# enabled = false;
# bot_token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
# chat_id = [ "18980945" ];
# };
};
});
in
{
users.extraUsers.urlwatch = {
home = urlwatchDir;
createHome = true;
};
systemd.services.urlwatch = {
enable = true;
startAt = "*-*-* 05:00:00";
script = ''
${pkgs.urlwatch}/bin/urlwatch \
--config=${lib.escapeShellArg configFile} \
--urls=${lib.escapeShellArg urlsFile}
'';
serviceConfig = {
User = config.users.extraUsers.urlwatch.name;
WorkingDirectory = config.users.extraUsers.urlwatch.home;
PermissionsStartOnly = "true";
PrivateTmp = "true";
SyslogIdentifier = "urlwatch";
Type = "oneshot";
};
};
}

View File

@@ -16,19 +16,34 @@ let
rev = "33cad3099919366cea2627f930da9b47609e8554";
sha256 = "1li6rrn016fpgvmnijqhvkp07kj83cjwcjx2l2b3asb99d51814i";
};
*/
kmein-wallpapers = pkgs.fetchFromGitHub {
owner = "kmein";
repo = "wallpapers";
rev = "7c553bc6bd78afa6dbf2824691466bbad0d8e6e9";
sha256 = "1zik5z1cq1084j1hdwm204afz89f5hpg21z0vvcbppzkmldfxnnq";
};
*/
in {
imports = [ <stockholm/krebs/3modules/fetchWallpaper.nix> ];
krebs.fetchWallpaper = {
enable = true;
# unitConfig.ConditionPathExists = "!/var/run/ppp0.pid";
url = "https://lassul.us/wallpaper-marker.png";
};
services.xserver = {
display = lib.mkForce 0; # needed for fetchWallpaper to find the X display
displayManager.sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +LOCAL:";
};
/*
home-manager.users.me = {
services.random-background = {
enable = true;
imageDirectory = "${kmein-wallpapers}/saudade";
imageDirectory = "${kmein-wallpapers}/meteora";
interval = "1h";
};
};
*/
}

View File

@@ -1,9 +1,4 @@
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.watson ];
system.activationScripts.watsonFiles = ''
install -d ${config.users.users.me.home}/.config/watson/
ln -sf ${config.users.users.me.home}/cloud/Dropbox/watson-frames.json ${config.users.users.me.home}/.config/watson/frames
'';
}

49
configs/wifi.nix Normal file
View File

@@ -0,0 +1,49 @@
{ pkgs, ... }:
{
networking.wireless = {
enable = true;
userControlled.enable = true;
networks = {
"Aether" = {
pskRaw = "e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
priority = 10;
};
"Asoziales Netzwerk" = {
pskRaw = "8e234041ec5f0cd1b6a14e9adeee9840ed51b2f18856a52137485523e46b0cb6";
priority = 10;
};
"Libertarian WiFi" = {
pskRaw = "e9beaae6ffa55d10e80b8a2e7d997411d676a3cc6f1f29d0b080391f04555050";
priority = 9;
};
"EasyBox-927376".pskRaw = "dbd490ab69b39bd67cfa06daf70fc3ef3ee90f482972a668ed758f90f5577c22";
"FlixBus Wi-Fi" = { };
"FlixBus" = { };
"FlixTrain" = { };
"BVG Wi-Fi" = { };
"wannseeforum" = { }; # login via curl -XPOST http://WannseeLancom.intern.:80/authen/login/ -d userid=$USER_ID -d password=$PASSWORD
"Hotel_Krone" = { }; # login: http://192.168.10.1/
"Ni/Schukajlow".pskRaw = "ffc47f6829da59c48aea878a32252223303f5c47a3859edc90971ffc63346781";
"WIFIonICE" = { }; # login: http://10.101.64.10/
"WLAN-914742".psk = "67647139648174545446";
"KDG-CEAA4".psk = "PBkBSmejcvM4";
"KDG-4ECF7".psk = "Gdbwh7afw2Bx";
"WLAN-XVMU6T".pskRaw = "46ea807283255a3d7029233bd79c18837df582666c007c86a8d591f65fae17cc";
"c-base-public" = { };
"discord".psk = "baraustrinken";
"GoOnline".psk = "airbnbguest";
"security-by-obscurity".psk = "44629828256481964386";
"Mayflower".psk = "Fr31EsLan";
"Born11".psk = "56LMVLbw840EGNWk0RYRqvgicx3FSO";
"FactoryCommunityGuest".psk = "Factory4ever";
"krebs".psk = "aidsballs";
"b-base".pskRaw = "44040369a63d5bce4576637e8d34aeb3ed3d178011386decb99da473418e9861";
"c-base".pskRaw = "1355ccb287407bcd0caa4a7a399367c28b1e11bf5da34dd100d4b86ac4cafe46";
# "o2-WLAN66".pskRaw = "9fc24da5ee0c7cf73321f5efa805370c246c4121413ea4f2373c0b7e41ec65e4";
"Vodafone-8012".pskRaw = "45a998e3e07f83ae0b4f573535fb3ccfd808b364a22f349878ced889a6fffe2c";
"yinyin".pskRaw = "ee85005d339df61e1e1a8484b96318513e15c46f222c3c06e8959fbc256569e7";
};
};
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
}

View File

@@ -1,39 +0,0 @@
{ config, pkgs, lib, ... }:
let
suspendIfBored = false;
xlockModes = lib.concatStringsSep "\\n" [
# "braid"
"galaxy"
# "lightning"
# "matrix"
"pyro2"
"space"
];
my-xlock = pkgs.writers.writeDashBin "xlock" ''
MODE=$(printf "${xlockModes}" | shuf -n 1)
${pkgs.xlockmore}/bin/xlock \
-saturation 0.4 \
-erasemode no_fade \
+description \
-showdate \
-username " " \
-password " " \
-info " " \
-validate "..." \
-invalid "Computer says no." \
-mode "$MODE"
'';
in {
services.xserver.xautolock = rec {
enable = true;
killer =
if suspendIfBored then "${pkgs.systemd}/bin/systemctl suspend" else null;
locker = "${my-xlock}/bin/xlock";
nowlocker = locker;
enableNotifier = true;
notifier = ''
${pkgs.libnotify}/bin/notify-send -u normal -a xautolock "Locking" "in 10 seconds."'';
};
}

View File

@@ -1,4 +1,6 @@
let
inherit (import ./lib/default.nix) sshPort;
gitFromJson = path:
let object = importJson path;
in {
@@ -17,7 +19,6 @@ let
nixos-config.symlink = "system/configuration.nix";
nixpkgs.git = gitFromJson .versions/nixpkgs.json;
nixpkgs-unstable.git = gitFromJson .versions/nixpkgs-unstable.json;
home-manager.git = gitFromJson .versions/home-manager.json;
stockholm.git = gitFromJson .versions/stockholm.json;
retiolum.git = gitFromJson .versions/retiolum.json;
@@ -30,19 +31,14 @@ let
name = "shared";
};
}];
target = "root@${address}:22022";
target = "root@${address}:${toString sshPort}";
};
inherit (pkgs.krops) writeDeploy;
in {
scardanelli = writeDeploy "deploy-scardanelli" (regularSystem {
path = systems/scardanelli;
name = "scardanelli";
address = "scardanelli.r";
});
homeros = writeDeploy "deploy-homeros" (regularSystem {
path = systems/homeros;
name = "homeros";
address = "homeros.r";
zaatar = writeDeploy "deploy-zaatar" (regularSystem {
path = systems/zaatar;
name = "zaatar";
address = "zaatar.r";
});
wilde = writeDeploy "deploy-wilde" (regularSystem {
path = systems/wilde;
@@ -54,4 +50,14 @@ in {
name = "toum";
address = "toum.r";
});
makanek = writeDeploy "deploy-makanek" (regularSystem {
path = systems/makanek;
name = "makanek";
address = "makanek.r";
});
manakish = writeDeploy "deploy-manakish" (regularSystem {
path = systems/manakish;
name = "manakish";
address = "manakish.r";
});
}

View File

@@ -1,24 +0,0 @@
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_direction=1
hide_threads=0
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=1
show_thread_names=1
show_program_path=1
highlight_base_name=1
highlight_megabytes=1
highlight_threads=1
tree_view=1
header_margin=1
detailed_cpu_time=0
cpu_count_from_zero=0
update_process_names=0
account_guest_in_cpu_meter=1
color_scheme=0
delay=15
left_meters=LeftCPUs2 RightCPUs2 Memory Swap
left_meter_modes=1 1 1 1
right_meters=Uptime Tasks LoadAverage Battery
right_meter_modes=2 2 2 2

View File

@@ -1,41 +0,0 @@
{ token }: {
general = {
RemoteNickFormat = "[{NOPINGNICK}] ";
Charset = "utf-8";
};
telegram.kmein.Token = token;
irc.freenode = {
Server = "irc.freenode.net:6667";
Nick = "tg_bridge";
};
gateway = [
{
name = "krebs-bridge";
enable = true;
inout = [
{
account = "irc.freenode";
channel = "#krebs";
}
{
account = "telegram.kmein";
channel = "-330372458";
}
];
}
{
name = "myengadin-bridge";
enable = true;
inout = [
{
account = "irc.freenode";
channel = "##myengadin";
}
{
account = "telegram.kmein";
channel = "-425759153";
}
];
}
];
}

37
lib/colours/antares.nix Normal file
View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#151515";
dark = "#000000";
};
red = {
bright = "#de575c";
dark = "#de575c";
};
yellow = {
bright = "#ebe971";
dark = "#ebe971";
};
green = {
bright = "#00b853";
dark = "#00b853";
};
blue = {
bright = "#90d0f0";
dark = "#7fc6f0";
};
magenta = {
bright = "#cf9ffa";
dark = "#cf9ffa";
};
cyan = {
bright = "#4ae5e8";
dark = "#4ae5e8";
};
white = {
bright = "#ffffff";
dark = "#bbbbbb";
};
background = black.dark;
foreground = white.dark;
cursor = green.bright;
}

View File

@@ -0,0 +1,37 @@
{
black = {
bright = "#444444";
dark = "#1c1c1c";
};
red = {
bright = "#ff8700";
dark = "#af5f5f";
};
green = {
bright = "#87af87";
dark = "#5f875f";
};
yellow = {
bright = "#ffffaf";
dark = "#87875f";
};
blue = {
bright = "#8fafd7";
dark = "#5f87af";
};
magenta = {
bright = "#8787af";
dark = "#5f5f87";
};
cyan = {
bright = "#5fafaf";
dark = "#5f8787";
};
white = {
bright = "#999999";
dark = "#6c6c6c";
};
background = "#262626";
foreground = "#bcbcbc";
cursor = "#bcbcbc";
}

37
lib/colours/connermcd.nix Normal file
View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#454545";
dark = "#222222";
};
red = {
bright = "#FA8072";
dark = "#B22222";
};
green = {
bright = "#779A3E";
dark = "#556B2F";
};
yellow = {
bright = "#DAA520";
dark = "#B8860B";
};
blue = {
bright = "#6495ED";
dark = "#4682B4";
};
magenta = {
bright = "#DA70D6";
dark = "#9932CC";
};
cyan = {
bright = "#B0E0E6";
dark = "#87CEEB";
};
white = {
bright = "#FFFFFF";
dark = "#C0C0C0";
};
background = "#000000";
foreground = "#AAAAAA";
cursor = green.bright;
}

37
lib/colours/mac-os.nix Normal file
View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#818383";
dark = "#000000";
};
red = {
bright = "#fc391f";
dark = "#c23621";
};
yellow = {
bright = "#eaec23";
dark = "#adad27";
};
green = {
bright = "#31e722";
dark = "#25bc24";
};
blue = {
bright = "#5833ff";
dark = "#492ee1";
};
magenta = {
bright = "#f935f8";
dark = "#d338d3";
};
cyan = {
bright = "#14f0f0";
dark = "#33bbc8";
};
white = {
bright = "#e9ebeb";
dark = "#cbcccd";
};
background = black.dark;
foreground = white.dark;
cursor = green.bright;
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#4b4b4b";
dark = "#242424";
};
red = {
bright = "#fc1c18";
dark = "#d71c15";
};
green = {
bright = "#6bc219";
dark = "#5aa513";
};
yellow = {
bright = "#fec80e";
dark = "#fdb40c";
};
blue = {
bright = "#0955ff";
dark = "#063b8c";
};
magenta = {
bright = "#fb0050";
dark = "#e40038";
};
cyan = {
bright = "#3ea8fc";
dark = "#2595e1";
};
white = {
bright = "#8c00ec";
dark = "#efefef";
};
background = "#181818";
foreground = white.dark;
cursor = "#bbbbbb";
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#282c34";
dark = "#282c34";
};
red = {
bright = "#e06c75";
dark = "#e06c75";
};
green = {
bright = "#98c379";
dark = "#98c379";
};
yellow = {
bright = "#e5c07b";
dark = "#e5c07b";
};
blue = {
bright = "#61afef";
dark = "#61afef";
};
magenta = {
bright = "#c678dd";
dark = "#c678dd";
};
cyan = {
bright = "#56b6c2";
dark = "#56b6c2";
};
white = {
bright = "#dcdfe4";
dark = "#dcdfe4";
};
background = black.dark;
foreground = white.bright;
cursor = "#a3b3cc";
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
dark = "#073642";
bright = "#002b36";
};
red = {
dark = "#dc322f";
bright = "#cb4b16";
};
yellow = {
dark = "#b58900";
bright = "#657b83";
};
green = {
dark = "#859900";
bright = "#586e75";
};
blue = {
dark = "#268bd2";
bright = "#839496";
};
magenta = {
dark = "#d33682";
bright = "#6c71c4";
};
cyan = {
dark = "#2aa198";
bright = "#93a1a1";
};
white = {
dark = "#eee8d5";
bright = "#fdf6e3";
};
background = black.bright;
foreground = blue.bright;
cursor = cyan.bright;
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
dark = "#073642";
bright = "#002b36";
};
red = {
dark = "#dc322f";
bright = "#cb4b16";
};
yellow = {
dark = "#b58900";
bright = "#657b83";
};
green = {
dark = "#859900";
bright = "#586e75";
};
blue = {
dark = "#268bd2";
bright = "#839496";
};
magenta = {
dark = "#d33682";
bright = "#6c71c4";
};
cyan = {
dark = "#2aa198";
bright = "#93a1a1";
};
white = {
dark = "#eee8d5";
bright = "#fdf6e3";
};
background = white.bright;
foreground = yellow.bright;
cursor = green.bright;
}

View File

@@ -0,0 +1,5 @@
pkgs: rec {
terminal = "${pkgs.alacritty}/bin/alacritty";
browser = "${pkgs.brave}/bin/brave";
fileManager = "${terminal} -e ${pkgs.ranger}/bin/ranger";
}

View File

@@ -1,12 +1,75 @@
{
localAddresses = {
toum = "192.168.178.24";
homeros = "192.168.178.22";
wilde = "192.168.178.32";
android = "192.168.178.35";
tradfri = "192.168.178.28";
officejet = "192.168.178.27";
fritzbox = "192.168.178.1";
rec {
nixpkgs-src = builtins.fetchGit {
url = "https://github.com/NixOS/nixpkgs";
rev = "f3042e30785437f6cb2d99b15625b962fb96799f";
};
nixpkgs-unstable = import nixpkgs-src { config.allowUnfree = true; };
sshPort = 22022;
colours = import ./colours/mac-os.nix;
theme = pkgs: {
gtk = {
name = "Adwaita-dark";
package = pkgs.gnome3.gnome-themes-extra;
};
icon = {
name = "Adwaita";
package = pkgs.gnome3.adwaita-icon-theme;
};
cursor = {
name = "capitaine-cursors-white";
package = pkgs.capitaine-cursors;
};
};
defaultApplications = import ./default-applications.nix;
localAddresses = import ./local-network.nix;
kieran = {
github = "kmein";
email = "kmein@posteo.de";
name = "Kierán Meinhardt";
sshKeys = pkgs: pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
sha256 = "09c6ny0rmpid1m0pc1wsmb3wyy9g721lf4kv55i4lrp42b3i2d5b";
}));
};
syncthing.devices = {
wilde.id = "R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
heym.id = "HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
manakish.id = "AJVBWR2-VFFAGZF-7ZF5JAX-T63GMOG-NZ446WK-MC5E6WK-6X6Q2HE-QQA2JQ3";
toum.id = "CBJQXFF-FMFGWFU-2J6FMPR-SRDTSGX-7NHOYOH-CQCABKF-KQJMRJC-SDE24Q4";
};
ignorePaths = [
"*~"
".stack-work/"
"__pycache__/"
".mypy_cache/"
"*.py[co]"
"*.o"
"*.hi"
"*.aux"
"*.bbl"
"*.bcf"
"*.blg"
"*.fdb_latexmk"
"*.fls"
"*.out"
"*.run.xml"
"*.toc"
"*.bbl"
"*.class"
"*.dyn_hi"
"*.dyn_o"
"dist/"
".envrc"
".direnv/"
"dist-newstyle/"
".history"
];
}

1913
lib/hot-rotation/lyrik.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
{ pkgs, wifi-interface, colours, batteryBlock }:
{ pkgs, wirelessInterface, colours, batteryName }:
let
inherit (pkgs) lib;
@@ -33,7 +33,7 @@ in {
good_bg = colours.background;
idle_bg = colours.background;
info_bg = colours.background;
separator = "* ";
separator = "/ ";
separator_bg = "auto";
separator_fg = colours.black.bright;
};
@@ -89,18 +89,6 @@ in {
}"
'';
}
{
block = "custom";
interval = 30;
command = pkgs.writers.writeDash "rss-new" ''
${pkgs.newsboat}/bin/newsboat --execute=print-unread | ${pkgs.gawk}/bin/awk '{ print "📰 " $1 }'
'';
on_click = pkgs.writers.writeDash "rss-update" ''
${pkgs.libnotify}/bin/notify-send --app-name=" Newsboat" "Updating feeds." \
&& ${pkgs.newsboat}/bin/newsboat --execute=reload \
&& ${pkgs.libnotify}/bin/notify-send --app-name=" Newsboat" "Feeds updated."
'';
}
{
block = "custom";
interval = 30;
@@ -114,7 +102,7 @@ in {
}
{
block = "net";
device = wifi-interface;
device = wirelessInterface;
speed_up = false;
speed_down = false;
signal_strength = true;
@@ -122,7 +110,7 @@ in {
}
{
block = "battery";
device = batteryBlock;
device = batteryName;
}
{
block = "sound";

11
lib/local-network.nix Normal file
View File

@@ -0,0 +1,11 @@
{
toum = "192.168.178.24";
zaatar = "192.168.178.21";
wilde = "192.168.178.32";
android = "192.168.178.35";
manakish = "192.168.178.29";
tradfri = "192.168.178.28";
officejet = "192.168.178.27";
fritzbox = "192.168.178.1";
}

1365
lib/streams.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -124,6 +124,7 @@ if has("autocmd")
autocmd bufnewfile,bufread *.rust packadd rust-vim " | packadd deoplete-rust
autocmd bufnewfile,bufread *.csv packadd csv-vim | set filetype=csv
autocmd bufnewfile,bufread *.toml packadd vim-toml | set filetype=toml
autocmd bufnewfile,bufread *.nim packadd nim-vim | set filetype=nim
autocmd bufnewfile,bufread *.tex packadd vimtex | set filetype=tex
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
@@ -181,7 +182,7 @@ let g:pandoc#spell#default_langs = ['en', 'de']
let g:ale_linters = {
\ 'css': ['csslint'],
\ 'haskell': ['ghc', 'cabal-ghc', 'hlint'],
\ 'haskell': ['ghc', 'cabal-ghc', 'hlint', 'ormolu'],
\ 'html': ['tidy', 'proselint'],
\ 'latex': ['lacheck', 'chktex', 'proselint'],
\ 'pandoc': ['proselint'],

View File

@@ -1,134 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
colourScheme = config.niveum.colours;
my-types.hexColour = types.strMatching "#[0-9A-Fa-f]{6}";
my-types.colourPair = types.submodule {
options = {
dark = mkOption { type = my-types.hexColour; };
bright = mkOption { type = my-types.hexColour; };
};
};
my-types.theme = types.submodule {
options = {
name = mkOption { type = types.str; };
package = mkOption { type = types.package; };
};
};
my-types.colourTheme = types.submodule {
options = {
black = mkOption { type = my-types.colourPair; };
red = mkOption { type = my-types.colourPair; };
green = mkOption { type = my-types.colourPair; };
yellow = mkOption { type = my-types.colourPair; };
blue = mkOption { type = my-types.colourPair; };
magenta = mkOption { type = my-types.colourPair; };
cyan = mkOption { type = my-types.colourPair; };
white = mkOption { type = my-types.colourPair; };
background = mkOption { type = my-types.hexColour; };
foreground = mkOption { type = my-types.hexColour; };
cursor = mkOption { type = my-types.hexColour; };
};
};
in {
options.niveum = {
applications = { fileManager = mkOption { type = types.str; }; };
colours = mkOption { type = my-types.colourTheme; };
colourPalette = mkOption {
type = types.listOf my-types.hexColour;
default = with config.niveum.colours; [
black.dark
red.dark
green.dark
yellow.dark
blue.dark
magenta.dark
cyan.dark
white.dark
black.bright
red.bright
green.bright
yellow.bright
blue.bright
magenta.bright
cyan.bright
white.bright
];
};
networkInterfaces.wireless = mkOption { type = types.str; };
batteryBlocks.default = mkOption { type = types.str; };
promptColours = let
colours16 = types.enum [
"black"
"red"
"green"
"yellow"
"blue"
"magenta"
"cyan"
"white"
];
in {
success = mkOption {
type = colours16;
default = "green";
};
failure = mkOption {
type = colours16;
default = "red";
};
};
fonts = { size = mkOption { type = types.int; }; };
user = {
github = mkOption { type = types.str; };
name = mkOption { type = types.str; };
email = mkOption { type = types.strMatching ".+@.+\\..+"; };
};
ignore = mkOption {
type = types.listOf types.str;
default = [
"*~"
".stack-work/"
"__pycache__/"
".mypy_cache/"
"*.py[co]"
"*.o"
"*.hi"
"*.aux"
"*.bbl"
"*.bcf"
"*.blg"
"*.fdb_latexmk"
"*.fls"
"*.out"
"*.run.xml"
"*.toc"
"*.bbl"
"*.class"
"*.dyn_hi"
"*.dyn_o"
"dist/"
".envrc"
".direnv/"
"dist-newstyle/"
".history"
];
};
theme = {
gtk = mkOption { type = my-types.theme; };
icon = mkOption { type = my-types.theme; };
cursor = mkOption { type = my-types.theme; };
};
};
}

View File

@@ -5,17 +5,24 @@ in {
options.niveum.dropbox = { enable = mkEnableOption "Dropbox"; };
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.dropbox-cli ];
networking.firewall = {
allowedTCPPorts = [ 17500 ];
allowedUDPPorts = [ 17500 ];
};
systemd.user.services.dropbox = {
description = "Dropbox synchronisation service";
after = [ "network.target" ];
wantedBy = [ "default.target" ];
path = [ pkgs.dropbox-cli ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
Type = "forking";
PIDFile = "%h/.dropbox/dropbox.pid";
Restart = "always";
ExecStart = "${pkgs.dropbox-cli}/bin/dropbox start";
ExecStop = "${pkgs.dropbox-cli}/bin/dropbox stop";
ExecStart = "${pkgs.dropbox.out}/bin/dropbox";
ExecReload = "${pkgs.coreutils.out}/bin/kill -HUP $MAINPID";
KillMode = "control-group"; # upstream recommends process
Restart = "on-failure";
PrivateTmp = true;
ProtectSystem = "full";
Nice = 10;
};
};
};

96
modules/mpd-fm.nix Normal file
View File

@@ -0,0 +1,96 @@
{ config, lib, pkgs, ... }:
with lib;
let
mpd-fm = pkgs.callPackage <niveum/packages/MPD.FM> {};
cfg = config.services.mpd-fm;
in {
imports = [];
options.services.mpd-fm = {
enable = mkEnableOption "MPD.FM, an MPD web UI for radio streams";
webPort = mkOption {
type = types.port;
default = 4200;
};
stations = mkOption {
default = [];
type = types.listOf (types.submodule {
options = {
id = mkOption {
type = types.int;
description = "A unique identifier of the station";
};
station = mkOption {
type = types.str;
description = "Name of the station that should be displayed";
};
desc = mkOption {
type = types.nullOr types.str;
description = "Short description of the station (optional)";
};
logo = mkOption {
type = types.str;
description = "URL to a logo of the station (any size)";
};
stream = mkOption {
type = types.str;
description = "URL to the stream of the radio station (in a format supported by MPD such as MP3, OGG, ...)";
};
};
});
};
stationsFile = mkOption {
type = types.path;
default = pkgs.writeText "stations.json" (builtins.toJSON cfg.stations);
};
package = mkOption {
type = types.package;
default = mpd-fm;
};
mpd = {
host = mkOption {
type = types.str;
default = "localhost";
description = "The host where MPD is listening.";
example = "localhost";
};
port = mkOption {
type = types.port;
default = config.services.mpd.network.port;
description = "The port where MPD is listening.";
example = 6600;
};
};
};
config = mkIf cfg.enable {
users.extraUsers.mpd-fm.isSystemUser = true;
# ref https://github.com/florianheinemann/MPD.FM/blob/9d037cf87597b26ae2f10ba9feea48946ad6cc68/service/MPD.FM.service
systemd.services.mpd-fm = {
wantedBy = [ "multi-user.target" ];
after = [ "mpd.service" ];
description = "MPD.FM an MPD web radio player web GUI";
script = "${cfg.package}/libexec/mpd.fm/deps/mpd.fm/bin/www";
environment = {
NODE_ENV = "production";
MPD_HOST = cfg.mpd.host;
MPD_PORT = toString cfg.mpd.port;
PORT = toString cfg.webPort;
STATION_FILE = cfg.stationsFile;
};
serviceConfig = {
Restart = "always";
StandardOutput = "syslog";
StandardError = "syslog";
SyslogIdentifier = "mpd-fm";
User = "mpd-fm";
};
};
};
}

View File

@@ -1,18 +1,12 @@
{ config, pkgs, lib, ... }:
with lib;
let
netname = "retiolum";
cfg = config.networking.retiolum;
retiolum = pkgs.fetchFromGitHub {
owner = "krebs";
repo = netname;
rev = "76e8de36d4ac06bcfaf551946aa2f6a41d9e6555";
sha256 = "0yhmmvg6gm5yxs1gzszl19bs6y302yjg81a7sckfglwzcql3q0wf";
};
in {
imports = [ "${(import <niveum/lib>).nixpkgs-src}/nixos/modules/services/networking/tinc.nix" ];
disabledModules = [ "services/networking/tinc.nix" ];
options = {
networking.retiolum.ipv4 = mkOption {
type = types.str;
@@ -39,22 +33,19 @@ in {
services.tinc.networks.${netname} = {
name = cfg.nodename;
hosts = builtins.mapAttrs
(name: _: builtins.readFile "${<retiolum/hosts>}/${name}")
(builtins.readDir <retiolum/hosts>);
rsaPrivateKeyFile = toString <system-secrets/retiolum.key>;
extraConfig = ''
LocalDiscovery = yes
AutoConnect = yes
'';
};
systemd.services."tinc.${netname}" = {
preStart = ''
cp -R ${toString <retiolum/hosts>} /etc/tinc/retiolum/ || true
'';
};
networking.extraHosts =
builtins.readFile (toString <retiolum/etc.hosts>);
networking.extraHosts = builtins.readFile (toString <retiolum/etc.hosts>);
environment.systemPackages =
[ config.services.tinc.networks.${netname}.package ];
environment.systemPackages = [ config.services.tinc.networks.${netname}.package ];
networking.firewall = {
allowedTCPPorts = [ 655 ];

View File

@@ -0,0 +1,31 @@
{ config, lib, pkgs, ... }:
with lib;
{
options.niveum = {
wirelessInterface = mkOption { type = types.str; };
batteryName = mkOption { type = types.str; };
promptColours = let
colours16 = types.enum [
"black"
"red"
"green"
"yellow"
"blue"
"magenta"
"cyan"
"white"
];
in {
success = mkOption {
type = colours16;
default = "green";
};
failure = mkOption {
type = colours16;
default = "red";
};
};
};
}

View File

@@ -0,0 +1,13 @@
{ mkYarnPackage, fetchFromGitHub }:
mkYarnPackage rec {
name = "MPD.FM";
src = fetchFromGitHub {
owner = "kmein";
repo = "MPD.FM";
rev = "5f309c2579a9cbbbc4f7eb6a2e2f3993cc177630";
sha256 = "0ladh96s656i7yd9qxrpqq4x513r88zas7112rqn5sgxxaccbh72";
};
packageJSON = "${src}/package.json";
yarnLock = ./yarn.lock;
yarnNix = ./yarn.nix;
}

422
packages/MPD.FM/yarn.lock Normal file
View File

@@ -0,0 +1,422 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
accepts@~1.3.3:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
mime-types "~2.1.24"
negotiator "0.6.2"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
async-limiter@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
basic-auth@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
safe-buffer "5.1.2"
body-parser@~1.18.2:
version "1.18.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
dependencies:
bytes "3.0.0"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.2"
http-errors "~1.6.3"
iconv-lite "0.4.23"
on-finished "~2.3.0"
qs "6.5.2"
raw-body "2.3.3"
type-is "~1.6.16"
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
content-type@~1.0.2, content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
cookie-parser@~1.4.3:
version "1.4.5"
resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49"
integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==
dependencies:
cookie "0.4.0"
cookie-signature "1.0.6"
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
cookie@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
cookie@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
debug@2.6.9, debug@~2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
depd@~1.1.1, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
encodeurl@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
etag@~1.8.0, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
express@~4.15.5:
version "4.15.5"
resolved "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz#670235ca9598890a5ae8170b83db722b842ed927"
integrity sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=
dependencies:
accepts "~1.3.3"
array-flatten "1.1.1"
content-disposition "0.5.2"
content-type "~1.0.2"
cookie "0.3.1"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.1"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.8.0"
finalhandler "~1.0.6"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.1"
path-to-regexp "0.1.7"
proxy-addr "~1.1.5"
qs "6.5.0"
range-parser "~1.2.0"
send "0.15.6"
serve-static "1.12.6"
setprototypeof "1.0.3"
statuses "~1.3.1"
type-is "~1.6.15"
utils-merge "1.0.0"
vary "~1.1.1"
finalhandler@~1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
integrity sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=
dependencies:
debug "2.6.9"
encodeurl "~1.0.1"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
statuses "~1.3.1"
unpipe "~1.0.0"
forwarded@~0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
iconv-lite@0.4.23:
version "0.4.23"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ipaddr.js@1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
integrity sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
mime-db@1.45.0:
version "1.45.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
mime-types@~2.1.24:
version "2.1.28"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
dependencies:
mime-db "1.45.0"
mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=
morgan@~1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==
dependencies:
basic-auth "~2.0.0"
debug "2.6.9"
depd "~1.1.2"
on-finished "~2.3.0"
on-headers "~1.0.1"
mpd@~1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz#a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd"
integrity sha1-qaDgKPaAjlWU92+p8MV0rYbwwN0=
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
dependencies:
ee-first "1.1.1"
on-headers@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
parseurl@~1.3.1, parseurl@~1.3.2:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
proxy-addr@~1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
integrity sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=
dependencies:
forwarded "~0.1.0"
ipaddr.js "1.4.0"
qs@6.5.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
integrity sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==
qs@6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
range-parser@~1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
dependencies:
bytes "3.0.0"
http-errors "1.6.3"
iconv-lite "0.4.23"
unpipe "1.0.0"
safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
safe-buffer@5.1.2, safe-buffer@~5.1.0:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
send@0.15.6:
version "0.15.6"
resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34"
integrity sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=
dependencies:
debug "2.6.9"
depd "~1.1.1"
destroy "~1.0.4"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "~1.6.2"
mime "1.3.4"
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.1"
serve-favicon@~2.4.5:
version "2.4.5"
resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436"
integrity sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==
dependencies:
etag "~1.8.1"
fresh "0.5.2"
ms "2.0.0"
parseurl "~1.3.2"
safe-buffer "5.1.1"
serve-static@1.12.6:
version "1.12.6"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz#b973773f63449934da54e5beba5e31d9f4211577"
integrity sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=
dependencies:
encodeurl "~1.0.1"
escape-html "~1.0.3"
parseurl "~1.3.2"
send "0.15.6"
setprototypeof@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
type-is@~1.6.15, type-is@~1.6.16:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
utils-merge@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=
vary@~1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
ws@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"

493
packages/MPD.FM/yarn.nix Normal file
View File

@@ -0,0 +1,493 @@
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
offline_cache = linkFarm "offline" packages;
packages = [
{
name = "accepts___accepts_1.3.7.tgz";
path = fetchurl {
name = "accepts___accepts_1.3.7.tgz";
url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
};
}
{
name = "array_flatten___array_flatten_1.1.1.tgz";
path = fetchurl {
name = "array_flatten___array_flatten_1.1.1.tgz";
url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
};
}
{
name = "async_limiter___async_limiter_1.0.1.tgz";
path = fetchurl {
name = "async_limiter___async_limiter_1.0.1.tgz";
url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz";
sha1 = "dd379e94f0db8310b08291f9d64c3209766617fd";
};
}
{
name = "basic_auth___basic_auth_2.0.1.tgz";
path = fetchurl {
name = "basic_auth___basic_auth_2.0.1.tgz";
url = "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz";
sha1 = "b998279bf47ce38344b4f3cf916d4679bbf51e3a";
};
}
{
name = "body_parser___body_parser_1.18.3.tgz";
path = fetchurl {
name = "body_parser___body_parser_1.18.3.tgz";
url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz";
sha1 = "5b292198ffdd553b3a0f20ded0592b956955c8b4";
};
}
{
name = "bytes___bytes_3.0.0.tgz";
path = fetchurl {
name = "bytes___bytes_3.0.0.tgz";
url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
};
}
{
name = "content_disposition___content_disposition_0.5.2.tgz";
path = fetchurl {
name = "content_disposition___content_disposition_0.5.2.tgz";
url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
};
}
{
name = "content_type___content_type_1.0.4.tgz";
path = fetchurl {
name = "content_type___content_type_1.0.4.tgz";
url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
};
}
{
name = "cookie_parser___cookie_parser_1.4.5.tgz";
path = fetchurl {
name = "cookie_parser___cookie_parser_1.4.5.tgz";
url = "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz";
sha1 = "3e572d4b7c0c80f9c61daf604e4336831b5d1d49";
};
}
{
name = "cookie_signature___cookie_signature_1.0.6.tgz";
path = fetchurl {
name = "cookie_signature___cookie_signature_1.0.6.tgz";
url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
};
}
{
name = "cookie___cookie_0.3.1.tgz";
path = fetchurl {
name = "cookie___cookie_0.3.1.tgz";
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
};
}
{
name = "cookie___cookie_0.4.0.tgz";
path = fetchurl {
name = "cookie___cookie_0.4.0.tgz";
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
};
}
{
name = "debug___debug_2.6.9.tgz";
path = fetchurl {
name = "debug___debug_2.6.9.tgz";
url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
};
}
{
name = "depd___depd_1.1.2.tgz";
path = fetchurl {
name = "depd___depd_1.1.2.tgz";
url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
};
}
{
name = "destroy___destroy_1.0.4.tgz";
path = fetchurl {
name = "destroy___destroy_1.0.4.tgz";
url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
sha1 = "978857442c44749e4206613e37946205826abd80";
};
}
{
name = "ee_first___ee_first_1.1.1.tgz";
path = fetchurl {
name = "ee_first___ee_first_1.1.1.tgz";
url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
};
}
{
name = "encodeurl___encodeurl_1.0.2.tgz";
path = fetchurl {
name = "encodeurl___encodeurl_1.0.2.tgz";
url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
};
}
{
name = "escape_html___escape_html_1.0.3.tgz";
path = fetchurl {
name = "escape_html___escape_html_1.0.3.tgz";
url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
};
}
{
name = "etag___etag_1.8.1.tgz";
path = fetchurl {
name = "etag___etag_1.8.1.tgz";
url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
};
}
{
name = "express___express_4.15.5.tgz";
path = fetchurl {
name = "express___express_4.15.5.tgz";
url = "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz";
sha1 = "670235ca9598890a5ae8170b83db722b842ed927";
};
}
{
name = "finalhandler___finalhandler_1.0.6.tgz";
path = fetchurl {
name = "finalhandler___finalhandler_1.0.6.tgz";
url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz";
sha1 = "007aea33d1a4d3e42017f624848ad58d212f814f";
};
}
{
name = "forwarded___forwarded_0.1.2.tgz";
path = fetchurl {
name = "forwarded___forwarded_0.1.2.tgz";
url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
};
}
{
name = "fresh___fresh_0.5.2.tgz";
path = fetchurl {
name = "fresh___fresh_0.5.2.tgz";
url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
};
}
{
name = "http_errors___http_errors_1.6.3.tgz";
path = fetchurl {
name = "http_errors___http_errors_1.6.3.tgz";
url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
};
}
{
name = "iconv_lite___iconv_lite_0.4.23.tgz";
path = fetchurl {
name = "iconv_lite___iconv_lite_0.4.23.tgz";
url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz";
sha1 = "297871f63be507adcfbfca715d0cd0eed84e9a63";
};
}
{
name = "inherits___inherits_2.0.3.tgz";
path = fetchurl {
name = "inherits___inherits_2.0.3.tgz";
url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
sha1 = "633c2c83e3da42a502f52466022480f4208261de";
};
}
{
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
path = fetchurl {
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz";
sha1 = "296aca878a821816e5b85d0a285a99bcff4582f0";
};
}
{
name = "media_typer___media_typer_0.3.0.tgz";
path = fetchurl {
name = "media_typer___media_typer_0.3.0.tgz";
url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
};
}
{
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
path = fetchurl {
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
};
}
{
name = "methods___methods_1.1.2.tgz";
path = fetchurl {
name = "methods___methods_1.1.2.tgz";
url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
};
}
{
name = "mime_db___mime_db_1.45.0.tgz";
path = fetchurl {
name = "mime_db___mime_db_1.45.0.tgz";
url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz";
sha1 = "cceeda21ccd7c3a745eba2decd55d4b73e7879ea";
};
}
{
name = "mime_types___mime_types_2.1.28.tgz";
path = fetchurl {
name = "mime_types___mime_types_2.1.28.tgz";
url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz";
sha1 = "1160c4757eab2c5363888e005273ecf79d2a0ecd";
};
}
{
name = "mime___mime_1.3.4.tgz";
path = fetchurl {
name = "mime___mime_1.3.4.tgz";
url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
};
}
{
name = "morgan___morgan_1.9.1.tgz";
path = fetchurl {
name = "morgan___morgan_1.9.1.tgz";
url = "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz";
sha1 = "0a8d16734a1d9afbc824b99df87e738e58e2da59";
};
}
{
name = "mpd___mpd_1.3.0.tgz";
path = fetchurl {
name = "mpd___mpd_1.3.0.tgz";
url = "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz";
sha1 = "a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd";
};
}
{
name = "ms___ms_2.0.0.tgz";
path = fetchurl {
name = "ms___ms_2.0.0.tgz";
url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
};
}
{
name = "negotiator___negotiator_0.6.2.tgz";
path = fetchurl {
name = "negotiator___negotiator_0.6.2.tgz";
url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
};
}
{
name = "on_finished___on_finished_2.3.0.tgz";
path = fetchurl {
name = "on_finished___on_finished_2.3.0.tgz";
url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
sha1 = "20f1336481b083cd75337992a16971aa2d906947";
};
}
{
name = "on_headers___on_headers_1.0.2.tgz";
path = fetchurl {
name = "on_headers___on_headers_1.0.2.tgz";
url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
};
}
{
name = "parseurl___parseurl_1.3.3.tgz";
path = fetchurl {
name = "parseurl___parseurl_1.3.3.tgz";
url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
};
}
{
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
path = fetchurl {
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
};
}
{
name = "proxy_addr___proxy_addr_1.1.5.tgz";
path = fetchurl {
name = "proxy_addr___proxy_addr_1.1.5.tgz";
url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz";
sha1 = "71c0ee3b102de3f202f3b64f608d173fcba1a918";
};
}
{
name = "qs___qs_6.5.0.tgz";
path = fetchurl {
name = "qs___qs_6.5.0.tgz";
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz";
sha1 = "8d04954d364def3efc55b5a0793e1e2c8b1e6e49";
};
}
{
name = "qs___qs_6.5.2.tgz";
path = fetchurl {
name = "qs___qs_6.5.2.tgz";
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
};
}
{
name = "range_parser___range_parser_1.2.1.tgz";
path = fetchurl {
name = "range_parser___range_parser_1.2.1.tgz";
url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
};
}
{
name = "raw_body___raw_body_2.3.3.tgz";
path = fetchurl {
name = "raw_body___raw_body_2.3.3.tgz";
url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz";
sha1 = "1b324ece6b5706e153855bc1148c65bb7f6ea0c3";
};
}
{
name = "safe_buffer___safe_buffer_5.1.1.tgz";
path = fetchurl {
name = "safe_buffer___safe_buffer_5.1.1.tgz";
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
sha1 = "893312af69b2123def71f57889001671eeb2c853";
};
}
{
name = "safe_buffer___safe_buffer_5.1.2.tgz";
path = fetchurl {
name = "safe_buffer___safe_buffer_5.1.2.tgz";
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
};
}
{
name = "safer_buffer___safer_buffer_2.1.2.tgz";
path = fetchurl {
name = "safer_buffer___safer_buffer_2.1.2.tgz";
url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
};
}
{
name = "send___send_0.15.6.tgz";
path = fetchurl {
name = "send___send_0.15.6.tgz";
url = "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz";
sha1 = "20f23a9c925b762ab82705fe2f9db252ace47e34";
};
}
{
name = "serve_favicon___serve_favicon_2.4.5.tgz";
path = fetchurl {
name = "serve_favicon___serve_favicon_2.4.5.tgz";
url = "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz";
sha1 = "49d9a46863153a9240691c893d2b0e7d85d6d436";
};
}
{
name = "serve_static___serve_static_1.12.6.tgz";
path = fetchurl {
name = "serve_static___serve_static_1.12.6.tgz";
url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz";
sha1 = "b973773f63449934da54e5beba5e31d9f4211577";
};
}
{
name = "setprototypeof___setprototypeof_1.0.3.tgz";
path = fetchurl {
name = "setprototypeof___setprototypeof_1.0.3.tgz";
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
};
}
{
name = "setprototypeof___setprototypeof_1.1.0.tgz";
path = fetchurl {
name = "setprototypeof___setprototypeof_1.1.0.tgz";
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
};
}
{
name = "statuses___statuses_1.5.0.tgz";
path = fetchurl {
name = "statuses___statuses_1.5.0.tgz";
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
sha1 = "161c7dac177659fd9811f43771fa99381478628c";
};
}
{
name = "statuses___statuses_1.3.1.tgz";
path = fetchurl {
name = "statuses___statuses_1.3.1.tgz";
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz";
sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
};
}
{
name = "type_is___type_is_1.6.18.tgz";
path = fetchurl {
name = "type_is___type_is_1.6.18.tgz";
url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
};
}
{
name = "unpipe___unpipe_1.0.0.tgz";
path = fetchurl {
name = "unpipe___unpipe_1.0.0.tgz";
url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
};
}
{
name = "utils_merge___utils_merge_1.0.0.tgz";
path = fetchurl {
name = "utils_merge___utils_merge_1.0.0.tgz";
url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz";
sha1 = "0294fb922bb9375153541c4f7096231f287c8af8";
};
}
{
name = "vary___vary_1.1.2.tgz";
path = fetchurl {
name = "vary___vary_1.1.2.tgz";
url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
};
}
{
name = "ws___ws_4.1.0.tgz";
path = fetchurl {
name = "ws___ws_4.1.0.tgz";
url = "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz";
sha1 = "a979b5d7d4da68bf54efe0408967c324869a7289";
};
}
];
}

View File

@@ -1,4 +1,4 @@
{ fetchzip, symlinkJoin, lib, scardanelli ? false }:
{ fetchzip, symlinkJoin, lib }:
let
gfs-font = name: sha256:
fetchzip {
@@ -17,34 +17,21 @@ in symlinkJoin {
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
GFS_Complutum =
"1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
GFS_Complutum = "1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
GFS_Didot_Display = if scardanelli then
"0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7"
else
"0gg5xb8jic646gz9p05ry62nk7w0k546fxp5p4vvnawmckql2dj1";
GFS_Didot_Display = "0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7";
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
GFS_Olga = "0f05ng02na84x9x6yhskxqwxwyabjisyl8a0k3fiah60i620p39d";
GFS_Orpheus = if scardanelli then
"18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz"
else
"1rvjpvk1fx55vyp3dyxcbww1a24rm7xv5faqs735yf6lqzpkqnax";
GFS_Orpheus_Classic = if scardanelli then
"1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps"
else
"0d2yzwg6albmgl1d0xhsfrmxj79r42wp712rpry567nv1ry42k0a";
GFS_Orpheus_Sans = if scardanelli then
"02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg"
else
"1rdlm2kmkvi4y3ii68ik8k3w3183vvb3q2pnk04lbb0ggg9w5jdb";
GFS_Olga = "1qaxaw3ngnbr1gb1xyk5f2z647zklg6sl3bqwi28l47j9mp0f8aj";
GFS_Orpheus = "18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz";
GFS_Orpheus_Classic = "1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps";
GFS_Orpheus_Sans = "02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg";
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
GFS_Porson = "0r3snwgxkdx7h34sg3s0hr8fac3rnpllq62bk44m266hj6a80a5k";
GFS_Porson = "0c2axagkm6wxv8na2q11k6c5dmgkwx5hn9sh9qy82gbips9blnda";
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";

View File

@@ -0,0 +1,33 @@
{ stdenv, lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "moodle-dl";
version = "2.1.1.1";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "0nv2gm4x6mfsa0wywm4xbsx6nf6hx4kb63s4lczaxb9m4ybjd45h";
};
patches = [
./readchar-version.patch
./telegram-format.patch
];
propagatedBuildInputs = with python3Packages; [
sentry-sdk
colorama
readchar
youtube-dl
certifi
html2text
requests
];
meta = with stdenv.lib; {
homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2";
maintainers = [ maintainers.kmein ];
description = "A Moodle downloader that downloads course content fast from Moodle";
license = licenses.gpl3;
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/setup.py b/setup.py
index 180139d..5582359 100644
--- a/setup.py
+++ b/setup.py
@@ -32,7 +32,7 @@ setup(
install_requires=[
'sentry_sdk>=0.13.5',
'colorama>=0.4.3',
- 'readchar>=2.0.1',
+ 'readchar>=2.0.0',
'youtube_dl>=2020.9.20',
'certifi>=2020.4.5.2',
'html2text>=2020.1.16',

View File

@@ -0,0 +1,45 @@
diff --git a/moodle_dl/notification_services/telegram/telegram_formater.py b/moodle_dl/notification_services/telegram/telegram_formater.py
index 05180b6..33009b0 100644
--- a/moodle_dl/notification_services/telegram/telegram_formater.py
+++ b/moodle_dl/notification_services/telegram/telegram_formater.py
@@ -15,10 +15,10 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
diff_count += len(course.files)
result_list = []
- one_msg_content = '%s new Changes in the Moodle courses!' % (diff_count)
+ one_msg_content = "%s changes in Moodle!" % (diff_count)
for course in changed_courses:
- new_line = '\r\n\r\n\r\n> <b>' + course.fullname + '</b>\r\n'
+ new_line = "\r\n\r\n<b>" + course.fullname + "</b>"
if len(one_msg_content) + len(new_line) >= 4096:
result_list.append(one_msg_content)
one_msg_content = new_line
@@ -27,16 +27,16 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
for file in course.files:
if file.modified:
- new_line = '\r\n<i>* Modified:</i> ' + file.saved_to
+ new_line = "\r\n✍ " + file.saved_to
elif file.moved:
if file.new_file is not None:
- new_line = '\r\n<i>* Moved:</i> ' + file.new_file.saved_to
+ new_line = "\r\n📂 " + file.new_file.saved_to
else:
- new_line = '\r\n<i>* Moved:</i> ' + file.saved_to
+ new_line = "\r\n📂 " + file.saved_to
elif file.deleted:
- new_line = '\r\n<i>- Deleted:</i> ' + file.saved_to
+ new_line = "\r\n🗑 " + file.saved_to
else:
- new_line = '\r\n<i>+ Added:</i> ' + file.saved_to
+ new_line = "\r\n🎉 " + file.saved_to
if len(one_msg_content) + len(new_line) >= 4096:
result_list.append(one_msg_content)
@@ -52,4 +52,4 @@ def create_full_error_message(details) -> (str, {str: str}):
"""
Creates an error message
"""
- return 'The following error occurred during execution:' + details
+ return "The following error occurred during execution:" + details

23
packages/scripts/chunk-pdf Executable file
View File

@@ -0,0 +1,23 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p pdftk gnugrep
set -efu
INPUT_FILE="${2:?Pass the PDF path as second argument.}"
PAGES_PER_REPORT="${1:?Pass the chunk size as first argument.}"
if [ ! -f "$INPUT_FILE" ]; then
echo >&2 "File $INPUT_FILE does not exist."
exit 1
fi
TOTAL_PAGES="$(pdftk "$INPUT_FILE" dump_data | grep NumberOfPages | cut -f2 -d' ')"
RUNS=$((TOTAL_PAGES/PAGES_PER_REPORT))
for run in $(seq 0 "$((RUNS-1))"); do
start_page=$((run*PAGES_PER_REPORT+1))
end_page=$(((run+1)*PAGES_PER_REPORT))
output_file="chunk_$((run+1)).pdf"
echo "splitting $INPUT_FILE from $start_page to $end_page into $output_file"
pdftk "$INPUT_FILE" cat "$start_page-$end_page" output "$output_file"
done

View File

@@ -21,6 +21,26 @@ in rec {
name = "instaget";
};
dns-sledgehammer = pkgs.writers.writeDashBin "dns-sledgehammer" ''
${pkgs.coreutils}/bin/printf '%s\n' 'nameserver 1.1.1.1' 'options edns0' > /etc/resolv.conf
'';
much-scripts = pkgs.symlinkJoin {
name = "much-scripts";
paths = [
(wrapScript {
packages = [ pkgs.notmuch pkgs.msmtp pkgs.jq ];
name = "mail-send";
script = ./mail-send.sh;
})
(wrapScript {
name = "mail-kill";
script = ./mail-kill.sh;
packages = [ pkgs.notmuch ];
})
];
};
showkeys-toggle = pkgs.writers.writeDashBin "showkeys-toggle" ''
if ${pkgs.procps}/bin/pgrep screenkey; then
exec ${pkgs.procps}/bin/pkill screenkey
@@ -29,6 +49,18 @@ in rec {
fi
'';
interdimensional-cable =
let nimaid-github-io = pkgs.fetchFromGitHub {
owner = "nimaid";
repo = "nimaid.github.io";
rev = "9cb4ede215be6bb01bd2df1ef3e9689cc8c4eb9e";
sha256 = "1g47cj5an7xgmhpc09m7qim5j9rspqxvnzfy90cnlvz4pg8hil96";
};
in pkgs.writeShellScriptBin "interdimensional-cable" ''
export PATH=${lib.makeBinPath [ pkgs.mpv pkgs.jq pkgs.gnused ]}
mpv --shuffle --playlist=<(jq -r '.videos[]' ${nimaid-github-io}/tv/interdimensional_database.json | sed 's#^#https://youtu.be/#')
'';
tag = wrapScript {
packages = [ pkgs.vorbisTools pkgs.python3Packages.eyeD3 pkgs.nur.repos.kmein.opustags ];
script = "${voidrice}/.local/bin/tag";
@@ -51,6 +83,12 @@ in rec {
script = ./dirmir.sh;
};
playlist = wrapScript {
name = "pls";
script = ./playlist.sh;
packages = [ pkgs.curl pkgs.jq ];
};
favicon = wrapScript {
packages = [ pkgs.imagemagick ];
name = "favicon";
@@ -172,6 +210,21 @@ in rec {
sys.stdout.write(betacode.conv.beta_to_uni(sys.stdin.read()))
'';
devanagari = pkgs.writers.writePython3Bin "devanagari" {
libraries = [ pkgs.nur.repos.kmein.python3Packages.indic-transliteration ];
} ''
from indic_transliteration import sanscript
from indic_transliteration.sanscript import transliterate
import sys
# Harvard Kyoto -> Devanagari
sys.stdout.write(transliterate(
sys.stdin.read(),
sanscript.HK,
sanscript.DEVANAGARI
))
'';
manual-sort = pkgs.writers.writeHaskellBin "manual-sort" {} ''
{-# LANGUAGE LambdaCase #-}
import Data.Char (toLower)
@@ -210,4 +263,5 @@ in rec {
bvg = pkgs.callPackage ./bvg.nix { };
nav = pkgs.callPackage ./nav.nix { };
k-lock = pkgs.callPackage ./k-lock.nix { };
}

View File

@@ -0,0 +1,25 @@
{ writers, lib, xlockmore }:
let
xlockModes = lib.concatStringsSep "\\n" [
# "braid"
"galaxy"
# "lightning"
# "matrix"
"pyro2"
"space"
];
in writers.writeDashBin "k-lock" ''
MODE=$(printf "${xlockModes}" | shuf -n 1)
${xlockmore}/bin/xlock \
-saturation 0.4 \
-erasemode no_fade \
+description \
-showdate \
-username " " \
-password " " \
-info " " \
-validate "..." \
-invalid "Computer says no." \
-mode "$MODE"
''

Some files were not shown because too many files have changed in this diff Show More