1
0
mirror of https://github.com/kmein/niveum synced 2026-03-19 11:31:09 +01:00

168 Commits

Author SHA1 Message Date
d06d0a9de4 WIP: mympd 2022-04-15 01:16:50 +02:00
d4e82500ae feat(mpv): limit resolution 2022-04-14 13:40:11 +02:00
6aa9be6f70 feat: more fonts 2022-04-13 09:01:23 +02:00
4e362678ca feat(astrology): pause bot 2022-04-13 09:01:23 +02:00
a2081dece4 feat(weechat): block people 2022-04-11 23:02:02 +02:00
98cf188a17 feat: use more tmpfiles.d 2022-04-10 19:38:47 +02:00
4932c7c08a chore(update) 2022-04-10 09:13:34 +02:00
c8a6991f09 fix(menstruation): update to pinning version 2022-04-10 00:36:07 +02:00
5d3c9a67ab fix(monitoring): remove tahina 2022-04-04 18:35:32 +02:00
github-actions[bot]
659a888c3d flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/a8d00f5c038cf7ec54e7dac9c57b171c1217f008' (2022-03-13)
  → 'github:nix-community/home-manager/0bdbdea2e26c984b096f4f7d10e3c88536a980b0' (2022-04-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d2caa9377539e3b5ff1272ac3aa2d15f3081069f' (2022-03-22)
  → 'github:NixOS/nixpkgs/6f88260faaaa3cda8f4e478be72be6c0861c47ad' (2022-04-01)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/6de161729c81dc98e844793cc9c8fda29d5ef62a' (2022-03-26)
  → 'github:NixOS/nixpkgs/21299f3dd3ff475f19bc8933f30ebb6a135799f1' (2022-04-02)
• Updated input 'scripts':
    'github:kmein/scripts/d1d525b92a34e55b1ad886807c284106e58716b2' (2022-03-26)
  → 'github:kmein/scripts/f5df67a2416d8f05a7dbfea269c44668854c7887' (2022-03-27)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=ae9c0b12710b5361d0d45510eb401eebfc1b3fb0' (2022-03-25)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=b9e0a7ec71e0318a992ff2b275a6aaee3cef63bd' (2022-03-28)
2022-04-03 00:47:09 +00:00
26908b03a3 chore(tahina): clean 2022-03-30 18:29:16 +02:00
feccea5234 feat(streams): add soma playlist 2022-03-30 18:29:04 +02:00
8ffb0bd245 feat: jless 2022-03-30 09:17:58 +02:00
c1b777b689 feat(tor): enable 2022-03-29 20:13:29 +02:00
e85a8f7634 feat(mpd): tag stations 2022-03-29 20:13:29 +02:00
25bc6f573c chore(tahina): clean 2022-03-29 09:54:56 +02:00
4b5915354b fix(nextcloud): start with gnome-keyring 2022-03-29 09:54:37 +02:00
43ab6b3210 feat(tahina): init as guest laptop 2022-03-29 01:07:01 +02:00
e08eb0e970 feat(tahina): init 2022-03-28 20:47:55 +02:00
012d78cc0e feat(ssh): add tahina 2022-03-28 20:47:55 +02:00
github-actions[bot]
62f52922b8 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/3cecb5b042f7f209c56ffd8371b2711a290ec797' (2022-02-07)
  → 'github:numtide/flake-utils/0f8662f1319ad6abf89b3380dd2722369fc51ade' (2022-03-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2c66a7a6e036971c4847cca424125f55b9eb0b0b' (2022-03-17)
  → 'github:NixOS/nixpkgs/d2caa9377539e3b5ff1272ac3aa2d15f3081069f' (2022-03-22)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/b8f8b90b90ac713eb7f5cc7eb2100141ee29751d' (2022-03-20)
  → 'github:NixOS/nixpkgs/6de161729c81dc98e844793cc9c8fda29d5ef62a' (2022-03-26)
• Updated input 'scripts':
    'github:kmein/scripts/d34a8161ba11135a45d3141dc9af482db945d63c' (2021-12-13)
  → 'github:kmein/scripts/d1d525b92a34e55b1ad886807c284106e58716b2' (2022-03-26)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=b1068cadc4458d91889b7ede847829af33d2b145' (2022-03-15)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=ae9c0b12710b5361d0d45510eb401eebfc1b3fb0' (2022-03-25)
2022-03-27 00:46:44 +00:00
28d359c73b fix(kabsa): dont fail if sdcard not present 2022-03-25 17:06:09 +01:00
8830147359 feat: git-absorb 2022-03-23 19:07:20 +01:00
e9adccacd9 feat: cdt, vit 2022-03-23 19:07:20 +01:00
github-actions[bot]
588ec3d180 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/2860d7e3bb350f18f7477858f3513f9798896831' (2022-02-04)
  → 'github:nix-community/home-manager/a8d00f5c038cf7ec54e7dac9c57b171c1217f008' (2022-03-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/bacbfd713b4781a4a82c1f390f8fe21ae3b8b95b' (2022-03-10)
  → 'github:NixOS/nixpkgs/2c66a7a6e036971c4847cca424125f55b9eb0b0b' (2022-03-17)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/b783c48432cdfc35224a39bd95666daa62fef126' (2022-03-13)
  → 'github:NixOS/nixpkgs/b8f8b90b90ac713eb7f5cc7eb2100141ee29751d' (2022-03-20)
• Updated input 'retiolum':
    'github:krebs/retiolum/5858b524a77cff53f1fbe21e0af3189e52a9654d' (2022-03-13)
  → 'github:krebs/retiolum/de6d7dc9bd671e65f2ee3004b6807625e7553e84' (2022-03-16)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=2dc05dbafbd5490be6a9754a55679a6576efbad1' (2022-03-11)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=b1068cadc4458d91889b7ede847829af33d2b145' (2022-03-15)
2022-03-20 08:11:31 +01:00
6ea8500818 feat(chromium): update extensions 2022-03-16 20:13:15 +01:00
bf6c82a11d feat(ssh): add oracle 2022-03-16 20:12:50 +01:00
9c68ff20bc feat(home-assistant): run on home.kmein.r 2022-03-13 17:25:06 +01:00
2565bfbc27 feat(streams): explore more 2022-03-13 11:17:28 +01:00
a4d002e293 chore: format 2022-03-13 10:31:19 +01:00
730070bc9d feat: rofi-hass 2022-03-13 10:30:42 +01:00
6f1f1887b9 feat(pass): install import and genphrase extensions, kill bitwarden 2022-03-13 10:29:50 +01:00
github-actions[bot]
68f8bb06f4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/47cd6702934434dd02bc53a67dbce3e5493e33a2' (2022-03-04)
  → 'github:NixOS/nixpkgs/bacbfd713b4781a4a82c1f390f8fe21ae3b8b95b' (2022-03-10)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/a173e92ee458878651356b9bcfb1e2b5145f76af' (2022-03-05)
  → 'github:NixOS/nixpkgs/b783c48432cdfc35224a39bd95666daa62fef126' (2022-03-13)
• Updated input 'retiolum':
    'github:krebs/retiolum/259d60325310b728f79c68dc1148f597e097d1b2' (2022-02-28)
  → 'github:krebs/retiolum/e488402be7f60a478c95a4bad6d6e2c67f2b55f9' (2022-03-10)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=87a44dd1573cbdc8f0fc3553b0896b470bcfa44d' (2022-03-03)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=2dc05dbafbd5490be6a9754a55679a6576efbad1' (2022-03-11)
2022-03-13 00:38:35 +00:00
7afe712c27 feat: electrum 2022-03-12 13:03:54 +01:00
1946a30b2f feat(home-assistant): install cli 2022-03-12 13:03:54 +01:00
c1f013fc2f feat(weechat): update channels 2022-03-11 10:22:57 +01:00
3be0766a7a feat(mpv): add visualizer 2022-03-11 00:04:53 +01:00
5216f693a1 feat(restic): backup home-assistant state 2022-03-10 23:11:36 +01:00
ab3de7a042 feat(home-assistant): run in podman on zaatar 2022-03-10 22:59:43 +01:00
de6d91297b feat(vim): respect https://github.com/romainl/idiomatic-vimrc 2022-03-10 22:29:57 +01:00
6342fb9047 feat(tmux): improve config 2022-03-10 22:15:52 +01:00
d37e90cb97 chore: format with alejandra 2022-03-10 21:52:20 +01:00
github-actions[bot]
13727abfd6 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4275a321beab5a71872fb7a5fe5da511bb2bec73' (2022-02-23)
  → 'github:NixOS/nixpkgs/47cd6702934434dd02bc53a67dbce3e5493e33a2' (2022-03-04)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/6f21ff94fc44af21973c6fdae6e03323382b7909' (2022-02-26)
  → 'github:NixOS/nixpkgs/a173e92ee458878651356b9bcfb1e2b5145f76af' (2022-03-05)
• Updated input 'retiolum':
    'github:krebs/retiolum/5e69ac7782c7d384a4b6cad4619dd83aa952426f' (2022-02-22)
  → 'github:krebs/retiolum/259d60325310b728f79c68dc1148f597e097d1b2' (2022-02-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=a67ded588b45c09ca58a3b4007a8d32e42323613' (2022-02-26)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=87a44dd1573cbdc8f0fc3553b0896b470bcfa44d' (2022-03-03)
2022-03-06 00:39:35 +00:00
a23f0c80a2 feat(urlwatch): lisalittmann.de 2022-03-05 13:46:09 +01:00
b0b19c3989 feat(networkmanager): enable applet 2022-03-05 13:46:09 +01:00
ef223a9717 feat(weechat): hackint works now 2022-03-05 13:46:09 +01:00
ecfc2ca06c fix(weechat): no sasl 2022-03-05 13:46:09 +01:00
cd7e688a46 feat(weechat): #flipdot-berlin 2022-03-05 13:46:09 +01:00
github-actions[bot]
f7b9008ed0 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/40ef692a55b188b1f5ae3967f3fc7808838c3f1d' (2022-02-20)
  → 'github:NixOS/nixpkgs/4275a321beab5a71872fb7a5fe5da511bb2bec73' (2022-02-23)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/856fbb7e322fd9c7e951d42a792957b84f0b0bb6' (2022-02-23)
  → 'github:NixOS/nixpkgs/6f21ff94fc44af21973c6fdae6e03323382b7909' (2022-02-26)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=442319c8949c85b32071fc4e694938b480637770' (2022-02-19)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=a67ded588b45c09ca58a3b4007a8d32e42323613' (2022-02-26)
2022-02-27 00:40:13 +00:00
81706489b5 feat: bye bye horoscopy 2022-02-25 07:08:50 +01:00
817f57ad09 fix: dont pin matterbridge 2022-02-23 19:25:04 +01:00
eafb1ce0c3 chore: update nixpkgs 2022-02-23 19:24:09 +01:00
0c72a89760 feat(streams): use lassulus radio as described in irc topic 2022-02-22 21:52:41 +01:00
a7db357e54 feat(radio-news): most recent commits show 2022-02-22 21:52:17 +01:00
1ad6c63a2f feat(makanek): redaktion.r 2022-02-22 20:41:55 +01:00
502ab93585 fix(restic): runuser correctly 2022-02-21 20:09:35 +01:00
github-actions[bot]
fe6bda3cf2 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/74f7e4319258e287b0f9cb95426c9853b282730b' (2021-11-28)
  → 'github:numtide/flake-utils/846b2ae0fc4cc943637d3d1def4454213e203cba' (2022-01-20)
• Updated input 'home-manager':
    'github:nix-community/home-manager/697cc8c68ed6a606296efbbe9614c32537078756' (2021-12-18)
  → 'github:nix-community/home-manager/2860d7e3bb350f18f7477858f3513f9798896831' (2022-02-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5d3420c1285073d5061a5d88a533b347d1222750' (2022-01-10)
  → 'github:NixOS/nixpkgs/d49a447c18eac3c1639b99550df08b43948b28e0' (2022-02-06)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/bd20b7f07fd337b2e85420edd642382a2cc0196d' (2022-01-11)
  → 'github:NixOS/nixpkgs/91e0ecf1f103170237df3628c2c46cfe75212867' (2022-02-06)
• Updated input 'retiolum':
    'github:krebs/retiolum/23e04565a0360d31605a6c6cdc1becb5b9f76f32' (2022-01-28)
  → 'github:krebs/retiolum/ccf6324d29277b8c033a2275850eb7b09227f403' (2022-02-02)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=f67bd5783d6ed2be836c7714ea38cbb3f7ac7257' (2022-01-09)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=332d4f5e1719df2b27f835c4fd0718317867043c' (2022-02-03)
2022-02-20 07:03:04 +01:00
c64e681ada feat(weechat): update channels 2022-02-19 12:10:04 +01:00
af813cc876 feat(urlwatch): more urls 2022-02-19 12:09:31 +01:00
704f745f5e try out whether new krops fixes the nixpkgs rebuilding issue 2022-02-16 09:11:10 +01:00
93dd8bd702 fix: less unstable, nixpkgs via krops git, NIX_PATH on makanek
systems wanted to build glibc all the time when updated
2022-02-15 22:16:50 +01:00
6e995764d4 chore: update horoscopy 2022-02-14 21:21:36 +01:00
87b9fc49ea feat(radio): opus streams 2022-02-14 08:14:15 +01:00
b4e42e6b22 feat: add horoscopy website 2022-02-14 08:02:08 +01:00
87f73a8fc1 fix(radio): clean up files after 1h 2022-02-10 19:28:34 +01:00
db8c06364f feat: wikipedia radio 2022-02-10 19:28:34 +01:00
24b7044a3f chore: update retiolum 2022-02-09 08:35:55 +01:00
908667267b feat: radio powered by liquidsoap 2022-02-08 00:47:10 +01:00
b3090737fd feat(grocy): disable 2022-02-07 12:59:34 +01:00
f195351474 feat(urlwatch): run later 2022-02-07 12:52:46 +01:00
1cce7dc8df feat: #hsmr moinbot 2022-02-07 11:44:29 +01:00
894cc6efef feat(polkit): dont need password for systemctl 2022-02-02 18:07:08 +01:00
f1ed00fe40 fix(traadfri): module scripts 2022-01-31 19:46:59 +01:00
7d1e1e712f feat(monitoring): simplify telegram alert message format 2022-01-31 09:33:24 +01:00
fd1c36874a feat(traadfri): no aliases but scripts 2022-01-31 09:33:04 +01:00
bc52a4a358 feat(traadfri): chain of lights 2022-01-30 22:47:54 +01:00
5aade69fbe fix(streams): remove defunct paradiso 2022-01-30 21:18:22 +01:00
0ead88d04a feat(git): bye hub 2022-01-30 20:58:37 +01:00
d21ff3e731 fix(ci): secrets for tuna 2022-01-28 14:25:32 +01:00
7a918319b7 fix(streams): di.fm 2022-01-28 12:54:12 +01:00
5524f3b92b feat: reactivate tuna 2022-01-28 12:54:12 +01:00
fe8af09148 feat(monitoring): improve messages 2022-01-28 09:04:40 +01:00
d9ca1e673d fix(flix): do not depend on wpa_supplicant 2022-01-27 18:27:34 +01:00
2efb8d7d8a feat(monitoring): streamline alerting 2022-01-27 17:47:33 +01:00
4e520a82aa Revert "feat(alertmanager): alert via irc"
This reverts commit 630d99e191.
2022-01-27 17:17:43 +01:00
62479936b1 feat(hu-berlin): split-tunnel via forti vpn 2022-01-27 16:54:22 +01:00
9419bb9bdd feat(i3): show which vpn is active 2022-01-27 16:45:51 +01:00
07b8813ae8 feat(prometheus): dont fail if no ssl 2022-01-27 15:49:36 +01:00
755105a428 feat(prometheus): monitor more URLs 2022-01-27 15:40:50 +01:00
ac75dcb826 feat(weechat): improve filter 2022-01-27 14:06:55 +01:00
76e22dba3c feat: bye bye russian keyboard 2022-01-26 20:54:05 +01:00
6b84a024a2 feat(i3): change rofi command 2022-01-26 20:54:05 +01:00
3f2fb3f5a3 feat(hu-berlin): prefer fortinet 2022-01-25 20:29:38 +01:00
40fa14d4a9 chore: update retiolum 2022-01-25 20:29:26 +01:00
272f2bdefe fix(restic): restart on failure 2022-01-24 09:17:04 +01:00
16b25d4890 feat(zaatar): mount restic disk via nixos 2022-01-23 16:46:32 +01:00
638751eb20 feat(rofi): theme 2022-01-23 16:40:54 +01:00
8b3a9be9fd feat(streams): add drachenhits 2022-01-23 16:40:47 +01:00
c3d94e5c49 fix(restic): remove tmp dir 2022-01-23 14:27:03 +01:00
13b8154a2b feat(weechat): smart filter, filter Mic92 gitlab 2022-01-23 14:27:03 +01:00
d17c3e942d feat: give rofi another chance 2022-01-23 14:27:03 +01:00
a8467cfb5a Revert "flake.lock: Update"
This reverts commit c417074b7d.

It wants to build `glibc` on all machines.
2022-01-23 08:56:48 +01:00
Kierán Meinhardt
4d9867a95d Merge pull request #2 from kmein/update_flake_lock_action
flake.lock: Update
2022-01-23 07:52:48 +01:00
github-actions[bot]
c417074b7d flake.lock: Update
Flake lock file changes:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/74f7e4319258e287b0f9cb95426c9853b282730b' (2021-11-28)
  → 'github:numtide/flake-utils/846b2ae0fc4cc943637d3d1def4454213e203cba' (2022-01-20)
• Updated input 'home-manager':
    'github:nix-community/home-manager/697cc8c68ed6a606296efbbe9614c32537078756' (2021-12-18)
  → 'github:nix-community/home-manager/28b9ae40c45c5e7711c353fee1b7af734e293979' (2022-01-20)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5d3420c1285073d5061a5d88a533b347d1222750' (2022-01-10)
  → 'github:NixOS/nixpkgs/3d35529a48d3ad50ad959463755b0b7fe392cfa7' (2022-01-22)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/bd20b7f07fd337b2e85420edd642382a2cc0196d' (2022-01-11)
  → 'github:NixOS/nixpkgs/e5f7e0e5513455fa128d13d82095016b2dcffc55' (2022-01-22)
• Updated input 'retiolum':
    'github:krebs/retiolum/be4a56463af13a7dab5fd12378bef3b0ec8ae99b' (2022-01-18)
  → 'github:krebs/retiolum/e3818e1a3af803f43f42e96e5629fceaf9a18011' (2022-01-20)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=f67bd5783d6ed2be836c7714ea38cbb3f7ac7257' (2022-01-09)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=a3e67719b9da74e208c4058c42c0bd555c56b049' (2022-01-18)
2022-01-23 07:49:25 +01:00
9ca72a841d fix(restic): run restic as restic 2022-01-22 09:18:59 +01:00
7ec0586cf1 feat(restic): depend on connection to retiolum 2022-01-22 09:18:38 +01:00
6d681e9f43 feat(restic): more sensible times 2022-01-21 19:14:45 +01:00
c9248ae9b9 fix(vim): fugitive command 2022-01-19 13:51:30 +01:00
215bae0b9f fix(ci): add restic password 2022-01-19 13:37:01 +01:00
6f2aab721d chore: revert flake update
it had to build too many things and broke while doing it
2022-01-19 12:36:39 +01:00
1434290100 feat(i3): bye bye astrology 2022-01-19 12:27:14 +01:00
abcbd4dff9 Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-01-19 11:07:08 +01:00
5dbe6b61d1 feat(restic): add wrapper on zaatar 2022-01-19 10:58:44 +01:00
0dc1e167fd feat(restic): backup moodle-dl 2022-01-19 09:41:14 +01:00
6f06f0c9ef feat(restic): add mount script 2022-01-19 09:38:19 +01:00
59894e2734 feat(restic): backup redis 2022-01-19 08:32:44 +01:00
f3835ebd5e feat(restic): backup regular systems 2022-01-19 00:48:15 +01:00
20da594f97 feat(restic): backup git 2022-01-18 23:36:38 +01:00
30c2bfe598 feat(restic): run on makanek, prometheus 2022-01-18 23:28:53 +01:00
bdc5c147dd chore: update retiolum 2022-01-18 23:19:50 +01:00
59c420e8b0 feat(restic): add wrapper command 2022-01-18 22:38:28 +01:00
efb8dff677 feat(git): bye diff-so-fancy, hello delta 2022-01-18 21:52:46 +01:00
7518c0f893 feat(weechat): max nix prefix 2022-01-18 21:30:52 +01:00
1b7e0f903d feat: restic 2022-01-18 21:29:30 +01:00
github-actions[bot]
0a8ab261f2 flake.lock: Update
Flake lock file changes:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5d3420c1285073d5061a5d88a533b347d1222750' (2022-01-10)
  → 'github:NixOS/nixpkgs/610d4ea2750e064bf34b33fa38cb671edd893d3d' (2022-01-18)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/bd20b7f07fd337b2e85420edd642382a2cc0196d' (2022-01-11)
  → 'github:NixOS/nixpkgs/222f62ed88f67a1c9a7854b7e95bd9a5fe67b7ca' (2022-01-18)
• Updated input 'retiolum':
    'github:krebs/retiolum/4fcbe17549fa742a32e05b5f2ca57a983ad500c1' (2022-01-11)
  → 'github:krebs/retiolum/b62eba68b0836a2ea0b786b3738b281f070a3e04' (2022-01-18)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=f67bd5783d6ed2be836c7714ea38cbb3f7ac7257' (2022-01-09)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=8d67a33709db13fade3460cc01f385f5bcffd794' (2022-01-15)
2022-01-18 18:26:45 +00:00
9a2205121b feat(ci): add github action to update flake inputs 2022-01-18 19:19:17 +01:00
4316c604f6 feat(i3): bye bye vaccinations 2022-01-18 18:31:34 +01:00
2ce0a6415f feat(streams): renew c3 lounge 2022-01-18 12:28:40 +01:00
fbbc9767a3 feat(stardict): improve renderer 2022-01-18 12:18:31 +01:00
356269caf7 feat(zaatar): enable spotifyd 2022-01-17 21:03:38 +01:00
a001a98f7b feat(weechat): more libera 2022-01-17 10:10:16 +01:00
2624bf0a50 feat: timer script 2022-01-17 10:10:16 +01:00
5186b7ac28 feat: lojban software 2022-01-15 08:21:42 +01:00
5497739980 feat(stardict): lojban 2022-01-14 19:59:06 +01:00
5bbb01d275 feat(locale): use en_DK, which uses ISO date 2022-01-14 19:26:46 +01:00
83837932af feat(weechat): real name is first name 2022-01-14 19:26:46 +01:00
72c88d0f38 feat(stardict): replace lsj and sa, shorten oed 2022-01-14 19:26:46 +01:00
ed646335f1 feat: IBM 3270 colors 2022-01-14 19:17:01 +01:00
310e9d8b46 feat(stardict): case-insensitive 2022-01-14 09:11:20 +01:00
a7efa8a822 feat(watson): configure WATSON_DIR 2022-01-14 08:30:33 +01:00
f9ceed1352 feat(stardict): use built-in coloring 2022-01-13 20:01:50 +01:00
630d99e191 feat(alertmanager): alert via irc 2022-01-13 19:29:19 +01:00
f0e11f3147 feat(stardict): better rendering 2022-01-13 18:05:46 +01:00
c651413768 feat(stardict): more sanskrit 2022-01-13 17:43:47 +01:00
ac7ddcfd1a feat(krops): copy instead of fetching on target 2022-01-12 23:00:41 +01:00
03c944affd feat(unicodmenu): kaomoji first 2022-01-12 21:36:26 +01:00
57f440ced5 feat(unicodmenu): get from unicode website 2022-01-12 18:02:59 +01:00
3528ffbda3 feat(urlwatch): disable telegram 2022-01-12 10:09:16 +01:00
237f7d7c96 feat(stardict): wrap 2022-01-12 10:00:33 +01:00
7f79744a13 feat(traadfri): add chain of lights 2022-01-12 08:17:53 +01:00
f2ff05c47e feat: reimplement ipa and betacode in haskell 2022-01-11 23:49:06 +01:00
a1b13206f1 chore: update retiolum 2022-01-11 23:19:17 +01:00
20fa2c9b08 feat(stardict): dont configure goldendict 2022-01-11 23:19:03 +01:00
ff098c1f97 feat: stable htmlq 2022-01-11 23:18:43 +01:00
2c03311dc2 feat(retiolum-map): add rrm.r alias 2022-01-11 23:13:17 +01:00
56bcc26ed6 feat: never underestimate espeak 2022-01-11 22:25:25 +01:00
2619e6e7b5 chore: update nixpkgs 2022-01-11 22:25:13 +01:00
85f170743b feat: mupdf 2022-01-11 20:05:25 +01:00
65532d7d47 feat: tocharian font 2022-01-11 19:56:31 +01:00
2aa19c28bd Revert "feat(zaatar): rip grocy"
This reverts commit 2e0765eede.
2022-01-11 12:07:51 +01:00
2e6a802f4a chore: update 2022-01-10 17:29:14 +01:00
08f0018e1f fix(zaatar): reenable nginx 2022-01-10 17:27:48 +01:00
cb4b9133c3 feat: no new planets in horoscope bot 2022-01-10 10:09:26 +01:00
b9a812962d feat: eyeD3 2022-01-08 10:18:43 +01:00
c243dc4cfd feat: dont clutter startup 2022-01-08 10:18:33 +01:00
230f6fab0c feat(flameshot-once): readd image uploader 2022-01-08 09:37:33 +01:00
9c16cc62bc feat: stardict renderer 2022-01-08 09:17:40 +01:00
18688f1441 chore: why did i have to do this 2022-01-08 09:17:28 +01:00
176 changed files with 6112 additions and 4149 deletions

19
.github/workflows/flake.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Update flake.lock
on:
workflow_dispatch: # allows manual triggering
schedule:
- cron: '0 0 * * 0' # runs weekly on Sunday at 00:00
jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Nix
uses: cachix/install-nix-action@v16
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@v3

107
ci.nix
View File

@@ -1,27 +1,36 @@
{ inputs, system, name }:
let
{
inputs,
system,
name,
}: let
inherit (inputs) nixpkgs;
pkgs = nixpkgs.legacyPackages.${system};
ensureFiles = paths: pkgs.runCommand "directory" {} ''
set -efu
mkdir $out
cd $out
${nixpkgs.lib.concatMapStringsSep "\n" (path: ''
mkdir -p "$(dirname ${nixpkgs.lib.escapeShellArg path})"
echo foo > ${nixpkgs.lib.escapeShellArg path}
'') paths}
'';
ensureFiles = paths:
pkgs.runCommand "directory" {} ''
set -efu
mkdir $out
cd $out
${
nixpkgs.lib.concatMapStringsSep "\n" (path: ''
mkdir -p "$(dirname ${nixpkgs.lib.escapeShellArg path})"
echo foo > ${nixpkgs.lib.escapeShellArg path}
'')
paths
}
'';
nixPath = nixpkgs.lib.concatStringsSep ":" ([
"niveum=${toString ./.}"
"nixos-config=${toString ./.}/systems/${name}/configuration.nix"
"system-secrets=${systemSecrets}"
"secrets=${sharedSecrets}"
] ++ nixpkgs.lib.mapAttrsToList (name: value: "${name}=${value}") inputs);
"niveum=${toString ./.}"
"nixos-config=${toString ./.}/systems/${name}/configuration.nix"
"system-secrets=${systemSecrets}"
"secrets=${sharedSecrets}"
]
++ nixpkgs.lib.mapAttrsToList (name: value: "${name}=${value}") inputs);
# cd ~/.password-store/shared && find * -type f | sed 's/.gpg$//'
sharedSecrets = ensureFiles [
"di.fm/key"
"eduroam/identity"
"eduroam/password"
"hass/token"
"mail/cock"
"mail/fastmail"
"mail/gmail/amroplay"
@@ -31,34 +40,44 @@ let
"nextcloud-fysi/password"
"nextcloud/password"
"openweathermap.key"
"restic/password"
"traadfri.key"
"wifi/Aether.psk"
"spotify/username"
"spotify/password"
];
systemSecrets = let basic = [ "retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"]; in {
zaatar = ensureFiles ([ "moodle.token" "telegram/moodle-dl.token" ] ++ basic);
kabsa = ensureFiles basic;
manakish = ensureFiles basic;
makanek = ensureFiles ([
"irc/retiolum"
"irc/hackint"
"irc/libera"
"irc/oftc"
"matrix/nibbana"
"maxmind/license.key"
"moodle-dl/faye.token"
"nextcloud/admin"
"nextcloud/database"
"telegram/nachtischsatan.token"
"telegram/reverse.token"
"telegram/odyssey.token"
"telegram/betacode.token"
"telegram/moodle-dl.token"
"telegram/proverb.token"
"telegram/menstruation.token"
"telegram/cool_village.token"
"telegram/kmein.token"
"telegram/prometheus.token"
"weechat/relay"
] ++ basic);
}.${name};
in toString (pkgs.writers.writeDash "build" "NIX_PATH=${nixPath} nix-build '<nixpkgs/nixos>' -A system --dry-run")
systemSecrets = let
basic = ["retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"];
in
{
zaatar = ensureFiles (["moodle.token" "telegram/moodle-dl.token" "mpd-web.key"] ++ basic);
kabsa = ensureFiles basic;
manakish = ensureFiles basic;
tahina = ensureFiles basic;
makanek = ensureFiles ([
"irc/retiolum"
"irc/hackint"
"irc/libera"
"irc/oftc"
"matrix/nibbana"
"maxmind/license.key"
"moodle-dl/faye.token"
"nextcloud/admin"
"nextcloud/database"
"telegram/nachtischsatan.token"
"telegram/reverse.token"
"telegram/odyssey.token"
"telegram/betacode.token"
"telegram/moodle-dl.token"
"telegram/proverb.token"
"telegram/menstruation.token"
"telegram/cool_village.token"
"telegram/kmein.token"
"telegram/prometheus.token"
"weechat/relay"
]
++ basic);
}
.${name};
in
toString (pkgs.writers.writeDash "build" "NIX_PATH=${nixPath} nix-build '<nixpkgs/nixos>' -A system --dry-run")

View File

@@ -1,21 +1,24 @@
{ pkgs, lib, config, ... }:
{
pkgs,
lib,
config,
...
}: {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
pkgs.alacritty
];
home-manager.users.me.xdg.configFile =
let
home-manager.users.me.xdg.configFile = let
inherit (import <niveum/lib>) colours;
colourNames = [ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"];
colourPairs = lib.getAttrs colourNames colours;
in {
"alacritty/alacritty.yml".source = (pkgs.formats.yaml {}).generate "alacritty.yml" {
background_opacity = 0.9;
colors = {
primary = { inherit (colours) background foreground; };
primary = {inherit (colours) background foreground;};
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};

49
configs/backup.nix Normal file
View File

@@ -0,0 +1,49 @@
{
pkgs,
config,
...
}: let
inherit (import <niveum/lib>) restic;
in {
services.restic.backups.niveum = {
initialize = true;
inherit (restic) repository;
timerConfig = {
OnCalendar = "8:00";
RandomizedDelaySec = "1h";
};
passwordFile = toString <secrets/restic/password>;
extraBackupArgs = [
"--exclude=/home/kfm/projects/nixpkgs/.git"
"--exclude=node_modules"
];
paths = [
"/home/kfm/work"
"/home/kfm/projects"
"/home/kfm/cloud"
"/home/kfm/.gnupg"
"/home/kfm/.ssh"
];
};
systemd.services.restic-backups-niveum.serviceConfig = {
Restart = "on-failure";
RestartSec = "15s";
StartLimitIntervalSec = "1m"; # don't try more than 4 times
StartLimitBurst = 4;
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "restic-niveum" ''
${pkgs.restic}/bin/restic -r ${restic.repository} -p ${<secrets/restic/password>} "$@"
'')
(pkgs.writers.writeDashBin "restic-mount" ''
mountdir=$(mktemp -d)
trap clean EXIT
clean() {
rm -r "$mountdir"
}
${pkgs.restic}/bin/restic -r ${restic.repository} -p ${<secrets/restic/password>} mount "$mountdir"
'')
];
}

View File

@@ -1,11 +1,14 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
boot.extraModulePackages = with config.boot.kernelPackages; [
tp_smapi
acpi_call
];
boot.kernelModules = [ "tp_smapi" "acpi_call" ];
environment.systemPackages = [ pkgs.tpacpi-bat ];
boot.kernelModules = ["tp_smapi" "acpi_call"];
environment.systemPackages = [pkgs.tpacpi-bat];
services.tlp = {
enable = true;

View File

@@ -1,11 +1,14 @@
{ lib, pkgs, ... }:
{
environment.systemPackages = [ pkgs.beets ];
lib,
pkgs,
...
}: {
environment.systemPackages = [pkgs.beets];
home-manager.users.me.xdg.configFile = {
"beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" {
directory = "~/cloud/syncthing/music";
library = "~/cloud/syncthing/common/music.db";
plugins = toString [ "fetchart" "lastgenre" ];
plugins = toString ["fetchart" "lastgenre"];
};
};
}

View File

@@ -1,11 +1,15 @@
{ pkgs, lib, ... }: {
{
pkgs,
lib,
...
}: {
hardware.bluetooth = {
enable = true;
settings.General.Enable =
lib.concatStringsSep "," [ "Source" "Sink" "Media" "Socket" ];
lib.concatStringsSep "," ["Source" "Sink" "Media" "Socket"];
};
environment.systemPackages = [ pkgs.blueman ];
environment.systemPackages = [pkgs.blueman];
home-manager.users.me = { services.blueman-applet.enable = false; };
home-manager.users.me = {services.blueman-applet.enable = false;};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }:
{pkgs, ...}:
# https://paste.sr.ht/~erictapen/11716989e489b600f237041b6d657fdf0ee17b34
let
certificate = pkgs.stdenv.mkDerivation rec {
@@ -7,7 +7,7 @@ let
1,/DST Root CA X3/d
1,/-----END CERTIFICATE-----/p
'';
nativeBuildInputs = with pkgs; [ cacert gnused ];
nativeBuildInputs = with pkgs; [cacert gnused];
phases = "installPhase";
installPhase = ''
${pkgs.gnused}/bin/sed -n -f $src ${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt > $out

View File

@@ -1,16 +1,16 @@
{ pkgs, ... }: {
{pkgs, ...}: {
programs.chromium = {
enable = true;
extensions = [
"nngceckbapebfimnlniiiahkandclblb" # BitWarden
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos
"pjjgklgkfeoeiebjogplpnibpfnffkng" # undistracted
"nhdogjmejiglipccpnnnanhbledajbpd" # vuejs devtools
];
};
environment.systemPackages = [ pkgs.brave ];
environment.systemPackages = [pkgs.brave];
environment.variables.BROWSER = "brave";
}

View File

@@ -1,4 +1,11 @@
{ config, lib, pkgs, ... }: {
{
config,
lib,
pkgs,
...
}: let
inherit (import <niveum/lib>) tmpfilesConfig;
in {
imports = [
<niveum/modules/dropbox.nix>
];
@@ -7,14 +14,39 @@
dropbox.enable = false;
};
system.activationScripts.home-symlinks = ''
ln -sfn ${config.users.users.me.home}/cloud/syncthing/common/mahlzeit ${config.users.users.me.home}/mahlzeit
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Wiki ${config.users.users.me.home}/notes
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Uni ${config.users.users.me.home}/uni
'';
systemd.tmpfiles.rules = map tmpfilesConfig [
{
type = "L+";
user = config.users.users.me.name;
group = "users";
mode = "0755";
argument = "${config.users.users.me.home}/cloud/Seafile/Wiki";
path = "${config.users.users.me.home}/notes";
}
{
type = "L+";
user = config.users.users.me.name;
group = "users";
mode = "0755";
argument = "${config.users.users.me.home}/cloud/Seafile/Uni";
path = "${config.users.users.me.home}/uni";
}
{
type = "L+";
user = config.users.users.me.name;
group = "users";
mode = "0755";
argument = "${config.users.users.me.home}/cloud/syncthing/common/mahlzeit";
path = "${config.users.users.me.home}/mahlzeit";
}
];
home-manager.users.me = {
services.nextcloud-client.enable = true;
services.gnome-keyring.enable = true;
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
};
environment.systemPackages = [
@@ -47,16 +79,16 @@
cert = toString <system-secrets/syncthing/cert.pem>;
key = toString <system-secrets/syncthing/key.pem>;
inherit ((import <niveum/lib>).syncthing) devices;
folders =
let cloud-dir = "${config.users.users.me.home}/cloud";
in {
"${cloud-dir}/syncthing/common".devices = [ "kabsa" "manakish" ];
"${cloud-dir}/syncthing/library".devices = [ "kabsa" "manakish" "heym" ];
"${cloud-dir}/syncthing/mundoiu".devices = [ "kabsa" "manakish" "heym" ];
"${cloud-dir}/syncthing/music" = {
devices = [ "kabsa" "manakish" "heym" "zaatar" ];
id = "music";
};
folders = let
cloud-dir = "${config.users.users.me.home}/cloud";
in {
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/music" = {
devices = ["kabsa" "manakish" "heym" "zaatar"];
id = "music";
};
};
};
}

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
copyqConfig = pkgs.writers.writeDash "copyq-config" ''
${pkgs.copyq}/bin/copyq config check_clipboard true
${pkgs.copyq}/bin/copyq config check_selection false
@@ -18,10 +21,10 @@ let
${pkgs.copyq}/bin/copyq config text_wrap true
'';
in {
environment.systemPackages = [ pkgs.copyq ];
environment.systemPackages = [pkgs.copyq];
systemd.user.services.copyq = {
wantedBy = [ "graphical-session.target" ];
wantedBy = ["graphical-session.target"];
environment = {
DISPLAY = ":${toString config.services.xserver.display}";
};

View File

@@ -1,5 +1,10 @@
{ pkgs, lib, config, options, ... }:
let
{
pkgs,
lib,
config,
options,
...
}: let
inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran;
in {
@@ -7,7 +12,7 @@ in {
<home-manager/nixos>
<niveum/modules/system-dependent.nix>
{
boot.supportedFilesystems = [ "ntfs" ];
boot.supportedFilesystems = ["ntfs"];
}
{
nix.nixPath = [
@@ -20,14 +25,19 @@ in {
config = {
allowUnfree = true;
packageOverrides = pkgs: {
dmenu = pkgs.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
tocharian-font = pkgs.callPackage <niveum/packages/tocharian-font.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> {};
ix = pkgs.callPackage <niveum/packages/ix.nix> {};
};
};
overlays = [
(self: super: {
scripts = import <niveum/packages/scripts> { pkgs = super; lib = super.lib; };
scripts = import <niveum/packages/scripts> {
pkgs = super;
lib = super.lib;
};
})
];
};
@@ -55,8 +65,7 @@ in {
users.users.me = {
name = "kfm";
description = kieran.name;
hashedPassword =
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
isNormalUser = true;
uid = 1000;
};
@@ -70,27 +79,28 @@ in {
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
extraModules = [ pkgs.pulseaudio-modules-bt ];
extraModules = [pkgs.pulseaudio-modules-bt];
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true;
extraConfig = ''
load-module ${toString [
"module-tunnel-sink-new"
"server=zaatar.r"
"sink_name=zaatar"
"channels=2"
"rate=44100"
]}
load-module ${
toString [
"module-tunnel-sink-new"
"server=zaatar.r"
"sink_name=zaatar"
"channels=2"
"rate=44100"
]
}
'';
};
users.users.me.extraGroups = [ "audio" ];
users.users.me.extraGroups = ["audio"];
environment.systemPackages = [ pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer ];
environment.systemPackages = [pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer];
}
{
environment.interactiveShellInit =
"export PATH=$PATH:$HOME/projects/niveum";
environment.interactiveShellInit = "export PATH=$PATH:$HOME/projects/niveum";
environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
@@ -101,15 +111,18 @@ in {
take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
'';
cdt = pkgs.writers.writeDash "cdt" ''
cd "$(mktemp -d)"
pwd
'';
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
in {
"ß" = "${pkgs.utillinux}/bin/setsid";
cat = "${pkgs.bat}/bin/bat --style=plain";
chromium-incognito =
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp --interactive";
ip = "${pkgs.iproute}/bin/ip -c";
l = "ls --color=auto --time-style=long-iso --almost-all";
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";
@@ -122,6 +135,8 @@ in {
rm = "rm --interactive";
s = "${pkgs.systemd}/bin/systemctl";
take = "source ${take}";
cdt = "source ${cdt}";
vit = "$EDITOR $(mktemp)";
tmux = "${pkgs.tmux}/bin/tmux -2";
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
zathura = swallow "${pkgs.zathura}/bin/zathura";
@@ -129,13 +144,11 @@ in {
wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}";
yt =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
yta =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
};
}
{ i18n.defaultLocale = "en_GB.UTF-8"; }
{i18n.defaultLocale = "en_DK.UTF-8";}
{
services.xserver = {
enable = true;
@@ -148,7 +161,7 @@ in {
enable = true;
greeters.gtk = {
enable = true;
indicators = [ "~spacer" "~host" "~spacer" "~session" "~power" ];
indicators = ["~spacer" "~host" "~spacer" "~session" "~power"];
};
};
};
@@ -168,13 +181,13 @@ in {
};
};
}
{ programs.command-not-found.enable = true; }
{programs.command-not-found.enable = true;}
{
programs.gnupg.agent.enable = true;
environment.systemPackages = [
pkgs.gnupg
(pkgs.pass.withExtensions (e: [e.pass-otp]))
(pkgs.pass.withExtensions (e: [e.pass-otp e.pass-import e.pass-genphrase]))
];
}
{
@@ -187,12 +200,15 @@ in {
};
}
{
networking.hosts = lib.mapAttrs' (name: address: {
name = address;
value = [ "${name}.local" ];
}) localAddresses;
networking.hosts =
lib.mapAttrs' (name: address: {
name = address;
value = ["${name}.local"];
})
localAddresses;
}
./alacritty.nix
./backup.nix
./bash.nix
./beets.nix
./bluetooth.nix
@@ -225,6 +241,7 @@ in {
./flameshot-once.nix
./packages.nix
./stardict.nix
./polkit.nix
./power-action.nix
./printing.nix
./openweathermap.nix
@@ -245,5 +262,6 @@ in {
./vscode.nix
./watson.nix
./zsh.nix
./tor.nix
];
}

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
nixify = pkgs.writers.writeDashBin "nixify" ''
set -efuC
@@ -18,18 +17,18 @@ let
fi
'';
in {
environment.systemPackages = [ pkgs.direnv nixify ];
environment.systemPackages = [pkgs.direnv nixify];
home-manager.users.me.programs.direnv = {
enable = true;
stdlib = builtins.readFile ("${
pkgs.fetchFromGitHub {
owner = "Mic92";
repo = "dotfiles";
rev = "a0a9b7e358fa70a85cd468f8ca1fbb02ae0a91df";
sha256 = "1y9h5s1lf59sczsm0ksq2x1yhl98ba9lwk5yil3q53rg7n4574pg";
}
}/home/.direnvrc");
stdlib = builtins.readFile "${
pkgs.fetchFromGitHub {
owner = "Mic92";
repo = "dotfiles";
rev = "a0a9b7e358fa70a85cd468f8ca1fbb02ae0a91df";
sha256 = "1y9h5s1lf59sczsm0ksq2x1yhl98ba9lwk5yil3q53rg7n4574pg";
}
}/home/.direnvrc";
};
programs.zsh.interactiveShellInit = ''

View File

@@ -1,8 +1,13 @@
{ lib, config, pkgs, ... }: {
{
lib,
config,
pkgs,
...
}: {
imports = [
(import <stockholm/makefu/3modules/bump-distrowatch.nix> {
inherit lib config;
pkgs = pkgs // { writeDash = pkgs.writers.writeDash; };
pkgs = pkgs // {writeDash = pkgs.writers.writeDash;};
})
];

View File

@@ -1,4 +1,8 @@
{ lib, pkgs, ... }: {
{
lib,
pkgs,
...
}: {
virtualisation.docker = {
enable = true;
# for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c
@@ -7,6 +11,6 @@
"--fixed-cidr=172.39.1.0/25"
];
};
users.users.me.extraGroups = [ "docker" ];
environment.systemPackages = [ pkgs.docker pkgs.docker_compose ];
users.users.me.extraGroups = ["docker"];
environment.systemPackages = [pkgs.docker pkgs.docker_compose];
}

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
inherit (import <niveum/lib>) defaultApplications colours theme;
in {
home-manager.users.me.services.dunst = {

View File

@@ -1,15 +1,12 @@
{ lib, pkgs, ... }:
let
{
lib,
pkgs,
...
}: let
inherit (import <niveum/lib>) defaultApplications;
flameshot-once = pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
flameshot-once =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
in {
nixpkgs.overlays = [
(self: super: {
write =
super.callPackage <stockholm/krebs/5pkgs/simple/xwaitforwindow.nix> { };
})
];
environment.systemPackages = [
(flameshot-once.override {
config = {
@@ -31,6 +28,7 @@ in {
"COPY"
"DRAWER"
"EXIT"
"IMAGEUPLOADER"
"MARKER"
"MOVESELECTION"
"PENCIL"

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
flixLocation = "/media/flix";
cacheLocation = "/var/cache/flix";
indexFilename = "index";
@@ -18,7 +21,6 @@ in {
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
"x-systemd.requires=tinc.retiolum.service"
"x-systemd.requires=wpa_supplicant.service"
"user"
"_netdev"
];
@@ -36,7 +38,7 @@ in {
systemd.services.flix-index = {
description = "Flix indexing service";
wants = [ "network-online.target" ];
wants = ["network-online.target"];
script = "cp ${flixLocation}/download/index ./${indexFilename}";
startAt = "hourly";
serviceConfig = {
@@ -75,5 +77,4 @@ in {
| ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.utillinux}/bin/setsid ${pkgs.xdg_utils}/bin/xdg-open '{}'
'')
];
}

View File

@@ -1,41 +1,53 @@
{ pkgs, ... }: {
{pkgs, ...}: {
nixpkgs.config.joypixels.acceptLicense = true;
fonts = {
enableDefaultFonts = true;
fontDir.enable = true;
fonts = with pkgs; [
alegreya
alegreya-sans
amiri
cantarell-fonts
charis-sil
corefonts
crimson
eb-garamond
etBook
fira
font-awesome-ttf
gentium
gfs-fonts
gyre-fonts
ia-writer-duospace
ibm-plex
inconsolata
iosevka
libertine
jetbrains-mono
joypixels
libertinus
libre-bodoni
lmodern
merriweather
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
ocr-a
roboto
roboto-mono
roboto-slab
scheherazade-new
source-code-pro
source-serif-pro
source-sans-pro
ubuntu_font_family
gfs-fonts
jetbrains-mono
twemoji-color-font
joypixels
];
fontconfig.defaultFonts = {
monospace = [ "JetBrains Mono" "JoyPixels" ];
serif = [ "Roboto Slab" ];
sansSerif = [ "Roboto" "Noto Sans" ];
emoji = [ "JoyPixels" ];
source-serif-pro
theano
tocharian-font
vistafonts
vollkorn
zilla-slab
]; # google-fonts league-of-moveable-type
fontconfig.defaultFonts = let
emojiFont = "JoyPixels";
in {
monospace = ["JetBrains Mono" emojiFont];
serif = ["Merriweather"];
sansSerif = ["Cantarell" emojiFont];
emoji = [emojiFont];
};
};
}

View File

@@ -1,9 +1,13 @@
{ pkgs, lib, ... }: {
{
pkgs,
lib,
...
}: {
environment = {
systemPackages = [ pkgs.fzf ];
systemPackages = [pkgs.fzf];
variables = {
FZF_DEFAULT_OPTS =
lib.escapeShellArgs [ "--height=40%" "--layout=reverse" ];
lib.escapeShellArgs ["--height=40%" "--layout=reverse"];
FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d";
FZF_ALT_C_OPTS = lib.escapeShellArgs [
"--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'"
@@ -12,7 +16,7 @@
];
FZF_CTRL_T_COMMAND = "${pkgs.fd}/bin/fd --type f";
FZF_CTRL_T_OPTS =
lib.escapeShellArgs [ "--preview='${pkgs.bat}/bin/bat \"{}\"'" ];
lib.escapeShellArgs ["--preview='${pkgs.bat}/bin/bat \"{}\"'"];
};
};

View File

@@ -1,16 +1,19 @@
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran ignorePaths;
in
{
pkgs,
config,
lib,
...
}: let
inherit (import <niveum/lib>) kieran ignorePaths;
in {
environment.systemPackages = [
pkgs.mr
pkgs.git
pkgs.gitAndTools.gitflow
pkgs.gitAndTools.hub
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras
pkgs.gitAndTools.git-trim
pkgs.gitAndTools.git-absorb
pkgs.gitstats
pkgs.patch
pkgs.patchutils
@@ -23,37 +26,6 @@ in
};
home-manager.users.me = {
home.file.".mrconfig".text = let
prependPath = prefix:
lib.attrsets.mapAttrs'
(path: lib.attrsets.nameValuePair "${prefix}/${path}");
git = url: { checkout = "git clone ${url}"; };
github = owner: repo: git "git@github.com:${owner}/${repo}";
keybase = owner: repo: git "keybase://private/${owner}/${repo}";
in lib.generators.toINI { } ({
DEFAULT = { git_gc = ''git gc "$@"''; };
} // prependPath "projects" {
"menstruation.rs" = github "kmein" "menstruation.rs";
brockman = github "kmein" "brockman";
challenges = github "kmein" "challenges";
conlangs = github "kmein" "conlangs";
ledger = keybase "kmein" "ledger";
mahlzeit = github "kmein" "mahlzeit";
menstruation-telegram = github "kmein" "menstruation-telegram";
meteora = github "kmein" "meteora";
modernizr = github "kmein" "modernizr";
niveum = github "kmein" "niveum";
nixpkgs = github "NixOS" "nixpkgs";
poetry = github "kmein" "poetry";
quotes = github "kmein" "quotes";
sphinx = github "kmein" "sphinx";
stockholm = git "https://cgit.krebsco.de/stockholm";
telebots = github "kmein" "telebots";
traadfri = github "kmein" "traadfri";
wissen = github "kmein" "wissen";
zen = github "kmein" "zen";
});
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
@@ -70,33 +42,20 @@ in
diffs = "diff --staged";
last = "log -1 HEAD";
logs = "log --pretty=oneline";
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";
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 = 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 = {
ui = true;
diff = {
meta = "11";
frag = "magenta bold";
commit = "yellow bold";
old = "red bold";
new = "green bold";
whitespace = "red reverse";
};
diff-highlight = {
oldNormal = "red bold";
oldHighlight = "red bold 52";
newNormal = "green bold";
newHighlight = "green bold 22";
};
};
# ref https://github.com/dandavison/delta
core.pager = "${pkgs.delta}/bin/delta";
interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
delta.navigate = true;
merge.conflictStyle = "diff3";
diff.colorMoved = "default";
};
};
};

View File

@@ -1,5 +1,9 @@
{ config, pkgs, ... }: {
imports = [ <niveum/modules/hledger.nix> ];
{
config,
pkgs,
...
}: {
imports = [<niveum/modules/hledger.nix>];
niveum.hledger = {
enable = true;

View File

@@ -22,8 +22,8 @@
sort_key = "PERCENT_CPU";
tree_view = true;
update_process_names = false;
right_meters = [ "Uptime" "Tasks" "LoadAverage" "Battery" ];
left_meters = [ "LeftCPUs2" "RightCPUs2" "Memory" "Swap" ];
right_meters = ["Uptime" "Tasks" "LoadAverage" "Battery"];
left_meters = ["LeftCPUs2" "RightCPUs2" "Memory" "Swap"];
};
};
};

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
let
{
config,
pkgs,
lib,
...
}: let
inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort;
eduroam = {
@@ -14,7 +18,7 @@ let
"username=meinhaki"
"password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
"noauto"
"x-systemd.requires=openvpn-hu-berlin.service"
"x-systemd.requires=hu-vpn.service"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
@@ -32,7 +36,6 @@ in {
options = hu-berlin-cifs-options;
};
home-manager.users.me.programs.ssh = {
matchBlocks = {
"alew.hu-berlin.de" = {
@@ -46,10 +49,11 @@ in {
(pkgs.writers.writeDashBin "hu-ip" ''
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
'')
(pkgs.writers.writePython3Bin "hu-eduroam-install"
(
pkgs.writers.writePython3Bin "hu-eduroam-install"
{
libraries = with pkgs.python3Packages; [ distro pyopenssl dbus-python ];
flakeIgnore = [ "E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291" ];
libraries = with pkgs.python3Packages; [distro pyopenssl dbus-python];
flakeIgnore = ["E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291"];
}
(builtins.readFile (builtins.fetchurl {
url = "https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/linux-installer/eduroam-linux-hub.py";
@@ -60,20 +64,22 @@ in {
systemd.services.hu-vpn = {
enable = true;
wants = [ "network-online.target" ];
conflicts = [ "openvpn-hu-berlin.service" ];
wants = ["network-online.target"];
conflicts = ["openvpn-hu-berlin.service"];
script = ''
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de
port = 443
trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359
username = ${eduroam.identity}
password = ${eduroam.password}
''}
${pkgs.openfortivpn}/bin/openfortivpn -c ${
pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de
port = 443
trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359
username = ${eduroam.identity}@split_tunnel
password = ${eduroam.password}
''
}
'';
};
systemd.services.openvpn-hu-berlin.conflicts = [ "hu-vpn.service" ];
systemd.services.openvpn-hu-berlin.conflicts = ["hu-vpn.service"];
services.openvpn.servers.hu-berlin = {
autoStart = false;
@@ -82,8 +88,7 @@ in {
password = eduroam.password;
};
config = fileContents (pkgs.fetchurl {
url =
"https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
url = "https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
});
};

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
let
{
config,
pkgs,
lib,
...
}: let
inherit (import <niveum/lib>) defaultApplications colours;
klem = import <niveum/packages/scripts/klem.nix> {
inherit pkgs lib;
@@ -45,7 +49,6 @@ let
move-to-new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
'';
in {
services.xserver = {
displayManager.defaultSession = "none+i3";
@@ -73,7 +76,10 @@ in {
home-manager.users.me.xsession.windowManager.i3 = {
enable = true;
config = rec {
fonts = {names = ["Sans"]; size = 10.0;};
fonts = {
names = ["Sans"];
size = 10.0;
};
modifier = "Mod4";
window = {
titlebar = false;
@@ -81,15 +87,15 @@ in {
hideEdgeBorders = "smart";
commands = [
{
criteria = { class = "floating"; };
criteria = {class = "floating";};
command = "floating enable";
}
{
criteria = { class = "fzfmenu"; };
criteria = {class = "fzfmenu";};
command = "floating enable";
}
{
criteria = { class = "mpv"; };
criteria = {class = "mpv";};
command = lib.strings.concatStringsSep ", " [
"floating enable"
"sticky enable"
@@ -111,51 +117,64 @@ in {
text = colours.foreground;
};
in rec {
focused = scheme // {
border = colours.cyan.bright;
indicator = colours.cyan.bright;
childBorder = colours.cyan.bright;
};
unfocused = scheme // {
border = colours.background;
indicator = colours.background;
childBorder = colours.background;
};
focusedInactive = unfocused;
urgent = scheme // {
border = colours.red.bright;
indicator = colours.red.bright;
childBorder = colours.red.bright;
};
placeholder = scheme // {
border = colours.green.bright;
indicator = colours.green.bright;
childBorder = colours.green.bright;
};
};
bars = [{
workspaceButtons = false;
fonts = {names = ["Sans"]; size = 8.0;};
mode = "hide"; # "dock"
position = "bottom";
colors = rec {
background = colours.background;
separator = background;
statusline = colours.foreground;
bindingMode = {
background = colours.red.bright;
border = colours.background;
text = colours.foreground;
focused =
scheme
// {
border = colours.cyan.bright;
indicator = colours.cyan.bright;
childBorder = colours.cyan.bright;
};
};
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
unfocused =
scheme
// {
border = colours.background;
indicator = colours.background;
childBorder = colours.background;
};
focusedInactive = unfocused;
urgent =
scheme
// {
border = colours.red.bright;
indicator = colours.red.bright;
childBorder = colours.red.bright;
};
placeholder =
scheme
// {
border = colours.green.bright;
indicator = colours.green.bright;
childBorder = colours.green.bright;
};
};
bars = [
{
workspaceButtons = false;
fonts = {
names = ["Sans"];
size = 8.0;
};
mode = "hide"; # "dock"
position = "bottom";
colors = rec {
background = colours.background;
separator = background;
statusline = colours.foreground;
bindingMode = {
background = colours.red.bright;
border = colours.background;
text = colours.foreground;
};
};
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
(pkgs.formats.toml {}).generate "i3status-rust.toml" (import <niveum/lib/i3status-rust.nix> {
inherit (config.niveum) batteryName wirelessInterface;
inherit colours;
inherit pkgs;
})
}";
}];
}
];
modes.resize = {
"Escape" = ''mode "default"'';
"Return" = ''mode "default"'';
@@ -205,28 +224,26 @@ in {
"${modifier}+0" = "exec ${pkgs.scripts.menu-calc}/bin/=";
"${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";
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec ${pkgs.rofi}/bin/rofi -modi run,window,ssh,filebrowser -show run''}";
"${modifier}+Shift+d" = "exec ${
pkgs.writers.writeDash "notemenu" ''
set -efu
PATH=$PATH:${
lib.makeBinPath [ pkgs.dmenu pkgs.findutils pkgs.coreutils ]
}
pkgs.writers.writeDash "notemenu" ''
set -efu
PATH=$PATH:${
lib.makeBinPath [pkgs.rofi pkgs.findutils pkgs.coreutils]
}
cd ~/notes
note_file=$({
echo diary/$(date -I).md
echo diary/$(date -I -d yesterday).md
find . -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2
} | dmenu -i)
if test "$note_file"
then
i3-sensible-terminal -e "$EDITOR" "$note_file"
fi
''
}";
cd ~/notes
note_file=$({
echo diary/$(date -I).md
echo diary/$(date -I -d yesterday).md
find . -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2
} | rofi -dmenu -i -p 'notes')
if test "$note_file"
then
i3-sensible-terminal -e "$EDITOR" "$note_file"
fi
''
}";
"${modifier}+p" = "exec --no-startup-id ${pkgs.pass}/bin/passmenu -l 5";
"${modifier}+u" = "exec ${pkgs.scripts.unicodmenu}/bin/unicodmenu";

View File

@@ -1,13 +1,17 @@
{
networking.firewall = {
allowedTCPPortRanges = [{
from = 1714;
to = 1764;
}];
allowedUDPPortRanges = [{
from = 1714;
to = 1764;
}];
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
];
};
home-manager.users.me = {

View File

@@ -1,17 +1,20 @@
{ pkgs, lib, ... }:
let commaSep = builtins.concatStringsSep ",";
{
pkgs,
lib,
...
}: let
commaSep = builtins.concatStringsSep ",";
in {
services.xserver = {
layout = commaSep [ "de" "gr" "ru" ];
xkbVariant = commaSep [ "T3" "polytonic" "phonetic" ];
layout = commaSep ["de" "gr"];
xkbVariant = commaSep ["T3" "polytonic"];
xkbOptions =
commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ];
commaSep ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
libinput.enable = true;
};
console.keyMap = "de";
# improve held key rate
services.xserver.displayManager.sessionCommands =
"${pkgs.xorg.xset}/bin/xset r rate 300 50";
services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xset}/bin/xset r rate 300 50";
}

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
let
{
config,
pkgs,
lib,
...
}: let
davHome = "~/.local/share/dav";
kmeinCloud = {
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
@@ -11,14 +15,13 @@ let
username = "kmein";
password = lib.fileContents <secrets/nextcloud-fysi/password>;
};
in
{
environment.systemPackages = [ pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman ];
in {
environment.systemPackages = [pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman];
systemd.user.services.vdirsyncer = {
enable = true;
wants = [ "network-online.target" ];
wantedBy = [ "default.target" ];
wants = ["network-online.target"];
wantedBy = ["default.target"];
startAt = "*:00/10";
script = ''
${pkgs.vdirsyncer}/bin/vdirsyncer sync

View File

@@ -1,11 +1,11 @@
{ lib, pkgs, ... }:
let
nixpkgs-unstable = import <nixpkgs-unstable> {};
in
{
lib,
pkgs,
...
}: {
systemd.services.lb-subscription = {
enable = true;
wants = [ "network-online.target" ];
wants = ["network-online.target"];
startAt = "weekly";
serviceConfig = {
user = "kfm";
@@ -15,10 +15,10 @@ in
first_year=2019
for year in $(${pkgs.coreutils}/bin/seq "$first_year" "$(date +%Y)"); do
${pkgs.curl}/bin/curl -sSL "https://www.literarische-blaetter.de/jahrgang-$year/" \
| ${nixpkgs-unstable.htmlq}/bin/htmlq --attribute href 'ul.slides a' \
| ${pkgs.htmlq}/bin/htmlq --attribute href 'ul.slides a' \
| while read -r month; do
${pkgs.curl}/bin/curl -sSL "$month" \
| ${nixpkgs-unstable.htmlq}/bin/htmlq --attribute src iframe \
| ${pkgs.htmlq}/bin/htmlq --attribute src iframe \
| ${pkgs.gnused}/bin/sed 's/.*?pdf=//;s/?wp-hosted.*//'
done
done | ${pkgs.findutils}/bin/xargs ${pkgs.wget}/bin/wget --no-clobber

View File

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

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
services.nginx.virtualHosts.default = {
locations."= /stub_status".extraConfig = "stub_status;";
};
@@ -35,40 +38,48 @@
};
};
networking.firewall.allowedTCPPorts = [ config.services.prometheus.exporters.node.port ];
networking.firewall.allowedTCPPorts = [config.services.prometheus.exporters.node.port];
systemd.services.promtail = {
description = "Promtail service for Loki";
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
serviceConfig = {
ExecStart = ''
${pkgs.grafana-loki}/bin/promtail --config.file ${(pkgs.formats.yaml {}).generate "promtail.yaml" {
server = {
http_listen_port = 28183;
grpc_listen_port = 0;
};
positions.filename = "/tmp/positions.yaml";
clients = [
{ url = "http://${if config.networking.hostName == "makanek" then "127.0.0.1" else "makanek.r"}:3100/loki/api/v1/push"; }
];
scrape_configs = [
{
job_name = "journal";
journal = {
max_age = "12h";
labels.job = "systemd-journal";
labels.host = config.networking.hostName;
};
relabel_configs = [
{
source_labels = [ "__journal__systemd_unit" ];
target_label = "unit";
}
];
}
];
}}
${pkgs.grafana-loki}/bin/promtail --config.file ${
(pkgs.formats.yaml {}).generate "promtail.yaml" {
server = {
http_listen_port = 28183;
grpc_listen_port = 0;
};
positions.filename = "/tmp/positions.yaml";
clients = [
{
url = "http://${
if config.networking.hostName == "makanek"
then "127.0.0.1"
else "makanek.r"
}:3100/loki/api/v1/push";
}
];
scrape_configs = [
{
job_name = "journal";
journal = {
max_age = "12h";
labels.job = "systemd-journal";
labels.host = config.networking.hostName;
};
relabel_configs = [
{
source_labels = ["__journal__systemd_unit"];
target_label = "unit";
}
];
}
];
}
}
'';
};
};

View File

@@ -1,14 +1,25 @@
{ pkgs, lib, ... }: let
{
pkgs,
lib,
config,
...
}: let
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
nixpkgs-unstable = import <nixpkgs-unstable> { config.allowUnfree = true; };
in {
environment.shellAliases.smpv = swallow "mpv";
nixpkgs.overlays = [
(self: super: {
mpv = config.home-manager.users.me.programs.mpv.finalPackage;
})
];
home-manager.users.me = {
programs.mpv = {
enable = true;
config = {
ytdl-raw-options = lib.concatStringsSep "," [ ''sub-lang="de,en"'' "write-sub=" "write-auto-sub=" ];
ytdl-format = "bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
ytdl-raw-options = lib.concatStringsSep "," [''sub-lang="de,en"'' "write-sub=" "write-auto-sub="];
screenshot-template = "%F-%wH%wM%wS-%#04n";
};
bindings = {
@@ -22,7 +33,8 @@ in {
"Alt+j" = "add video-pan-y -0.05";
};
scripts = [
nixpkgs-unstable.mpvScripts.youtube-quality
pkgs.mpvScripts.youtube-quality
(pkgs.callPackage <niveum/packages/mpv-visualizer.nix> {})
];
};
};

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
mainMailbox = "posteo";
accounts.uni = {
@@ -113,22 +116,23 @@ let
trash = "[Gmail]/Papierkorb";
};
};
in
{
environment.systemPackages = [ pkgs.neomutt ];
in {
environment.systemPackages = [pkgs.neomutt];
environment.shellAliases.mua = "${pkgs.neomutt}/bin/neomutt -f ${mainMailbox}";
home-manager.users.me.xdg.configFile."neomutt/neomuttrc".text = ''
set mailcap_path = ${pkgs.writeText "mailcap" ''
text/plain; $EDITOR %s ;
text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
image/*; ${pkgs.sxiv}/bin/sxiv %s ;
video/*; ${pkgs.utillinux}/bin/setsid ${pkgs.mpv}/bin/mpv --quiet %s &; copiousoutput
audio/*; ${pkgs.mpv}/bin/mpv %s ;
application/pdf; ${pkgs.zathura}/bin/zathura %s ;
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
''}:$mailcap_path
set mailcap_path = ${
pkgs.writeText "mailcap" ''
text/plain; $EDITOR %s ;
text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
image/*; ${pkgs.sxiv}/bin/sxiv %s ;
video/*; ${pkgs.utillinux}/bin/setsid ${pkgs.mpv}/bin/mpv --quiet %s &; copiousoutput
audio/*; ${pkgs.mpv}/bin/mpv %s ;
application/pdf; ${pkgs.zathura}/bin/zathura %s ;
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
''
}:$mailcap_path
set sidebar_visible
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
@@ -180,69 +184,78 @@ in
set header_cache="~/.cache/mutt" message_cachedir="~/.cache/mutt"
source ${pkgs.writeText "accounts.neomuttrc" ''
set realname = "Kierán Meinhardt"
account-hook . 'unset imap_user imap_pass smtp_user smtp_pass'
# set accordingly: postponed trash record
${lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let imapRoot = "imaps://${account.user}@${account.imap}"; in ''
account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"'
account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"'
folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"'
named-mailboxes "${name}" "${imapRoot}" "${name}" "${imapRoot}/${account.folders.sent}"
'') accounts)}
''}
source ${
pkgs.writeText "accounts.neomuttrc" ''
set realname = "Kierán Meinhardt"
account-hook . 'unset imap_user imap_pass smtp_user smtp_pass'
# set accordingly: postponed trash record
${
lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let
imapRoot = "imaps://${account.user}@${account.imap}";
in ''
account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"'
account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"'
folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"'
named-mailboxes "${name}" "${imapRoot}" "${name}" "${imapRoot}/${account.folders.sent}"
'')
accounts)
}
''
}
set spoolfile="${mainMailbox}"
source ${pkgs.writeText "colors.neomuttrc" ''
# Default index colors:
color index_number blue default
color index red default '.*'
color index_flags lightcyan default '.*'
color index_author yellow default '.*'
color index_subject lightblack default '.*'
source ${
pkgs.writeText "colors.neomuttrc" ''
# Default index colors:
color index_number blue default
color index red default '.*'
color index_flags lightcyan default '.*'
color index_author yellow default '.*'
color index_subject lightblack default '.*'
# New mail is boldened:
color index_author lightyellow black "~N"
color index_subject lightwhite black "~N"
# New mail is boldened:
color index_author lightyellow black "~N"
color index_subject lightwhite black "~N"
# Flagged mail is highlighted:
color index_flags lightmagenta default '~F'
# Flagged mail is highlighted:
color index_flags lightmagenta default '~F'
# Other colors and aesthetic settings:
mono bold bold
mono underline underline
mono error bold
mono indicator reverse
# color sidebar_flagged red black
mono sidebar_new bold
color error red default
color message cyan default
color search brightmagenta default
color hdrdefault lightblack default
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature lightblack default
color tree color235 default
# Other colors and aesthetic settings:
mono bold bold
mono underline underline
mono error bold
mono indicator reverse
# color sidebar_flagged red black
mono sidebar_new bold
color error red default
color message cyan default
color search brightmagenta default
color hdrdefault lightblack default
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature lightblack default
color tree color235 default
# Regex highlighting:
color header red default "^(Date)"
color header yellow default "^(From)"
color header white default "^(B?CC)"
color header brightwhite default "^(Subject)"
color body cyan default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
color body red default "(BAD signature)|^gpg: BAD signature from.*"
color body brightgreen default "(Good signature)|^gpg: Good signature .*"
color body brightyellow default "^gpg: "
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
''}
# Regex highlighting:
color header red default "^(Date)"
color header yellow default "^(From)"
color header white default "^(B?CC)"
color header brightwhite default "^(Subject)"
color body cyan default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
color body red default "(BAD signature)|^gpg: BAD signature from.*"
color body brightgreen default "(Good signature)|^gpg: Good signature .*"
color body brightyellow default "^gpg: "
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
''
}
'';
}

View File

@@ -1,21 +1,23 @@
{ pkgs, ... }: {
{pkgs, ...}: {
environment.variables.EDITOR = pkgs.lib.mkForce "nvim";
environment.shellAliases.vi = "nvim";
environment.shellAliases.vim = "nvim";
environment.shellAliases.view = "nvim -R";
nixpkgs.config.packageOverrides = pkgs: {
vimPlugins = pkgs.vimPlugins // {
cheat-sh-vim = pkgs.callPackage <niveum/packages/vimPlugins/cheat-sh.nix> { };
vim-fetch = pkgs.callPackage <niveum/packages/vimPlugins/vim-fetch.nix> { };
vim-colors-paramount = pkgs.callPackage <niveum/packages/vimPlugins/vim-colors-paramount.nix> { };
vim-256noir = pkgs.callPackage <niveum/packages/vimPlugins/vim-256noir.nix> { };
icalendar-vim = pkgs.callPackage <niveum/packages/vimPlugins/icalendar-vim.nix> { };
jq-vim = pkgs.callPackage <niveum/packages/vimPlugins/jq-vim.nix> { };
vim-fsharp = pkgs.callPackage <niveum/packages/vimPlugins/vim-fsharp.nix> { };
vim-reason-plus = pkgs.callPackage <niveum/packages/vimPlugins/vim-reason-plus.nix> { };
vim-mail = pkgs.callPackage <niveum/packages/vimPlugins/vim-mail.nix> { };
};
vimPlugins =
pkgs.vimPlugins
// {
cheat-sh-vim = pkgs.callPackage <niveum/packages/vimPlugins/cheat-sh.nix> {};
vim-fetch = pkgs.callPackage <niveum/packages/vimPlugins/vim-fetch.nix> {};
vim-colors-paramount = pkgs.callPackage <niveum/packages/vimPlugins/vim-colors-paramount.nix> {};
vim-256noir = pkgs.callPackage <niveum/packages/vimPlugins/vim-256noir.nix> {};
icalendar-vim = pkgs.callPackage <niveum/packages/vimPlugins/icalendar-vim.nix> {};
jq-vim = pkgs.callPackage <niveum/packages/vimPlugins/jq-vim.nix> {};
vim-fsharp = pkgs.callPackage <niveum/packages/vimPlugins/vim-fsharp.nix> {};
vim-reason-plus = pkgs.callPackage <niveum/packages/vimPlugins/vim-reason-plus.nix> {};
vim-mail = pkgs.callPackage <niveum/packages/vimPlugins/vim-mail.nix> {};
};
};
environment.systemPackages = [

View File

@@ -1,20 +1,25 @@
{ lib, pkgs, ... }:
let
profile = name: custom: lib.recursiveUpdate {
connection.id = name;
connection.type = "wifi";
connection.interface-name = "wlp3s0";
connection.permissions = "";
wifi.mac-address-blacklist = "";
wifi.ssid = name;
wifi.mode = "infrastructure";
ipv4.dns-search = "";
ipv4.method = "auto";
ipv6.addr-gen-mode = "stable-privacy";
ipv6.dns-search = "";
ipv6.method = "auto";
proxy = {};
} custom;
{
lib,
pkgs,
...
}: let
profile = name: custom:
lib.recursiveUpdate {
connection.id = name;
connection.type = "wifi";
connection.interface-name = "wlp3s0";
connection.permissions = "";
wifi.mac-address-blacklist = "";
wifi.ssid = name;
wifi.mode = "infrastructure";
ipv4.dns-search = "";
ipv4.method = "auto";
ipv6.addr-gen-mode = "stable-privacy";
ipv6.dns-search = "";
ipv6.method = "auto";
proxy = {};
}
custom;
eduroamProfile = {
connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf";
wifi-security = {
@@ -36,15 +41,20 @@ let
phase2-auth = "pap";
};
};
in
{
imports = [ <niveum/modules/networkmanager-declarative.nix> ];
in {
imports = [<niveum/modules/networkmanager-declarative.nix>];
programs.nm-applet.enable = true;
networking.networkmanager = {
enable = true;
packages = [
pkgs.networkmanager-openvpn
pkgs.networkmanager-fortisslvpn
];
wifi.macAddress = "random";
ethernet.macAddress = "random";
unmanaged = [ "docker*" ];
unmanaged = ["docker*"];
profiles = lib.mapAttrs profile {
Aether = {
connection.uuid = "7138bb0f-1aeb-4905-890e-a6628427aa21";
@@ -80,7 +90,12 @@ in
};
};
users.users.me.extraGroups = [ "networkmanager" ];
users.users.me.extraGroups = ["networkmanager"];
environment.systemPackages = [ pkgs.speedtest-cli ];
environment.systemPackages = [
pkgs.speedtest-cli
pkgs.networkmanager-openvpn
pkgs.networkmanagerapplet
pkgs.networkmanager-fortisslvpn
];
}

View File

@@ -1,11 +1,13 @@
{ pkgs, config, ... }:
let
{
pkgs,
config,
...
}: let
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'";
youtube-download = "${pkgs.ts}/bin/ts ${pkgs.youtube-dl}/bin/youtube-dl -f ${ytdl-format} --add-metadata";
newsboat-home =
"${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
newsboat-home = "${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
linkhandler-bin = "${pkgs.scripts.linkhandler}/bin/linkhandler";
newsboat-config = pkgs.writeText "config" ''

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
nixpkgs = {
config.allowUnfree = true;
overlays = [

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
openweathermap-repo = pkgs.fetchFromGitHub {
owner = "ip1981";
repo = "openweathermap";
@@ -15,5 +18,5 @@ in {
'';
};
environment.systemPackages = [ pkgs.weather ];
environment.systemPackages = [pkgs.weather];
}

View File

@@ -1,13 +1,19 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
worldradio = pkgs.callPackage <niveum/packages/worldradio.nix> {};
menstruation = pkgs.callPackage <menstruation-backend> {};
pandoc-doc = pkgs.callPackage <niveum/packages/man/pandoc.nix> {};
nixpkgs-unstable = import <nixpkgs-unstable> { config.allowUnfree = true; };
nixpkgs-unstable = import <nixpkgs-unstable> {config.allowUnfree = true;};
zoteroStyle = { name, sha256 }: {
zoteroStyle = {
name,
sha256,
}: {
name = "${name}.csl";
path = pkgs.fetchurl {
url = "https://www.zotero.org/styles/${name}";
@@ -17,40 +23,40 @@ let
cslDirectory = pkgs.linkFarm "citation-styles" [
(zoteroStyle {
name = "chicago-author-date-de";
sha256 = "0fz0xn46rkciblr34a7x2v60j0lbq9l3fmzi43iphph27m0czn6s";
sha256 = "sha256-ddMYk4A9DJQhx9ldkmF7PhwKuc7wUSr26uHHGAze9Ps=";
})
(zoteroStyle {
name = "din-1505-2";
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq";
sha256 = "sha256-bXZbB850fek8J6wMVFL32ndI7F4wiKKr1qUC71ezreE=";
})
(zoteroStyle {
name = "apa";
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111";
sha256 = "sha256-yq4fW6hQknycLjaj5fPbXLrQlGBp5myXiOSHBU90jEc=";
})
];
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old: old // {
installPhase = ''
${old.installPhase}
# set sensible defaults
sed -i '
/^-z /s/8:00W/1:00E/ # timezone
/^-zl /s/122W19:59 47N36:35/13E22:42 52N27:42/ # default location
/^-zj /s/"Current moment now"/Now/ # default name
/^-zj /s/"Seattle, WA, USA"/Berlin/ # default location
/^_k/s/_k/=k/ # use color
/^_Yd/s/_Yd/=Yd/ # sensible date format
/^_Yt/s/_Yt/=Yt/ # sensible time format
/^_Yv/s/_Yv/=Yv/ # sensible length format
/^:Xbw/s/:Xbw/:Xbn/ # set X11 bitmap format
/^:I /s/80/120/ # wider text output
' $out/astrolog/astrolog.as
'';
});
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old:
old
// {
installPhase = ''
${old.installPhase}
# set sensible defaults
sed -i '
/^-z /s/8:00W/1:00E/ # timezone
/^-zl /s/122W19:59 47N36:35/13E22:42 52N27:42/ # default location
/^-zj /s/"Current moment now"/Now/ # default name
/^-zj /s/"Seattle, WA, USA"/Berlin/ # default location
/^_k/s/_k/=k/ # use color
/^_Yd/s/_Yd/=Yd/ # sensible date format
/^_Yt/s/_Yt/=Yt/ # sensible time format
/^_Yv/s/_Yv/=Yv/ # sensible length format
/^:Xbw/s/:Xbw/:Xbn/ # set X11 bitmap format
/^:I /s/80/120/ # wider text output
' $out/astrolog/astrolog.as
'';
});
recht = pkgs.callPackage <recht> {};
in {
home-manager.users.me.home.file = {
".csl".source = cslDirectory;
@@ -93,7 +99,7 @@ in {
python3Packages.jsonschema # json validation
jq # json toolkit
pup # html toolkit
nixpkgs-unstable.htmlq
htmlq
xsv # csv toolkit
xmlstarlet # xml toolkit
manpages
@@ -115,18 +121,23 @@ in {
xorg.xkill # kill by clicking
audacity
calibre
electrum
inkscape
astrolog
anki # flashcards
jbofihe # lojbanic software
nixpkgs-unstable.zoom-us # video conferencing
nixpkgs-unstable.alejandra # nix formatter
pdfgrep # search in pdf
pdftk # pdf toolkit
mupdf
poppler_utils # pdf toolkit
foxitreader # for viewing pdf annotations
xournalpp # for annotating pdfs
pdfpc # presenter console for pdf slides
hc # print files as qr codes
youtubeDL
espeak
bc # calculator
pari # gp -- better calculator
scripts.auc
@@ -150,7 +161,7 @@ in {
scripts.vimv
scripts.swallow # window swallowing
scripts.literature-quote
scripts.nav # json navigation
jless # less(1) for json
scripts.notetags
scripts.booksplit
scripts.dmenurandr
@@ -163,17 +174,17 @@ in {
scripts.vg
scripts.fkill
scripts.wttr
scripts.sanskrit-dictionary
scripts.unicodmenu
scripts.horoscope
scripts.closest
scripts.trans
scripts.liddel-scott-jones
scripts.mpv-radio
# kmein.slide
scripts.tolino-screensaver
scripts.rfc
scripts.tag
scripts.timer
python3Packages.eyeD3
scripts.menu-calc
nix-prefetch-git
scripts.nix-git
@@ -194,7 +205,7 @@ in {
(pkgs.writers.writeDashBin "ncmpcpp-zaatar" ''MPD_HOST=${(import <niveum/lib/local-network.nix>).zaatar} exec ${pkgs.ncmpcpp}/bin/ncmpcpp "$@"'')
(pkgs.writers.writeDashBin "mpc-zaatar" ''MPD_HOST=${(import <niveum/lib/local-network.nix>).zaatar} exec ${pkgs.mpc_cli}/bin/mpc "$@"'')
nixpkgs-unstable.spotify
spotify
ncspot
playerctl
@@ -232,7 +243,7 @@ in {
nodePackages.javascript-typescript-langserver
texlive.combined.scheme-full
latexrun
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
(aspellWithDicts (dict: [dict.de dict.en dict.en-computers]))
# haskellPackages.pandoc-citeproc
scripts.text2pdf
lowdown
@@ -250,12 +261,15 @@ in {
binutils # for strip, ld, ...
# nightly.rust
shellcheck
];
(pkgs.writers.writeDashBin "hass-cli" ''
HASS_SERVER=http://zaatar.r:8123 HASS_TOKEN=${lib.strings.fileContents <secrets/hass/token>} exec ${pkgs.home-assistant-cli}/bin/hass-cli "$@"
'')
scripts.rofi-hass
];
home-manager.users.me.xdg.configFile."pycodestyle".text = ''
[pycodestyle]
max-line-length = 110
'';
}

11
configs/polkit.nix Normal file
View File

@@ -0,0 +1,11 @@
{config, ...}: let
user = config.users.users.me.name;
in {
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if (subject.user == "${user}" && action.id == "org.freedesktop.systemd1.manage-units") {
return polkit.Result.YES;
}
});
'';
}

View File

@@ -1,9 +1,11 @@
{ pkgs, config, ... }:
let
suspend = pkgs.writers.writeDash "suspend" "${pkgs.systemd}/bin/systemctl suspend";
in
{
imports = [ <stockholm/krebs/3modules/power-action.nix> ];
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;

View File

@@ -1,33 +1,35 @@
{ pkgs, ... }:
let
{pkgs, ...}: let
inherit (import <niveum/lib>) localAddresses;
hp-driver = pkgs.hplipWithPlugin;
in {
services.printing = {
enable = true;
drivers = [ hp-driver ];
drivers = [hp-driver];
};
hardware.sane = {
enable = true;
extraBackends = [ hp-driver ];
extraBackends = [hp-driver];
};
hardware.printers.ensurePrinters = [{
name = "OfficeJet";
location = "Zimmer";
deviceUri = "https://${localAddresses.officejet}";
model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd";
ppdOptions = {
Duplex = "DuplexNoTumble"; # DuplexNoTumble DuplexTumble None
PageSize = "A4"; # A4 A4.FB A4.Duplex
MediaType = "Plain";
OutputMode = "Normal";
ColorModel = "KGray"; # RGB CMYGray KGray
};
}];
hardware.printers.ensurePrinters = [
{
name = "OfficeJet";
location = "Zimmer";
deviceUri = "https://${localAddresses.officejet}";
model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd";
ppdOptions = {
Duplex = "DuplexNoTumble"; # DuplexNoTumble DuplexTumble None
PageSize = "A4"; # A4 A4.FB A4.Duplex
MediaType = "Plain";
OutputMode = "Normal";
ColorModel = "KGray"; # RGB CMYGray KGray
};
}
];
}
/*
HP/hp-officejet_4650_series.ppd.gz
drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd
*/
/* HP/hp-officejet_4650_series.ppd.gz
drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd
*/

View File

@@ -1 +1 @@
{ services.redshift.enable = false; }
{services.redshift.enable = false;}

View File

@@ -1,7 +1,11 @@
{ config, pkgs, ... }: {
{
config,
pkgs,
...
}: {
imports = [
<niveum/modules/retiolum.nix>
];
networking.hosts = { "42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ]; };
networking.hosts = {"42:0:ca48:f98f:63d7:31ce:922b:245d" = ["go"];};
}

View File

@@ -1,9 +1,13 @@
{ config, ... }:
let
{
config,
pkgs,
...
}: let
inherit (import <niveum/lib>) colours;
in{
in {
home-manager.users.me.programs.rofi = {
enable = true;
font = "Monospace 10";
theme = "${pkgs.rofi}/share/rofi/themes/Arc-Dark.rasi";
};
}

View File

@@ -1,5 +1,8 @@
{ pkgs, config, ... }:
{
pkgs,
config,
...
}: {
services.xserver.displayManager.sessionCommands = "${pkgs.seafile-client}/bin/seafile-applet &";
home-manager.users.me.xdg.configFile = {
@@ -16,5 +19,5 @@
};
};
environment.systemPackages = [ pkgs.seafile-client ];
environment.systemPackages = [pkgs.seafile-client];
}

View File

@@ -1,5 +1,9 @@
{ pkgs, config, lib, ... }:
let
{
pkgs,
config,
lib,
...
}: let
inherit (import <niveum/lib>) sshPort kieran;
in {
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
@@ -25,6 +29,11 @@ in {
user = "root";
port = sshPort;
};
tahina = {
hostname = "tahina.r";
user = "root";
port = sshPort;
};
manakish = {
hostname = "manakish.r";
user = "kfm";
@@ -48,6 +57,10 @@ in {
hostname = "135.181.85.233";
user = "root";
};
oracle = {
hostname = "130.61.171.199";
user = "ubuntu";
};
};
};
}

View File

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

View File

@@ -1,187 +1,368 @@
{ config, pkgs, lib, ... }:
let
classicsDictionaries = {
Pape = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/pape_gr-de.zip";
sha256 = "1kmbdjqinrcxkc6jdyyrq5rl2wzhnrychyynnh91yhrjwjxlh44k";
};
Woodhouse = pkgs.fetchzip {
url = "https://c.krebsco.de/Woodhouse.zip";
sha256 = "1dvnc2679yb048q2f3hr2h34acvhan0n3iir6h9ajlrdzz48mlkq";
stripRoot = false;
};
LSJ = pkgs.fetchzip {
url = "https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip";
sha256 = "13rprgd9jvnhxk9735c91xr6ywr0j5jiwkjnpm3qpvy93isyjbys";
};
GreekMorphology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Morphologia-Graeca/releases/download/v0.5/morphology-mobile-goldendict.oxia.zip";
sha256 = "0m75cppjjjmvv18cs7yh9f4p7ckqzxfznnndgkiw3yrfd50k8p96";
};
Frisk = pkgs.fetchzip {
url = "https://github.com/latin-dict/Frisk1960/releases/download/v1.1/Frisk1960-stardict.zip";
sha256 = "1rk5a3n3fpfdcmg4bc5945m88s6ldxql8cjn4jqs33rgklh7n046";
};
Georges-De-Lat = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/georges_de-lat.zip";
sha256 = "1gx4vv64bi9lxw2zgd861j469jvw4f2hhfwy1gglb12id8r7rdrl";
};
Georges-Lat-De = pkgs.fetchzip { # TODO find out why this does not work with sdcv
url = "http://tovotu.de/data/stardict/georges_lat-de.zip";
# "http://download.huzheng.org/de/stardict-georges_lat-de-2.4.2.tar.bz2";
sha256 = "0cc5xipn60anxvq8z2mw53d4gi1k92wbrj9m4ws3g9rh87fmkvgz";
};
SmithBiographyMythology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
};
SmithAntiquities = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
};
LewisShort = pkgs.fetchzip {
url = "https://github.com/latin-dict/LewisShort1879/releases/download/v1.3/LewisShort1879-stardict.zip";
sha256 = "1y3ans47iv8bzzb1paimdqvcid8ms04ikjbqy3iw077i2js3qbjk";
};
DoederleinSynonymes = pkgs.fetchzip {
url = "https://github.com/latin-dict/Doederlein1874/releases/download/v1.1/Doederlein1875-stardict.zip";
sha256 = "0mhik7gjxl8ncr9g5z2l4pfk60k1c5n0gc1w0cnp2x1v6lqvb57h";
};
};
englishGermanDictionaries = {
Etymonline = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/etymonline.zip";
sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn";
};
Roget = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Roget_s_II_The_New_Thesaurus_3th_Ed-2.4.2.tar.bz2";
sha256 = "1szyny9497bpyyccf9l5kr3bnw0wvl4cnsd0n1zscxpyzlsrqqbz";
};
OED1 = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf";
};
OED2 = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
};
JargonFile = builtins.fetchTarball {
url = "http://download.huzheng.org/dict.org/stardict-dictd-jargon-2.4.2.tar.bz2";
sha256 = "096phar9qpmm0fnaqv5nz8x9lpxwnfj78g4vjfcfyd7kqp7iqla4";
};
Oxford-Collocations = builtins.fetchTarball {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_Collocations_Dictionary_2nd_Ed-2.4.2.tar.bz2";
sha256 = "1zkfs0zxkcn21z2lhcabrs77v4ma9hpv7qm119hpyi1d8ajcw07q";
};
Langenscheidt-Deu-En = builtins.fetchTarball {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Deutsch_Englisc-2.4.2.tar.bz2";
sha256 = "12q9i5azq7ylyrpb6jqbaf1rxalc3kzcwjvbinvb0yabdxb80y30";
};
Langenscheidt-En-Deu = builtins.fetchTarball {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Englisch_Deutsc-2.4.2.tar.bz2";
sha256 = "087b05h155j5ldshfgx91pz81h6ijq2zaqjirg7ma8ig3l96zb59";
};
Duden_Das_Fremdworterbuch = builtins.fetchTarball {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Das_Fremdworterbuch-2.4.2.tar.bz2";
sha256 = "1zrcay54ccl031s6dvjwsah5slhanmjab87d81rxlcy8fx0xd8wq";
};
Duden_De_De = builtins.fetchTarball {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_De_De-2.4.2.tar.bz2";
sha256 = "1fhay04w5aaj83axfmla2ql34nb60gb05dgv0k94ig7p8x4yxxlf";
};
# Duden_Rechtschreibung = builtins.fetchTarball {
# url = "http://download.huzheng.org/babylon/german/stardict-Duden_Rechtschreibung-2.4.2.tar.bz2";
# sha256 = "0xiprb45s88w62rn8rlbjrsagbiliay9hszsiy20glwabf6zsfji";
# };
Duden_Synonym = builtins.fetchTarball {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Synonym-2.4.2.tar.bz2";
sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd";
};
# Duden = builtins.fetchTarball {
# url = "http://download.huzheng.org/de/stardict-duden-2.4.2.tar.bz2";
# sha256 = "049i4ynfqqxykv1nlkyks94mvn14s22qdax5gg7hx1ks5y4xw64j";
# };
# ConciseOED = builtins.fetchTarball {
# url = "http://download.huzheng.org/bigdict/stardict-Concise_Oxford_English_Dictionary-2.4.2.tar.bz2";
# sha256 = "19kpcxbhqzpmhi94mp48nalgmsh6s7rsx1gb4kwkhirp2pbjcyl7";
# };
# FreeOnlineDictionaryOfComputing = builtins.fetchTarball {
# url = "http://download.huzheng.org/dict.org/stardict-dictd_www.dict.org_foldoc-2.4.2.tar.bz2";
# sha256 = "1lw2i8dzxpx929cpgvv0x366dnh4drr10wzqmrhcd0kvwglqawgm";
# };
};
sanskritDictionaries = {
BoehtlingkRoth = pkgs.fetchzip {
url = "https://c.krebsco.de/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch.zip";
sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly";
stripRoot = false;
};
MonierWilliams = pkgs.fetchzip {
url = "https://c.krebsco.de/mw-cologne.zip";
sha256 = "0p99ybxwxmmd94hf035hvm2hhnfy84av7qq79xf28bh2rbx6s9ng";
stripRoot = false;
};
MonierWilliamsEnglish = pkgs.fetchzip {
url = "https://c.krebsco.de/mw-english-sanskrit.zip";
sha256 = "09a61hhii4b1m2fkrlh4rm2xnlgwrllh84iypbc6wyj00w9jkl3x";
stripRoot = false;
};
};
makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: { inherit name path; }) dicts);
in
{
# https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip
# https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip
# http://download.huzheng.org/bigdict/stardict-Cambridge_Dictionary_of_American_Idioms-2.4.2.tar.bz2
# http://download.huzheng.org/bigdict/stardict-Concise_Oxford_Thesaurus_2nd_Ed-2.4.2.tar.bz2
# http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P1-2.4.2.tar.bz2
# http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P2-2.4.2.tar.bz2
environment.etc.stardict.source = toString (makeStardictDataDir (classicsDictionaries // {
Crum = builtins.fetchTarball {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
config,
pkgs,
lib,
...
}: let
dictionaries = {
lojban = {
jbo-deu = pkgs.fetchzip {
url = "https://guskant.github.io/lojbo/stardict/jbo-deu-20160110.tar.gz";
sha256 = "18ia15wyvd8ksi7yxn939qmvpdlrip8mvfywafv7vjj685rdhk80";
};
rafsi-jbo = pkgs.fetchzip {
url = "https://guskant.github.io/lojbo/stardict/rafsi-jbo-20160110.tar.gz";
sha256 = "00fkw964b48liz1jayfjb5jnpwihghkq4i28y8i11yqb56w6bn3c";
};
jbo-eng = pkgs.fetchzip {
url = "https://guskant.github.io/lojbo/stardict/jbo-eng-20160110.tar.gz";
sha256 = "15l65yshqdp0a7fr4a7ffwx3m2v6ymchxgra9zmk5bsgcxsb4r8m";
};
jbo-jbo = pkgs.fetchzip {
url = "https://guskant.github.io/lojbo/stardict/jbo-jbo-20160110.tar.gz";
sha256 = "1psfyrjrq84prr2s4jcm31ijykm7clyqygmbacr09n570xfwqcfw";
};
};
LingvoGermanRussian = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "0p353gs2z4vj70hqsdhffjaaw3a4zlmcs46flipmf35lm5wmaj0g";
classics = {
Pape = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/pape_gr-de.zip";
sha256 = "1kmbdjqinrcxkc6jdyyrq5rl2wzhnrychyynnh91yhrjwjxlh44k";
};
Woodhouse = pkgs.fetchzip {
url = "https://c.krebsco.de/Woodhouse.zip";
sha256 = "1dvnc2679yb048q2f3hr2h34acvhan0n3iir6h9ajlrdzz48mlkq";
stripRoot = false;
};
LSJ = pkgs.fetchzip {
url = "https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip";
sha256 = "13rprgd9jvnhxk9735c91xr6ywr0j5jiwkjnpm3qpvy93isyjbys";
};
GreekMorphology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Morphologia-Graeca/releases/download/v0.5/morphology-mobile-goldendict.oxia.zip";
sha256 = "0m75cppjjjmvv18cs7yh9f4p7ckqzxfznnndgkiw3yrfd50k8p96";
};
Frisk = pkgs.fetchzip {
url = "https://github.com/latin-dict/Frisk1960/releases/download/v1.1/Frisk1960-stardict.zip";
sha256 = "1rk5a3n3fpfdcmg4bc5945m88s6ldxql8cjn4jqs33rgklh7n046";
};
Georges-De-Lat = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/georges_de-lat.zip";
sha256 = "1gx4vv64bi9lxw2zgd861j469jvw4f2hhfwy1gglb12id8r7rdrl";
};
Georges-Lat-De = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/georges_lat-de.zip";
sha256 = "0cc5xipn60anxvq8z2mw53d4gi1k92wbrj9m4ws3g9rh87fmkvgz";
};
LewisShort = pkgs.fetchzip {
url = "https://github.com/latin-dict/LewisShort1879/releases/download/v1.3/LewisShort1879-stardict.zip";
sha256 = "1y3ans47iv8bzzb1paimdqvcid8ms04ikjbqy3iw077i2js3qbjk";
};
DoederleinSynonymes = pkgs.fetchzip {
url = "https://github.com/latin-dict/Doederlein1874/releases/download/v1.1/Doederlein1875-stardict.zip";
sha256 = "0mhik7gjxl8ncr9g5z2l4pfk60k1c5n0gc1w0cnp2x1v6lqvb57h";
};
};
LingvoRussianGerman = builtins.fetchTarball {
url = "http://download.huzheng.org/lingvo/stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
englishGerman = {
Etymonline = pkgs.fetchzip {
url = "http://tovotu.de/data/stardict/etymonline.zip";
sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn";
};
Roget = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Roget_s_II_The_New_Thesaurus_3th_Ed-2.4.2.tar.bz2";
sha256 = "1szyny9497bpyyccf9l5kr3bnw0wvl4cnsd0n1zscxpyzlsrqqbz";
};
JargonFile = pkgs.fetchzip {
url = "http://download.huzheng.org/dict.org/stardict-dictd-jargon-2.4.2.tar.bz2";
sha256 = "096phar9qpmm0fnaqv5nz8x9lpxwnfj78g4vjfcfyd7kqp7iqla4";
};
Oxford-Collocations = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_Collocations_Dictionary_2nd_Ed-2.4.2.tar.bz2";
sha256 = "1zkfs0zxkcn21z2lhcabrs77v4ma9hpv7qm119hpyi1d8ajcw07q";
};
Langenscheidt-Deu-En = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Deutsch_Englisc-2.4.2.tar.bz2";
sha256 = "12q9i5azq7ylyrpb6jqbaf1rxalc3kzcwjvbinvb0yabdxb80y30";
};
Langenscheidt-En-Deu = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Englisch_Deutsc-2.4.2.tar.bz2";
sha256 = "087b05h155j5ldshfgx91pz81h6ijq2zaqjirg7ma8ig3l96zb59";
};
Duden_Das_Fremdworterbuch = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Das_Fremdworterbuch-2.4.2.tar.bz2";
sha256 = "1zrcay54ccl031s6dvjwsah5slhanmjab87d81rxlcy8fx0xd8wq";
};
Duden_De_De = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_De_De-2.4.2.tar.bz2";
sha256 = "1fhay04w5aaj83axfmla2ql34nb60gb05dgv0k94ig7p8x4yxxlf";
};
ConciseOED = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Concise_Oxford_English_Dictionary-2.4.2.tar.bz2";
sha256 = "19kpcxbhqzpmhi94mp48nalgmsh6s7rsx1gb4kwkhirp2pbjcyl7";
};
Duden_Synonym = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Synonym-2.4.2.tar.bz2";
sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd";
};
};
} // sanskritDictionaries // englishGermanDictionaries));
environment.variables = {
SDCV_PAGER = "${pkgs.w3m}/bin/w3m -T text/html -dump";
};
systemd.user.services.goldendict = {
wantedBy = [ "graphical-session.target" ];
environment = {
DISPLAY = ":${toString config.services.xserver.display}";
sanskrit = let
repo = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f";
in {
BoehtlingkRoth = pkgs.fetchzip {
url = "${repo}/sa-head/german-entries/tars/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch__2021-10-05_14-23-18Z__19MB.tar.gz";
sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly";
stripRoot = false;
};
BoehtlingkRothKurz = pkgs.fetchzip {
url = "${repo}/sa-head/german-entries/tars/Bohtlingk-Sanskrit-Worterbuch-in-kurzerer-Fassung__2021-10-05_14-23-18Z__10MB.tar.gz";
sha256 = "15yx31yrk40k9nn6kaysp4pprzj8dpd13dj3wafklc3izm8lr2wq";
stripRoot = false;
};
MonierWilliams = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/mw-cologne__2021-10-06_00-16-23Z__16MB.tar.gz";
sha256 = "0p99ybxwxmmd94hf035hvm2hhnfy84av7qq79xf28bh2rbx6s9ng";
stripRoot = false;
};
MonierWilliamsEnglish = pkgs.fetchzip {
url = "${repo}/en-head/tars/mw-english-sanskrit__2021-10-05_14-23-18Z__3MB.tar.gz";
sha256 = "09a61hhii4b1m2fkrlh4rm2xnlgwrllh84iypbc6wyj00w9jkl3x";
stripRoot = false;
};
Borooah = pkgs.fetchzip {
url = "${repo}/en-head/tars/borooah__2021-10-05_14-23-18Z__2MB.tar.gz";
sha256 = "0qmmfbynqgv125v48383i51ky9yi69zibhh7vwk95gyar2yrprn2";
stripRoot = false;
};
ApteEnglish = pkgs.fetchzip {
url = "${repo}/en-head/tars/apte-english-sanskrit-cologne__2021-10-06_00-12-51Z__1MB.tar.gz";
sha256 = "064ysm24ydc534ca689y5i2flnra8jkmh8zn0gsb6n8hdsb0d1lq";
stripRoot = false;
};
};
serviceConfig = {
SyslogIdentifier = "goldendict";
ExecStart = "${pkgs.goldendict}/bin/goldendict";
Restart = "always";
RestartSec = "15s";
StartLimitBurst = 0;
oed = {
OED1 = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf";
};
OED2 = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
};
};
russian = {
LingvoGermanRussian = pkgs.fetchzip {
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "0p353gs2z4vj70hqsdhffjaaw3a4zlmcs46flipmf35lm5wmaj0g";
};
LingvoRussianGerman = pkgs.fetchzip {
url = "http://download.huzheng.org/lingvo/stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
};
};
};
home-manager.users.me = {
home.file.".goldendict/config".text = import <niveum/lib/goldendict-config.nix> {
path = "/etc/stardict";
inherit pkgs;
};
};
makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: {inherit name path;}) dicts);
makeStardict = name: dicts:
pkgs.writers.writeDashBin name ''
set -efu
export SDCV_PAGER=${toString sdcvPager}
exec ${pkgs.sdcv}/bin/sdcv --color --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@"
'';
sdcvPager = pkgs.writeDash "sdcvPager" ''
export PATH=${lib.makeBinPath [pkgs.gnused pkgs.ncurses pkgs.less]}
sed "
s!<sup>1</sup>!¹!gI
s!<sup>2</sup>!²!gI
s!<sup>3</sup>!³!gI
s!<sup>4</sup>!!gI
s! style=\"color: #...\"!!g;
s!<span class=\"zenoTXSpaced\">\([^<>]*\)</span>!\1!g;
s!</\?dictionary[^>]*>!!g;
s!<style.*</style>!!g;
s!<author>\([^<>]*\)</author>!\1 !g;
s!<quote lang=\"\(greek\|la\)\">\([^<>]*\)</quote>!$(tput sitm)\2$(tput sgr0)!g;
s!<biblScope>\([^<>]*\)</biblScope>!\1!g;
s!<mood>\([^<>]*\)</mood>!$(tput sitm)\1$(tput sgr0)!g;
s!<adv>\([^<>]*\)</adv>!$(tput sitm)\1$(tput sgr0)!g;
s!<gram[^>]*>\([^<>]*\)</gram>!$(tput sitm)\1$(tput sgr0)!g;
s!<bibl_title>\([^<>]*\)</bibl_title>!$(tput sitm)\1$(tput sgr0) !g;
s!<hi rend=\"ital\">\([^<>]*\)</hi>!$(tput sitm)\1$(tput sgr0) !g;
s!<dict_tr>\([^<>]*\)</dict_tr>!$(tput setaf 3)\1$(tput sgr0)!g;
s!<headword>\([^<>]*\)</headword>!$(tput bold)\1$(tput sgr0)\t!g;
s!</\?a[^>]*>!!g
s!</\?[cp]b[^>]*>!!g
s!</\?gramGrp[^>]*>!!g
s!</\?lbl[^>]*>!!g
s!</\?xr[^>]*>!!g
s!</\?pron[^>]*>!!g
s!</\?gen[^>]*>!!g
s!</\?tns[^>]*>!!g
s!</\?per[^>]*>!!g
s!</\?blockquote[^>]*>!!g
s!</\?etym[^>]*>!!g
s!<foreign[^>]*>!$(tput sitm)!g
s!</foreign[^>]*>!$(tput sgr0)!g
s!</\?date[^>]*>!!g
s!</\?placeName[^>]*>!!g
s!</\?itype[^>]*>!!g
s!</\?p>!!g
s!<input[^>]*>!!g
s!</\?orth[^>]*>!!g
s!</\?number[^>]*>!!g
s!</\?forename[^>]*>!!g
s!</\?persName[^>]*>!!g
s!</\?surname[^>]*>!!g
s!</\?entryFree[^>]*>!!g
s!</\?def[^>]*>!!g
s!</\?cit[^>]*>!!g
s!</\?pos[^>]*>!!g
s!</\?usg[^>]*>!!g
s!</\?ul>!!g
s!<li>!\n!g
s!</li>!!g
s!<bibl[^>]*>!$(tput setaf 245)!g
s!</bibl[^>]*>!$(tput sgr0)!g
s/<dt>/$(tput bold)/g;
s:</dt>:$(tput sgr0):g;
s/<dd>/\n/g;
s:</dd>::g;
s:<script>.*</script>::g;
s/<b>/$(tput bold)/gI;
s:</b>:$(tput sgr0):gI;
s:<br\s*/\?>:\n:gI;
s:<i>:$(tput sitm):gI;
s:</i>:$(tput sgr0):gI;
s:<u>:$(tput smul):gI;
s:</u>:$(tput sgr0):gI;
s:<FONT face=[^>]*>::g;
s:</FONT>::g;
s!<head>\([^<>]*\)</head>!$(tput bold)\1$(tput sgr0)!g;
s!<span lang=\"\(gr\|la\)\">\([^<>]*\)</span>!\2!g
s#<div style=\"margin-left:1em\">\(.*\)</div>#\\1#g;
s:<font color=\"brown\">\([^<>]*\)</font>:$(tput setaf 3)\\1$(tput sgr0):g;
s:<font color=\"blue\">\([^<>]*\)</font>:$(tput setaf 4)\\1$(tput sgr0):g;
s:<font color=\"red\">\([^<>]*\)</font>:$(tput setaf 1)\\1$(tput sgr0):g;
s:<font color=\"darkviolet\">\([^<>]*\)</font>:$(tput setaf 5)\\1$(tput sgr0):g;
s:<font color=\"#a0a\">\([^<>]*\)</font>:$(tput bold)\1$(tput sgr0):g
s:<font color=\"#838\">\([^<>]*\)</font>:$(tput setaf 3)\1$(tput sgr0):g
s:&#x27;:':g
s:&lt;:<:g
s:&gt;:>:g
s:<font color=\"#007000\">\([^<>]*\)</font>:$(tput setaf 2)\\1$(tput sgr0):g;
s:<font color=\"#007000\">\([^<>]*\)</font>:$(tput setaf 2)\\1$(tput sgr0):g;
s:<font color=#000099>\([^<>]*\)</font>:$(tput setaf 4)\\1$(tput sgr0):g;
s:<font color=0000FF>\([^<>]*\)</font>:$(tput bold)\\1$(tput sgr0):g;
s:<IMG src=\"223E9A06.bmp\"[^>]*>:ː:g;
s:<IMG src=\"502F5DDA.bmp\"[^>]*>::g;
s:<IMG src=\"8DAD7054.bmp\"[^>]*>:n̩:g
s!</\?TABLE>!!gI
s!</\?TR[^>]*>!!gI
s!</\?TD>!!gI
s!</\?FONT[^>]*>!!gI
s!</\?A[^>]*>!!gI
s!<SPAN class=\"bsptext\">\([^<>]*\)</SPAN>!$(tput setaf 245)\1$(tput sgr0)!g
s! +! !g;
s!<div part=\"[^\"]*\">!\n\n&!g
s!<sense n=\"\([^\"]*\)\"!\n$(tput setaf 5)\1.$(tput sgr0) &!g;
s!</\?sense[^>]*>!!g
s!</\?div[^>]*>!!g
s!<span lang=\"gr\">!!g # unbalanced in Frisk
s!^\s*[0-9])!$(tput setaf 5)&$(tput sgr0)!g
s!</\?span[^>]*>!!gI
s!</\?p[^>]*>!!gI
" | less -FR
'';
in {
environment.etc.stardict.source = toString (makeStardictDataDir ({
Crum = pkgs.fetchzip {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
};
SmithBiographyMythology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
};
SmithAntiquities = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
};
}
// dictionaries.classics
// dictionaries.sanskrit
// dictionaries.oed
// dictionaries.russian
// dictionaries.englishGerman));
environment.systemPackages = [
pkgs.goldendict
(pkgs.writers.writeDashBin "sd-classics" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir classicsDictionaries} "$@"'')
(pkgs.writers.writeDashBin "sd-sanskrit" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir sanskritDictionaries} "$@"'')
(pkgs.writers.writeDashBin "sd" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir englishGermanDictionaries} "$@"'')
(makeStardict "lsj" dictionaries.classics)
(makeStardict "sa" dictionaries.sanskrit)
(makeStardict "oed" dictionaries.oed)
(makeStardict "sd-russian" dictionaries.russian)
(makeStardict "sd" dictionaries.englishGerman)
(makeStardict "jbo" dictionaries.lojban)
];
}
/*
https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip
https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip
http://download.huzheng.org/bigdict/stardict-Cambridge_Dictionary_of_American_Idioms-2.4.2.tar.bz2
http://download.huzheng.org/bigdict/stardict-Concise_Oxford_Thesaurus_2nd_Ed-2.4.2.tar.bz2
http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P1-2.4.2.tar.bz2
http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P2-2.4.2.tar.bz2
Duden_Rechtschreibung = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Rechtschreibung-2.4.2.tar.bz2";
sha256 = "0xiprb45s88w62rn8rlbjrsagbiliay9hszsiy20glwabf6zsfji";
};
Duden = pkgs.fetchzip {
url = "http://download.huzheng.org/de/stardict-duden-2.4.2.tar.bz2";
sha256 = "049i4ynfqqxykv1nlkyks94mvn14s22qdax5gg7hx1ks5y4xw64j";
};
FreeOnlineDictionaryOfComputing = pkgs.fetchzip {
url = "http://download.huzheng.org/dict.org/stardict-dictd_www.dict.org_foldoc-2.4.2.tar.bz2";
sha256 = "1lw2i8dzxpx929cpgvv0x366dnh4drr10wzqmrhcd0kvwglqawgm";
};
Cappeller = pkgs.fetchzip {
url = "${repo}/sa-head/german-entries/tars/capeller-sanskrit-german__2021-10-05_14-23-18Z__1MB.tar.gz";
sha256 = "0jwrj2aih2lrcjg0lqm8jrvq9vsas9s8j4c9ggbg2n0jyz03kci3";
stripRoot = false;
};
Yates = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/yates__2021-10-05_14-23-18Z__2MB.tar.gz";
sha256 = "1k7gbalysf48pwa06zfykrqhdk466g35xy64b30k4z8bybgdn8z2";
stripRoot = false;
};
Wilson = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/wilson__2021-10-05_14-23-18Z__3MB.tar.gz";
sha256 = "0r5z1xif56zlw9r2jp3fvwmcjv4f2fhd9r17j30nah9awx2m1isg";
stripRoot = false;
};
SpokenSanskrit = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/spokensanskrit__2019-01-12_05-13-52Z__12MB.tar.gz";
sha256 = "0x8j657mawvdcyd1knzvf33yp15z77d661n3h6g9hcj7wn9s5xyk";
stripRoot = false;
};
Grassmann = pkgs.fetchzip {
url = "${repo}/sa-head/german-entries/tars/grassman-sanskrit-german__2021-10-05_14-23-18Z__2MB.tar.gz";
sha256 = "0jalsykaxkl6wzrky72lz8g3jdz26lmjpyibbfaf7a5vvnr55k02";
stripRoot = false;
};
Benfey = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/benfey__2021-10-05_14-23-18Z__2MB.tar.gz";
sha256 = "0lj3hgphqgnihn482g9kgjwbvdrcd38vc29v1fi36srn08qdhvcb";
stripRoot = false;
};
ApteSa = pkgs.fetchzip {
url = "${repo}/sa-head/en-entries/tars/apte-sa__2021-12-18_13-20-56Z__6MB.tar.gz";
sha256 = "0cq1dd02d1pvmjnibbs2cscifjnk2z0nqccf5yzzilxkzsrarh32";
stripRoot = false;
};
MacDonell = pkgs.fetchzip {
url = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f/sa-head/en-entries/tars/macdonell__2021-10-05_14-23-18Z__2MB.tar.gz";
sha256 = "1yzmj0393mxvjv4n2lnvd2c722v2bmxxiyq7pscdwni3bxip3h8s";
stripRoot = false;
};
*/

View File

@@ -6,5 +6,5 @@
'';
};
users.users.me.extraGroups = [ "wheel" ];
users.users.me.extraGroups = ["wheel"];
}

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
important-directories = pkgs.writeText "directories" ''
h ~/
d ~/cloud/Dropbox/
@@ -12,53 +15,52 @@ let
cf ''${XDG_CONFIG_HOME:-$HOME/.config}
'';
in {
environment.systemPackages = [ pkgs.sxiv ];
environment.systemPackages = [pkgs.sxiv];
# TODO fix
home-manager.users.me.xdg.configFile."sxiv/exec/key-handler".source =
pkgs.writers.writeDash "key-handler" ''
PATH=$PATH:${
lib.makeBinPath [
pkgs.gnused
pkgs.gawk
pkgs.dmenu
pkgs.coreutils
pkgs.libnotify
pkgs.imagemagick
pkgs.xclip
]
}
home-manager.users.me.xdg.configFile."sxiv/exec/key-handler".source = pkgs.writers.writeDash "key-handler" ''
PATH=$PATH:${
lib.makeBinPath [
pkgs.gnused
pkgs.gawk
pkgs.dmenu
pkgs.coreutils
pkgs.libnotify
pkgs.imagemagick
pkgs.xclip
]
}
echo >&2 key "$1" pressed
while read file; do
case "$1" in
"c")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
;;
"m")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
;;
"r")
convert -rotate 90 "$file" "$file" ;;
"R")
convert -rotate -90 "$file" "$file" ;;
"f")
convert -flop "$file" "$file" ;;
"y")
echo -n "$file" | xclip -selection clipboard &&
notify-send "$file copied to clipboard" & ;;
"Y")
readlink -f "$file" | xclip -selection clipboard &&
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
"d")
[ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
esac
done
'';
echo >&2 key "$1" pressed
while read file; do
case "$1" in
"c")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
;;
"m")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
;;
"r")
convert -rotate 90 "$file" "$file" ;;
"R")
convert -rotate -90 "$file" "$file" ;;
"f")
convert -flop "$file" "$file" ;;
"y")
echo -n "$file" | xclip -selection clipboard &&
notify-send "$file copied to clipboard" & ;;
"Y")
readlink -f "$file" | xclip -selection clipboard &&
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
"d")
[ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
esac
done
'';
}

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
nixpkgs-unstable = import <nixpkgs-unstable> {};
toSymbols = pkgs.writers.writeDash "to-symbols" ''
${pkgs.gnused}/bin/sed '
@@ -39,16 +42,16 @@ let
'';
in {
niveum.telegramBots.transits = {
enable = true;
enable = false;
time = "*:0/1";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = [ "-1001796440545" ];
chatIds = ["-1001796440545"];
command = toString (pkgs.writers.writeDash "common-transits" ''
now=$(${pkgs.coreutils}/bin/date +%_H:%M | ${pkgs.gnused}/bin/sed 's/^\s*//')
date=$(${pkgs.coreutils}/bin/date +'%m %d %Y')
{
${nixpkgs-unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d
${nixpkgs-unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date
${nixpkgs-unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node"
${nixpkgs-unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date -R Uranus Neptune Pluto "North Node"
} | ${toSymbols} | ${pkgs.coreutils}/bin/sort -n | ${pkgs.gnugrep}/bin/grep "^$now" || :
'');
};

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
autorenkalender-package = pkgs.fetchFromGitHub {
owner = "kmein";
repo = "autorenkalender";
@@ -7,13 +10,13 @@ let
sha256 = "1pa7sjg33vdnjianrqldv445jdzzv3mn231ljk1j58hs0cd505gs";
};
autorenkalender =
pkgs.python3Packages.callPackage autorenkalender-package { };
pkgs.python3Packages.callPackage autorenkalender-package {};
in {
niveum.telegramBots.autorenkalender = {
enable = true;
time = "07:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = [ "@autorenkalender" ];
chatIds = ["@autorenkalender"];
parseMode = "Markdown";
command = "${autorenkalender}/bin/autorenkalender";
};

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }:
let
{
config,
pkgs,
lib,
...
}: let
telebots = pkgs.callPackage <telebots> {};
reverseDirectory = "/run/telegram-reverse";
proverbDirectory = "/run/telegram-proverb";
@@ -14,17 +18,18 @@ in {
<niveum/modules/telegram-bot.nix>
];
systemd.tmpfiles.rules = map (path: tmpfilesConfig {
type = "d";
mode = "0750";
age = "1h";
inherit path;
}) [ reverseDirectory proverbDirectory ];
systemd.tmpfiles.rules = map (path:
tmpfilesConfig {
type = "d";
mode = "0750";
age = "1h";
inherit path;
}) [reverseDirectory proverbDirectory];
systemd.services.telegram-reverse = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "Telegram reverse bot";
path = [ pkgs.ffmpeg ];
path = [pkgs.ffmpeg];
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/reverse.token>;
enable = true;
script = "${telebots}/bin/telegram-reverse";
@@ -33,7 +38,7 @@ in {
};
systemd.services.telegram-betacode = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "Telegram beta code bot";
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/betacode.token>;
enable = true;
@@ -42,7 +47,7 @@ in {
};
systemd.services.telegram-proverb = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "Telegram proverb bot";
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/proverb.token>;
enable = true;

View File

@@ -1,13 +1,16 @@
{ pkgs, lib, ... }:
let
scripts = import <niveum/packages/scripts> { inherit pkgs lib; };
{
pkgs,
lib,
...
}: let
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
inherit (scripts) literature-quote;
in {
niveum.telegramBots.quotebot = {
enable = true;
time = "08/6:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = [ "18980945" "757821027" "455964311" ];
chatIds = ["18980945" "757821027" "455964311"];
command = "${literature-quote}/bin/literature-quote";
parseMode = "Markdown";
};

View File

@@ -1,8 +1,11 @@
{ pkgs, lib, ... }:
let
nachtischsatan-bot = { token }:
{
pkgs,
lib,
...
}: let
nachtischsatan-bot = {token}:
pkgs.writers.writePython3 "nachtischsatan-bot" {
libraries = [ pkgs.python3Packages.python-telegram-bot ];
libraries = [pkgs.python3Packages.python-telegram-bot];
} ''
from telegram.ext import Updater, MessageHandler
from telegram.ext.filters import Filters
@@ -23,7 +26,7 @@ let
'';
in {
systemd.services.telegram-nachtischsatan = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "*flubberflubber*";
enable = true;
script = toString (nachtischsatan-bot {

View File

@@ -1,10 +1,13 @@
{ pkgs, lib, ... }:
{
pkgs,
lib,
...
}: {
niveum.telegramBots.tlg-wotd = {
enable = true;
time = "9:30";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = [ "@tlgwotd" ];
chatIds = ["@tlgwotd"];
command = toString (pkgs.writers.writeDash "tlg-wotd" ''
${pkgs.curl}/bin/curl -sSL http://stephanus.tlg.uci.edu/Iris/Wotd \
| ${pkgs.recode}/bin/recode html..utf8 \

View File

@@ -1,13 +1,16 @@
{ lib, config, pkgs, ... }:
let
{
lib,
config,
pkgs,
...
}: let
theme = (import <niveum/lib>).theme pkgs;
in {
environment.systemPackages =
[ theme.gtk.package theme.icon.package theme.cursor.package ];
environment.systemPackages = [theme.gtk.package theme.icon.package theme.cursor.package];
services.xserver.displayManager.lightdm.greeters.gtk = {
theme = { inherit (theme.gtk) name package; };
iconTheme = { inherit (theme.icon) name package; };
theme = {inherit (theme.gtk) name package;};
iconTheme = {inherit (theme.icon) name package;};
};
home-manager.users.me = {
@@ -20,6 +23,6 @@ in {
enable = true;
platformTheme = "gtk";
};
xsession.pointerCursor = theme.cursor // { size = 16; };
xsession.pointerCursor = theme.cursor // {size = 16;};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: {
{pkgs, ...}: {
environment.systemPackages = [
pkgs.tmuxp
pkgs.reptyr # move programs over to a tmux session
@@ -9,26 +9,44 @@
keyMode = "vi";
clock24 = true;
terminal = "screen-256color";
baseIndex = 1;
aggressiveResize = true;
escapeTime = 50;
historyLimit = 7000;
shortcut = "a";
extraConfig = ''
set -g mouse on
unbind *
bind * list-clients
# naVIgate
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Use C-h and C-l to cycle through panes
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
setw -g monitor-activity on
set -g visual-activity on
set -g status-interval 2
set -g status-left-length 32
set -g status-right-length 150
set -g status-bg default
set -g status-bg colour242
setw -g window-status-format "#[fg=colour12,bg=colour233] #I #[fg=white,bg=colour237] #W "
setw -g window-status-current-format "#[fg=colour12,bg=colour233] * #[fg=white,bg=colour237,bold] #W "
set -g status-left ""
set -g status-right "#[fg=colour255,bg=colour237,bold] %Y-%m-%d #[default]#[fg=colour12,bg=colour233] %H:%M "
set -g status-right "#[fg=colour255,bg=colour237,bold] #(hostname -I) #[default]#[fg=colour12,bg=colour233] %FT%R "
set -g status-justify left
set -g status-position bottom
set -g mouse on
unbind *
bind * list-clients
'';
};
}

View File

@@ -1,4 +1,4 @@
{
{pkgs, ...}: {
services.tor.enable = true;
services.tor.torsocks.enable = true;
environment.systemPackages = [pkgs.tor];
}

View File

@@ -1,10 +1,12 @@
{ pkgs, lib, ... }:
let
{
pkgs,
lib,
...
}: let
inherit (import <niveum/lib>) localAddresses;
living-room-id = 131090;
in
{
imports = [ <niveum/modules/traadfri.nix> ];
in {
imports = [<niveum/modules/traadfri.nix>];
environment.systemPackages = [
(pkgs.writers.writeDashBin "traadfri-party" ''
@@ -29,7 +31,7 @@ in
bedroom = 131082;
living-room = living-room-id;
bedside = 131087;
desk = 131089;
chain = 131089;
};
};
}

View File

@@ -1 +1 @@
{ pkgs, ... }: { environment.systemPackages = [ pkgs.vscode ]; }
{pkgs, ...}: {environment.systemPackages = [pkgs.vscode];}

View File

@@ -1,6 +1,9 @@
{ pkgs, lib, ... }:
{
imports = [ <stockholm/krebs/3modules/fetchWallpaper.nix> ];
pkgs,
lib,
...
}: {
imports = [<stockholm/krebs/3modules/fetchWallpaper.nix>];
krebs.fetchWallpaper = {
enable = true;

View File

@@ -1,18 +1,9 @@
{ config, pkgs, ... }:
{
environment.systemPackages = [ pkgs.watson ];
config,
pkgs,
...
}: {
environment.systemPackages = [pkgs.watson];
home-manager.users.me.xdg.configFile."watson/config".text = ''
[options]
confirm_new_project = true
confirm_new_tag = true
date_format = %Y-%m-%d
log_current = true
report_current = true
'';
system.activationScripts.watson-home = ''
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Documents/watson/frames ${config.users.users.me.home}/.config/watson/frames
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Documents/watson/state ${config.users.users.me.home}/.config/watson/state
'';
environment.variables.WATSON_DIR = "${config.users.users.me.home}/cloud/Seafile/Documents/watson";
}

View File

@@ -1,4 +1,8 @@
{ config, pkgs, ... }: {
{
config,
pkgs,
...
}: {
home-manager.users.me.home.file.".zshrc".text = ''
# nothing to see here
'';
@@ -21,7 +25,7 @@
enableCompletion = true;
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
syntaxHighlighting.highlighters = [ "main" "brackets" "pattern" "line" ];
syntaxHighlighting.highlighters = ["main" "brackets" "pattern" "line"];
interactiveShellInit = ''
setopt INTERACTIVE_COMMENTS CORRECT
setopt MULTIOS

58
flake.lock generated
View File

@@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1638122382,
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
"lastModified": 1648297722,
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
"type": "github"
},
"original": {
@@ -22,11 +22,11 @@
]
},
"locked": {
"lastModified": 1639871969,
"narHash": "sha256-6feWUnMygRzA9tzkrfAzpA5/NBYg75bkFxnqb1DtD7E=",
"lastModified": 1648834319,
"narHash": "sha256-i5Aj4Aw64D/A0X6XW5LxSS4XBnYj7gMz+kN4dpsbdk8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "697cc8c68ed6a606296efbbe9614c32537078756",
"rev": "0bdbdea2e26c984b096f4f7d10e3c88536a980b0",
"type": "github"
},
"original": {
@@ -46,11 +46,11 @@
]
},
"locked": {
"lastModified": 1632420452,
"narHash": "sha256-ncK6vABW/Ku9XI0kqj1otarUfblryoQzSaOCnaZ0oSs=",
"lastModified": 1644957911,
"narHash": "sha256-ggie/j7pdBqzDs4W7OiPmhqH9IGbXAbJxGqBdVxA8jA=",
"owner": "Mic92",
"repo": "krops",
"rev": "0388970c568905fedcbf429e5745aacd4f7a6633",
"rev": "86fb3d2ee94fd8306231853b323ed8804edf26ec",
"type": "github"
},
"original": {
@@ -62,11 +62,11 @@
"menstruation-backend": {
"flake": false,
"locked": {
"lastModified": 1634573652,
"narHash": "sha256-FIj8oCOJO+Wqxr2o5MMqIShvzMJud4iUq3o8y4NIRvw=",
"lastModified": 1649545504,
"narHash": "sha256-TVm3246ML7gWPeGm+bdb+Qo8o/7nve7sQ2hBdCZm3z8=",
"owner": "kmein",
"repo": "menstruation.rs",
"rev": "dd405fe2acf32441e8ac56e488e689bb1c4bea82",
"rev": "d9f3c6d53542fd7c7ed191e37cf4e342d4a47bcb",
"type": "github"
},
"original": {
@@ -109,27 +109,27 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1641561098,
"narHash": "sha256-9mdNJb84+xGbyNgSf3nwBnQiPoplpXozW13fW0R6sCo=",
"lastModified": 1649490789,
"narHash": "sha256-YrhVxwoofZSx/wLZ4GYET//8vS+uqWX572zvdmP/Etg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "60dd7bc997b224f6a142c7bf8fe6b74a0c87100f",
"rev": "c86185d20d708013caf97a6adaa8dc6d72313c75",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-21.11",
"ref": "nixos-21.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1640874390,
"narHash": "sha256-wAmjdulrW1tZQHEUgnK3LmycEfEVi/sq/9nD/22PdI4=",
"lastModified": 1649541735,
"narHash": "sha256-JdOywA2jcdGCxNgu0dJA7ZNtaV7sS0HwuZg9YaXd94c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7771661d93bad2f3d1d7c65852a918afd2a2bcf1",
"rev": "c2b6e029cd1efa0efd37daab89264ef040ae5669",
"type": "github"
},
"original": {
@@ -158,11 +158,11 @@
"retiolum": {
"flake": false,
"locked": {
"lastModified": 1641415159,
"narHash": "sha256-QlJGc9Hnp8sBgcljLeus/4nZppRxVARMJO4kAD6P/04=",
"lastModified": 1647444524,
"narHash": "sha256-N4T1UXLkYJMQqk65LkTDpW70ujXXeZ9xe5k+LOpznAI=",
"owner": "krebs",
"repo": "retiolum",
"rev": "aa65c68493f042d7ad5012249b4aafc4ee59b8f2",
"rev": "de6d7dc9bd671e65f2ee3004b6807625e7553e84",
"type": "github"
},
"original": {
@@ -194,11 +194,11 @@
"scripts": {
"flake": false,
"locked": {
"lastModified": 1639436812,
"narHash": "sha256-6CajvfDo7t4ANgjc7DxqH7lI3WRE4MK8q3mBKAjk80k=",
"lastModified": 1648400983,
"narHash": "sha256-I9ADWgUN1orbnXPBW4kulHpv8wkx6C8zsQcg9wphpPg=",
"owner": "kmein",
"repo": "scripts",
"rev": "d34a8161ba11135a45d3141dc9af482db945d63c",
"rev": "f5df67a2416d8f05a7dbfea269c44668854c7887",
"type": "github"
},
"original": {
@@ -210,11 +210,11 @@
"stockholm": {
"flake": false,
"locked": {
"lastModified": 1641473549,
"narHash": "sha256-wAgqTsftZaHiB2dqZ8bY9/PCQRfo/y097m0u85H4AI8=",
"lastModified": 1649089964,
"narHash": "sha256-ybuVI8rnpMyBUoyoIXJ1e3QBMBIOoEgKTiFzIPfzy8A=",
"ref": "master",
"rev": "dbc238752043078de95aac231d31cc5fd88a329f",
"revCount": 10268,
"rev": "b3833baee96d7bce2c54295110b40c646468a1ff",
"revCount": 10500,
"type": "git",
"url": "https://cgit.lassul.us/stockholm"
},

172
flake.nix
View File

@@ -2,7 +2,7 @@
description = "niveum: packages, modules, systems";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/release-21.11";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
@@ -16,80 +16,100 @@
};
# legacy
menstruation-backend = { url = "github:kmein/menstruation.rs"; flake = false; };
menstruation-telegram = { url = "github:kmein/menstruation-telegram"; flake = false; };
nix-writers = { url = "git+https://cgit.krebsco.de/nix-writers"; flake = false; };
recht = { url = "github:kmein/recht"; flake = false; };
retiolum = { url = "github:krebs/retiolum"; flake = false; };
scripts = { url = "github:kmein/scripts"; flake = false; };
stockholm = { url = "git+https://cgit.lassul.us/stockholm"; flake = false; };
telebots = { url = "github:kmein/telebots"; flake = false; };
tinc-graph = { url = "github:kmein/tinc-graph"; flake = false; };
traadfri = { url = "github:kmein/traadfri"; flake = false; };
tuna = { url = "github:kmein/tuna"; flake = false; };
menstruation-backend = {
url = "github:kmein/menstruation.rs";
flake = false;
};
menstruation-telegram = {
url = "github:kmein/menstruation-telegram";
flake = false;
};
nix-writers = {
url = "git+https://cgit.krebsco.de/nix-writers";
flake = false;
};
recht = {
url = "github:kmein/recht";
flake = false;
};
retiolum = {
url = "github:krebs/retiolum";
flake = false;
};
scripts = {
url = "github:kmein/scripts";
flake = false;
};
stockholm = {
url = "git+https://cgit.lassul.us/stockholm";
flake = false;
};
telebots = {
url = "github:kmein/telebots";
flake = false;
};
tinc-graph = {
url = "github:kmein/tinc-graph";
flake = false;
};
traadfri = {
url = "github:kmein/traadfri";
flake = false;
};
tuna = {
url = "github:kmein/tuna";
flake = false;
};
};
outputs =
{ self
, flake-utils
, home-manager
, krops
, menstruation-backend
, menstruation-telegram
, nix-writers
, nixpkgs
, nixpkgs-unstable
, recht
, retiolum
, scripts
, stockholm
, telebots
, tinc-graph
, traadfri
, tuna
}@inputs:
let
outputs = {
self,
flake-utils,
home-manager,
krops,
menstruation-backend,
menstruation-telegram,
nix-writers,
nixpkgs,
nixpkgs-unstable,
recht,
retiolum,
scripts,
stockholm,
telebots,
tinc-graph,
traadfri,
tuna,
} @ inputs: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
source = name: {
niveum.file = toString ./.;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
system-secrets.pass = {
dir = toString ~/.password-store;
name = "systems/${name}";
};
secrets.pass = {
dir = toString ~/.password-store;
name = "shared";
};
} // nixpkgs.lib.mapAttrs' (name: value: {
inherit name;
value.git = {
url = {
# having to declare the git upstream urls here is suboptimal, but the inputs don't remember where they're from
home-manager = "https://github.com/nix-community/home-manager";
menstruation-backend = "https://github.com/kmein/menstruation.rs";
menstruation-telegram = "https://github.com/kmein/menstruation-telegram";
nix-writers = "https://cgit.krebsco.de/nix-writers";
nixpkgs = "https://github.com/NixOS/nixpkgs";
nixpkgs-unstable = "https://github.com/NixOS/nixpkgs";
recht = "https://github.com/kmein/recht";
retiolum = "https://github.com/krebs/retiolum";
scripts = "https://github.com/kmein/scripts";
stockholm = "https://cgit.lassul.us/stockholm";
telebots = "https://github.com/kmein/telebots";
tinc-graph = "https://github.com/kmein/tinc-graph";
traadfri = "https://github.com/kmein/traadfri";
tuna = "https://github.com/kmein/tuna";
}.${name};
ref = value.rev;
shallow = true;
};
}) (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name [ "flake-utils" "krops" "self" ]) inputs);
deployScriptFor = {name, host}: let inherit (import ./lib/default.nix) sshPort; in toString (krops.packages.${system}.writeDeploy "deploy-${name}" {
source = krops.lib.evalSource [ (source name) ];
target = "root@${host}:${toString sshPort}";
});
source = name:
{
niveum.file = toString ./.;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
system-secrets.pass = {
dir = toString ~/.password-store;
name = "systems/${name}";
};
secrets.pass = {
dir = toString ~/.password-store;
name = "shared";
};
}
// nixpkgs.lib.mapAttrs' (name: value: {
inherit name;
value.file = toString value;
}) (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name ["flake-utils" "krops" "self"]) inputs);
deployScriptFor = {
name,
host,
}: let
inherit (import ./lib/default.nix) sshPort;
in
toString (krops.packages.${system}.writeDeploy "deploy-${name}" {
source = krops.lib.evalSource [(source name)];
target = "root@${host}:${toString sshPort}";
});
in {
apps.${system} = let
forSystems = f: builtins.listToAttrs (map f (builtins.attrNames (builtins.readDir ./systems)));
@@ -97,16 +117,20 @@
name = "deploy-${name}";
value = {
type = "app";
program = deployScriptFor { inherit name; host = "${name}.r"; };
program = deployScriptFor {
inherit name;
host = "${name}.r";
};
};
});
ciScripts = forSystems (name: {
name = "build-${name}";
value = {
type = "app";
program = import ./ci.nix { inherit name system inputs; };
program = import ./ci.nix {inherit name system inputs;};
};
});
in deployScripts // ciScripts;
in
deployScripts // ciScripts;
};
}

37
lib/colours/ibm-3270.nix Normal file
View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#888888";
dark = "#222222";
};
red = {
bright = "#ef8383";
dark = "#f01818";
};
yellow = {
bright = "#efe28b";
dark = "#f8d824";
};
green = {
bright = "#23d830";
dark = "#7ed684";
};
blue = {
bright = "#b3bfef";
dark = "#7890f0";
};
magenta = {
bright = "#efb3e3";
dark = "#f078d8";
};
cyan = {
bright = "#9ce2e2";
dark = "#54e4e4";
};
white = {
bright = "#ffffff";
dark = "#a5a5a5";
};
background = "#000000";
foreground = "#bbbbbb";
cursor = green.bright;
}

View File

@@ -1,21 +1,46 @@
rec {
tmpfilesConfig = {type, path, mode ? "-", user ? "-", group ? "-", age ? "-", argument ? "-"}: "${type} '${path}' ${mode} ${user} ${group} ${age} ${argument}";
tmpfilesConfig = {
type,
path,
mode ? "-",
user ? "-",
group ? "-",
age ? "-",
argument ? "-",
}: "${type} '${path}' ${mode} ${user} ${group} ${age} ${argument}";
restic = rec {
port = 3571;
host = "zaatar.r";
repository = "rest:http://${host}:${toString port}/";
};
firewall = lib: {
accept = { source, protocol, dport }: "nixos-fw -s ${lib.escapeShellArg source} -p ${lib.escapeShellArg protocol} --dport ${lib.escapeShellArg (toString dport)} -j nixos-fw-accept";
accept = {
source,
protocol,
dport,
}: "nixos-fw -s ${lib.escapeShellArg source} -p ${lib.escapeShellArg protocol} --dport ${lib.escapeShellArg (toString dport)} -j nixos-fw-accept";
addRules = lib.concatMapStringsSep "\n" (rule: "iptables -A ${rule}");
removeRules = lib.concatMapStringsSep "\n" (rule: "iptables -D ${rule} || true");
};
serveHtml = file: pkgs: ''
default_type "text/html";
root ${pkgs.linkFarm "fahrplan" [{ name = "index.html"; path = file; }]};
root ${
pkgs.linkFarm "fahrplan" [
{
name = "index.html";
path = file;
}
]
};
index index.html;
'';
sshPort = 22022;
colours = import ./colours/mac-os.nix;
colours = import ./colours/ibm-3270.nix;
theme = pkgs: {
gtk = {
@@ -44,10 +69,11 @@ rec {
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";
}));
sshKeys = pkgs:
pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
sha256 = "09c6ny0rmpid1m0pc1wsmb3wyy9g721lf4kv55i4lrp42b3i2d5b";
}));
};
syncthing.devices = {
@@ -56,6 +82,7 @@ rec {
manakish.id = "AJVBWR2-VFFAGZF-7ZF5JAX-T63GMOG-NZ446WK-MC5E6WK-6X6Q2HE-QQA2JQ3";
toum.id = "CBJQXFF-FMFGWFU-2J6FMPR-SRDTSGX-7NHOYOH-CQCABKF-KQJMRJC-SDE24Q4";
zaatar.id = "CGHO6LK-ZJBAXBD-UWI7AH3-BXYARE6-EUIM7PE-O2FUCOM-VCCRNCM-IG34WQ7";
tahina.id = "UKJ2CBO-EQPKQL4-3QLRUSG-SSYR6AB-CCCUTKU-CLPYR7N-RUI5A6Y-JTL5NA4";
};
ignorePaths = [

View File

@@ -1,4 +1,7 @@
{pkgs, path}: ''
{
pkgs,
path,
}: ''
<config>
<paths>
<path recursive="1">${path}</path>

View File

@@ -1,5 +1,9 @@
{ pkgs, wirelessInterface, colours, batteryName }:
let
{
pkgs,
wirelessInterface,
colours,
batteryName,
}: let
inherit (pkgs) lib;
setsid = script:
@@ -95,62 +99,48 @@ in {
{
block = "custom";
interval = 60 * 5;
command = let inherit (import <niveum/configs/spacetime.nix>) location; in "${pkgs.scripts.horoscope}/bin/horoscope --latitude=${toString location.latitude} --longitude=${toString location.longitude}";
# astrolog -zN Berlin -n -k | tail -n +4 | head -n 7 | sed 's/://g;s/\s\+/ /g;s/ R/R/;s/\[\s*/[/g;s/Sun/☉/;s/Moon/☽/;s/Merc/☿/;s/Venu/♀/;s/Mars/♂/;s/Jupi/♃/;s/Satu/♄/' | cut -f1-2 -d' ' | paste -sd' ' -
}
{
block = "custom";
interval = 60 * 5;
command = let spacetime = import <niveum/configs/spacetime.nix>; in pkgs.writers.writePython3 "sun.py" { libraries = [ pkgs.python3Packages.astral ]; flakeIgnore = [ "E121" "E501" ]; }
''
import astral
import astral.moon
import astral.sun
moon_phases = {
0: "🌑",
3.5: "🌒",
7: "🌓",
10.5: "🌔",
14: "🌕",
17.5: "🌖",
21: "🌗",
24.5: "🌘",
28: "🌑",
command = let
spacetime = import <niveum/configs/spacetime.nix>;
in
pkgs.writers.writePython3 "sun.py" {
libraries = [pkgs.python3Packages.astral];
flakeIgnore = ["E121" "E501"];
}
current_phase = astral.moon.phase()
closest_phase = min(moon_phases.keys(), key=lambda x: abs(current_phase - x))
''
import astral
import astral.moon
import astral.sun
city = astral.LocationInfo("Berlin", "Germany", "${spacetime.time.timeZone}", ${toString spacetime.location.latitude}, ${toString spacetime.location.longitude})
sun = astral.sun.sun(city.observer, date=astral.today(), tzinfo=city.timezone)
moon_phases = {
0: "🌑",
3.5: "🌒",
7: "🌓",
10.5: "🌔",
14: "🌕",
17.5: "🌖",
21: "🌗",
24.5: "🌘",
28: "🌑",
}
current_phase = astral.moon.phase()
closest_phase = min(moon_phases.keys(), key=lambda x: abs(current_phase - x))
print("🌅 {} 🌇 {} {} {}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), moon_phases[closest_phase], round(current_phase, 1)))
'';
city = astral.LocationInfo("Berlin", "Germany", "${spacetime.time.timeZone}", ${toString spacetime.location.latitude}, ${toString spacetime.location.longitude})
sun = astral.sun.sun(city.observer, date=astral.today(), tzinfo=city.timezone)
print("🌅 {} 🌇 {} {} {}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), moon_phases[closest_phase], round(current_phase, 1)))
'';
}
{
block = "custom";
interval = 60 * 60;
command = pkgs.writers.writeDash "vax" ''
${pkgs.curl}/bin/curl -sSL https://api.corona-zahlen.org/vaccinations \
| ${pkgs.jq}/bin/jq -r '"💉 \(.data.quote * 1000 | floor | . / 10)% \(.data.secondVaccination.quote * 1000 | floor | . / 10)%"'
'';
}
(let service = "openvpn-hu-berlin"; in {
block = "custom";
interval = 5;
command = pkgs.writers.writeDash "net-device" ''
PATH=${lib.makeBinPath [ pkgs.systemd ]}
systemctl is-active --quiet ${service}.service && echo "🎓👍" || echo "🎓👎"
command = pkgs.writers.writeDash "hu-berlin-vpn" ''
PATH=${lib.makeBinPath [pkgs.systemd]}
(systemctl is-active --quiet openvpn-hu-berlin.service && echo "🎓👍 (OpenVPN)") \
|| (systemctl is-active --quiet hu-vpn.service && echo "🎓👍 (PPP+SSL)") \
|| echo "🎓👎"
'';
on_click = pkgs.writers.writeDash "toggle" ''
PATH=${lib.makeBinPath [ pkgs.systemd pkgs.libnotify ]}
systemctl is-active --quiet ${service}.service && {
systemctl stop ${service}.service && notify-send -a "${service}" stopped
} || {
systemctl start ${service}.service && notify-send -a "${service}" started
}
'';
})
}
{
block = "net";
device = wirelessInterface;
@@ -174,7 +164,7 @@ in {
format_mem = "{mem_used;G}";
clickable = false;
}
{ block = "load"; }
{block = "load";}
{
block = "time";
interval = 1;

143
lib/radio-news.html Normal file
View File

@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>lassulus radio news</title>
<style>
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
main {
max-width: 800px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr;
grid-gap: 2em;
}
#news-list ul {
list-style: none;
padding-left: 0;
}
#news-list li {
margin-bottom: 1em;
}
#news-list time {
display: block;
color: grey;
}
form label {
display: block;
}
form input,
form textarea {
width: 100%;
margin-bottom: 1em;
}
@media only screen and (max-width: 768px) {
main {
grid-template-columns: 1fr;
}
}
</style>
<script>
const newsEndpoint = "http://prism.r:7999";
function isoString(date) {
return date.toISOString().slice(0, -5) + "Z";
}
function setNextNews() {
document.getElementById("next-news").innerHTML = (
60 - new Date().getUTCMinutes()
).toString();
}
setInterval(setNextNews, 6000);
function fetchNews() {
fetch(newsEndpoint).then((response) => {
response.json().then((news) => {
const newsList = document.getElementById("news-list");
newsList.innerHTML = "";
const ul = document.createElement("ul");
for (const newsItem of news) {
const start = new Date(newsItem.from);
const end = new Date(newsItem.to);
const li = document.createElement("li");
const startDate = document.createElement("time");
startDate.className = "start";
startDate.title = start.toString();
startDate.setAttribute("datetime", isoString(start));
startDate.appendChild(document.createTextNode(isoString(start)));
const endDate = document.createElement("time");
endDate.className = "end";
endDate.title = end.toString();
endDate.setAttribute("datetime", isoString(end));
endDate.appendChild(document.createTextNode(isoString(end)));
li.appendChild(document.createTextNode(newsItem.text));
li.appendChild(startDate);
li.appendChild(endDate);
ul.appendChild(li);
}
newsList.appendChild(ul);
});
});
}
function sendNews(event) {
event.preventDefault();
const formData = new FormData(event.target);
const request = new XMLHttpRequest();
request.open("POST", newsEndpoint, false); // synchronous
request.send(
JSON.stringify({
from: isoString(new Date(formData.get("from"))),
to: isoString(new Date(formData.get("to"))),
text: formData.get("text"),
})
);
location.reload();
}
window.onload = () => {
setNextNews();
fetchNews();
};
</script>
</head>
<body>
<main>
<section>
<h1>Submit news</h1>
<form onsubmit="sendNews(event)">
<label>Start date</label>
<input type="datetime-local" name="from" required />
<label>End date</label>
<input type="datetime-local" name="to" required />
<label>News text</label>
<textarea name="text" rows="10" required></textarea>
<input type="submit" />
</form>
Next news report should start in <span id="next-news"></span> minutes.
</section>
<aside>
<h1>Planned news</h1>
<div id="news-list">
<em>No news planned yet.</em>
</div>
</aside>
</main>
</body>
</html>

View File

@@ -18,4 +18,9 @@
ipv4 = "10.243.2.85";
ipv6 = "42:0:3c46:ac99:ae36:cb8:c551:ba27";
};
tahina = {
ipv4 = "10.243.2.74";
ipv6 = "42:0:3c46:2923:1c90:872:edd6:306";
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,6 @@ nnoremap <C-l> :Rg<CR>
let g:fzf_layout = { 'down': '~15%' }
colorscheme paramount
set background=dark
" transparent background
hi Normal guibg=NONE ctermbg=NONE
@@ -17,7 +16,7 @@ let maplocalleader="\\"
" noremap <Leader>h :<C-u>split<CR>
" noremap <Leader>v :<C-u>vsplit<CR>
noremap <Leader>gs :Git status<CR>
noremap <Leader>gs :Git<CR>
noremap <Leader>gc :Git commit<CR>
noremap <leader>n :bn<CR>
noremap <leader>p :bp<CR>
@@ -35,11 +34,17 @@ nnoremap <Leader>a <Plug>(ale_hover)
nnoremap <Leader>d <Plug>(ale_go_to_definition_in_tab)
nnoremap <Leader>rf <Plug>(ale_find_references)
" Hit `%` on `if` to jump to `else`.
runtime macros/matchit.vim
filetype plugin indent on
set autoindent
set notitle
set nospell
set nocompatible
set smartcase ignorecase " you need these two
set backspace=indent,eol,start
set hidden
set ruler
set shiftwidth=2 tabstop=2 expandtab
set laststatus=1
set number
@@ -109,29 +114,33 @@ command! ToggleBackground call s:toggle_background()
inoremap <F12> <C-O>:ToggleBackground<CR>
nnoremap <F12> :ToggleBackground<CR>
autocmd bufnewfile,bufread *.4th set filetype=forth
autocmd bufnewfile,bufread *.asm set filetype=nasm
autocmd bufnewfile,bufread *.c set keywordprg=man\ 3
autocmd bufnewfile,bufread *.h set keywordprg=man\ 3
autocmd bufnewfile,bufread *.conf set filetype=conf
autocmd bufnewfile,bufread *.nix packadd vim-nix | set filetype=nix | set path+=/var/src
autocmd bufnewfile,bufread *.rust packadd rust-vim
autocmd bufnewfile,bufread *.csv packadd csv.vim | set filetype=csv
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
autocmd bufnewfile,bufread *.jq packadd jq.vim
autocmd bufnewfile,bufread *.journal packadd vim-ledger | set filetype=ledger shiftwidth=4
autocmd bufnewfile,bufread urls,config set filetype=conf
autocmd bufnewfile,bufread *.elm packadd elm-vim | set filetype=elm shiftwidth=4
autocmd bufnewfile,bufread *.md packadd vim-pandoc | packadd vim-pandoc-syntax | set filetype=pandoc
autocmd filetype haskell packadd haskell-vim | set keywordprg=hoogle\ -i
autocmd filetype javascript packadd vim-javascript
autocmd filetype make setlocal noexpandtab
augroup filetypes
autocmd!
autocmd bufnewfile,bufread *.4th set filetype=forth
autocmd bufnewfile,bufread *.asm set filetype=nasm
autocmd bufnewfile,bufread *.c set keywordprg=man\ 3
autocmd bufnewfile,bufread *.h set keywordprg=man\ 3
autocmd bufnewfile,bufread *.conf set filetype=conf
autocmd bufnewfile,bufread *.nix packadd vim-nix | set filetype=nix | set path+=/var/src
autocmd bufnewfile,bufread *.rust packadd rust-vim
autocmd bufnewfile,bufread *.csv packadd csv.vim | set filetype=csv
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
autocmd bufnewfile,bufread *.jq packadd jq.vim
autocmd bufnewfile,bufread *.journal packadd vim-ledger | set filetype=ledger shiftwidth=4
autocmd bufnewfile,bufread urls,config set filetype=conf
autocmd bufnewfile,bufread *.elm packadd elm-vim | set filetype=elm shiftwidth=4
autocmd bufnewfile,bufread *.md packadd vim-pandoc | packadd vim-pandoc-syntax | set filetype=pandoc
autocmd filetype haskell packadd haskell-vim | set keywordprg=hoogle\ -i
autocmd filetype javascript packadd vim-javascript
autocmd filetype make setlocal noexpandtab
autocmd filetype html packadd emmet-vim
autocmd filetype gitcommit setlocal spell spelllang=en
autocmd filetype mail setlocal spell spelllang=de textwidth=0
augroup end
autocmd filetype html packadd emmet-vim
autocmd filetype gitcommit setlocal spell spelllang=en
autocmd filetype mail setlocal spell spelllang=de textwidth=0
autocmd bufreadpost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |

View File

@@ -1,20 +1,25 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.niveum.dropbox;
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.niveum.dropbox;
in {
options.niveum.dropbox = { enable = mkEnableOption "Dropbox"; };
options.niveum.dropbox = {enable = mkEnableOption "Dropbox";};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.dropbox-cli ];
environment.systemPackages = [pkgs.dropbox-cli];
networking.firewall = {
allowedTCPPorts = [ 17500 ];
allowedUDPPorts = [ 17500 ];
allowedTCPPorts = [17500];
allowedUDPPorts = [17500];
};
systemd.user.services.dropbox = {
description = "Dropbox synchronisation service";
wantedBy = [ "graphical-session.target" ];
wantedBy = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${pkgs.dropbox.out}/bin/dropbox";
ExecReload = "${pkgs.coreutils.out}/bin/kill -HUP $MAINPID";

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
let
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.niveum.hledger;
hledger-git = pkgs.writers.writeDashBin "hledger-git" ''
LEDGER_DIR="$(dirname $LEDGER_FILE)"
@@ -39,14 +43,14 @@ in {
default = "127.0.0.1";
};
capabilities = mkOption {
type = types.listOf (types.enum [ "view" "add" "manage" ]);
default = [ "view" "add" ];
type = types.listOf (types.enum ["view" "add" "manage"]);
default = ["view" "add"];
};
flags = mkOption {
type = types.listOf types.str;
default = [ ];
default = [];
};
user = mkOption { type = types.attrs; };
user = mkOption {type = types.attrs;};
package = mkOption {
type = types.package;
default = pkgs.hledger-web;
@@ -55,22 +59,22 @@ in {
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package hledger-git hledger-edit ];
environment.systemPackages = [cfg.package hledger-git hledger-edit];
environment.variables.LEDGER_FILE =
mkIf (cfg.ledgerFile != null) cfg.ledgerFile;
systemd.services.hledger-web = mkIf cfg.server.enable {
description = "hledger server";
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
serviceConfig = {
Restart = "always";
ExecStart = ''
${cfg.server.package}/bin/hledger-web \
--port=${toString cfg.server.port} \
--host=${cfg.server.host} \
--capabilities=${concatStringsSep "," cfg.server.capabilities} \
${concatStringsSep " " cfg.server.flags}
--port=${toString cfg.server.port} \
--host=${cfg.server.host} \
--capabilities=${concatStringsSep "," cfg.server.capabilities} \
${concatStringsSep " " cfg.server.flags}
'';
User = cfg.server.user.name;
PrivateTemp = true;

View File

@@ -1,8 +1,13 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.niveum.minecraft;
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.niveum.minecraft;
in {
options.niveum.minecraft = { enable = mkEnableOption "Minecraft"; };
options.niveum.minecraft = {enable = mkEnableOption "Minecraft";};
config = mkIf cfg.enable { environment.systemPackages = [ pkgs.minecraft ]; };
config = mkIf cfg.enable {environment.systemPackages = [pkgs.minecraft];};
}

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
let
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.services.moodle-dl;
json = pkgs.formats.json {};
moodle-dl-json = json.generate "moodle-dl.json" cfg.settings;
@@ -52,7 +56,6 @@ in {
};
config = mkIf cfg.enable {
users.users.moodle-dl = {
isSystemUser = true;
home = cfg.directory;
@@ -63,7 +66,7 @@ in {
systemd.services.moodle-dl = {
description = "A Moodle downloader that downloads course content";
wants = [ "network-online.target" ];
wants = ["network-online.target"];
serviceConfig = mkMerge [
{
Type = "oneshot";
@@ -73,11 +76,11 @@ in {
ExecStart = "${cfg.package}/bin/moodle-dl ${lib.optionalString cfg.notifyOnly "--without-downloading-files"}";
ExecStartPre = "${pkgs.coreutils}/bin/ln -sfn ${toString moodle-dl-json} ${cfg.directory}/config.json";
}
(mkIf (cfg.directory == stateDirectoryDefault) { StateDirectory = "moodle-dl"; })
(mkIf (cfg.directory == stateDirectoryDefault) {StateDirectory = "moodle-dl";})
];
inherit (cfg) startAt;
};
};
meta.maintainers = [ maintainers.kmein ];
meta.maintainers = [maintainers.kmein];
}

View File

@@ -1,50 +1,69 @@
# https://github.com/jmackie/nixos-networkmanager-profiles/
{ lib, config, ... }:
with lib;
let
{
lib,
config,
...
}:
with lib; let
nm = config.networking.networkmanager;
mkProfile = profileAttrs:
if !(isAttrs profileAttrs) then
throw "error 1"
if !(isAttrs profileAttrs)
then throw "error 1"
else {
enable = true;
mode = "0400"; # readonly (user)
text = (foldlAttrs (accum:
{ name, value }: ''
${accum}
text =
(foldlAttrs (accum: {
name,
value,
}: ''
${accum}
[${name}] ${mkProfileEntry value}'')
"# Generated by nixos-networkmanager-profiles" profileAttrs) + "\n";
[${name}] ${mkProfileEntry value}'')
"# Generated by nixos-networkmanager-profiles"
profileAttrs)
+ "\n";
};
mkProfileEntry = entryAttrs:
if !(isAttrs entryAttrs) then
throw "error 2"
if !(isAttrs entryAttrs)
then throw "error 2"
else
foldlAttrs (accum:
{ name, value }: ''
${accum}
${name}=${toString value}'') "" entryAttrs;
foldlAttrs (accum: {
name,
value,
}: ''
${accum}
${name}=${toString value}'') ""
entryAttrs;
foldlAttrs = op: nul: attrs:
foldl (accum: { fst, snd }: op accum (nameValuePair fst snd)) nul
foldl (accum: {
fst,
snd,
}:
op accum (nameValuePair fst snd))
nul
(lists.zipLists (attrNames attrs) (attrValues attrs));
attrLength = attrs: length (attrValues attrs);
in {
options.networking.networkmanager.profiles = mkOption {
type = types.attrs;
default = { };
default = {};
};
config = mkIf (attrLength nm.profiles > 0) {
environment.etc = (foldlAttrs (accum:
{ name, value }:
accum // {
environment.etc = foldlAttrs (accum: {
name,
value,
}:
accum
// {
"NetworkManager/system-connections/${name}.nmconnection" =
mkProfile value;
}) { } nm.profiles);
}) {}
nm.profiles;
};
}

View File

@@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }:
with lib;
let
{
config,
pkgs,
lib,
...
}:
with lib; let
netname = "retiolum";
cfg = config.networking.retiolum;
in {
@@ -27,10 +31,10 @@ in {
};
config = {
services.tinc.networks.${netname} = {
name = cfg.nodename;
hosts = builtins.mapAttrs
hosts =
builtins.mapAttrs
(name: _: builtins.readFile "${<retiolum/hosts>}/${name}")
(builtins.readDir <retiolum/hosts>);
rsaPrivateKeyFile = toString <system-secrets/retiolum.key>;
@@ -43,11 +47,11 @@ in {
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 ];
allowedUDPPorts = [ 655 ];
allowedTCPPorts = [655];
allowedUDPPorts = [655];
};
#services.netdata.portcheck.checks.tinc.port = 655;

View File

@@ -1,13 +1,17 @@
{ config, lib, pkgs, ... }:
with lib;
let
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.services.spotifyd;
toml = pkgs.formats.toml {};
spotifydConf = if cfg.settings != {} then toml.generate "spotify.conf" cfg.settings else pkgs.writeText "spotifyd.conf" cfg.config;
in
{
spotifydConf =
if cfg.settings != {}
then toml.generate "spotify.conf" cfg.settings
else pkgs.writeText "spotifyd.conf" cfg.config;
in {
options = {
services.spotifyd = {
enable = mkEnableOption "spotifyd, a Spotify playing daemon";
@@ -41,8 +45,8 @@ in
];
systemd.services.spotifyd = {
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" "sound.target" ];
wantedBy = ["multi-user.target"];
after = ["network-online.target" "sound.target"];
description = "spotifyd, a Spotify playing daemon";
environment.SHELL = "/bin/sh";
serviceConfig = {
@@ -56,5 +60,5 @@ in
};
};
meta.maintainers = [ maintainers.anderslundstedt ];
meta.maintainers = [maintainers.anderslundstedt];
}

View File

@@ -1,10 +1,14 @@
{ config, lib, pkgs, ... }:
with lib;
{
config,
lib,
pkgs,
...
}:
with lib; {
options.niveum = {
wirelessInterface = mkOption { type = types.str; };
wirelessInterface = mkOption {type = types.str;};
batteryName = mkOption { type = types.str; };
batteryName = mkOption {type = types.str;};
promptColours = let
colours16 = types.enum [

View File

@@ -1,6 +1,10 @@
{ lib, config, pkgs, ... }:
with lib;
let
{
lib,
config,
pkgs,
...
}:
with lib; let
cfg = config.niveum.telegramBots;
botService = name: bot:
@@ -8,37 +12,38 @@ let
enable = bot.enable;
startAt = bot.time;
serviceConfig.Type = "oneshot";
wants = [ "network-online.target" ];
script = strings.concatStringsSep "\n" ([ "QUOTE=$(${bot.command})" "if [ -n \"$QUOTE\" ]; then" ]
wants = ["network-online.target"];
script = strings.concatStringsSep "\n" (["QUOTE=$(${bot.command})" "if [ -n \"$QUOTE\" ]; then"]
++ map (chatId: ''
${pkgs.curl}/bin/curl -s -X POST "https://api.telegram.org/bot${bot.token}/sendMessage" \
-d chat_id="${chatId}" \
-d text="$QUOTE" ${
lib.strings.optionalString (bot.parseMode != null)
"-d parse_mode=${bot.parseMode}"
}
'') bot.chatIds
++ [ "fi" ]);
lib.strings.optionalString (bot.parseMode != null)
"-d parse_mode=${bot.parseMode}"
}
'')
bot.chatIds
++ ["fi"]);
};
in {
options.niveum.telegramBots = mkOption {
type = types.attrsOf (types.submodule {
options = {
enable = mkEnableOption "Telegram bot";
time = mkOption { type = types.str; };
token = mkOption { type = types.strMatching "[0-9A-Za-z:-]+"; };
time = mkOption {type = types.str;};
token = mkOption {type = types.strMatching "[0-9A-Za-z:-]+";};
chatIds = mkOption {
type = types.listOf (types.strMatching "-?[0-9]+|@[A-Za-z0-9]+");
};
command = mkOption { type = types.str; };
command = mkOption {type = types.str;};
parseMode = mkOption {
type = types.nullOr (types.enum [ "HTML" "Markdown" ]);
type = types.nullOr (types.enum ["HTML" "Markdown"]);
default = null;
};
};
});
default = { };
default = {};
};
config = { systemd.services = attrsets.mapAttrs' botService cfg; };
config = {systemd.services = attrsets.mapAttrs' botService cfg;};
}

View File

@@ -1,40 +1,49 @@
{ pkgs, lib, config, ... }:
with lib;
let
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.niveum.traadfri;
traadfri = pkgs.callPackage <traadfri> {
libcoap = pkgs.callPackage <niveum/packages/libcoap.nix> { tls = true; };
libcoap = pkgs.callPackage <niveum/packages/libcoap.nix> {tls = true;};
};
in {
options.niveum.traadfri = {
enable = mkEnableOption "Trådfri CLI";
user = mkOption { type = types.str; };
host = mkOption { type = types.str; };
key = mkOption { type = types.str; };
user = mkOption {type = types.str;};
host = mkOption {type = types.str;};
key = mkOption {type = types.str;};
rooms = mkOption {
type = types.attrsOf types.int;
default = { };
default = {};
};
bulbs = mkOption {
type = types.attrsOf types.int;
default = { };
default = {};
};
};
config = mkIf cfg.enable {
environment.shellAliases = lib.attrsets.mapAttrs' (name: value:
lib.nameValuePair "traadfri-${name}" "traadfri --target Bulb ${toString value}")
cfg.bulbs // lib.attrsets.mapAttrs' (name: value:
lib.nameValuePair "traadfri-${name}" "traadfri --target Room ${toString value}")
cfg.rooms;
environment.systemPackages = [
(pkgs.writers.writeDashBin "traadfri" ''
TRAADFRI_USER="${cfg.user}" \
TRAADFRI_KEY="${cfg.key}" \
TRAADFRI_HUB="${cfg.host}" \
${traadfri}/bin/traadfri $@
'')
];
environment.systemPackages =
[
(pkgs.writers.writeDashBin "traadfri" ''
TRAADFRI_USER="${cfg.user}" \
TRAADFRI_KEY="${cfg.key}" \
TRAADFRI_HUB="${cfg.host}" \
${traadfri}/bin/traadfri $@
'')
]
++ lib.mapAttrsToList (name: value:
pkgs.writers.writeDashBin "traadfri-${name}" ''
exec traadfri --target Room ${toString value} "$@"
'')
cfg.rooms
++ lib.mapAttrsToList (name: value:
pkgs.writers.writeDashBin "traadfri-${name}" ''
exec traadfri --target Bulb ${toString value} "$@"
'')
cfg.bulbs;
};
}

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
let
{
config,
lib,
pkgs,
...
}:
with lib; let
tuna = pkgs.callPackage <tuna> {};
cfg = config.services.tuna;
in {
@@ -77,8 +81,8 @@ in {
users.groups.tuna = {};
# ref https://github.com/florianheinemann/MPD.FM/blob/9d037cf87597b26ae2f10ba9feea48946ad6cc68/service/MPD.FM.service
systemd.services.tuna = {
wantedBy = [ "multi-user.target" ];
after = [ "mpd.service" ];
wantedBy = ["multi-user.target"];
after = ["mpd.service"];
script = "${cfg.package}/bin/tuna";
environment = {
NODE_ENV = "production";

View File

@@ -1,6 +1,6 @@
self: super:
with super.lib;
let
with super.lib; let
eval = import <nixpkgs/nixos/lib/eval-config.nix>;
paths = (eval {modules = [(import <nixos-config>)];}).config.nixpkgs.overlays;
in foldl' (flip extends) (_: super) paths self
in
foldl' (flip extends) (_: super) paths self

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, makeWrapper, pandoc, fetchFromGitHub }:
{
lib,
stdenv,
makeWrapper,
pandoc,
fetchFromGitHub,
}:
stdenv.mkDerivation {
name = "daybook";
src = fetchFromGitHub {
@@ -7,8 +13,8 @@ stdenv.mkDerivation {
rev = "db2c34830e09183c80f3381bf5e4c44d52f05d53";
sha256 = "0nbsv8f12qh5spq7zhimhdf3p7msk33xrb0ilqvlc6jmlkpislmv";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ pandoc ];
nativeBuildInputs = [makeWrapper];
buildInputs = [pandoc];
buildPhase = ''
mkdir -p $out/man/man1
pandoc --standalone --to man daybook.1.md -o $out/man/man1/daybook.1

View File

@@ -1,5 +1,7 @@
{ lib, writeShellScriptBin }:
let
{
lib,
writeShellScriptBin,
}: let
aliasFlag = name: value: "-c alias.${name}=${lib.escapeShellArg value}";
aliases = {
eroeffne = "init";
@@ -20,10 +22,11 @@ let
tagebuch = "log";
zustand = "status";
};
in writeShellScriptBin "depp" ''
if [ $# -gt 0 ]; then
git ${lib.concatStringsSep " " (lib.attrsets.mapAttrsToList aliasFlag aliases)} "$@"
else
printf "${lib.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: v: n + " " + v) aliases)}\n"
fi
''
in
writeShellScriptBin "depp" ''
if [ $# -gt 0 ]; then
git ${lib.concatStringsSep " " (lib.attrsets.mapAttrsToList aliasFlag aliases)} "$@"
else
printf "${lib.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: v: n + " " + v) aliases)}\n"
fi
''

View File

@@ -1,4 +1,4 @@
{ yarn2nix-moretea }:
{yarn2nix-moretea}:
yarn2nix-moretea.mkYarnPackage {
name = "devanagari";
src = ./.;

View File

@@ -1,11 +1,17 @@
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
{
fetchurl,
fetchgit,
linkFarm,
runCommandNoCC,
gnutar,
}: rec {
offline_cache = linkFarm "offline" packages;
packages = [
{
name = "_sanskrit_coders_sanscript___sanscript_1.1.5.tgz";
path = fetchurl {
name = "_sanskrit_coders_sanscript___sanscript_1.1.5.tgz";
url = "https://registry.yarnpkg.com/@sanskrit-coders/sanscript/-/sanscript-1.1.5.tgz";
url = "https://registry.yarnpkg.com/@sanskrit-coders/sanscript/-/sanscript-1.1.5.tgz";
sha1 = "a22222cf7a5d55f7b19e210242c59f6f819fd643";
};
}

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, xdo, makeWrapper, fetchFromGitHub }:
{
lib,
stdenv,
xdo,
makeWrapper,
fetchFromGitHub,
}:
stdenv.mkDerivation {
name = "devour";
version = "master";
@@ -10,10 +16,10 @@ stdenv.mkDerivation {
sha256 = "0f2jb8knx7lqy6wmf3rchgq2n2dj496lm8vgcs58rppzrmsk59d5";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ xdo ];
nativeBuildInputs = [makeWrapper];
buildInputs = [xdo];
DESTDIR="$(out)";
DESTDIR = "$(out)";
fixupPhase = ''
wrapProgram $out/bin/devour --prefix PATH ":" ${xdo}/bin ;

View File

@@ -1,5 +1,8 @@
{ fetchzip, symlinkJoin, lib }:
let
{
fetchzip,
symlinkJoin,
lib,
}: let
gfs-font = name: sha256:
fetchzip {
inherit name sha256;
@@ -10,30 +13,31 @@ let
unzip -j -o $downloadedFile "**/*.otf" -d $out/share/fonts/opentype
'';
};
in symlinkJoin {
name = "gfs-fonts";
paths = lib.mapAttrsToList gfs-font {
GFS_Artemisia = "1q39086pr2jhv118fjfv6l1li6japv4pdjnhh1scqw06mqrmydf4";
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
GFS_Complutum = "1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
GFS_Didot_Display = "0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7";
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
GFS_Olga = "1qaxaw3ngnbr1gb1xyk5f2z647zklg6sl3bqwi28l47j9mp0f8aj";
GFS_Orpheus = "18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz";
GFS_Orpheus_Classic = "1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps";
GFS_Orpheus_Sans = "02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg";
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
GFS_Porson = "0c2axagkm6wxv8na2q11k6c5dmgkwx5hn9sh9qy82gbips9blnda";
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";
};
}
in
symlinkJoin {
name = "gfs-fonts";
paths = lib.mapAttrsToList gfs-font {
GFS_Artemisia = "1q39086pr2jhv118fjfv6l1li6japv4pdjnhh1scqw06mqrmydf4";
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
GFS_Complutum = "1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
GFS_Didot_Display = "0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7";
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
GFS_Olga = "1qaxaw3ngnbr1gb1xyk5f2z647zklg6sl3bqwi28l47j9mp0f8aj";
GFS_Orpheus = "18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz";
GFS_Orpheus_Classic = "1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps";
GFS_Orpheus_Sans = "02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg";
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
GFS_Porson = "0c2axagkm6wxv8na2q11k6c5dmgkwx5hn9sh9qy82gbips9blnda";
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";
};
}

View File

@@ -1,15 +1,14 @@
# { stdenv, python }:
{ pkgs ? import <nixpkgs> { } }:
{pkgs ? import <nixpkgs> {}}:
with pkgs;
with pkgs.python2Packages;
buildPythonApplication rec {
pname = "gourmet";
version = "0.17.4";
src = builtins.fetchTarball {
url = "https://github.com/thinkle/gourmet/archive/${version}.tar.gz";
};
buildInputs = [ distutils_extra intltool ];
propagatedBuildInputs = [ sqlalchemy reportlab lxml ];
meta = with stenv.lib; { maintainers = with maintainers; [ kmein ]; };
}
buildPythonApplication rec {
pname = "gourmet";
version = "0.17.4";
src = builtins.fetchTarball {
url = "https://github.com/thinkle/gourmet/archive/${version}.tar.gz";
};
buildInputs = [distutils_extra intltool];
propagatedBuildInputs = [sqlalchemy reportlab lxml];
meta = with stenv.lib; {maintainers = with maintainers; [kmein];};
}

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, cmake, python3, fetchFromGitHub }:
{
lib,
stdenv,
cmake,
python3,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
version = "2017.09.06";
name = "iolanguage-${version}";
@@ -9,7 +15,7 @@ stdenv.mkDerivation rec {
sha256 = "07rg1zrz6i6ghp11cm14w7bbaaa1s8sb0y5i7gr2sds0ijlpq223";
fetchSubmodules = true;
};
buildInputs = [ cmake python3 ];
buildInputs = [cmake python3];
preBuild = "mkdir -p build && cd build";
buildPhase = ''
cmake -DCMAKE_INSTALL_PREFIX=$out/ ..
@@ -17,8 +23,7 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
homepage = "https://iolanguage.org/";
description =
"Io programming language. Inspired by Self, Smalltalk and LISP.";
description = "Io programming language. Inspired by Self, Smalltalk and LISP.";
license = licenses.bsd3;
};
}

View File

@@ -1,11 +1,14 @@
{ stdenv, fetchurl }:
{
stdenv,
fetchurl,
}:
stdenv.mkDerivation {
name = "ix";
src = fetchurl {
url = "https://ix.io/client";
sha256 = "0xc2s4s1aq143zz8lgkq5k25dpf049dw253qxiav5k7d7qvzzy57";
};
phases = [ "installPhase" ];
phases = ["installPhase"];
installPhase = ''
mkdir -p $out/bin
install $src $out/bin/ix

View File

@@ -1,6 +1,18 @@
{ lib, pkg-config, fetchFromGitHub, automake, autoconf, which, libtool, stdenv, gnutls
, doxygen, asciidoc
, tls ? false, docs ? true }:
{
lib,
pkg-config,
fetchFromGitHub,
automake,
autoconf,
which,
libtool,
stdenv,
gnutls,
doxygen,
asciidoc,
tls ? false,
docs ? true,
}:
stdenv.mkDerivation {
name = "libcoap";
version = "unstable-2021-05-28";
@@ -11,8 +23,9 @@ stdenv.mkDerivation {
sha256 = "1igjv0hbwmakdccp5in4gw9w2p5swxdwsdx0glyna2s29sh1d37x";
fetchSubmodules = true;
};
buildInputs = [ which pkg-config automake autoconf libtool ]
++ lib.optionals docs [ doxygen asciidoc ]
buildInputs =
[which pkg-config automake autoconf libtool]
++ lib.optionals docs [doxygen asciidoc]
++ lib.optional tls gnutls;
# preConfigure = "./autogen.sh";
# configureFlags = lib.optional (!docs) "--disable-documentation" ++ lib.optional tls "--enable-dtls";
@@ -27,6 +40,6 @@ stdenv.mkDerivation {
description = "A CoAP (RFC 7252) implementation in C";
platforms = platforms.linux;
license = licenses.bsd2;
maintainers = [ maintainers.kmein ];
maintainers = [maintainers.kmein];
};
}

View File

@@ -1,6 +1,22 @@
{ lib, fetchFromGitHub, mkDerivation, ansi-terminal, base, directory, doctest, filepath
, megaparsec, optparse-applicative, prettyprinter, process
, raw-strings-qq, stdenv, tasty, tasty-hunit, text, yaml
{
lib,
fetchFromGitHub,
mkDerivation,
ansi-terminal,
base,
directory,
doctest,
filepath,
megaparsec,
optparse-applicative,
prettyprinter,
process,
raw-strings-qq,
stdenv,
tasty,
tasty-hunit,
text,
yaml,
}:
mkDerivation {
pname = "mahlzeit";
@@ -14,15 +30,32 @@ mkDerivation {
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
ansi-terminal base directory filepath megaparsec prettyprinter text
ansi-terminal
base
directory
filepath
megaparsec
prettyprinter
text
yaml
];
executableHaskellDepends = [
ansi-terminal base directory filepath optparse-applicative process
text yaml
ansi-terminal
base
directory
filepath
optparse-applicative
process
text
yaml
];
testHaskellDepends = [
base doctest megaparsec raw-strings-qq tasty tasty-hunit
base
doctest
megaparsec
raw-strings-qq
tasty
tasty-hunit
];
homepage = "https://github.com/kmein/mahlzeit";
description = "Recipe toolkit";

View File

@@ -1,4 +1,9 @@
{ stdenv, pandoc, lib, fetchgit }:
{
stdenv,
pandoc,
lib,
fetchgit,
}:
stdenv.mkDerivation {
name = "pandoc-doc";
version = pandoc.version;

View File

@@ -0,0 +1,37 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
curl,
xclip,
}:
stdenvNoCC.mkDerivation rec {
pname = "visualizer";
version = "unstable-2021-07-10";
src = fetchFromGitHub {
owner = "mfcc64";
repo = "mpv-scripts";
rev = "a0cd87eeb974a4602c5d8086b4051b5ab72f42e1";
sha256 = "1xgd1nd117lpj3ppynhgaa5sbkfm7l8n6c9a2fy8p07is2dkndrq";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/mpv/scripts
cp visualizer.lua $out/share/mpv/scripts
runHook postInstall
'';
passthru.scriptName = "visualizer.lua";
meta = with lib; {
description = "various audio visualization";
homepage = "https://github.com/mfcc64/mpv-scripts";
license = licenses.unfree;
platforms = platforms.all;
maintainers = with maintainers; [kmein];
};
}

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