1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00

523 Commits

Author SHA1 Message Date
2d063b0ac8 wip: package itools 2023-04-14 08:43:34 +02:00
9456adc0b5 chore: update 2023-04-14 08:42:59 +02:00
d6372b8d8e feat(stardict): add turkish 2023-04-14 08:42:22 +02:00
5da8218a8f feat(streams): add more 2023-04-01 17:46:56 +02:00
17cbff9917 feat(radio): add qasida arabic poetry radio 2023-04-01 17:46:48 +02:00
d72c234adb fix(weechat): disable matrix for now 2023-03-31 11:00:01 +02:00
ffc5f9b596 fix(panoptikon): add watcher name to commit message, random delay 1h, ignore html errors, #xxx notification 2023-03-31 10:59:52 +02:00
c20a9e3098 feat(flake): override mpv and dmenu for own packages 2023-03-30 19:16:54 +02:00
7759cfb35f feat(panoptikon): add library to flake outputs and use 2023-03-30 19:16:54 +02:00
b7a5c3c333 chore: update 2023-03-28 22:28:51 +02:00
672257fc04 fix: hu-vpn conflicts with hu-eduroam 2023-03-28 11:03:20 +02:00
fada909105 feat(panoptikon): setup in different service 2023-03-27 09:27:44 +02:00
96d44a52f0 feat: install agenix package 2023-03-27 09:27:30 +02:00
22f957ee1f fix(weechat): do not delete secrets on startup 2023-03-26 20:22:44 +02:00
13e674389d feat: independence from stockholm 2023-03-26 19:24:38 +02:00
f805550ff8 fix(panoptikon) 2023-03-26 19:14:57 +02:00
a8db4ab8a8 fix(panoptikon): tellonym has ads now 2023-03-26 00:41:59 +01:00
83efbcd61c feat(panoptikon): start more gentle 2023-03-26 00:26:57 +01:00
246b4e1cec chore: update secrets 2023-03-24 19:04:21 +01:00
29985fffc2 feat: replace urlwatch by panoptikon 2023-03-24 19:02:27 +01:00
85036b55a5 feat(i3): fix slock 2023-03-24 17:04:34 +01:00
15c7e5a35a feat: panoptikon urlwatcher 2023-03-24 17:00:51 +01:00
c829a3ecac chore: update 2023-03-24 00:12:31 +01:00
ee2b929838 feat: slock 2023-03-24 00:12:23 +01:00
36f5bc6dc0 fix(flix): flixmenu 2023-03-22 18:47:50 +01:00
54793196bc feat(radio): curl via tor 2023-03-22 07:48:13 +01:00
bbe6a9efec feat: update kmein ssh keys 2023-03-22 07:47:43 +01:00
eb5cedabf8 fix(picom): do not make lockscreen transparent 2023-03-21 19:14:32 +01:00
a294bf009d feat: use slock instead of k-lock 2023-03-21 19:13:48 +01:00
eb45fe28f6 fix(i3status-rust): no alternating tint; cool colours 2023-03-20 16:00:09 +01:00
5e8b1f37c6 feat(radio): move to ful to evade block, remove tor 2023-03-20 13:14:02 +01:00
7e86718b0f feat(radio): torify lyrikline 2023-03-20 12:25:43 +01:00
97ae9ec0bf feat(klem): add emojai script 2023-03-20 12:24:06 +01:00
a342aa687c feat(ssh): add kabsa key to agent 2023-03-20 12:23:49 +01:00
0a92d58d00 feat(klem): notify on success 2023-03-20 12:23:36 +01:00
0955b68054 feat(weechat): fix matrix server in sidebar 2023-03-20 12:23:25 +01:00
87ab995b82 feat(ssh): use gpg agent for agent 2023-03-12 18:26:58 +01:00
743a0f3239 chore: update secrets 2023-03-12 18:26:45 +01:00
fdaa98886e feat(manakish): add autorandr for dock switch 2023-03-12 18:26:07 +01:00
e07b053f6e fix(weechat): do not set passwords 2023-03-12 18:24:56 +01:00
ef08f4decd fix(streams): talk -> text 2023-03-11 08:27:20 +01:00
e6fb052ab8 chore: update 2023-03-11 06:36:29 +01:00
11f1be099e feat: gpg ssh key 2023-03-11 06:36:22 +01:00
dc267fc464 feat(manakish): sound via dock 2023-03-11 06:35:52 +01:00
24b552b966 feat(streams): add al jazeera 2023-03-10 20:33:11 +01:00
bc27b8bc64 fix(i3): correctly call dmenu-randr 2023-03-08 17:40:04 +01:00
58ceef04d6 feat(notmuch, mbsync): add fully qualified paths to dependent programs 2023-03-07 13:04:07 +01:00
bf62f74bc1 fix(notmuch): set name and email so it stops complaining 2023-03-06 22:30:09 +01:00
cbeffcdadd feat: install language servers 2023-03-06 22:07:57 +01:00
8f4019443d feat(neovim): hello lsp 2023-03-06 22:01:58 +01:00
eba8788547 fix(email): backup correctly
if mbsync is enabled for a homemanager account, aerc wants to use the
  maildir, which is stupid
2023-03-06 22:01:34 +01:00
3ebf717112 feat: backup email 2023-03-06 14:50:30 +01:00
4e6c8e13af feat(zsh): show hostname if in ssh 2023-03-06 11:44:38 +01:00
18ec46c773 feat(flix): update 2023-03-06 11:44:24 +01:00
9d61f006a6 feat: get krebs stuff from stockholm flake 2023-02-28 21:32:55 +01:00
d2fc37a70f fix(ttspaste): use espeak 2023-02-28 20:23:53 +01:00
e55a99f53d fix(retiolum): secret permissions 2023-02-28 17:13:12 +01:00
9d096ab4c4 fix(vdirsyncer): get password correctly 2023-02-28 17:13:12 +01:00
ed02741ee0 fix(hledger): install 2023-02-25 13:23:44 +01:00
cbd2b8edc2 fix: ci 2023-02-25 11:49:37 +01:00
bfd00e9a3b feat: bye krops 2023-02-25 09:19:11 +01:00
ad15c08c05 chore: update 2023-02-25 09:18:12 +01:00
749e783056 fix: do not build packages for mac 2023-02-25 08:57:50 +01:00
cc37e7ab00 chore: update secrets 2023-02-25 08:33:41 +01:00
0ba9124baa fix(moodle-dl): create config correctly 2023-02-25 08:32:38 +01:00
b3c996c154 feat(picom): make faster 2023-02-25 08:32:13 +01:00
b1743f031c feat: move ./modules to flake outputs 2023-02-24 23:49:00 +01:00
c9af430f31 feat: fix secrets permissions, move ./packages to flake outputs 2023-02-24 23:10:56 +01:00
c51db2b53c feat: convert inputs to flakes 2023-02-23 16:53:53 +01:00
b98ac4ebce chore: remove old ci.nix 2023-02-23 15:14:23 +01:00
d03c6bb0de feat: convert to flake
feat(zaatar): convert to flake

feat(tahina, tabula): convert to flake

feat(makanek): convert to flake

feat(manakish, zaatar): convert to flake

feat(ci): build flake systems

fix: ci build

feat: secrets via submodule

foo

foo

foo
2023-02-23 15:12:53 +01:00
ba27e98297 fix(email): show new stuff in info bar and remove gmail accounts 2023-02-22 09:37:30 +01:00
08cd4b0202 fix(aerc): hu accounts, khard, signatures 2023-02-21 22:29:41 +01:00
708e2ab1f4 feat: neomutt -> aerc 2023-02-21 12:07:06 +01:00
2e482d3fec feat(urlwatch): tatort 2023-02-19 15:05:16 +01:00
4fae6d1ed0 fix(mpv): support only pulse 2023-02-19 11:52:00 +01:00
9a80eb84d4 chore: update 2023-02-16 14:43:08 +01:00
f7cb9b8957 feat(weechat): join #hsmr-moin 2023-02-16 14:39:03 +01:00
e7c050c1c4 feat(moinbot): move to #hsmr-moin 2023-02-16 14:32:42 +01:00
c6ab8b4eb7 feat(ssh): add one more fysiweb host 2023-02-16 12:10:52 +01:00
7d0a802d30 feat(zaatar): allow ful to backup 2023-02-16 08:52:54 +01:00
eec6cf1bf9 feat(zaatar): tuna -> mpd, disable tuna 2023-02-16 08:52:44 +01:00
0698624eb8 feat(ful): add matomo and backup 2023-02-16 08:46:23 +01:00
d0eb69229d feat(picom): make animations faster, rename module 2023-02-13 23:19:44 +01:00
0f88954989 fix(ci): add grafana secret to makanek 2023-02-09 09:48:36 +01:00
7c349f1383 feat(grafana): provision 2023-02-08 09:26:36 +01:00
0eadbf08df feat: nemo with correct terminal setting 2023-02-07 22:30:42 +01:00
72100329b1 feat(compton): fade + inactiveOpacity 2023-02-07 22:30:16 +01:00
bf7b490372 feat: udiskie 2023-02-07 22:26:59 +01:00
dd4083aec5 fix(fonts): update hash, reject woff 2023-02-06 21:39:38 +01:00
6edd1c0439 feat: reenable flameshot-once 2023-02-06 21:23:33 +01:00
467c80a239 feat(streams): add more todo 2023-02-05 11:43:10 +01:00
b100ea7b28 chore: update and comment flameshot-once 2023-02-03 13:36:40 +01:00
3cdc468e31 feat(streams): add more todo 2023-02-03 11:05:26 +01:00
2d19ba7249 feat: build laptops from stable 2023-01-31 11:03:37 +01:00
7af32a0ad3 fix(ci): tt-rss -> miniflux 2023-01-31 10:24:25 +01:00
0e75118416 feat(streams): remove unicode from playlist names 2023-01-30 10:03:07 +01:00
139fcae7a0 Merge branch 'update_flake_lock_action' 2023-01-29 19:21:00 +01:00
bcfd5d73be feat: calendar add more planets 2023-01-29 19:20:51 +01:00
bcf057e871 fix(miniflux): rename password on server 2023-01-29 19:04:01 +01:00
fad2d0629d feat(mastodon-bot): disable 2023-01-29 18:51:05 +01:00
27cc5766ee fix(miniflux): rename password 2023-01-29 18:43:03 +01:00
813072e47c fix(miniflux): rename password 2023-01-29 17:51:32 +01:00
github-actions[bot]
bcc355f822 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/9e565f0d9d41c19a94f55af205c328ec5177fc0a' (2023-01-07)
  → 'github:nix-community/home-manager/08a778d80308353f4f65c9dcd3790b5da02d6306' (2023-01-28)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/2dea8991d89b9f1e78d874945f78ca15f6954289' (2023-01-06)
  → 'github:NixOS/nixpkgs/ce20e9ebe1903ea2ba1ab006ec63093020c761cb' (2023-01-28)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/a518c77148585023ff56022f09c4b2c418a51ef5' (2023-01-05)
  → 'github:NixOS/nixpkgs/9b97ad7b4330aacda9b2343396eb3df8a853b4fc' (2023-01-25)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs%2fheads%2fmaster&rev=33ac7efb37d36e1939b62a93494570bce1be4dac' (2023-01-07)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs%2fheads%2fmaster&rev=a396ad8139cb934e36f0bf0bde84786b2704c6bd' (2023-01-26)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=895440aab0d360bd805338fa41874282a3209df0' (2023-01-07)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=e01e296e5d34aa74a4d6edf8203b3dd015a94112' (2023-01-28)
2023-01-29 17:51:13 +01:00
d8b931af7c feat: miniflux 2023-01-29 17:46:31 +01:00
4c8d2a051d feat(backup): also backup notes 2023-01-17 15:50:12 +01:00
2906848f92 feat(backup): also backup sd card directories 2023-01-17 15:37:56 +01:00
c2a78a88bd feat: git-crypt 2023-01-12 10:20:07 +01:00
63bf7ddeb0 feat(firefox): declarative 2023-01-12 10:19:56 +01:00
github-actions[bot]
19e4e76e6f flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/dd99675ee81fef051809bc87d67eb07f5ba022e8' (2022-12-29)
  → 'github:nix-community/home-manager/9e565f0d9d41c19a94f55af205c328ec5177fc0a' (2023-01-07)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/913a47cd064cc06440ea84e5e0452039a85781f0' (2022-12-29)
  → 'github:NixOS/nixpkgs/2dea8991d89b9f1e78d874945f78ca15f6954289' (2023-01-06)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/677ed08a50931e38382dbef01cba08a8f7eac8f6' (2022-12-29)
  → 'github:NixOS/nixpkgs/a518c77148585023ff56022f09c4b2c418a51ef5' (2023-01-05)
• Updated input 'scripts':
    'github:kmein/scripts/84ad80348294e9423996b52a4b112700ae5d3176' (2022-11-23)
  → 'github:kmein/scripts/2670c7eed566f195f833a25e6ccc6b368fe18af5' (2023-01-07)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=de0226995d553e4a70170ce59483a6d71f41932d' (2022-12-30)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=895440aab0d360bd805338fa41874282a3209df0' (2023-01-07)
2023-01-09 10:29:24 +01:00
79e9ab38a8 fix: use retiolum keys from password store 2023-01-08 00:16:30 +01:00
318687f5cf fix(radio): radio-news.r has moved so we have to update the retiolum hosts 2023-01-08 00:06:16 +01:00
c5a297cd7d feat: rusty alarm 2023-01-07 09:58:35 +01:00
6f6100d752 feat: return to pulseaudio 2023-01-07 08:30:57 +01:00
049dadd704 fix(nix): do not use flaky prism.r cache 2023-01-06 17:02:02 +01:00
0a4fa2d16f feat: pipewire 2023-01-06 15:32:23 +01:00
f25c59178c manakish: new sd card 2023-01-06 12:28:12 +01:00
88b6802dae fix(ci): add missing secret 2023-01-06 12:27:47 +01:00
5f88e7287b fix: pandoc man hash 2023-01-06 09:47:12 +01:00
abb0be6a17 feat: bye brave, hello firefox 2023-01-06 09:08:42 +01:00
fec8479e90 fix(tahina): install git for krops to work 2023-01-04 20:43:48 +01:00
190a46abcd feat(nixify): use packages instead of buildInputs 2023-01-04 20:43:38 +01:00
0a4fccd582 feat(mail): add klassphil email 2023-01-04 20:43:26 +01:00
232b6059df fix(mastodon-bot): restart on failure 2023-01-02 09:10:49 +01:00
eb17c7fdd9 fix: post on mastodon from both laptops 2023-01-01 14:53:47 +01:00
1aa7b78b4a fix: use my keys for @Mic92 retiolum module 2022-12-31 18:54:46 +01:00
de6408f28f feat: use @Mic92 retiolum module
the old one did this:

building '/nix/store/gqvr8gl8ayj9kgjnfr23ax0xpc3rnc34-unit-tinc.retiolum.service.drv'...
error: executing '/nix/store/4xw8n979xpivdc46a9ndcvyhwgif00hz-bash-5.1-p16/bin/bash': Argument list too long
error: builder for '/nix/store/gqvr8gl8ayj9kgjnfr23ax0xpc3rnc34-unit-tinc.retiolum.service.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/v2ld4847xyb49v7wjb3fvf6lkg2j755b-system-units.drv' failed to build
error: 1 dependencies of derivation '/nix/store/bbl9qidw9z0gz56z7yrhfkxsawk5qi7x-etc.drv' failed to build
2022-12-31 10:40:41 +01:00
aeed540089 feat: no proprietary pdf readers please, also no goldendict
they both want me to build qtwebkit
2022-12-31 08:10:08 +01:00
d769b79ac3 feat: add mastodon poster 2022-12-31 07:23:34 +01:00
126dfada4b feat(atuin): restart on failure 2022-12-31 07:23:01 +01:00
github-actions[bot]
2793d2ca0e flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/eb3598cf44aa10f2a16fe38488a102c0f474d766' (2022-12-03)
  → 'github:nix-community/home-manager/d7eee202e597bc7789498a8664082cf0ffedaa8f' (2022-12-23)
• Updated input 'nix-writers':
    'git+https://cgit.krebsco.de/nix-writers?ref=refs%2fheads%2fmaster&rev=f65c77bdcc58be2081a0ffbda849289c5191b5e8' (2022-11-29)
  → 'git+https://cgit.krebsco.de/nix-writers?ref=refs%2fheads%2fmaster&rev=0c8de150426476b5287cf2787bbd85263691a802' (2022-12-12)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/660e7737851506374da39c0fa550c202c824a17c' (2022-12-02)
  → 'github:NixOS/nixpkgs/9898811c658d39b2692d0ab744377e02fd85d08b' (2022-12-22)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
  → 'github:NixOS/nixpkgs/652e92b8064949a11bc193b90b74cb727f2a1405' (2022-12-22)
• Updated input 'retiolum':
    'github:krebs/retiolum/cada994815864d4cc1edb9d76df74beafc496481' (2022-12-01)
  → 'github:krebs/retiolum/20ad3544d80690791bed8a639d08848924a7aaa9' (2022-12-19)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=3884243448869bdf09f6434b385e532c7c26ae88' (2022-12-12)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=6e13334579f16940edb1182662d9ac58e57aba0e' (2022-12-25)
2022-12-29 23:43:06 +01:00
b536f2af34 feat(hu-vpn): remove openvpn, do not split tunnel 2022-12-29 23:37:29 +01:00
41d2a32585 feat: rink, deno 2022-12-29 23:37:13 +01:00
94f2c18432 feat(autocutsel): disable because i dont want to paste everything i select 2022-12-18 13:51:22 +01:00
a2e98794cb feat(alacritty): visual bell 2022-12-17 10:03:15 +01:00
547d59ee2c feat: reenable ssh agent, gpg did not work 2022-12-17 10:03:00 +01:00
bc8a035451 feat(gpg): use for ssh, increase ttl 2022-12-13 14:38:14 +01:00
36ce5143b4 fix(radio-news): only give one hour of stockholm history 2022-12-13 14:26:37 +01:00
e4514389f1 feat(color): use papercolor 2022-12-13 14:12:40 +01:00
99bc72eb29 feat(tarot): use scriptFile option 2022-12-13 09:36:59 +01:00
7aee4b566c feat(manakish): welcome docking station 2022-12-07 21:05:21 +01:00
42cff2dc92 chore: poetry is broken 2022-12-05 10:35:07 +01:00
2576637960 Merge branch 'update_flake_lock_action' 2022-12-05 10:20:43 +01:00
github-actions[bot]
d83f43a141 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/478610aa37c8339eacabfa03f07dacf5574edd47' (2022-11-30)
  → 'github:nix-community/home-manager/eb3598cf44aa10f2a16fe38488a102c0f474d766' (2022-12-03)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/596a8e828c5dfa504f91918d0fa4152db3ab5502' (2022-11-30)
  → 'github:NixOS/nixpkgs/660e7737851506374da39c0fa550c202c824a17c' (2022-12-02)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27)
  → 'github:NixOS/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
• Updated input 'retiolum':
    'github:krebs/retiolum/4679cdd5f0851f22518e7011144f22431e6551c0' (2022-12-01)
  → 'github:krebs/retiolum/cada994815864d4cc1edb9d76df74beafc496481' (2022-12-01)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=81b5682c5ff1e36613f844a874e09b897ee13d3e' (2022-11-29)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=645c3564f75589531abcf17fd3c3f920d93a394a' (2022-12-02)
2022-12-05 10:07:08 +01:00
218195a781 fix(notemenu) 2022-12-05 10:06:40 +01:00
bb8940c9e5 feat(nix): auto gc for saving space 2022-12-03 11:34:40 +01:00
e6623e8b4d feat(zaatar): backup sql backups 2022-12-03 08:51:11 +01:00
b5514150ab Revert "feat(alertmanager): send text email as well"
This reverts commit 3b1af791c9.
2022-12-03 08:45:40 +01:00
2b2514b2eb feat(nextcloud): i do not use server side encryption 2022-12-03 08:36:29 +01:00
3b1af791c9 feat(alertmanager): send text email as well 2022-12-03 08:31:45 +01:00
f3e14ffc9e feat(alertmanager): send telegram and email notifications 2022-12-03 08:31:45 +01:00
f04ca9d1de feat(postgresql): enable backup 2022-12-03 08:31:45 +01:00
72b48e90aa fix(notemenu): open notes correctly 2022-12-03 07:15:03 +01:00
bd065e7888 feat(alertmanager): send telegram and email with more info 2022-12-02 17:32:40 +01:00
45644518bb feat(urlwatch): remove arnshaugk due to spam 2022-12-01 20:52:37 +01:00
77ddd1d02f feat(urlwatch): remove tatort due to spam 2022-12-01 20:52:15 +01:00
0f5e0e8d6f chore: update retiolum 2022-12-01 20:00:05 +01:00
de066361b7 feat(prometheus): make reachable via http 2022-12-01 19:58:59 +01:00
ba3a139f8e feat(tt-rss): disable registration 2022-12-01 18:25:43 +01:00
91fa6faeaf feat(nextcloud): set email via module 2022-12-01 18:25:33 +01:00
e95546ef8a feat(nextcloud): upgrade 2022-12-01 18:25:16 +01:00
b9623e3d57 feat(alertmanager): access via http 2022-12-01 18:25:03 +01:00
73929c1963 feat(newsboat): star flag s 2022-12-01 18:24:19 +01:00
3197a5a232 feat(prometheus): use node exporter firewall option 2022-12-01 18:24:05 +01:00
6a605633ae chore: update retiolum 2022-12-01 17:07:44 +01:00
52376128a5 feat(alertmanager): report via email like a professional, allow http access 2022-12-01 17:07:06 +01:00
4a5bc2d89d feat: update to 22.11 2022-12-01 17:07:06 +01:00
3ec22d6ef0 feat(journald): save space on journal 2022-12-01 17:04:12 +01:00
3c86532a5d feat(nextcloud): try to log stuff 2022-12-01 13:37:46 +01:00
a34b4a8262 feat: use owickstrom colours 2022-11-30 12:39:45 +01:00
3102d6f56c fix(alacritty): use correct config path 2022-11-30 11:44:39 +01:00
a2b65034bf fix(nextcloud): do not sync paychecks anymore 2022-11-30 11:23:07 +01:00
90550dc18b feat: atuin 2022-11-30 11:21:38 +01:00
03d40a488b chore: permit insecure qtwebkit 2022-11-30 09:19:30 +01:00
74191a27ee Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-11-30 07:42:47 +01:00
a33db562c4 feat(alacritty): make faster 2022-11-29 22:51:09 +01:00
93cc209e52 feat: clipmenu 2022-11-29 22:50:49 +01:00
d1b5b0c25c feat(newsboat): starred tt-rss 2022-11-29 13:58:42 +01:00
ff5bc035c0 feat(tt-rss): correct name, add secret to ci 2022-11-29 13:55:56 +01:00
e06e7bbe0d feat(i3): more github stuff is important 2022-11-29 12:00:35 +01:00
8786bfad24 feat(moodle-dl): borsfaye 2022-11-28 12:54:30 +01:00
github-actions[bot]
10949f7746 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'home-manager':
    'github:nix-community/home-manager/722e8d65d3aba6f527100cc2d1539e4ca04d066f' (2022-10-31)
  → 'github:nix-community/home-manager/e999dfe7cba2e1fd59ab135e7496545bd4f82b76' (2022-11-27)
• Updated input 'home-manager/utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/26eb67abc9a7370a51fcb86ece18eaf19ae9207f' (2022-10-30)
  → 'github:NixOS/nixpkgs/695b3515251873e0a7e2021add4bba643c56cde3' (2022-11-25)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/412b9917cea092f3d39f9cd5dead4effd5bc4053' (2022-10-30)
  → 'github:NixOS/nixpkgs/5dc7114b7b256d217fe7752f1614be2514e61bb8' (2022-11-25)
• Updated input 'scripts':
    'github:kmein/scripts/66b2068d548d3418c81dd093bba3f80248c68196' (2022-10-12)
  → 'github:kmein/scripts/84ad80348294e9423996b52a4b112700ae5d3176' (2022-11-23)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=a83dec755ca2753705254f90346e4441d2f25c7c' (2022-10-31)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=dae12b6893a1d28e8bcb1fe3fb9ee8757bbfbed4' (2022-11-24)
2022-11-27 00:55:59 +00:00
12e3529df8 fix(celan): send at random time 2022-11-26 11:35:58 +01:00
4b954a7e83 fix(tabula): networking, sound 2022-11-25 11:27:43 +01:00
ce99920054 feat: celan telegram bot 2022-11-25 11:27:16 +01:00
c3c0792d50 feat: init tabula 2022-11-25 09:16:02 +01:00
851a9edc4d chore: update retiolum 2022-11-25 09:15:42 +01:00
e69668606e feat(streams): rename радио русский берлин 2022-11-22 19:31:21 +01:00
52d73abe06 feat: fq 2022-11-22 11:48:15 +01:00
bf899d0bde feat(i3): envs.sh 2022-11-22 11:48:09 +01:00
dcf2fa523b feat(tt-rss): replace freshrss 2022-11-16 11:21:22 +01:00
cae4423fb3 feat(freshrss): run from unstable, use with newsboat 2022-11-16 10:03:55 +01:00
25b37c2b01 feat(freshrss): host on makanek 2022-11-14 23:07:19 +01:00
a4e0e25465 feat: add termdown 2022-11-09 11:07:58 +01:00
4fa3a3e5fc feat(xkb): add hebrew 2022-11-09 11:07:44 +01:00
4950442f8b feat(i3): highlight borders blue 2022-11-08 20:31:16 +01:00
7252826719 feat(i3): no gaps 2022-11-08 20:31:04 +01:00
a22acd2073 feat(i3): no no startup id 2022-11-08 20:30:53 +01:00
9e85a12084 fix(i3): remove title bars 2022-11-08 20:30:28 +01:00
600d8a5f7d fix: temporarily disable trådfri 2022-11-08 06:41:27 +01:00
857518578a feat(fzf): do not ignore vcs and follow links 2022-11-07 15:44:18 +01:00
b1fcbcaa96 feat(xkb): add coptic, avestan, devanagari 2022-11-07 15:42:40 +01:00
005e193f56 fix(menstruation): update 2022-11-07 11:29:10 +01:00
6e5ff9214e chore: update 2022-11-01 09:45:06 +01:00
85f3722ba5 feat(nextcloud): sync fysi documents 2022-11-01 07:55:06 +01:00
797d091643 fix(tlg-wotd) 2022-10-28 07:45:40 +02:00
b1544906aa feat(moodle-dl): WS22 course 2022-10-25 07:39:19 +02:00
c886511c99 feat: json2csv script 2022-10-19 08:56:47 +02:00
7388395908 feat(graph.r): update to show pois on map 2022-10-19 08:56:39 +02:00
bf42e37daa Merge pull request #27 from kmein/update_flake_lock_action
flake.lock: Update
2022-10-18 20:42:11 +02:00
035fa9e29d chore: update scripts 2022-10-18 10:11:18 +02:00
cc28b894d1 fix(menstruation): update 2022-10-18 10:10:57 +02:00
c1c1665e50 feat(moinbot): randomize greeting 2022-10-18 10:10:57 +02:00
2dca2596cd feat(onomap): allow multiple names 2022-10-18 10:10:56 +02:00
github-actions[bot]
bede997e7d flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/a7f0cc2d7b271b4a5df9b9e351d556c172f7e903' (2022-09-30)
  → 'github:nix-community/home-manager/2ecb3ea990cf737cfb42d8cd805fa86347c1afaf' (2022-10-15)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/9cac45850280978a21a3eb67b15a18f34cbffa2d' (2022-10-01)
  → 'github:NixOS/nixpkgs/e06bd4b64bbfda91d74f13cb5eca89485d47528f' (2022-10-12)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/ae1dc133ea5f1538d035af41e5ddbc2ebcb67b90' (2022-09-22)
  → 'github:NixOS/nixpkgs/4428e23312933a196724da2df7ab78eb5e67a88e' (2022-10-14)
• Updated input 'retiolum':
    'github:krebs/retiolum/86208b5a747d7aa661240b2d5c2f229f2ed76959' (2022-09-28)
  → 'github:krebs/retiolum/289712a3becfec77dab8963d450b2afe616569e0' (2022-10-12)
• Updated input 'scripts':
    'github:kmein/scripts/86c71080945e5b637d9dde5c3d944d600035e2eb' (2022-10-09)
  → 'github:kmein/scripts/66b2068d548d3418c81dd093bba3f80248c68196' (2022-10-12)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=8f929b04b3de012a9c72306786f076b78aa9f98c' (2022-09-27)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=0d32cceb996dc3b91342ce9d0aa2df1b234522fa' (2022-10-12)
2022-10-16 01:15:33 +00:00
0082602131 feat(smyth): only once per day 2022-10-14 15:20:19 +02:00
8ffeddb46b chore(onomap): remove unused variable 2022-10-09 07:14:36 +02:00
c06e37f40a feat(onomap): allow multiple names 2022-10-07 02:23:54 +02:00
8d36a77405 fix: downgrade unstable because i dont want to damage my display
https://lore.kernel.org/all/YzwooNdMECzuI5+h@intel.com/
2022-10-06 11:07:20 +02:00
1219517d62 fix(vimPlugins): name -> pname 2022-10-06 11:07:20 +02:00
786d1df781 fix: pkgconfig -> pkg-config 2022-10-06 10:53:11 +02:00
c49859900a fix: utillinux -> util-linux 2022-10-06 10:37:21 +02:00
f9ce538975 fix: posix_man_pages -> man-pages-posix 2022-10-06 10:32:31 +02:00
7d6e7ae1a2 fix: xdg_utils -> xdg-utils 2022-10-06 10:32:30 +02:00
176958cd75 fix: iproute -> iproute2 2022-10-06 10:31:26 +02:00
816c21d7de fix: gnome3 -> gnome 2022-10-06 09:41:25 +02:00
3b1f4799e0 fix(hesychius): update scripts 2022-10-06 08:17:14 +02:00
c52df45b4f fix(ful): disable systemd-networkd-wait-online 2022-10-06 07:17:48 +02:00
84f83cb6ac Merge pull request #26 from kmein/update_flake_lock_action
flake.lock: Update
2022-10-05 22:49:37 +02:00
652b7d4852 fix(rofi-pass): generate passwords, correct default user 2022-10-05 17:09:34 +02:00
e73c139d69 feat(rofi-pass): allow insertion 2022-10-05 17:08:58 +02:00
549282140f fix(rofi-pass): include via home-manager
also fix https://github.com/carnager/rofi-pass/issues/226
2022-10-05 16:50:27 +02:00
f3bb52e820 feat: we may want to eat fast food on tuesdays 2022-10-04 10:59:17 +02:00
717672e86e feat: calendars script 2022-10-03 19:14:21 +02:00
1cee1c06f7 feat(moodle-dl): WS22 course 2022-10-03 19:14:11 +02:00
4d5989aa5b feat(neomutt): alias for faster access of single accounts 2022-10-03 19:13:57 +02:00
01bdeb05b7 kabsa: new SD card 2022-10-02 09:59:10 +02:00
5c422e74e8 feat: new DR streams, playlist for Record 2022-10-02 09:58:59 +02:00
github-actions[bot]
be3795e957 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/de3758e31a3a1bc79d569f5deb5dac39791bf9b6' (2022-09-23)
  → 'github:nix-community/home-manager/a7f0cc2d7b271b4a5df9b9e351d556c172f7e903' (2022-09-30)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/7e27b838cd7ac90fed03d0d5a8487848c4b0b6d2' (2022-09-23)
  → 'github:NixOS/nixpkgs/9cac45850280978a21a3eb67b15a18f34cbffa2d' (2022-10-01)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/ae1dc133ea5f1538d035af41e5ddbc2ebcb67b90' (2022-09-22)
  → 'github:NixOS/nixpkgs/10ecda252ce1b3b1d6403caeadbcc8f30d5ab796' (2022-09-30)
• Updated input 'recht':
    'github:kmein/recht/d551afed23122bb3106e59eb2274394ec5555048' (2021-04-28)
  → 'github:kmein/recht/dc2cb407052a53965e6678fd84f0d887f887c11c' (2022-09-28)
• Updated input 'retiolum':
    'github:krebs/retiolum/8d9b86a0ce503588bb34ae8676fdbcb0e4014119' (2022-09-24)
  → 'github:krebs/retiolum/86208b5a747d7aa661240b2d5c2f229f2ed76959' (2022-09-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=55957c6d6adb51d2079c117c1e7309c60ee0fe0f' (2022-09-19)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=8f929b04b3de012a9c72306786f076b78aa9f98c' (2022-09-27)
2022-10-02 01:16:36 +00:00
6063f4c90b feat(ssh): use fysiweb identity for ip login on dev1 2022-09-28 15:54:42 +02:00
7c4557331f feat(newsboat): hooktube is no more 2022-09-28 15:54:21 +02:00
8a7e4386fb fix(newsboat): call link handler 2022-09-28 14:15:39 +02:00
61ab528d56 feat: screencap script 2022-09-28 09:34:17 +02:00
032810109c fix(ci): add mega password 2022-09-27 22:28:58 +02:00
6b0bb6a806 feat(cloud): add script for browsing mega 2022-09-27 22:07:03 +02:00
7ce64d461c fix(notemenu): do not show hidden files 2022-09-27 20:40:24 +02:00
51afd41254 fix(notement): correctly handle files with spaces 2022-09-27 19:36:22 +02:00
eb4fa1b9bd feat(nextcloud): disable gui client 2022-09-27 19:19:14 +02:00
ac7a4b2aa5 feat(nextcloud): sync nextcloud notes periodically 2022-09-27 19:18:42 +02:00
89a4b13b2d feat: bye ncdu, hi gdu 2022-09-27 19:17:30 +02:00
f5da2dffd8 feat(newsboat): add odysee to linkhandler 2022-09-27 09:47:50 +02:00
cdf42df7c1 feat(bin): add tuesday script 2022-09-26 09:40:12 +02:00
3ccf0cfe9a feat(bin): add prospekte script 2022-09-26 09:39:59 +02:00
83632cbd9c feat(ful): monitoring 2022-09-26 09:30:28 +02:00
github-actions[bot]
092879a425 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/bcc68429a50c4ac051920c72c60e417202c19d79' (2022-09-22)
  → 'github:NixOS/nixpkgs/7e27b838cd7ac90fed03d0d5a8487848c4b0b6d2' (2022-09-23)
• Updated input 'retiolum':
    'github:krebs/retiolum/c4d6b07be29b3b9267027ed25792a2cb350459d5' (2022-08-16)
  → 'github:krebs/retiolum/8d9b86a0ce503588bb34ae8676fdbcb0e4014119' (2022-09-24)
2022-09-25 01:04:02 +00:00
c6a45b421b feat: update 2022-09-23 23:31:27 +02:00
b5addef848 fix: dont get scripts from overlay 2022-09-23 23:31:14 +02:00
e2cf761aea feat: more transits 2022-09-23 09:54:58 +02:00
868dc8a4aa feat(moodle-dl): disable for borsfaye 2022-09-23 09:32:29 +02:00
dfd4bb0ca8 chore: get also otf from fonts 2022-09-23 09:32:29 +02:00
3e03688c81 feat: reenable transits 2022-09-23 09:32:21 +02:00
3136002449 feat: wrap jsesh 2022-09-19 22:04:52 +02:00
4cbd2fee7d WIP(fonts): install egyptological fonts 2022-09-19 22:04:37 +02:00
565c73bd05 feat(fonts): add emojifont to terminal 2022-09-19 07:29:47 +02:00
e5f933977c feat(unicodmenu): update to unicode 15 2022-09-19 07:29:12 +02:00
736b289643 feat(rofi): light theme 2022-09-19 07:28:57 +02:00
e0e0dd9e34 feat(fonts): cardo 2022-09-16 09:27:47 +02:00
1e2613b838 feat(newsboat): reload in parallel 2022-09-15 12:22:38 +02:00
f41ddb654a we dont need no procrastination 2022-09-13 21:01:32 +02:00
41ecca8411 feat(weechat): authenticate @ news.r 2022-09-13 21:01:16 +02:00
a80f4d866a chore: update 2022-09-13 20:30:07 +02:00
f56e9aa37b feat(todo): add procrastination 2022-09-12 12:36:14 +02:00
822b0df4b8 feat(i3): dock i3bar 2022-09-10 21:51:16 +02:00
c16123dc8d feat: automate entering ssh passphrase 2022-09-08 12:46:44 +02:00
de34cb6d66 fix: downgrade nixpkgs unstable 2022-09-06 08:54:38 +02:00
3d6b34572d fix(scanned) 2022-09-05 15:38:59 +02:00
ce0869c64b fix(rofi-pass): user is in login field 2022-09-05 15:38:49 +02:00
a589332b42 feat(urlwatch): 2022 c3 2022-09-02 15:13:05 +02:00
5a6b32e0b4 Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-08-31 21:13:28 +02:00
6cf3072609 fix(i3status-rust): offline behaviour 2022-08-30 19:33:07 +02:00
4fe122f06c feat(telegram-bots): start at random time 2022-08-30 19:32:49 +02:00
4fa6a62966 feat: sxiv -> nsxiv 2022-08-30 19:32:27 +02:00
github-actions[bot]
dbdc876375 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/0160a0cef076294127f8cc0750019410ab94370d' (2022-08-22)
  → 'github:nix-community/home-manager/d89bdff445eadff03fe414e9c30486bc8166b72b' (2022-08-27)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/52527082ea267fe486f0648582d57c85486b2031' (2022-08-22)
  → 'github:NixOS/nixpkgs/f11e12ac6af528c1ba12426ce83cee26f21ceafd' (2022-08-26)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/c4a0efdd5a728e20791b8d8d2f26f90ac228ee8d' (2022-08-12)
  → 'github:NixOS/nixpkgs/f3d0897be466aa09a37f6bf59e62c360c3f9a6cc' (2022-08-25)
2022-08-28 01:01:59 +00:00
eb79f88c59 feat(i3status-rust): show number of hot weechat buffers 2022-08-23 21:44:39 +02:00
8384363dcb fix: downgrade nixpkgs unstable
coreutils gets built manually and electrum fails otherwise
2022-08-23 20:27:41 +02:00
797e53db7a feat: nom nom nom 2022-08-23 19:02:34 +02:00
426a82dff9 chore: update 2022-08-23 15:02:55 +02:00
7264fce03c feat(telegram-bots): add smyth 2022-08-23 14:47:24 +02:00
b332784140 fix(ci): add shared secret 2022-08-22 10:36:32 +02:00
ed51858a67 feat(i3status-rust): time interval 1s 2022-08-22 10:30:29 +02:00
ba13cd24a1 feat(fonts): noto sans cjk 2022-08-22 10:30:15 +02:00
8331d11a50 feat(i3status-rust): make email state depend on which account the unseen messages are 2022-08-22 10:30:02 +02:00
79e14bfbc2 feat(i3status-rust): todo empty if none due 2022-08-22 10:29:04 +02:00
eed0d0b2af feat(i3status-rust): add github block 2022-08-22 10:28:48 +02:00
5930340a05 feat(i3status-rust): hide todo and vpn when empty 2022-08-22 10:28:06 +02:00
a5f6a46262 feat(neomutt): set dark/light friendly subject colour 2022-08-22 10:27:33 +02:00
4eea890efc fix(i3-status-rust): newsboat updating icon 2022-08-21 10:09:19 +02:00
b5232c1d81 feat(i3status-rust): check all email accounts 2022-08-21 02:39:07 +02:00
e1b1458bb0 feat(i3status-rust): simplify newsboat display 2022-08-21 02:38:48 +02:00
1c05cccac0 feat(i3-status-rust): query IMAP 2022-08-21 02:22:43 +02:00
0f80e80d1f feat(newsboat): show watch later count in bar 2022-08-21 01:04:49 +02:00
06baeb8f1b feat(newsboat): simpler formatting 2022-08-21 01:04:26 +02:00
3b08c19e02 feat(unicodmenu): uniq and correct order 2022-08-21 01:03:24 +02:00
5ad8f2843d chore(i3-status-rust): clean up 2022-08-21 01:02:05 +02:00
af3c018cc1 feat(fonts): hello noto 2022-08-21 01:01:47 +02:00
2493206ff9 feat(i3status-rust): use fontawesome 2022-08-21 01:01:08 +02:00
985ff45e17 feat(i3status-rust): sum todos 2022-08-19 16:42:17 +02:00
ee373fcf3d feat(todo): warn when something is due today 2022-08-19 14:22:17 +02:00
04993972ce fix(hora): include last day of period for reports 2022-08-19 14:21:57 +02:00
972b810d23 feat(devanagari): update and support daṇḍa 2022-08-19 13:27:54 +02:00
34576b51bc feat(i3status-rust): reorder 2022-08-19 11:58:21 +02:00
5c1f29f2e7 feat(i3status-rust): lil jq tweaking 2022-08-19 11:58:21 +02:00
bce13c9306 feat(i3status-rust): colour datetime depending on impending calendar events 2022-08-19 11:27:43 +02:00
b9a3ed40d6 feat(i3status-rust): shut up if no VPN 2022-08-19 11:27:28 +02:00
9a11a00e4f feat(i3status-rust): add todo count 2022-08-19 11:27:17 +02:00
5fa7957978 feat(i3status-rust): newsboat via json 2022-08-19 11:26:56 +02:00
38946d1c20 feat(i3status-rust): distinguish info colour 2022-08-19 11:26:27 +02:00
fe07e13848 feat: rofipass
for automatic OTP stuff
2022-08-18 18:47:25 +02:00
d06a27431c feat(i3): simplify bar 2022-08-18 18:47:12 +02:00
e3a6b9ee03 feat(fotns): change emoji font 2022-08-18 18:46:58 +02:00
9a2f03beaf feat(hora): filli-report 2022-08-18 18:46:43 +02:00
5a247d68a0 fix(heuretes): ^...$ 2022-08-17 08:33:09 +02:00
88a2ace2e0 chore: update retiolum 2022-08-17 08:32:55 +02:00
ce17c069e5 feat: heuretes 2022-08-16 21:17:30 +02:00
4c730f9730 feat: rmlint 2022-08-16 21:17:24 +02:00
39847fc8fe neomutt: add @flxai docx viewer 2022-08-16 21:17:14 +02:00
b07d74c72a Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-08-15 16:05:56 +02:00
460dcb5101 feat: stackoverflow script 2022-08-15 16:05:36 +02:00
github-actions[bot]
03b565e8ef flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249' (2022-07-04)
  → 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07)
• Updated input 'home-manager':
    'github:nix-community/home-manager/d8d9ff0b2df77defa10375c6665b51f0251c34d6' (2022-08-03)
  → 'github:nix-community/home-manager/8675cfa549e1240c9d2abb1c878bc427eefcf926' (2022-08-12)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/72f492e275fc29d44b3a4daf952fbeffc4aed5b8' (2022-08-06)
  → 'github:NixOS/nixpkgs/5c211b47aeadcc178c5320afd4e74c7eed5c389f' (2022-08-12)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/93c57a988470c1948976b1bb70abbd5855c5b810' (2022-08-05)
  → 'github:NixOS/nixpkgs/c4a0efdd5a728e20791b8d8d2f26f90ac228ee8d' (2022-08-12)
• Updated input 'retiolum':
    'github:krebs/retiolum/d735957a658896ee93bf538a837aeff3d87cf78b' (2022-08-02)
  → 'github:krebs/retiolum/93b1b32211ca41d23487e8cf7c30ed903ab9d186' (2022-08-10)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=79e75b27a9d8fc23a1731255b20831f708f9194a' (2022-08-02)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=7ce87f5fdb602de7638b2df237e891e6038907ac' (2022-08-10)
2022-08-14 00:58:01 +00:00
d97ddf8357 Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-08-10 21:08:09 +02:00
a593e6242a lol 2022-08-10 21:07:56 +02:00
ecbe639a8c feat(zaatar): ncpamixer 2022-08-10 21:07:49 +02:00
dde14495de feat(bluetooth): add more stuff 2022-08-10 21:07:39 +02:00
github-actions[bot]
3d3374d296 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/4c5106ed0f3168ff2df21b646aef67e86cbfc11c' (2022-07-15)
  → 'github:nix-community/home-manager/d8d9ff0b2df77defa10375c6665b51f0251c34d6' (2022-08-03)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/c06d5fa9c605d143b15cafdbbb61c7c95388d76e' (2022-07-14)
  → 'github:NixOS/nixpkgs/72f492e275fc29d44b3a4daf952fbeffc4aed5b8' (2022-08-06)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/4a01ca36d6bfc133bc617e661916a81327c9bbc8' (2022-07-14)
  → 'github:NixOS/nixpkgs/93c57a988470c1948976b1bb70abbd5855c5b810' (2022-08-05)
• Updated input 'retiolum':
    'github:krebs/retiolum/0371a65100b68d46e1811ec1e3efd8281bc741df' (2022-06-28)
  → 'github:krebs/retiolum/d735957a658896ee93bf538a837aeff3d87cf78b' (2022-08-02)
• Updated input 'scripts':
    'github:kmein/scripts/9b945b3f38297b1cbd6a9efe337c0805d6e2997d' (2022-07-21)
  → 'github:kmein/scripts/d5a38cf84e3f528641b1b10d9f33cf8bfcd5a52a' (2022-07-21)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=64dbf31d70497d6a66f89fdd86ac1884e28f7bc8' (2022-06-28)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=79e75b27a9d8fc23a1731255b20831f708f9194a' (2022-08-02)
2022-08-07 01:01:59 +00:00
2fb1274286 feat: re-enable all locales 😠 2022-07-29 21:30:28 +02:00
2ecf9bd008 fix(hesychius): parse modes fail with lexicon text format 2022-07-29 18:36:35 +02:00
ea1242933b fix(telegram-bot): better logging and reporting 2022-07-29 18:36:14 +02:00
5bc26ddc12 feat(hesychius): add 2022-07-25 23:18:26 +02:00
5a16a90a8a fix(anki): use new version 2022-07-25 22:25:34 +02:00
44501db7fb feat(newsboat): add key for syncing, add indicator to bar 2022-07-25 22:25:19 +02:00
f805e3a076 feat: pimp filli-report 2022-07-25 12:34:25 +02:00
e5d63b92d7 feat(printing): no scanning, no hplip plugin, no waiting two hours for it to build ❤ 2022-07-19 22:05:06 +02:00
f9f17b59a7 feat: use new nix options 2022-07-19 22:00:49 +02:00
fcdac38986 feat(nix): add binary caches 2022-07-19 21:42:39 +02:00
0a156eaeb8 chore: alejandra 2022-07-19 21:34:43 +02:00
c243dbf180 feat: update fully to 22.05 2022-07-19 21:34:23 +02:00
8b69768c82 feat: make deploying faster by fetching krops sources from git 2022-07-19 21:34:23 +02:00
61d95a2f00 feat(printing): add system-config-printer
how could i live without this?
2022-07-18 17:36:21 +02:00
c945a92467 feat: filli-report 2022-07-18 17:36:21 +02:00
7813ac0eaf chore: update 2022-07-17 07:35:56 +02:00
df94a61b8b Merge branch 'update_flake_lock_action' 2022-07-17 07:28:29 +02:00
06c682619c fix(horoscope): update dependencies 2022-07-15 10:03:43 +02:00
8e941f60ea fix(ci): add support for pure evaluation mode
the errors were caused by https://github.com/NixOS/nix/pull/6698
fix taken from https://github.com/hercules-ci/gitignore.nix/pull/58/files
2022-07-15 09:44:55 +02:00
5c5a5609cf feat(zathura): keep hue when recoloring 2022-07-15 08:47:26 +02:00
0121fc152d feat: okular 2022-07-15 08:47:09 +02:00
61dbcd8ffe feat: genpass 2022-07-14 07:35:48 +02:00
927da70957 fix(zaatar): disable wait online 2022-07-11 18:22:25 +02:00
b8a55f024b Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-07-11 07:57:25 +02:00
8513b68132 feat: literature quote to channel 2022-07-11 07:57:19 +02:00
github-actions[bot]
bd1bdce121 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/bee6a7250dd1b01844a2de7e02e4df7d8a0a206c' (2022-06-24)
  → 'github:numtide/flake-utils/7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249' (2022-07-04)
• Updated input 'home-manager':
    'github:nix-community/home-manager/3bf16c0fd141c28312be52945d1543f9ce557bb1' (2022-06-27)
  → 'github:nix-community/home-manager/c645cc9f82c7753450d1fa4d1bc73b64960a9d7a' (2022-07-09)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/915f5a5b3cc4f8ba206afd0b70e52ba4c6a2796b' (2022-07-01)
  → 'github:NixOS/nixpkgs/71d7a4c037dc4f3e98d5c4a81b941933cf5bf675' (2022-07-08)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb' (2022-07-02)
  → 'github:NixOS/nixpkgs/b39924fc7764c08ae3b51beef9a3518c414cdb7d' (2022-07-08)
2022-07-10 01:02:03 +00:00
cfaeb824a6 feat(ci): add ful 2022-07-09 07:13:33 +02:00
github-actions[bot]
9afb27e526 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/1dbac84b846e4bfa21a08e31e95e11f0965ed042' (2022-06-25)
  → 'github:nix-community/home-manager/3bf16c0fd141c28312be52945d1543f9ce557bb1' (2022-06-27)
• Removed input 'home-manager/flake-compat'
• Removed input 'home-manager/nmd'
• Removed input 'home-manager/nmt'
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/ccf8bdf72624521358be6bb7d9b524c4cbcf7aff' (2022-06-23)
  → 'github:NixOS/nixpkgs/915f5a5b3cc4f8ba206afd0b70e52ba4c6a2796b' (2022-07-01)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/6141b8932a5cf376fe18fcd368cecd9ad946cb68' (2022-06-23)
  → 'github:NixOS/nixpkgs/0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb' (2022-07-02)
• Updated input 'retiolum':
    'github:krebs/retiolum/8c41abaeed7f862b02dddd31eae204e262799c4b' (2022-06-06)
  → 'github:krebs/retiolum/0371a65100b68d46e1811ec1e3efd8281bc741df' (2022-06-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=4ef26cd0f67d77dbb1a35b5b43ed2272c17e64b8' (2022-06-21)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=64dbf31d70497d6a66f89fdd86ac1884e28f7bc8' (2022-06-28)
2022-07-09 07:12:02 +02:00
75c825dc25 feat(ssh): fysi machines 2022-07-06 15:10:47 +02:00
85f5c71313 feat(weechat): bye bye useless channels 2022-07-05 19:12:01 +02:00
ddd4bd5720 fix(tahina) 2022-07-05 19:11:45 +02:00
github-actions[bot]
8e74569cc4 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/1dbac84b846e4bfa21a08e31e95e11f0965ed042' (2022-06-25)
  → 'github:nix-community/home-manager/3bf16c0fd141c28312be52945d1543f9ce557bb1' (2022-06-27)
• Removed input 'home-manager/flake-compat'
• Removed input 'home-manager/nmd'
• Removed input 'home-manager/nmt'
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/ccf8bdf72624521358be6bb7d9b524c4cbcf7aff' (2022-06-23)
  → 'github:NixOS/nixpkgs/915f5a5b3cc4f8ba206afd0b70e52ba4c6a2796b' (2022-07-01)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/6141b8932a5cf376fe18fcd368cecd9ad946cb68' (2022-06-23)
  → 'github:NixOS/nixpkgs/0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb' (2022-07-02)
• Updated input 'retiolum':
    'github:krebs/retiolum/8c41abaeed7f862b02dddd31eae204e262799c4b' (2022-06-06)
  → 'github:krebs/retiolum/0371a65100b68d46e1811ec1e3efd8281bc741df' (2022-06-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=4ef26cd0f67d77dbb1a35b5b43ed2272c17e64b8' (2022-06-21)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=64dbf31d70497d6a66f89fdd86ac1884e28f7bc8' (2022-06-28)
2022-07-03 17:41:38 +02:00
e15cc88467 feat(home-manager): set stateVersion 2022-06-28 15:27:36 +02:00
20ba241063 fix(hedgedoc) 2022-06-28 15:27:08 +02:00
github-actions[bot]
4c0b065b8f flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30)
  → 'github:numtide/flake-utils/bee6a7250dd1b01844a2de7e02e4df7d8a0a206c' (2022-06-24)
• Updated input 'home-manager':
    'github:nix-community/home-manager/5197e5df7d3a148b1ad080235f70800987bc3549' (2022-06-18)
  → 'github:nix-community/home-manager/1dbac84b846e4bfa21a08e31e95e11f0965ed042' (2022-06-25)
• Updated input 'home-manager/nmd':
    'gitlab:rycee/nmd/9e7a20e6ee3f6751f699f79c0b299390f81f7bcd' (2022-05-23)
  → 'gitlab:rycee/nmd/91dee681dd1c478d6040a00835d73c0f4a4c5c29' (2022-05-23)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/d17a56d90ecbd1b8fc908d49598fb854ef188461' (2022-06-17)
  → 'github:NixOS/nixpkgs/ccf8bdf72624521358be6bb7d9b524c4cbcf7aff' (2022-06-23)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/3d7435c638baffaa826b85459df0fff47f12317d' (2022-06-16)
  → 'github:NixOS/nixpkgs/6141b8932a5cf376fe18fcd368cecd9ad946cb68' (2022-06-23)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=500aa05de7e34f6a60639a74017583268f9a829d' (2022-06-21)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=4ef26cd0f67d77dbb1a35b5b43ed2272c17e64b8' (2022-06-21)
2022-06-26 00:58:07 +00:00
9d8ee97123 fix(flameshot) 2022-06-21 23:14:19 +02:00
a451d2af61 feat(weechat): adapt to new declarative setup by @lassulus 2022-06-21 23:13:37 +02:00
365f6f780a feat(xkeymap): set options in kb-* scripts 2022-06-21 19:34:55 +02:00
8a713a7180 Merge branch 'update_flake_lock_action' 2022-06-21 19:34:08 +02:00
33c3babfc0 feat(weechat): zerocovid only on news.r 2022-06-21 19:22:18 +02:00
github-actions[bot]
dea3aa1c5c flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/684e85d01d333be91c4875baebb05b93c7d2ffaa' (2022-06-01)
  → 'github:nix-community/home-manager/5197e5df7d3a148b1ad080235f70800987bc3549' (2022-06-18)
• Added input 'home-manager/flake-compat':
    'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19)
• Added input 'home-manager/nmd':
    'gitlab:rycee/nmd/9e7a20e6ee3f6751f699f79c0b299390f81f7bcd' (2022-05-23)
• Added input 'home-manager/nmt':
    'gitlab:rycee/nmt/d83601002c99b78c89ea80e5e6ba21addcfe12ae' (2022-03-23)
• Added input 'home-manager/utils':
    'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/7a20c208aacf4964c19186dcad51f89165dc7ed0' (2022-06-03)
  → 'github:NixOS/nixpkgs/d17a56d90ecbd1b8fc908d49598fb854ef188461' (2022-06-17)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/236cc2971ac72acd90f0ae3a797f9f83098b17ec' (2022-06-03)
  → 'github:NixOS/nixpkgs/3d7435c638baffaa826b85459df0fff47f12317d' (2022-06-16)
• Updated input 'retiolum':
    'github:krebs/retiolum/ac9e1d5b02c5667ba12aa6d6ab077cc071ffc2f4' (2022-05-30)
  → 'github:krebs/retiolum/8c41abaeed7f862b02dddd31eae204e262799c4b' (2022-06-06)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=4a9f93e8933d87ce8f04965b2772564527f1e2fd' (2022-05-29)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=18ea4967c1a708a70c0c807c4ba2f602bc72570c' (2022-06-10)
2022-06-19 00:54:07 +00:00
github-actions[bot]
cc90b1bac4 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/684e85d01d333be91c4875baebb05b93c7d2ffaa' (2022-06-01)
  → 'github:nix-community/home-manager/70824bb5c790b820b189f62f643f795b1d2ade2e' (2022-06-07)
• Added input 'home-manager/flake-compat':
    'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19)
• Added input 'home-manager/nmd':
    'gitlab:rycee/nmd/9e7a20e6ee3f6751f699f79c0b299390f81f7bcd' (2022-05-23)
• Added input 'home-manager/nmt':
    'gitlab:rycee/nmt/d83601002c99b78c89ea80e5e6ba21addcfe12ae' (2022-03-23)
• Added input 'home-manager/utils':
    'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/7a20c208aacf4964c19186dcad51f89165dc7ed0' (2022-06-03)
  → 'github:NixOS/nixpkgs/dab6df51387c3878cdea09f43589a15729cae9f4' (2022-06-11)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/236cc2971ac72acd90f0ae3a797f9f83098b17ec' (2022-06-03)
  → 'github:NixOS/nixpkgs/e0169d7a9d324afebf5679551407756c77af8930' (2022-06-08)
• Updated input 'retiolum':
    'github:krebs/retiolum/ac9e1d5b02c5667ba12aa6d6ab077cc071ffc2f4' (2022-05-30)
  → 'github:krebs/retiolum/8c41abaeed7f862b02dddd31eae204e262799c4b' (2022-06-06)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=4a9f93e8933d87ce8f04965b2772564527f1e2fd' (2022-05-29)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=18ea4967c1a708a70c0c807c4ba2f602bc72570c' (2022-06-10)
2022-06-12 00:54:37 +00:00
28949a1072 feat(neovim): dim 2022-06-08 09:52:54 +02:00
0a6b5300b0 fix: pin nixpkgs for telegram bots 2022-06-08 09:52:08 +02:00
b9c34994c2 feat(radio-news): send stockholm history on time 2022-06-07 11:02:46 +02:00
95f5ee330b feat(radio-news): local time 2022-06-06 17:12:50 +02:00
eb9e7f534d Merge pull request #17 from kmein/update_flake_lock_action
flake.lock: Update
2022-06-05 18:00:12 +02:00
github-actions[bot]
64357f4b42 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/8f3e26705178cc8c1d982d37d881fc0d5b5b1837' (2022-05-30)
  → 'github:nix-community/home-manager/684e85d01d333be91c4875baebb05b93c7d2ffaa' (2022-06-01)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/a634c8f6c1fbf9b9730e01764999666f3436f10a' (2022-05-30)
  → 'github:NixOS/nixpkgs/7a20c208aacf4964c19186dcad51f89165dc7ed0' (2022-06-03)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/b62ada430501de88dfbb08cea4eb98ead3a5e3e7' (2022-05-29)
  → 'github:NixOS/nixpkgs/236cc2971ac72acd90f0ae3a797f9f83098b17ec' (2022-06-03)
2022-06-05 17:24:33 +02:00
6f31509e50 fix(keyboard): start monolingually 2022-06-05 17:24:11 +02:00
db7cb8c74c chore: update to 22.05 2022-05-31 22:26:56 +02:00
fbc50a3fea feat(weechat): add #eloop 2022-05-31 22:26:17 +02:00
2a33a37d11 feat(nextcloud): update 2022-05-31 22:03:03 +02:00
d7ee9b7c1a feat(nextcloud): update 2022-05-31 19:37:25 +02:00
b142dcdcc3 feat: bye ranger, hey lf 2022-05-31 19:34:20 +02:00
adae22772b fix(avesta): say no to cantera 2022-05-31 19:34:00 +02:00
0387d5c44b fix: update 2022-05-31 14:17:13 +02:00
github-actions[bot]
72048388dc flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/e66f0ff69a6c0698b35034b842c4b68814440778' (2022-05-23)
  → 'github:nix-community/home-manager/64831f938bd413cefde0b0cf871febc494afaa4f' (2022-05-25)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/cbd40c72b2603ab54e7208f99f9b35fc158bc009' (2022-05-20)
  → 'github:NixOS/nixpkgs/9bc0e974545d5bc4c24e1ed047be0dc4e30e494b' (2022-05-26)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/dfd82985c273aac6eced03625f454b334daae2e8' (2022-05-20)
  → 'github:NixOS/nixpkgs/83658b28fe638a170a19b8933aa008b30640fbd1' (2022-05-26)
• Updated input 'retiolum':
    'github:krebs/retiolum/40c6e184cecaae4fe0b4973c6cb8027a66cccaae' (2022-05-25)
  → 'github:krebs/retiolum/8668bb3e768fd2ec162036937f7b6edba437be68' (2022-05-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=5befc5a6f260e2283863212b39749d5ed05afb63' (2022-05-19)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=4d33f2ebea49e258f833cb6eab0c71485e88397a' (2022-05-28)
2022-05-31 14:17:13 +02:00
5253b83eb5 feat: ضف المشكّل 2022-05-30 18:24:17 +02:00
4b073323da feat(alacritty): less opaque, better cursor 2022-05-25 17:05:38 +02:00
bf35fb1020 feat(radio-news): ask radio-news.r 2022-05-25 17:05:19 +02:00
3fa820a65a feat(radio-news): set sensible default 2022-05-25 13:13:40 +02:00
0ae6397878 feat(delta): bye, you don't work with light themes 2022-05-24 15:05:20 +02:00
35ce4b1689 feat: new themes for alacritty 2022-05-24 15:05:20 +02:00
5b38655575 fix(ci): use nixos-stable 2022-05-24 15:05:20 +02:00
129127f917 feat: steal theming from lassulus 2022-05-24 14:14:12 +02:00
28ee96bc22 feat: use unstable for thinkpads, only fetch used krops inputs 2022-05-24 11:11:52 +02:00
238f2126b0 fix(radio-news): add dot to keep tts from spazzing out 2022-05-24 11:10:59 +02:00
8c1350c570 chore(hedgedoc): we can use stable sqlite 2022-05-24 11:10:36 +02:00
4d8912b020 feat(pls): add neutral response 2022-05-24 11:09:25 +02:00
588c161f7b feat(ssh): get static ipv4 from lib file 2022-05-24 11:09:02 +02:00
5fb0028a9e feat: powertop 2022-05-24 11:08:00 +02:00
8d88e58726 fix(ci): add ful 2022-05-24 11:07:44 +02:00
203eecddcb feat: add configurationLimit for manakish and makanek 2022-05-22 19:52:45 +02:00
2d67488b02 Merge branch 'update_flake_lock_action' 2022-05-22 19:31:47 +02:00
44efc4dfa1 feat(passport): init for makanek 2022-05-22 11:48:04 +02:00
github-actions[bot]
e6ac020fd2 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/12806d31a381e7cd169a6bac35590e7b36dc5fe5' (2022-05-14)
  → 'github:numtide/flake-utils/04c1b180862888302ddfb2e3ad9eaa63afc60cf8' (2022-05-17)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/79385ae0aacf7e02871cc8af0623123419dd7884' (2022-05-13)
  → 'github:NixOS/nixpkgs/cbd40c72b2603ab54e7208f99f9b35fc158bc009' (2022-05-20)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/437fd89069be470fba34ef7c7f5abc55fe20e328' (2022-05-20)
  → 'github:NixOS/nixpkgs/af0bcde689ed5263e9a0df36116f7583163eb032' (2022-05-22)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=c87ba30c0c1cf344c7cc090d73a2ba44140f15d9' (2022-05-11)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=5befc5a6f260e2283863212b39749d5ed05afb63' (2022-05-19)
2022-05-22 00:50:33 +00:00
9a3499ab6c feat(ful): limit to 1 configuration
this circumvents space issues on the /boot partition
2022-05-21 23:07:19 +02:00
92442db877 feat(ful): set root password 2022-05-21 23:06:49 +02:00
d2f85ab972 chore(ful): disable monitoring for now 2022-05-21 23:06:33 +02:00
b593f45ec2 chore(ful): move IP 2022-05-21 23:06:13 +02:00
e9b09a3e67 chore: bye youtube-dl 2022-05-21 23:05:43 +02:00
8c9a44d404 feat(ssh): reach ful, makanek via http first 2022-05-20 23:16:46 +02:00
45fdbad259 chore: update 2022-05-20 23:04:28 +02:00
93b8d31a33 feat: init ful 2022-05-20 23:04:15 +02:00
abb7924fca chore: only one unstable nixpkgs 2022-05-20 23:03:57 +02:00
0c872352e3 feat(hora): auto-update git 2022-05-18 18:11:32 +02:00
31e765da41 fix(geoip-share): really start after geoipupdate 2022-05-18 18:11:13 +02:00
d655faef3e fix(retiolum-map): update 2022-05-18 18:10:57 +02:00
2f5b177158 feat(klem): add avestan 2022-05-18 18:10:37 +02:00
4bc176ea42 fix(unicodmenu): append history 2022-05-17 22:34:30 +02:00
4b63d1b671 feat(hledger): add time tracking tools 2022-05-17 22:34:18 +02:00
dd86c24506 feat(matterbridge): disable, moved to krebs ponte 2022-05-17 22:34:02 +02:00
88c73b23a1 Merge branch 'update_flake_lock_action' 2022-05-15 23:07:03 +02:00
3675ab8161 feat(scripts): remove horoscope 2022-05-15 23:02:42 +02:00
github-actions[bot]
aac1053e1d flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/a4b154ebbdc88c8498a5c7b01589addc9e9cb678' (2022-04-11)
  → 'github:numtide/flake-utils/12806d31a381e7cd169a6bac35590e7b36dc5fe5' (2022-05-14)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5656d7f92aa8264eb06ba68ad94c87ac5b5312e8' (2022-05-06)
  → 'github:NixOS/nixpkgs/79385ae0aacf7e02871cc8af0623123419dd7884' (2022-05-13)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/d707e510df39cdd8fe1d3e244371a3a9f23051d2' (2022-05-08)
  → 'github:NixOS/nixpkgs/e9132b233ec7176c121b4ecb991ce397d92275ee' (2022-05-15)
• Updated input 'retiolum':
    'github:krebs/retiolum/2bafba9621b83529b78fb2db34b351fd19411c0e' (2022-05-04)
  → 'github:krebs/retiolum/7cc2a7118e4aa9f5df0953bebad28034306329e6' (2022-05-11)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=376b92c877442ec3be476ea5f4c89f8a715426dd' (2022-05-04)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=c87ba30c0c1cf344c7cc090d73a2ba44140f15d9' (2022-05-11)
2022-05-15 01:03:59 +00:00
651f6d9319 fix(gitea): show correct SSH clone port 2022-05-11 17:38:52 +02:00
69332ec98d fix(pmount): setuid 2022-05-11 11:23:21 +02:00
6c65a48ea8 feat(matterbridge): move to new token 2022-05-11 09:23:21 +02:00
d25cfe6c9b feat(unicodmenu): add history 2022-05-10 19:29:39 +02:00
9cd5974870 feat: use newest anki 2022-05-09 07:51:00 +02:00
8c8eceb01a feat(keyboard): add modes for languages 2022-05-08 22:01:29 +02:00
9601fb9456 feat(fonts): add GFS todo list 2022-05-08 13:55:48 +02:00
dc9e84599e Merge branch 'update_flake_lock_action' 2022-05-08 10:49:26 +02:00
94bdfda91b feat(fonts): add new SIL 2022-05-08 09:15:05 +02:00
84a69f31de fix(nextcloud): start after gnome-keyring 2022-05-08 09:15:05 +02:00
dcbe8841ba feat(scripts): back to old ipa script 2022-05-08 09:15:05 +02:00
bef795e45c feat(fonts): add new SIL 2022-05-08 09:14:48 +02:00
9b7c300466 fix(nextcloud): start after gnome-keyring 2022-05-08 09:14:37 +02:00
f4fca0a971 feat(scripts): back to old ipa script 2022-05-08 09:14:20 +02:00
github-actions[bot]
23b341a314 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/d14adb99f3fb562ec74ad18c032efc154b438034' (2022-04-26)
  → 'github:nix-community/home-manager/d93d56ab8c1c6aa575854a79b9d2f69d491db7d0' (2022-05-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/feea25c58657fa81d16e0e51f80e1a02ef4cbd49' (2022-04-27)
  → 'github:NixOS/nixpkgs/5656d7f92aa8264eb06ba68ad94c87ac5b5312e8' (2022-05-06)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/05ced71757730406ca3eb3e58503f05334a6057d' (2022-05-01)
  → 'github:NixOS/nixpkgs/d707e510df39cdd8fe1d3e244371a3a9f23051d2' (2022-05-08)
• Updated input 'retiolum':
    'github:krebs/retiolum/de6d7dc9bd671e65f2ee3004b6807625e7553e84' (2022-03-16)
  → 'github:krebs/retiolum/2bafba9621b83529b78fb2db34b351fd19411c0e' (2022-05-04)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=92d5eacd6d9e530c4d1ea0dec2652417b0fde78a' (2022-04-15)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=376b92c877442ec3be476ea5f4c89f8a715426dd' (2022-05-04)
2022-05-08 00:50:36 +00:00
89c852c4ea feat: bye youtube-dl, hi yt-dlp 2022-05-07 11:26:51 +02:00
github-actions[bot]
3fa242b957 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/7244c6715cb8f741f3b3e1220a9279e97b2ed8f5' (2022-04-13)
  → 'github:nix-community/home-manager/d14adb99f3fb562ec74ad18c032efc154b438034' (2022-04-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a318a09a96a38382fe61a7f85d03ea6e25c46c56' (2022-04-22)
  → 'github:NixOS/nixpkgs/feea25c58657fa81d16e0e51f80e1a02ef4cbd49' (2022-04-27)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/0f1f92d85be76e0bd79ebb2285be8f43683eb845' (2022-04-24)
  → 'github:NixOS/nixpkgs/05ced71757730406ca3eb3e58503f05334a6057d' (2022-05-01)
• Updated input 'scripts':
    'github:kmein/scripts/adfd4238f7a8f0f894547998cbb04327bad97884' (2022-04-19)
  → 'github:kmein/scripts/c1aaeb4339e9c41057d362667554835a0f49850f' (2022-04-26)
2022-05-02 14:07:03 +02:00
35c51b3b17 fix(ci): add dslalewa 2022-05-02 13:54:18 +02:00
f1c049ada3 fix(names): restart on failure 2022-05-02 13:28:57 +02:00
8118009acb feat(neomutt): add office documents to mailcap 2022-05-02 13:28:42 +02:00
41706bc84b feat(neomutt): add alew admin account 2022-05-02 13:28:30 +02:00
eec7be0c3b feat(moodle-dl): papyrology 2022-04-26 20:07:21 +02:00
2aac2609cb feat: yt-dlp 2022-04-26 20:07:09 +02:00
2b7db496b0 feat(keyboard): add docs 2022-04-25 11:58:54 +02:00
0feebd18cd feat(keyboard): add gxkb 2022-04-25 11:58:37 +02:00
892c758303 feat(keyboard): add arabic and russian 2022-04-25 11:58:36 +02:00
8cc3541d2d fix: do not monitor http://names.kmein.r/ 2022-04-24 17:24:58 +02:00
687aa456d1 Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-04-24 13:58:19 +02:00
github-actions[bot]
fd60863f77 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2f06b87f64bc06229e05045853e0876666e1b023' (2022-04-14)
  → 'github:NixOS/nixpkgs/a318a09a96a38382fe61a7f85d03ea6e25c46c56' (2022-04-22)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/6140c314d5850406dddc78e55dcc8716ea111ee4' (2022-04-17)
  → 'github:NixOS/nixpkgs/0f1f92d85be76e0bd79ebb2285be8f43683eb845' (2022-04-24)
2022-04-24 00:45:55 +00:00
a60cbab742 feat(moodle-dl): more courses 2022-04-22 12:31:37 +02:00
54383cb1ab feat(moodle-dl): first load of courses 2022-04-19 23:29:41 +02:00
9b414d104a fix(makanek): names 2022-04-19 23:28:00 +02:00
67b7d63d9a Merge branch 'update_flake_lock_action' 2022-04-19 23:17:50 +02:00
f3116bfc12 fix(nextcloud): start after gnome keyring 2022-04-17 10:48:32 +02:00
f31baf9e56 chore(update)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/0f8662f1319ad6abf89b3380dd2722369fc51ade' (2022-03-26)
  → 'github:numtide/flake-utils/a4b154ebbdc88c8498a5c7b01589addc9e9cb678' (2022-04-11)
• Updated input 'home-manager':
    'github:nix-community/home-manager/0bdbdea2e26c984b096f4f7d10e3c88536a980b0' (2022-04-01)
  → 'github:nix-community/home-manager/7244c6715cb8f741f3b3e1220a9279e97b2ed8f5' (2022-04-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c86185d20d708013caf97a6adaa8dc6d72313c75' (2022-04-09)
  → 'github:NixOS/nixpkgs/2f06b87f64bc06229e05045853e0876666e1b023' (2022-04-14)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/c2b6e029cd1efa0efd37daab89264ef040ae5669' (2022-04-09)
  → 'github:NixOS/nixpkgs/6140c314d5850406dddc78e55dcc8716ea111ee4' (2022-04-17)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=master&rev=b3833baee96d7bce2c54295110b40c646468a1ff' (2022-04-04)
  → 'git+https://cgit.lassul.us/stockholm?ref=master&rev=92d5eacd6d9e530c4d1ea0dec2652417b0fde78a' (2022-04-15)
2022-04-17 07:02:08 +02:00
906cc1981e fix(tuna): nix types 2022-04-15 01:17:38 +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
322 changed files with 11699 additions and 6593 deletions

29
.bin/anki-poem.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/sh
file="${1?please supply a poetry file}"
[ -f "$file" ] || {
echo "'$file' is no file"
exit 1
}
poem="$(mktemp)"
clean () {
rm "$poem"
}
trap clean EXIT
sed '/^$/d' "$file" > "$poem"
htmlize() {
awk 'ORS="<br/>"' \
| head -c -5 # remove final <br/> characters
}
for line_number in $(seq 1 "$(wc -l "$poem" | cut -d' ' -f1)"); do
if [ "$line_number" -gt 3 ] && [ "$line_number" -gt 1 ]; then
sed -n "$((line_number - 3)),$((line_number - 1))p" "$poem"
else
sed -n "1,$((line_number - 1))p" "$poem"
fi | htmlize
printf '\t'
sed -n "${line_number},+1p" "$poem" | htmlize
printf '\n'
done

54
.bin/avesta.sed Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env -S sed -f
s/ā̊/𐬃/g
s//𐬝/g
s/ṣ̌/𐬴/g
s/š́/𐬳/g
s/ą̄/𐬅/g
s/ŋᵛ/𐬤/g
s/ə̄/𐬇/g
s/ŋ́/𐬣/g
s//𐬒/g
s/xᵛ/𐬓/g
s/a/𐬀/g
s/ā/𐬁/g
s/å/𐬂/g
s/ą/𐬄/g
s/ə/𐬆/g
s/e/𐬈/g
s/ē/𐬉/g
s/o/𐬊/g
s/ō/𐬋/g
s/i/𐬌/g
s/ī/𐬍/g
s/u/𐬎/g
s/ū/𐬏/g
s/k/𐬐/g
s/x/𐬑/g
s/g/𐬔/g
s/ġ/𐬕/g
s/γ/𐬖/g
s/c/𐬗/g
s/j/𐬘/g
s/t/𐬙/g
s/θ/𐬚/g
s/d/𐬛/g
s/δ/𐬜/g
s/p/𐬞/g
s/f/𐬟/g
s/b/𐬠/g
s/β/𐬡/g
s/ŋ/𐬢/g
s/n/𐬥/g
s/ń/𐬦/g
s//𐬧/g
s/m/𐬨/g
s//𐬩/g
s//𐬫/g
s/y/𐬪/g
s/v/𐬬/g
s/r/𐬭/g
s/s/𐬯/g
s/z/𐬰/g
s/š/𐬱/g
s/ž/𐬲/g
s/h/𐬵/g

19
.bin/calendars.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
directory="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$directory"
}
year=$(date +%Y)
output=/tmp/$year.pdf
for month in $(seq 1 12); do
printf "\r%d" "$month" 1>&2
astrolog -zN Berlin -qm "$month" "$year" -X -K -XA -Xr -Xm -Xb -Xo "$(printf "%s/%02d.bmp" "$directory" "$month")" -Xw 1080 720 2>/dev/null
done
printf "\r"
convert "$directory/*.bmp" "$output"
echo "$output"

43
.bin/dummy-alert Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
name=$RANDOM
url='http://localhost:9093/api/v1/alerts'
echo "firing up alert $name"
# change url o
curl -XPOST $url -d "[{
\"status\": \"firing\",
\"labels\": {
\"alertname\": \"$name\",
\"service\": \"my-service\",
\"severity\":\"warning\",
\"instance\": \"$name.example.net\"
},
\"annotations\": {
\"summary\": \"High latency is high!\"
},
\"generatorURL\": \"http://prometheus.int.example.net/<generating_expression>\"
}]"
echo ""
echo "press enter to resolve alert"
read
echo "sending resolve"
curl -XPOST $url -d "[{
\"status\": \"resolved\",
\"labels\": {
\"alertname\": \"$name\",
\"service\": \"my-service\",
\"severity\":\"warning\",
\"instance\": \"$name.example.net\"
},
\"annotations\": {
\"summary\": \"High latency is high!\"
},
\"generatorURL\": \"http://prometheus.int.example.net/<generating_expression>\"
}]"
echo ""

5
.bin/json2csv.jq Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env -S jq -r -f
(map(keys) | add | unique) as $cols
| map(. as $row | $cols | map($row[.])) as $rows
| $cols, $rows[]
| @csv

6
.bin/mushakkil.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
curl -sSL 'https://diac.alsharekh.org/Diac/DiacText' \
-H "Content-Type: application/json" \
--data-raw "$(jq --raw-input '{word: ., type: 1}')" \
--compressed \
| jq -r .diacWord

65
.bin/prospekte.sh Executable file
View File

@@ -0,0 +1,65 @@
#!/bin/sh
lidl() {
echo LIDL
curl -sSL 'https://endpoints.lidl-flyer.com/v3/region-overview/lidl/de-DE/0.json' \
| jq -r '
.categories
| map(select(.name == "Filial-Angebote") | .subcategories | map(.flyers))
| flatten
| flatten
| .[]
| .pdfUrl
'
}
aldi_nord() {
echo ALDI nord
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-aktuell/GetPDF.ashx'
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-vorschau/GetPDF.ashx'
}
rewe_berlin() {(
store_id=662366923
publisher_id=1062
echo REWE
curl -sSL 'https://www.bonialserviceswidget.de/de/stores/'$store_id'/brochures?storeId='$store_id'&publisherId='$publisher_id | while read -r brochure_id; do
curl -sSL 'https://www.bonialserviceswidget.de/de/v5/brochureDetails/'"$brochure_id"'?publisherId='$publisher_id | jq -r .pdfUrl
done
)}
kaufland() {(
region_code=8920
echo KAUFLAND
curl -sSL https://filiale.kaufland.de/prospekte.html | htmlq --attribute href '.flyer a' | grep -Eo 'DE_de_KDZ[^/]*' | sed "s/_3000_/_${region_code}_/" | while read -r flyer_id; do
curl -sSL "https://endpoints.leaflets.kaufland.com/v3/$flyer_id/flyer.json?regionCode=$region_code" | jq -r .flyer.pdfUrl
done
)}
netto_schwarz() {
echo 'NETTO (schwarz)'
curl -sSL 'https://squid-api.tjek.com/v2/catalogs?dealer_ids=90f2VL&order_by=created' \
| jq -r '.[] | .id' \
| while read -r flyer_id; do
curl -sSL "https://squid-api.tjek.com/v2/catalogs/$flyer_id/download" \
| jq -r .pdf_url
done
}
dir="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$dir"
}
prospekt_url="$( (
lidl
aldi_nord
rewe_berlin
kaufland
netto_schwarz
) | fzf)"
curl -sSL "$prospekt_url" -o "$dir/prospekt.pdf"
zathura "$dir/prospekt.pdf"

16
.bin/screencap.sh Executable file
View File

@@ -0,0 +1,16 @@
#! /usr/bin/env nix-shell
#! nix-shell -i sh -p coreutils byzanz xorg.xwininfo gnused
# shellcheck shell=sh
# ref https://gist.github.com/aforemny/0994cb7f06ea30d56c8b9681ff5d2054
set -eux
eval "$(xwininfo | \
sed -n -e 's/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p' \
-e 's/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p' \
-e 's/^ \+Width: \+\([0-9]\+\).*/w=\1/p' \
-e 's/^ \+Height: \+\([0-9]\+\).*/h=\1/p')"
trap "pkill -f 'sleep 360d'" INT
byzanz-record -e "sleep 360d" -c -x $x -y $y -w $w -h $h "$@"

50
.bin/toposort.nix Normal file
View File

@@ -0,0 +1,50 @@
let
lib = import <nixpkgs/lib>;
in rec {
inherit lib;
input = [
{
x = ["pool" "zfs"];
y = ["mdadm" "raid1"];
}
{
x = ["pool" "zfs"];
y = ["disk" "sda"];
}
{
x = ["mdadm" "raid1"];
y = ["disk" "sdb"];
}
{
x = ["mdadm" "raid1"];
y = ["disk" "sdc"];
}
];
outNodes = node: graph:
lib.unique
(builtins.map (e: e.y)
(builtins.filter (v: v.x == node) graph));
vertices = graph:
lib.unique
(builtins.map (x: x.y) graph ++ builtins.map (x: x.x) graph);
deleteVertex = node: graph: (builtins.filter (v: v.x != node && v.y != node) graph);
findSink = graph:
lib.findFirst
(v: outNodes v graph == [])
(lib.trace graph (builtins.abort "No sink found"))
(vertices graph);
topSort = graph:
if graph == []
then []
else if builtins.length graph == 1
then let only = builtins.head graph; in [only.y only.x]
else let sink = findSink graph; in [sink] ++ topSort (deleteVertex sink graph);
output = topSort input;
}

18
.bin/ttrss-unread Executable file
View File

@@ -0,0 +1,18 @@
#/usr/bin/env -S deno run -A:q
set -x
session_cache="$HOME/.cache/tt-rss.session"
ttrss_endpoint=https://feed.kmein.de/api/
ttrss_user=k
ttrss_password=$(pass shared/tt-rss/password)
login() {
if [ -f "$session_cache" ]; then
session_id="$(cat "$session_cache")"
else
session_id="$(curl -d '{"op":"login","user":"'"$ttrss_user"'","password":"'"$ttrss_password"'"}' "$ttrss_endpoint" | jq -r .content.session_id)"
echo "$session_id" > "$session_cache"
fi
}
login
curl -d '{"sid":"'"$session_id"'","op":"getUnread"}' "$ttrss_endpoint" | jq .content

16
.bin/tuesday-1800 Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
set -efux
expected_max_results=1024 # the upper bound on the number of restaurants
radius=250
echo '[out:json];node(id:260050809)->.cbase;
(
node(around.cbase:'$radius')[amenity=fast_food];
node(around.cbase:'$radius')[amenity=restaurant];
);out;' \
| curl -sSL -d @- -X POST http://overpass-api.de/api/interpreter \
| jq --argjson random "$(shuf -i 0-$expected_max_results -n 1)" '
.elements
| length as $length
| .[$random % $length]
'

8
.bin/unicode Normal file
View File

@@ -0,0 +1,8 @@
import sys
import unicodedata
for index, character in enumerate(sys.stdin.read().strip()):
try:
print(index, character, hex(ord(character)), unicodedata.category(character), unicodedata.name(character))
except:
print(index, character, hex(ord(character)))

26
.bin/watson2fdf.sh Executable file
View File

@@ -0,0 +1,26 @@
project=Filli
year=2022
for month in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec; do
from="$(date +%F -d "$month 1, $year")"
to="$(date +%F -d "$month 1, $year + 1 month")"
watson report --json --from "$from" --to "$to" --project "$project"
done | jq --slurp '
def in_array($arr):
. as $value | any($arr[]; . == $value);
map(
["engadin-app","fysiweb","val-muestair","mia-engiadina","ol"] as $official_projects
| (.timespan.from | .[0:7]) as $timespan
| .projects | .[0]
| .time as $total_time
| .tags
| select(. != null)
| map(select(.name | in_array($official_projects)))
| (map(.time)|add) as $official_time
| map({key:.name, value:.time}) | from_entries
| .other |= ($total_time - $official_time)
| map_values(. / (60*60) | ceil)
| .month |= $timespan
)
'

View File

@@ -7,8 +7,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
system: [makanek,manakish,kabsa,zaatar] system: [makanek,manakish,kabsa,zaatar,ful]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: cachix/install-nix-action@v16 - uses: cachix/install-nix-action@v16
- run: nix run .#build-${{matrix.system}} - run: nix run .?submodules=1#apps.nixinate.${{matrix.system}}-dry-run

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "secrets"]
path = secrets
url = ssh://gitea@code.kmein.de:22022/kfm/niveum-secrets.git

67
ci.nix
View File

@@ -1,67 +0,0 @@
{ 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}
'';
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);
# cd ~/.password-store/shared && find * -type f | sed 's/.gpg$//'
sharedSecrets = ensureFiles [
"di.fm/key"
"eduroam/identity"
"eduroam/password"
"mail/cock"
"mail/fastmail"
"mail/gmail/amroplay"
"mail/gmail/kieran.meinhardt"
"mail/meinhaki"
"mail/posteo"
"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" "mpd-web.key" ] ++ 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")

394
configs/aerc.nix Normal file
View File

@@ -0,0 +1,394 @@
{
pkgs,
config,
lib,
...
}: let
defaults = {
aerc.enable = true;
realName = "Kierán Meinhardt";
folders.inbox = "INBOX";
};
hu-defaults = {
imap.host = "mailbox.cms.hu-berlin.de";
imap.port = 993;
smtp.host = "mailhost.cms.hu-berlin.de";
smtp.port = 25;
smtp.tls.useStartTls = true;
};
in {
age.secrets = {
email-password-cock = {
file = ../secrets/email-password-cock.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-fysi = {
file = ../secrets/email-password-fysi.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-posteo = {
file = ../secrets/email-password-posteo.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-meinhark = {
file = ../secrets/email-password-meinhark.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-meinhaki = {
file = ../secrets/email-password-meinhaki.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-dslalewa = {
file = ../secrets/email-password-dslalewa.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-fsklassp = {
file = ../secrets/email-password-fsklassp.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
home-manager.users.me = {
services.mbsync = {
enable = true;
frequency = "daily";
preExec = "${pkgs.coreutils}/bin/mkdir -p ${config.home-manager.users.me.accounts.email.maildirBasePath}";
postExec = "${pkgs.notmuch}/bin/notmuch new";
};
programs.notmuch = {
enable = true;
extraConfig = {
database.path = config.home-manager.users.me.accounts.email.maildirBasePath;
new.tags = "";
user.name = defaults.realName;
user.primary_email = config.home-manager.users.me.accounts.email.accounts.posteo.address;
};
};
programs.mbsync = {
enable = true;
extraConfig = lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: ''
IMAPAccount ${name}
CertificateFile /etc/ssl/certs/ca-certificates.crt
Host ${account.imap.host}
PassCmd "${toString account.passwordCommand}"
User ${account.userName}
SSLType IMAPS
${lib.optionalString (lib.isInt account.imap.port) "Port ${toString account.imap.port}"}
IMAPStore ${name}-remote
Account ${name}
MaildirStore ${name}-local
Path ${config.home-manager.users.me.accounts.email.maildirBasePath}/${name}/
SubFolders Verbatim
Channel ${name}
Create Near
Expunge None
Far :${name}-remote:
Near :${name}-local:
Patterns *
Remove None
SyncState *
'')
config.home-manager.users.me.accounts.email.accounts);
};
accounts.email.accounts = rec {
hu-student =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "meinhark";
address = "kieran.felix.meinhardt@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
});
hu-student-cs =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "meinhark";
address = "kieran.felix.meinhardt@informatik.hu-berlin.de";
aliases = ["${userName}@informatik.hu-berlin.de"];
imap.host = "mailbox.informatik.hu-berlin.de";
smtp.host = "mailhost.informatik.hu-berlin.de";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
});
hu-employee =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "meinhaki";
address = "kieran.meinhardt@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhaki.path}";
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
signature = {
showSignature = "append";
text = ''
${defaults.realName}
Studentische Hilfskraft / Administrator ALEW
Humboldt-Universität zu Berlin
Telefon: +49 (0)30 2093 9634
Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte
https://alew.hu-berlin.de
'';
};
});
hu-admin =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "dslalewa";
address = "admin.alew.vglsprwi@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-dslalewa.path}";
inherit (hu-employee) signature;
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
});
hu-fsi =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "fsklassp";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-fsklassp.path}";
address = "${userName}@hu-berlin.de";
realName = "FSI Klassische Philologie";
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
signature = {
showSignature = "append";
text = ''
Fachschafts-Initiative
Humboldt-Universität zu Berlin
Sprach- und literaturwissenschaftliche Fakultät
Institut für klassische Philologie
Unter den Linden 6
10099 Berlin
'';
};
});
fysi =
lib.recursiveUpdate defaults
rec {
address = "kieran@fysi.tech";
userName = address;
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-fysi.path}";
flavor = "fastmail.com";
};
cock =
lib.recursiveUpdate defaults
rec {
address = "2210@cock.li";
userName = address;
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-cock.path}";
realName = "";
imap.host = "mail.cock.li";
smtp.host = imap.host;
};
posteo =
lib.recursiveUpdate defaults
rec {
address = "kieran.meinhardt@posteo.net";
aliases = ["kmein@posteo.de"];
userName = address;
imap.host = "posteo.de";
smtp.host = imap.host;
primary = true;
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-posteo.path}";
# himalaya = { enable = true; backend = "imap"; sender = "smtp"; };
};
};
# programs.himalaya.enable = true;
programs.aerc = {
enable = true;
extraBinds = {
# Binds are of the form <key sequence> = <command to run>
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
global = {
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab <Enter>";
"<C-t>" = ":term<Enter>";
"?" = ":help keys<Enter>";
};
messages = {
q = ":quit<Enter>";
j = ":next <Enter>";
"<Down>" = ":next<Enter>";
"<C-d>" = ":next 50%<Enter>";
"<C-f>" = ":next 100%<Enter>";
"<PgDn>" = ":next 100%<Enter>";
k = ":prev <Enter>";
"<Up>" = ":prev<Enter>";
"<C-u>" = ":prev 50%<Enter>";
"<C-b>" = ":prev 100%<Enter>";
"<PgUp>" = ":prev 100%<Enter>";
g = ":select 0 <Enter>";
G = ":select -1<Enter>";
J = ":next-folder <Enter>";
K = ":prev-folder<Enter>";
H = ":collapse-folder<Enter>";
L = ":expand-folder<Enter>";
"<space>" = ":read -t<Enter>:next<Enter>";
v = ":mark -t<Enter>";
V = ":mark -v<Enter>";
F = ":flag -t<Enter>";
T = ":toggle-threads<Enter>";
"<Enter>" = ":view<Enter>";
d = ":prompt 'Delete? ' 'delete-message'<Enter>";
D = ":move Trash<Enter>";
A = ":archive flat<Enter>";
C = ":compose<Enter>";
rr = ":reply -a<Enter>";
rq = ":reply -aq<Enter>";
Rr = ":reply<Enter>";
Rq = ":reply -q<Enter>";
c = ":cf<space>";
"$" = ":term<space>";
"!" = ":term<space>";
"|" = ":pipe<space>";
"/" = ":search<space>";
"\\" = ":filter <space>";
n = ":next-result<Enter>";
N = ":prev-result<Enter>";
"<Esc>" = ":clear<Enter>";
"*" = ":filter -x Flagged<Enter>";
};
view = {
"/" = ":toggle-key-passthrough <Enter> /";
q = ":close<Enter>";
O = ":open<Enter>";
S = ":save<space>";
"|" = ":pipe<space>";
D = ":move Trash<Enter>";
A = ":archive flat<Enter>";
"<C-l>" = ":open-link <space>";
f = ":forward <Enter>";
rr = ":reply -a<Enter>";
rq = ":reply -aq<Enter>";
Rr = ":reply<Enter>";
Rq = ":reply -q<Enter>";
H = ":toggle-headers<Enter>";
"<C-k>" = ":prev-part<Enter>";
"<C-j>" = ":next-part<Enter>";
J = ":next <Enter>";
K = ":prev<Enter>";
};
"view::passthrough" = {
"$noinherit" = "true";
"$ex" = "<C-x>";
"<Esc>" = ":toggle-key-passthrough<Enter>";
};
compose = {
# Keybindings used when the embedded terminal is not selected in the compose
# view
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-k>" = ":prev-field<Enter>";
"<C-j>" = ":next-field<Enter>";
"<tab>" = ":next-field<Enter>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
"compose::editor" = {
# Keybindings used when the embedded terminal is selected in the compose view
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-k>" = ":prev-field<Enter>";
"<C-j>" = ":next-field<Enter>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
"compose::review" = {
# Keybindings used when reviewing a message to be sent
y = ":send <Enter>";
n = ":abort<Enter>";
p = ":postpone<Enter>";
q = ":choose -o d discard abort -o p postpone postpone<Enter>";
e = ":edit<Enter>";
a = ":attach<space>";
d = ":detach<space>";
};
terminal = {
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
};
extraConfig = {
ui.sort = "-r date";
ui.timestamp-format = "2006-01-02 15:04";
ui.mouse-enabled = true;
ui.spinner = ". , .";
general.unsafe-accounts-conf = true;
general.pgp-provider = "gpg";
viewer = {pager = "${pkgs.less}/bin/less -R";};
compose = {
address-book-cmd = "khard email --remove-first-line --parsable '%s'";
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)";
};
filters = {
"text/plain" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/calendar";
"text/html" = "${pkgs.aerc}/share/aerc/filters/html"; # Requires w3m, dante
# "text/html" =
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
# "text/*" =
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"message/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
};
openers = let
as-pdf = pkgs.writers.writeDash "as-pdf" ''
d=$(mktemp -d)
trap clean EXIT
clean() {
rm -rf "$d"
}
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
${pkgs.zathura}/bin/zathura "$d"/*.pdf
'';
in {
"image/*" = "${pkgs.nsxiv}/bin/nsxiv";
"application/pdf" = "${pkgs.zathura}/bin/zathura";
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf;
"application/vnd.oasis.opendocument.text" = toString as-pdf;
"video/*" = "${pkgs.mpv}/bin/mpv";
"audio/*" = "${pkgs.mpv}/bin/mpv";
};
};
templates = {
# new_message = "hello!";
};
};
};
}

View File

@@ -1,28 +1,22 @@
{ pkgs, lib, config, ... }:
{ {
environment.variables.TERMINAL = "alacritty"; pkgs,
lib,
environment.systemPackages = [ config,
pkgs.alacritty ...
]; }: let
alacritty-cfg = theme:
home-manager.users.me.xdg.configFile = (pkgs.formats.yaml {}).generate "alacritty.yml" {
let window.opacity = 0.99;
inherit (import <niveum/lib>) colours; bell = {
colourNames = [ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ]; animation = "EaseOut";
colourPairs = lib.getAttrs colourNames colours; duration = 100;
in { color = "#ffffff";
"alacritty/alacritty.yml".source = (pkgs.formats.yaml {}).generate "alacritty.yml" {
background_opacity = 0.9;
colors = {
primary = { inherit (colours) background foreground; };
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
}; };
font = { font = {
normal.family = "Monospace"; normal.family = "Monospace";
size = 6; size = 6;
}; };
live_config_reload = true;
key_bindings = [ key_bindings = [
{ {
key = "Plus"; key = "Plus";
@@ -40,6 +34,35 @@
action = "ResetFontSize"; action = "ResetFontSize";
} }
]; ];
colors = let
colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"];
colourPairs = lib.getAttrs colourNames theme;
in {
primary = {inherit (theme) background foreground;};
cursor = {inherit (theme) cursor;};
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};
}; };
alacritty-pkg = pkgs.symlinkJoin {
name = "alacritty";
paths = [
(pkgs.writers.writeDashBin "alacritty" ''
${pkgs.alacritty}/bin/alacritty --config-file /var/theme/config/alacritty.yml msg create-window "$@" ||
${pkgs.alacritty}/bin/alacritty --config-file /var/theme/config/alacritty.yml "$@"
'')
pkgs.alacritty
];
};
in {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
alacritty-pkg
];
environment.etc = {
"themes/dark/alacritty.yml".source = alacritty-cfg (import ../lib/colours/owickstrom-dark.nix);
"themes/light/alacritty.yml".source = alacritty-cfg (import ../lib/colours/owickstrom-light.nix);
}; };
} }

View File

@@ -1,13 +1,18 @@
{ pkgs, config, ... }:
let
inherit (import <niveum/lib>) restic;
in
{ {
pkgs,
config,
...
}: let
inherit (import ../lib) restic;
in {
services.restic.backups.niveum = { services.restic.backups.niveum = {
initialize = true; initialize = true;
inherit (restic) repository; inherit (restic) repository;
timerConfig = { OnCalendar = "8:00"; RandomizedDelaySec = "1h"; }; timerConfig = {
passwordFile = toString <secrets/restic/password>; OnCalendar = "8:00";
RandomizedDelaySec = "1h";
};
passwordFile = config.age.secrets.restic.path;
extraBackupArgs = [ extraBackupArgs = [
"--exclude=/home/kfm/projects/nixpkgs/.git" "--exclude=/home/kfm/projects/nixpkgs/.git"
"--exclude=node_modules" "--exclude=node_modules"
@@ -15,9 +20,13 @@ in
paths = [ paths = [
"/home/kfm/work" "/home/kfm/work"
"/home/kfm/projects" "/home/kfm/projects"
"/home/kfm/notes"
"/home/kfm/Maildir"
"/home/kfm/cloud" "/home/kfm/cloud"
"/home/kfm/.gnupg" "/home/kfm/.gnupg"
"/home/kfm/.ssh" "/home/kfm/.ssh"
"/mnt/sd-card/music"
"/mnt/sd-card/Books"
]; ];
}; };
@@ -30,7 +39,7 @@ in
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writers.writeDashBin "restic-niveum" '' (pkgs.writers.writeDashBin "restic-niveum" ''
${pkgs.restic}/bin/restic -r ${restic.repository} -p ${<secrets/restic/password>} "$@" ${pkgs.restic}/bin/restic -r ${restic.repository} -p ${config.age.secrets.restic.path} "$@"
'') '')
(pkgs.writers.writeDashBin "restic-mount" '' (pkgs.writers.writeDashBin "restic-mount" ''
mountdir=$(mktemp -d) mountdir=$(mktemp -d)
@@ -38,7 +47,7 @@ in
clean() { clean() {
rm -r "$mountdir" rm -r "$mountdir"
} }
${pkgs.restic}/bin/restic -r ${restic.repository} -p ${<secrets/restic/password>} mount "$mountdir" ${pkgs.restic}/bin/restic -r ${restic.repository} -p ${config.age.secrets.restic.path} mount "$mountdir"
'') '')
]; ];
} }

View File

@@ -1,11 +1,14 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
boot.extraModulePackages = with config.boot.kernelPackages; [ boot.extraModulePackages = with config.boot.kernelPackages; [
tp_smapi tp_smapi
acpi_call acpi_call
]; ];
boot.kernelModules = [ "tp_smapi" "acpi_call" ]; boot.kernelModules = ["tp_smapi" "acpi_call"];
environment.systemPackages = [ pkgs.tpacpi-bat ]; environment.systemPackages = [pkgs.tpacpi-bat pkgs.powertop];
services.tlp = { services.tlp = {
enable = true; 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 = { home-manager.users.me.xdg.configFile = {
"beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" { "beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" {
directory = "~/cloud/syncthing/music"; directory = "~/cloud/syncthing/music";
library = "~/cloud/syncthing/common/music.db"; library = "~/cloud/syncthing/common/music.db";
plugins = toString [ "fetchart" "lastgenre" ]; plugins = toString ["fetchart" "lastgenre"];
}; };
}; };
} }

View File

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

View File

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

View File

@@ -1,16 +1,97 @@
{ pkgs, ... }: { {
pkgs,
config,
...
}: {
programs.chromium = { programs.chromium = {
enable = true; enable = true;
extensions = [ extensions = [
"nngceckbapebfimnlniiiahkandclblb" # BitWarden
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim # "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine # "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin "cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos "pjjgklgkfeoeiebjogplpnibpfnffkng" # undistracted
"nhdogjmejiglipccpnnnanhbledajbpd" # vuejs devtools
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
]; ];
}; };
environment.systemPackages = [ pkgs.brave ]; home-manager.users.me = {
programs.firefox = {
enable = true;
package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
};
profiles = let
defaultSettings = {
"beacon.enabled" = false;
"browser.bookmarks.showMobileBookmarks" = true;
"browser.newtab.preload" = false;
"browser.search.isUS" = false;
"browser.search.region" = "DE";
"browser.send_pings" = false;
"browser.shell.checkDefaultBrowser" = false;
"browser.startup.homepage" = "chrome://browser/content/blanktab.html";
"browser.uidensity" = 1;
"browser.urlbar.placeholderName" = "Search";
"datareporting.healthreport.service.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.sessions.current.clean" = true;
"distribution.searchplugins.defaultLocale" = "de-DE";
"general.smoothScroll" = true;
"identity.fxaccounts.account.device.name" = config.networking.hostName;
"network.cookie.cookieBehavior" = 1;
"privacy.donottrackheader.enabled" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.pbmode.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"services.sync.declinedEngines" = "passwords";
"services.sync.engine.passwords" = false;
"signon.autofillForms" = false;
"signon.rememberSignons" = false;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.cachedClientID" = "";
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.prompted" = 2;
"toolkit.telemetry.rejected" = true;
"toolkit.telemetry.server" = "";
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.unifiedIsOptIn" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"ui.prefersReducedMotion" = 1;
};
in {
default = {
id = 0;
isDefault = true;
settings = defaultSettings;
# extensions = with pkgs.nur.repos.rycee.firefox-addons; [
# ublock-origin
# darkreader
# sponsorblock
# consent-o-matic
# i-dont-care-about-cookies
# # auto-tab-discard TODO what is this
# ];
userChrome = ''
#TabsToolbar {
visibility: collapse !important;
}
'';
};
};
};
};
environment.systemPackages = [pkgs.brave];
environment.variables.BROWSER = "brave"; environment.variables.BROWSER = "brave";
} }

7
configs/clipboard.nix Normal file
View File

@@ -0,0 +1,7 @@
{
config,
pkgs,
...
}: {
services.clipmenu.enable = true;
}

View File

@@ -1,22 +1,63 @@
{ config, lib, pkgs, ... }: { {
imports = [ config,
<niveum/modules/dropbox.nix> lib,
pkgs,
...
}: let
inherit (import ../lib) tmpfilesConfig;
in {
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/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";
}
]; ];
niveum = { home-manager.users.me = {
dropbox.enable = false; services.gnome-keyring.enable = false;
services.nextcloud-client = {
enable = false;
startInBackground = true;
};
systemd.user.services.nextcloud-client = {
Unit = {
Wants = ["gnome-keyring.service"];
After = ["gnome-keyring.service"];
};
};
}; };
system.activationScripts.home-symlinks = '' systemd.user.services.nextcloud-syncer = {
ln -sfn ${config.users.users.me.home}/cloud/syncthing/common/mahlzeit ${config.users.users.me.home}/mahlzeit enable = true;
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Wiki ${config.users.users.me.home}/notes wants = ["network-online.target"];
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Uni ${config.users.users.me.home}/uni wantedBy = ["default.target"];
''; startAt = "*:00/10";
script = let
home-manager.users.me = { kieran = {
services.nextcloud-client = { user = "kieran";
enable = true; passwordFile = config.age.secrets.nextcloud-password-kieran.path;
startInBackground = true; endpoint = "https://cloud.xn--kiern-0qa.de";
target = "${config.users.users.me.home}/notes";
};
in ''
mkdir -p ${lib.escapeShellArg kieran.target}
${pkgs.nextcloud-client}/bin/nextcloudcmd --non-interactive --user ${kieran.user} --password "$(cat ${kieran.passwordFile})" --path /Notes ${lib.escapeShellArg kieran.target} ${kieran.endpoint}
'';
serviceConfig = {
Type = "oneshot";
Restart = "on-failure";
}; };
}; };
@@ -27,10 +68,41 @@
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f ${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/Seafile/Books -type f ${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/Seafile/Books -type f
} | ${pkgs.fzf}/bin/fzf)" } | ${pkgs.fzf}/bin/fzf)"
${pkgs.zathura}/bin/zathura "$book" exec ${pkgs.zathura}/bin/zathura "$book"
'') '')
(let
kieran = {
user = "kieran.meinhardt@gmail.com";
passwordFile = config.age.secrets.mega-password.path;
};
megatools = command: ''${pkgs.megatools}/bin/megatools ${command} --username ${lib.escapeShellArg kieran.user} --password "$(cat ${kieran.passwordFile})"'';
in
pkgs.writers.writeDashBin "book-mega" ''
set -efu
selection="$(${megatools "ls"} | ${pkgs.fzf}/bin/fzf)"
test -n "$selection" || exit 1
tmpdir="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$tmpdir"
}
(
cd "$tmpdir"
${megatools "get"} "$selection"
exec ${pkgs.zathura}/bin/zathura "$(basename "$selection")"
)
'')
]; ];
age.secrets.mega-password = {
file = ../secrets/mega-password.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
fileSystems."/media/moodle" = { fileSystems."/media/moodle" = {
device = "zaatar.r:/moodle"; device = "zaatar.r:/moodle";
fsType = "nfs"; fsType = "nfs";
@@ -47,19 +119,19 @@
openDefaultPorts = true; openDefaultPorts = true;
configDir = "/home/kfm/.config/syncthing"; configDir = "/home/kfm/.config/syncthing";
dataDir = "/home/kfm/.config/syncthing"; dataDir = "/home/kfm/.config/syncthing";
cert = toString <system-secrets/syncthing/cert.pem>; cert = config.age.secrets.syncthing-cert.path;
key = toString <system-secrets/syncthing/key.pem>; key = config.age.secrets.syncthing-key.path;
inherit ((import <niveum/lib>).syncthing) devices; inherit ((import ../lib).syncthing) devices;
folders = folders = let
let cloud-dir = "${config.users.users.me.home}/cloud"; cloud-dir = "${config.users.users.me.home}/cloud";
in { in {
"${cloud-dir}/syncthing/common".devices = [ "kabsa" "manakish" ]; "${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
"${cloud-dir}/syncthing/library".devices = [ "kabsa" "manakish" "heym" ]; "${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/mundoiu".devices = [ "kabsa" "manakish" "heym" ]; "${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/music" = { "${cloud-dir}/syncthing/music" = {
devices = [ "kabsa" "manakish" "heym" "zaatar" ]; devices = ["kabsa" "manakish" "heym" "zaatar"];
id = "music"; id = "music";
};
}; };
};
}; };
} }

View File

@@ -1,8 +0,0 @@
{
services.compton = {
enable = true;
shadow = true;
menuOpacity = 0.9;
shadowOpacity = 0.3;
};
}

View File

@@ -1,37 +0,0 @@
{ 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
${pkgs.copyq}/bin/copyq config copy_clipboard true
${pkgs.copyq}/bin/copyq config copy_selection false
${pkgs.copyq}/bin/copyq config activate_closes true
${pkgs.copyq}/bin/copyq config clipboard_notification_lines 0
${pkgs.copyq}/bin/copyq config clipboard_tab \&clipboard
${pkgs.copyq}/bin/copyq config disable_tray false
${pkgs.copyq}/bin/copyq config hide_tabs false
${pkgs.copyq}/bin/copyq config hide_toolbar false
${pkgs.copyq}/bin/copyq config item_popup_interval true
${pkgs.copyq}/bin/copyq config maxitems 1000
${pkgs.copyq}/bin/copyq config move true
${pkgs.copyq}/bin/copyq config text_wrap true
'';
in {
environment.systemPackages = [ pkgs.copyq ];
systemd.user.services.copyq = {
wantedBy = [ "graphical-session.target" ];
environment = {
DISPLAY = ":${toString config.services.xserver.display}";
};
serviceConfig = {
SyslogIdentifier = "copyq";
ExecStart = "${pkgs.copyq}/bin/copyq";
ExecStartPost = copyqConfig;
Restart = "always";
RestartSec = "15s";
StartLimitBurst = 0;
};
};
}

View File

@@ -1,19 +1,21 @@
{ pkgs, lib, config, options, ... }: {
let pkgs,
lib,
config,
niveumPackages,
inputs,
...
}: let
inherit (lib.strings) makeBinPath; inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran; inherit (import ../lib) localAddresses kieran;
defaultApplications = (import ../lib).defaultApplications {inherit pkgs;};
in { in {
imports = [ imports = [
<home-manager/nixos> inputs.self.nixosModules.system-dependent
<niveum/modules/system-dependent.nix> inputs.self.nixosModules.traadfri
inputs.self.nixosModules.power-action
{ {
boot.supportedFilesystems = [ "ntfs" ]; boot.supportedFilesystems = ["ntfs"];
}
{
nix.nixPath = [
"/var/src"
"nixpkgs-overlays=${toString ../overlays}"
];
} }
{ {
nixpkgs = { nixpkgs = {
@@ -21,29 +23,40 @@ in {
allowUnfree = true; allowUnfree = true;
packageOverrides = pkgs: { packageOverrides = pkgs: {
dmenu = pkgs.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"''; dmenu = pkgs.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
tocharian-font = pkgs.callPackage <niveum/packages/tocharian-font.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
}; };
permittedInsecurePackages = [
"qtwebkit-5.212.0-alpha4"
];
}; };
overlays = [
(self: super: {
scripts = import <niveum/packages/scripts> { pkgs = super; lib = super.lib; };
})
];
}; };
} }
{ {
boot.cleanTmpDir = true; boot.cleanTmpDir = true;
boot.loader.timeout = 1; boot.loader.timeout = 1;
} }
{
age.secrets = {
di-fm-key = {
file = ../secrets/di-fm-key.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
restic = {
file = ../secrets/restic.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
}
{ {
home-manager.users.me = { home-manager.users.me = {
programs.zathura = { programs.zathura = {
enable = true; enable = true;
options = { options = {
selection-clipboard = "clipboard"; selection-clipboard = "clipboard";
recolor-keephue = true;
# first-page-column = "1:1"; # makes side-by-side mode start on the left side # first-page-column = "1:1"; # makes side-by-side mode start on the left side
}; };
}; };
@@ -57,42 +70,15 @@ in {
users.users.me = { users.users.me = {
name = "kfm"; name = "kfm";
description = kieran.name; description = kieran.name;
hashedPassword = hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
isNormalUser = true; isNormalUser = true;
uid = 1000; uid = 1000;
}; };
home-manager.users.me.xdg.enable = true; home-manager.users.me.xdg.enable = true;
home-manager.users.me.dconf.enable = false;
} }
{ {
sound.enable = true; environment.interactiveShellInit = "export PATH=$PATH:$HOME/projects/niveum";
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
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"
]}
'';
};
users.users.me.extraGroups = [ "audio" ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer ];
}
{
environment.interactiveShellInit =
"export PATH=$PATH:$HOME/projects/niveum";
environment.shellAliases = let environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" '' wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.." cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
@@ -103,41 +89,49 @@ in {
take = pkgs.writers.writeDash "take" '' take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1" mkdir "$1" && cd "$1"
''; '';
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}"; cdt = pkgs.writers.writeDash "cdt" ''
cd "$(mktemp -d)"
pwd
'';
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
in { in {
"ß" = "${pkgs.utillinux}/bin/setsid"; "ß" = "${pkgs.util-linux}/bin/setsid";
cat = "${pkgs.bat}/bin/bat --style=plain"; cat = "${pkgs.bat}/bin/bat --style=plain";
chromium-incognito = chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp --interactive"; cp = "cp --interactive";
ip = "${pkgs.iproute}/bin/ip -c"; ip = "${pkgs.iproute2}/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"; ls = "ls --color=auto --time-style=long-iso";
ll = "ls --color=auto --time-style=long-iso -l"; ll = "ls --color=auto --time-style=long-iso -l";
la = "ls --color=auto --time-style=long-iso --almost-all -l"; la = "ls --color=auto --time-style=long-iso --almost-all -l";
mv = "mv --interactive"; mv = "mv --interactive";
nixi = "nix repl '<nixpkgs>'"; nixi = "nix repl '<nixpkgs>'";
ns = "nix-shell --run zsh"; ns = "nix-shell --run zsh";
o = "${pkgs.xdg_utils}/bin/xdg-open"; o = "${pkgs.xdg-utils}/bin/xdg-open";
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in"; pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out"; pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
rm = "rm --interactive"; rm = "rm --interactive";
s = "${pkgs.systemd}/bin/systemctl"; s = "${pkgs.systemd}/bin/systemctl";
take = "source ${take}"; take = "source ${take}";
cdt = "source ${cdt}";
vit = "$EDITOR $(mktemp)";
tmux = "${pkgs.tmux}/bin/tmux -2"; tmux = "${pkgs.tmux}/bin/tmux -2";
sxiv = swallow "${pkgs.sxiv}/bin/sxiv"; sxiv = swallow "${pkgs.nsxiv}/bin/nsxiv";
zathura = swallow "${pkgs.zathura}/bin/zathura"; zathura = swallow "${pkgs.zathura}/bin/zathura";
us = "${pkgs.systemd}/bin/systemctl --user"; us = "${pkgs.systemd}/bin/systemctl --user";
wcd = "source ${wcd}"; wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM"; im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}"; where = "source ${where}";
yt = yt = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -ic"; # Download video link
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link yta = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -xic"; # Download with audio
yta = };
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio }
{
i18n = {
defaultLocale = "en_DK.UTF-8";
supportedLocales = ["all"];
}; };
} }
{ i18n.defaultLocale = "en_DK.UTF-8"; }
{ {
services.xserver = { services.xserver = {
enable = true; enable = true;
@@ -150,7 +144,7 @@ in {
enable = true; enable = true;
greeters.gtk = { greeters.gtk = {
enable = true; enable = true;
indicators = [ "~spacer" "~host" "~spacer" "~session" "~power" ]; indicators = ["~spacer" "~host" "~spacer" "~session" "~power"];
}; };
}; };
}; };
@@ -159,24 +153,33 @@ in {
{ {
security.wrappers = { security.wrappers = {
pmount = { pmount = {
setuid = true;
owner = "root"; owner = "root";
group = "users"; group = "root";
source = "${pkgs.pmount}/bin/pmount"; source = "${pkgs.pmount}/bin/pmount";
}; };
pumount = { pumount = {
setuid = true;
owner = "root"; owner = "root";
group = "users"; group = "root";
source = "${pkgs.pmount}/bin/pumount"; source = "${pkgs.pmount}/bin/pumount";
}; };
}; };
} }
{ programs.command-not-found.enable = true; } {programs.command-not-found.enable = true;}
{ {
programs.gnupg.agent.enable = true; home-manager.users.me = {
services.gpg-agent = rec {
enable = true;
enableZshIntegration = true;
defaultCacheTtl = 2 * 60 * 60;
maxCacheTtl = 4 * defaultCacheTtl;
};
};
environment.systemPackages = [ environment.systemPackages = [
pkgs.gnupg pkgs.gnupg
(pkgs.pass.withExtensions (e: [e.pass-otp])) (pkgs.pass.withExtensions (e: [e.pass-otp e.pass-import e.pass-genphrase]))
]; ];
} }
{ {
@@ -189,24 +192,47 @@ in {
}; };
} }
{ {
networking.hosts = lib.mapAttrs' (name: address: { networking.hosts =
name = address; lib.mapAttrs' (name: address: {
value = [ "${name}.local" ]; name = address;
}) localAddresses; value = ["${name}.local"];
})
localAddresses;
}
{
home-manager.users.me.home.stateVersion = "22.05";
}
{
systemd.user.services.udiskie = {
after = ["udisks2.service"];
wants = ["udisks2.service"];
wantedBy = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${pkgs.udiskie}/bin/udiskie --verbose --no-config --notify";
};
};
services.udisks2.enable = true;
programs.dconf.enable = true;
home-manager.users.me = {
dconf.enable = true;
dconf.settings = {
# Change the default terminal for Nemo
"org/cinnamon/desktop/applications/terminal".exec = defaultApplications.terminal;
};
};
} }
./alacritty.nix ./alacritty.nix
./backup.nix ./backup.nix
./bash.nix ./bash.nix
./beets.nix ./beets.nix
./bluetooth.nix ./bluetooth.nix
./aerc.nix
./ccc.nix ./ccc.nix
./khal.nix ./khal.nix
./chromium.nix ./chromium.nix
./clipboard.nix
./cloud.nix ./cloud.nix
./copyq.nix
./compton.nix
./direnv.nix ./direnv.nix
./distrobump.nix
./docker.nix ./docker.nix
./dunst.nix ./dunst.nix
./flix.nix ./flix.nix
@@ -222,16 +248,16 @@ in {
./mpv.nix ./mpv.nix
./mime.nix ./mime.nix
./neovim.nix ./neovim.nix
./neomutt.nix
./nix.nix ./nix.nix
./newsboat.nix ./newsboat.nix
./flameshot-once.nix ./flameshot.nix
./packages.nix ./packages.nix
./picom.nix
./stardict.nix ./stardict.nix
./polkit.nix ./polkit.nix
./power-action.nix ./power-action.nix
./printing.nix ./printing.nix
./openweathermap.nix # ./openweathermap.nix
./wallpaper.nix ./wallpaper.nix
./redshift.nix ./redshift.nix
./retiolum.nix ./retiolum.nix
@@ -240,14 +266,16 @@ in {
./seafile.nix ./seafile.nix
./ssh.nix ./ssh.nix
./sshd.nix ./sshd.nix
./sound.nix
./sudo.nix ./sudo.nix
./sxiv.nix ./themes.nix
./theming.nix
./tmux.nix ./tmux.nix
./traadfri.nix ./traadfri.nix
./unclutter.nix ./unclutter.nix
./vscode.nix ./vscode.nix
./watson.nix ./watson.nix
./zsh.nix ./zsh.nix
./tor.nix
./mastodon-bot.nix
]; ];
} }

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: let
let
nixify = pkgs.writers.writeDashBin "nixify" '' nixify = pkgs.writers.writeDashBin "nixify" ''
set -efuC set -efuC
@@ -11,25 +10,25 @@ let
cat > shell.nix <<'EOF' cat > shell.nix <<'EOF'
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import <nixpkgs> {} }:
pkgs.mkShell { pkgs.mkShell {
buildInputs = []; packages = [];
} }
EOF EOF
''${EDITOR:-vim} shell.nix ''${EDITOR:-vim} shell.nix
fi fi
''; '';
in { in {
environment.systemPackages = [ pkgs.direnv nixify ]; environment.systemPackages = [pkgs.direnv nixify];
home-manager.users.me.programs.direnv = { home-manager.users.me.programs.direnv = {
enable = true; enable = true;
stdlib = builtins.readFile ("${ stdlib = builtins.readFile "${
pkgs.fetchFromGitHub { pkgs.fetchFromGitHub {
owner = "Mic92"; owner = "Mic92";
repo = "dotfiles"; repo = "dotfiles";
rev = "a0a9b7e358fa70a85cd468f8ca1fbb02ae0a91df"; rev = "a0a9b7e358fa70a85cd468f8ca1fbb02ae0a91df";
sha256 = "1y9h5s1lf59sczsm0ksq2x1yhl98ba9lwk5yil3q53rg7n4574pg"; sha256 = "1y9h5s1lf59sczsm0ksq2x1yhl98ba9lwk5yil3q53rg7n4574pg";
} }
}/home/.direnvrc"); }/home/.direnvrc";
}; };
programs.zsh.interactiveShellInit = '' programs.zsh.interactiveShellInit = ''

View File

@@ -1,8 +1,13 @@
{ lib, config, pkgs, ... }: { {
lib,
config,
pkgs,
...
}: {
imports = [ imports = [
(import <stockholm/makefu/3modules/bump-distrowatch.nix> { (import <stockholm/makefu/3modules/bump-distrowatch.nix> {
inherit lib config; 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 = { virtualisation.docker = {
enable = true; enable = true;
# for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c # for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c
@@ -7,6 +11,6 @@
"--fixed-cidr=172.39.1.0/25" "--fixed-cidr=172.39.1.0/25"
]; ];
}; };
users.users.me.extraGroups = [ "docker" ]; users.users.me.extraGroups = ["docker"];
environment.systemPackages = [ pkgs.docker pkgs.docker_compose ]; environment.systemPackages = [pkgs.docker pkgs.docker-compose];
} }

View File

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

View File

@@ -1,42 +0,0 @@
{ lib, pkgs, ... }:
let
inherit (import <niveum/lib>) defaultApplications;
flameshot-once =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
in {
environment.systemPackages = [
(flameshot-once.override {
config = {
imgur = {
enable = true;
createUrl = "http://p.r/image";
deleteUrl = "http://p.r/image/delete/%1";
xdg-open.browser = (defaultApplications pkgs).browser;
};
timeout = 1000;
drawColor = "#ff0000";
drawThickness = 2;
showDesktopNotification = true;
buttons = [
"ARROW"
"BLUR"
"CIRCLE"
"CIRCLECOUNT"
"COPY"
"DRAWER"
"EXIT"
"IMAGEUPLOADER"
"MARKER"
"MOVESELECTION"
"PENCIL"
"RECTANGLE"
"SAVE"
"SELECTION"
"SELECTIONINDICATOR"
"TEXT"
"UNDO"
];
};
})
];
}

23
configs/flameshot.nix Normal file
View File

@@ -0,0 +1,23 @@
{
lib,
pkgs,
...
}: {
home-manager.users.me = {
services.flameshot = {
enable = true;
settings.General = {
autoCloseIdleDaemon = true;
drawColor = "#ff0000";
drawThickness = 2;
checkForUpdates = false;
showDesktopNotification = true;
disabledTrayIcon = true;
showHelp = false;
squareMagnifier = true;
uploadWithoutConfirmation = true;
buttons = ''@Variant(\0\0\0\x7f\0\0\0\vQList<int>\0\0\0\0\x10\0\0\0\x2\0\0\0\x5\0\0\0\x13\0\0\0\xa\0\0\0\x1\0\0\0\xc\0\0\0\xd\0\0\0\x6\0\0\0\x8\0\0\0\0\0\0\0\xf\0\0\0\x4\0\0\0\xb\0\0\0\x3\0\0\0\x12\0\0\0\x9)'';
};
};
};
}

View File

@@ -1,14 +1,19 @@
{ config, pkgs, ... }: {
let config,
pkgs,
...
}: let
flixLocation = "/media/flix"; flixLocation = "/media/flix";
flixLocationNew = "/media/flix-new";
cacheLocation = "/var/cache/flix"; cacheLocation = "/var/cache/flix";
indexFilename = "index"; indexFilename = "index";
indexFilenameNew = "index-new";
flixUser = "flix"; flixUser = "flix";
flixGroup = "users"; flixGroup = "users";
inherit (import <niveum/lib>) tmpfilesConfig; inherit (import ../lib) tmpfilesConfig;
in { in {
fileSystems.${flixLocation} = { fileSystems.${flixLocation} = {
device = "prism.r:/export"; device = "prism.r:/export/download";
fsType = "nfs"; fsType = "nfs";
options = [ options = [
"noauto" "noauto"
@@ -23,6 +28,20 @@ in {
]; ];
}; };
fileSystems.${flixLocationNew} = {
device = "//yellow.r/public";
fsType = "cifs";
options = [
"guest"
"nofail"
"noauto"
"ro"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
];
};
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
(tmpfilesConfig { (tmpfilesConfig {
type = "d"; type = "d";
@@ -35,8 +54,11 @@ in {
systemd.services.flix-index = { systemd.services.flix-index = {
description = "Flix indexing service"; description = "Flix indexing service";
wants = [ "network-online.target" ]; wants = ["network-online.target"];
script = "cp ${flixLocation}/download/index ./${indexFilename}"; script = ''
cp ${flixLocation}/index ./${indexFilename}
cp ${flixLocationNew}/index ./${indexFilenameNew}
'';
startAt = "hourly"; startAt = "hourly";
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
@@ -66,13 +88,11 @@ in {
'') '')
(pkgs.writers.writeDashBin "flixmenu" '' (pkgs.writers.writeDashBin "flixmenu" ''
set -efu set -efu
cd "${flixLocation}/download" (
${pkgs.gnused}/bin/sed 's#^\.#${flixLocation}#' ${cacheLocation}/${indexFilename}
[ -f "${cacheLocation}/${indexFilename}" ] || exit 1 ${pkgs.gnused}/bin/sed 's#^\.#${flixLocationNew}#' ${cacheLocation}/${indexFilenameNew}
) | ${pkgs.dmenu}/bin/dmenu -i -p flix -l 5 "$@" \
${pkgs.dmenu}/bin/dmenu -i -p flix -l 5 "$@" < ${cacheLocation}/${indexFilename} \ | ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.util-linux}/bin/setsid ${pkgs.xdg-utils}/bin/xdg-open '{}'
| ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.utillinux}/bin/setsid ${pkgs.xdg_utils}/bin/xdg-open '{}'
'') '')
]; ];
} }

View File

@@ -1,42 +1,127 @@
{ pkgs, ... }: { {
nixpkgs.config.joypixels.acceptLicense = true; pkgs,
niveumPackages,
...
}: let
zip-font = name: arguments: let
directory = pkgs.fetchzip arguments;
in
pkgs.runCommand name {} ''
mkdir -p $out/share/fonts/{truetype,opentype,woff}
${pkgs.findutils}/bin/find ${directory} -name '*.ttf' -exec install '{}' $out/share/fonts/truetype \;
${pkgs.findutils}/bin/find ${directory} -name '*.otf' -exec install '{}' $out/share/fonts/opentype \;
${pkgs.findutils}/bin/find ${directory} -name '*.woff' -exec install '{}' $out/share/fonts/woff \;
'';
simple-ttf = name: arguments: let
file = pkgs.fetchurl arguments;
in
pkgs.runCommand name {} ''
mkdir -p $out/share/fonts/truetype
install ${file} $out/share/fonts/truetype
'';
egyptianHiero = zip-font "EgyptianHiero" {
url = "https://github.com/MKilani/Djehuty/archive/master.zip";
sha256 = "sha256-KbY4vedm757NWfDlgmNhslbZd+2Vs+o5PjtMMGDt61Y=";
};
antinoou = zip-font "Antinoou" {
url = "https://www.evertype.com/fonts/coptic/AntinoouFont.zip";
sha256 = "0jwihj08n4yrshcx07dnaml2x9yws6dgyjkvg19jqbz17drbp3sw";
stripRoot = false;
};
newGardiner = zip-font "NewGardiner" {
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
sha256 = "1jd0qa6shh9pqqyig2w43m9l9rv1i50l73jzkhb6g6mqxbhb1mip";
stripRoot = false;
};
junicode2 = zip-font "JunicodeTwo" {
url = "https://github.com/psb1558/Junicode-font/archive/48bf476db278c844c67542b04d1e0e4c71f139d2.zip";
sha256 = "1ryicc155vkvgv3315ddliigwa01afwyb4c4f6pnqcns03af001i";
};
newAthenaUnicode = zip-font "NewAthenaUnicode" {
url = "https://classicalstudies.org/sites/default/files/userfiles/files/NAU5_005.zip";
sha256 = "1g7qk9gl4nq2dz41bvck1nzilhin44j8691cxax3dlp77bbn9bxr";
};
jsesh = simple-ttf "JSesh" {
url = "http://files.qenherkhopeshef.org/jsesh/JSeshFont.ttf";
sha256 = "1203jrk2xzvgckcc5hx88kja1i3h8gm1wiyla5j6gspc0hbv56ry";
};
egyptianText = simple-ttf "EgyptianText-1.0beta" {
url = "http://c.krebsco.de/EgyptianText-v1.0-beta.ttf";
sha256 = "0cfjbk7xxnxhlp6v922psm5j1xzrv6wfk226ji2wz2yfrnkbcbsv";
};
in {
fonts = { fonts = {
enableDefaultFonts = true; enableDefaultFonts = true;
fontDir.enable = true; fontDir.enable = true;
fonts = with pkgs; [ fonts = with pkgs; [
alegreya alegreya
alegreya-sans alegreya-sans
amiri
annapurna-sil
antinoou
cantarell-fonts
cardo
charis-sil
doulos-sil
newAthenaUnicode
corefonts corefonts
crimson
eb-garamond eb-garamond
jsesh
egyptianHiero
egyptianText
font-awesome_6
etBook
newGardiner
junicode2
ezra-sil
fira fira
font-awesome-ttf font-awesome
galatia-sil
gentium
niveumPackages.gfs-fonts
gyre-fonts
ibm-plex ibm-plex
inconsolata jetbrains-mono
iosevka libertinus
libertine libre-bodoni
lmodern lmodern
merriweather
ocr-a
roboto
roboto-mono
noto-fonts noto-fonts
noto-fonts-cjk noto-fonts-cjk
noto-fonts-emoji noto-fonts-emoji
roboto
roboto-mono
roboto-slab roboto-slab
scheherazade-new
source-code-pro source-code-pro
source-serif-pro
source-sans-pro source-sans-pro
ubuntu_font_family source-serif-pro
gfs-fonts theano
jetbrains-mono niveumPackages.tocharian-font
twemoji-color-font vistafonts
joypixels vollkorn
tocharian-font zilla-slab
]; ]; # google-fonts league-of-moveable-type
fontconfig.defaultFonts = { fontconfig.defaultFonts = rec {
monospace = [ "JetBrains Mono" "JoyPixels" ]; monospace = ["Noto Sans Mono"] ++ emoji;
serif = [ "Roboto Slab" ]; serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
sansSerif = [ "Roboto" "Noto Sans" ]; sansSerif = ["Noto Sans Display" "Noto Kufi Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP"];
emoji = [ "JoyPixels" ]; emoji = ["Noto Color Emoji"];
}; };
# xelatex fails with woff files
# ref https://tex.stackexchange.com/questions/392144/xelatex-and-fontspec-crash-trying-to-find-woff-file-for-some-fonts-but-not-other
fontconfig.localConf = ''
<fontconfig>
<!-- Reject WOFF fonts We don't register WOFF(2) fonts with fontconfig because of the W3C spec -->
<selectfont>
<rejectfont>
<glob>*.woff*</glob>
</rejectfont>
</selectfont>
</fontconfig>
'';
}; };
} }

View File

@@ -1,18 +1,23 @@
{ pkgs, lib, ... }: { {
pkgs,
lib,
...
}: {
environment = { environment = {
systemPackages = [ pkgs.fzf ]; systemPackages = [pkgs.fzf];
variables = { variables = rec {
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
FZF_DEFAULT_OPTS = FZF_DEFAULT_OPTS =
lib.escapeShellArgs [ "--height=40%" "--layout=reverse" ]; lib.escapeShellArgs ["--height=40%"];
FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d"; FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d";
FZF_ALT_C_OPTS = lib.escapeShellArgs [ FZF_ALT_C_OPTS = lib.escapeShellArgs [
"--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'" "--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'"
"--bind=space:toggle-preview" "--bind=space:toggle-preview"
"--preview-window=hidden" "--preview-window=hidden"
]; ];
FZF_CTRL_T_COMMAND = "${pkgs.fd}/bin/fd --type f"; FZF_CTRL_T_COMMAND = FZF_DEFAULT_COMMAND;
FZF_CTRL_T_OPTS = FZF_CTRL_T_OPTS =
lib.escapeShellArgs [ "--preview='${pkgs.bat}/bin/bat \"{}\"'" ]; lib.escapeShellArgs ["--preview='head -$LINES {}'"];
}; };
}; };

View File

@@ -1,19 +1,25 @@
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran ignorePaths;
in
{ {
pkgs,
config,
lib,
inputs,
...
}: let
inherit (import ../lib) kieran ignorePaths;
in {
environment.systemPackages = [ environment.systemPackages = [
pkgs.mr pkgs.mr
pkgs.git pkgs.git
pkgs.git-crypt
pkgs.gitAndTools.gitflow pkgs.gitAndTools.gitflow
pkgs.gitAndTools.gh pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras pkgs.gitAndTools.git-extras
pkgs.gitAndTools.git-trim pkgs.gitAndTools.git-trim
pkgs.gitAndTools.git-absorb
pkgs.gitstats pkgs.gitstats
pkgs.patch pkgs.patch
pkgs.patchutils pkgs.patchutils
pkgs.git-preview inputs.self.packages.x86_64-linux.git-preview
]; ];
environment.shellAliases = { environment.shellAliases = {
@@ -38,8 +44,7 @@ in
diffs = "diff --staged"; diffs = "diff --staged";
last = "log -1 HEAD"; last = "log -1 HEAD";
logs = "log --pretty=oneline"; logs = "log --pretty=oneline";
graph = 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";
"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; ignores = ignorePaths;
extraConfig = { extraConfig = {
@@ -47,12 +52,12 @@ in
rebase.autoStash = true; rebase.autoStash = true;
merge.autoStash = true; merge.autoStash = true;
# ref https://github.com/dandavison/delta # # ref https://github.com/dandavison/delta
core.pager = "${pkgs.delta}/bin/delta"; # core.pager = "${pkgs.delta}/bin/delta";
interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only"; # interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
delta.navigate = true; # delta.navigate = true;
merge.conflictStyle = "diff3"; # merge.conflictStyle = "diff3";
diff.colorMoved = "default"; # diff.colorMoved = "default";
}; };
}; };
}; };

View File

@@ -1,14 +1,39 @@
{ config, pkgs, ... }: { {
imports = [ <niveum/modules/hledger.nix> ]; config,
pkgs,
...
}: {
environment.systemPackages = let
ledgerDirectory = "$HOME/projects/ledger";
timeLedger = "${ledgerDirectory}/time.timeclock";
git = "${pkgs.git}/bin/git -C ${ledgerDirectory}";
in [
pkgs.hledger
(pkgs.writers.writeDashBin "hora-edit" ''
$EDITOR + "${timeLedger}" && ${pkgs.git}/bin/git -C "$(${pkgs.coreutils}/bin/dirname ${timeLedger})" commit --all --message "$(${pkgs.coreutils}/bin/date -Im)"
'')
(pkgs.writers.writeDashBin "hora" ''
${pkgs.hledger}/bin/hledger -f "${timeLedger}" "$@"
'')
(pkgs.writers.writeDashBin "hora-filli" ''
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
-b "$(date -d "$(date +%Y-%m)-20 last month" +%Y-%m-%d)" \
-e "$(date -d "$(date +%Y-%m)-20" +%Y-%m-%d)" \
| sed 's/(fillidefilla:\(.*\))/\1/g' \
| xsv select date,amount,total,account,description
'')
niveum.hledger = { (pkgs.writers.writeDashBin "hledger-git" ''
enable = true; if [ "$1" = entry ]; then
ledgerFile = "$HOME/projects/ledger/all.journal"; ${pkgs.hledger}/bin/hledger balance -V > "${ledgerDirectory}/balance.txt"
server = { ${git} add balance.txt
enable = false; ${git} commit --all --message="$(date -Im)"
user = config.users.users.me; else
package = pkgs.hledger-web; ${git} $*
}; fi
package = pkgs.hledger; '')
}; (pkgs.writers.writeDashBin "hledger-edit" ''
$EDITOR ${ledgerDirectory}/current.journal
'')
];
} }

View File

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

View File

@@ -1,7 +1,11 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
inherit (lib.strings) fileContents; inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort; inherit (import ../lib) sshPort;
eduroam = { eduroam = {
identity = fileContents <secrets/eduroam/identity>; identity = fileContents <secrets/eduroam/identity>;
password = fileContents <secrets/eduroam/password>; password = fileContents <secrets/eduroam/password>;
@@ -11,10 +15,9 @@ let
"gid=${toString config.users.groups.users.gid}" "gid=${toString config.users.groups.users.gid}"
"sec=ntlmv2" "sec=ntlmv2"
"workgroup=german" "workgroup=german"
"username=meinhaki" "credentials=${config.age.secrets.cifs-credentials-hu-berlin.path}"
"password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
"noauto" "noauto"
"x-systemd.requires=hu-vpn.service" # "x-systemd.requires=hu-vpn.service"
"x-systemd.automount" "x-systemd.automount"
"x-systemd.device-timeout=1" "x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min" "x-systemd.idle-timeout=1min"
@@ -32,6 +35,7 @@ in {
options = hu-berlin-cifs-options; options = hu-berlin-cifs-options;
}; };
age.secrets.cifs-credentials-hu-berlin.file = ../secrets/cifs-credentials-hu-berlin.age;
home-manager.users.me.programs.ssh = { home-manager.users.me.programs.ssh = {
matchBlocks = { matchBlocks = {
@@ -46,10 +50,11 @@ in {
(pkgs.writers.writeDashBin "hu-ip" '' (pkgs.writers.writeDashBin "hu-ip" ''
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3 ${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 ]; libraries = with pkgs.python3Packages; [distro pyopenssl dbus-python];
flakeIgnore = [ "E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291" ]; flakeIgnore = ["E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291"];
} }
(builtins.readFile (builtins.fetchurl { (builtins.readFile (builtins.fetchurl {
url = "https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/linux-installer/eduroam-linux-hub.py"; url = "https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/linux-installer/eduroam-linux-hub.py";
@@ -60,31 +65,22 @@ in {
systemd.services.hu-vpn = { systemd.services.hu-vpn = {
enable = true; enable = true;
wants = [ "network-online.target" ]; wants = ["network-online.target"];
conflicts = [ "openvpn-hu-berlin.service" ]; serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhark.path}";
script = '' script = ''
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" '' if ${pkgs.wirelesstools}/bin/iwgetid | ${pkgs.gnugrep}/bin/grep --invert-match eduroam
host = forti-ssl.vpn.hu-berlin.de then
port = 443 ${pkgs.openfortivpn}/bin/openfortivpn \
trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359 --password="$(cat "$CREDENTIALS_DIRECTORY/password")" \
username = ${eduroam.identity}@split_tunnel --config=${
password = ${eduroam.password} pkgs.writeText "hu-berlin.config" ''
''} host = forti-ssl.vpn.hu-berlin.de
port = 443
username = meinhark
trusted-cert = 9e5dea8e077970d245900839f437ef7fb9551559501c7defd70af70ea568573d
''
}
fi
''; '';
}; };
systemd.services.openvpn-hu-berlin.conflicts = [ "hu-vpn.service" ];
services.openvpn.servers.hu-berlin = {
autoStart = false;
authUserPass = {
username = eduroam.identity;
password = eduroam.password;
};
config = fileContents (pkgs.fetchurl {
url =
"https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
});
};
} }

View File

@@ -1,14 +1,28 @@
{ config, pkgs, lib, ... }: {
let config,
inherit (import <niveum/lib>) defaultApplications colours; pkgs,
klem = import <niveum/packages/scripts/klem.nix> { lib,
inherit pkgs lib; niveumPackages,
...
}: let
inherit (import ../lib) defaultApplications colours;
klem = niveumPackages.klem.override {
config.dmenu = "${pkgs.dmenu}/bin/dmenu -i -p klem";
config.scripts = { config.scripts = {
"p.r" = pkgs.writers.writeDash "p.r" '' "p.r" = pkgs.writers.writeDash "p.r" ''
${pkgs.curl}/bin/curl -fSs http://p.r --data-binary @- \ ${pkgs.curl}/bin/curl -fSs http://p.r --data-binary @- \
| ${pkgs.coreutils}/bin/tail --lines=1 \ | ${pkgs.coreutils}/bin/tail --lines=1 \
| ${pkgs.gnused}/bin/sed 's/\\<r\\>/krebsco.de/' | ${pkgs.gnused}/bin/sed 's/\\<r\\>/krebsco.de/'
''; '';
# "envs.sh host" = pkgs.writers.writeDash "envs-host" ''
# ${pkgs.curl}/bin/curl -F "file=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
# '';
"envs.sh mirror" = pkgs.writers.writeDash "envs-mirror" ''
${pkgs.curl}/bin/curl -F "url=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
'';
"envs.sh shorten" = pkgs.writers.writeDash "envs-shorten" ''
${pkgs.curl}/bin/curl -F "shorten=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
'';
"ix.io" = pkgs.writers.writeDash "ix.io" '' "ix.io" = pkgs.writers.writeDash "ix.io" ''
${pkgs.curl}/bin/curl -fSs -F 'f:1=<-' ix.io ${pkgs.curl}/bin/curl -fSs -F 'f:1=<-' ix.io
''; '';
@@ -22,13 +36,10 @@ let
${pkgs.coreutils}/bin/tr '[A-Za-z]' '[N-ZA-Mn-za-m]' ${pkgs.coreutils}/bin/tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
''; '';
"ipa" = pkgs.writers.writeDash "ipa" '' "ipa" = pkgs.writers.writeDash "ipa" ''
${pkgs.scripts.ipa}/bin/ipa ${niveumPackages.ipa}/bin/ipa
''; '';
"betacode" = pkgs.writers.writeDash "betacode" '' "betacode" = pkgs.writers.writeDash "betacode" ''
${pkgs.scripts.betacode}/bin/betacode ${niveumPackages.betacode}/bin/betacode
'';
"devanagari" = pkgs.writers.writeDash "devanagari" ''
${pkgs.scripts.devanagari}/bin/devanagari
''; '';
"curl" = pkgs.writers.writeDash "curl" '' "curl" = pkgs.writers.writeDash "curl" ''
${pkgs.curl}/bin/curl -fSs "$(${pkgs.coreutils}/bin/cat)" ${pkgs.curl}/bin/curl -fSs "$(${pkgs.coreutils}/bin/cat)"
@@ -36,6 +47,9 @@ let
ocr = pkgs.writers.writeDash "ocr" '' ocr = pkgs.writers.writeDash "ocr" ''
${pkgs.tesseract4}/bin/tesseract -l eng+deu - stdout ${pkgs.tesseract4}/bin/tesseract -l eng+deu - stdout
''; '';
emojai = pkgs.writers.writeDash "emojai" ''
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
'';
}; };
}; };
@@ -45,13 +59,28 @@ let
move-to-new-workspace = pkgs.writers.writeDash "new-workspace" '' 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)) 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 { in {
age.secrets = {
github-token-i3status-rust = {
file = ../secrets/github-token-i3status-rust.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
openweathermap-api-key = {
file = ../secrets/openweathermap-api-key.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
programs.slock.enable = true;
services.xserver = { services.xserver = {
displayManager.defaultSession = "none+i3"; displayManager.defaultSession = "none+i3";
windowManager.i3 = { windowManager.i3 = {
enable = true; enable = true;
package = pkgs.i3-gaps;
}; };
}; };
@@ -70,26 +99,38 @@ in {
''; '';
}; };
home-manager.users.me.xsession.windowManager.i3 = { home-manager.users.me.xsession.windowManager.i3 = let
modifier = "Mod4";
in {
enable = true; enable = true;
extraConfig = ''
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
'';
config = rec { config = rec {
fonts = {names = ["Sans"]; size = 10.0;}; fonts = {
modifier = "Mod4"; names = ["Sans"];
size = 10.0;
};
inherit modifier;
window = { window = {
titlebar = false; titlebar = false;
border = 1; border = 1;
hideEdgeBorders = "smart"; hideEdgeBorders = "smart";
commands = [ commands = [
{ {
criteria = { class = "floating"; }; criteria = {class = "floating";};
command = "floating enable"; command = "floating enable";
} }
{ {
criteria = { class = "fzfmenu"; }; criteria = {class = "fzfmenu";};
command = "floating enable"; command = "floating enable";
} }
{ {
criteria = { class = "mpv"; }; criteria = {class = ".*";};
command = "border pixel 2";
}
{
criteria = {class = "mpv";};
command = lib.strings.concatStringsSep ", " [ command = lib.strings.concatStringsSep ", " [
"floating enable" "floating enable"
"sticky enable" "sticky enable"
@@ -100,7 +141,6 @@ in {
} }
]; ];
}; };
gaps.inner = 4;
floating = { floating = {
titlebar = false; titlebar = false;
border = 1; border = 1;
@@ -111,51 +151,68 @@ in {
text = colours.foreground; text = colours.foreground;
}; };
in rec { in rec {
focused = scheme // { focused =
border = colours.cyan.bright; scheme
indicator = colours.cyan.bright; // {
childBorder = colours.cyan.bright; border = colours.blue.bright;
}; indicator = colours.blue.bright;
unfocused = scheme // { childBorder = colours.blue.bright;
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;
}; };
}; unfocused =
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${ scheme
(pkgs.formats.toml {}).generate "i3status-rust.toml" (import <niveum/lib/i3status-rust.nix> { // {
inherit (config.niveum) batteryName wirelessInterface; border = colours.background;
inherit colours; indicator = colours.background;
inherit pkgs; 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 = ["Monospace" "Font Awesome 6 Free"];
size = 8.0;
};
mode = "dock"; # "hide";
position = "bottom";
colors = rec {
background = colours.background;
separator = background;
statusline = colours.foreground;
bindingMode = {
background = colours.red.bright;
border = colours.background;
text = colours.foreground;
};
};
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
${pkgs.i3status-rust}/bin/i3status-rs ${
(pkgs.formats.toml {}).generate "i3status-rust.toml" (import ../lib/i3status-rust.nix {
inherit (config.niveum) batteryName wirelessInterface;
inherit (config.home-manager.users.me.accounts.email) accounts;
inherit colours;
inherit pkgs;
})
}'');
}
];
modes.resize = { modes.resize = {
"Escape" = ''mode "default"''; "Escape" = ''mode "default"'';
"Return" = ''mode "default"''; "Return" = ''mode "default"'';
@@ -176,10 +233,10 @@ in {
"${modifier}+Shift+b" = "move window to workspace prev"; "${modifier}+Shift+b" = "move window to workspace prev";
"${modifier}+Shift+n" = "move window to workspace next"; "${modifier}+Shift+n" = "move window to workspace next";
"${modifier}+Shift+x" = "exec --no-startup-id ${move-to-new-workspace}"; "${modifier}+Shift+x" = "exec ${move-to-new-workspace}";
"${modifier}+b" = "workspace prev"; "${modifier}+b" = "workspace prev";
"${modifier}+n" = "workspace next"; "${modifier}+n" = "workspace next";
"${modifier}+x" = "exec --no-startup-id ${new-workspace}"; "${modifier}+x" = "exec ${new-workspace}";
"${modifier}+Shift+c" = "reload"; "${modifier}+Shift+c" = "reload";
"${modifier}+Shift+q" = "kill"; "${modifier}+Shift+q" = "kill";
@@ -197,56 +254,68 @@ in {
"${modifier}+r" = "mode resize"; "${modifier}+r" = "mode resize";
"${modifier}+v" = "split v"; "${modifier}+v" = "split v";
"${modifier}+w" = "layout tabbed"; "${modifier}+w" = "layout tabbed";
"${modifier}+q" = "exec ${pkgs.writers.writeDash "newsboat-sync" ''
notify-send --app-name="newsboat" "Updating ..."
newsboat -x reload
notify-send --app-name="newsboat" "Finished updating."
''}";
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser"; # "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}"; "${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}"; "${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}"; "${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
"${modifier}+0" = "exec ${pkgs.scripts.menu-calc}/bin/="; "${modifier}+0" = "exec ${niveumPackages.menu-calc}/bin/=";
"${modifier}+Shift+w" = "exec ${pkgs.scripts.k-lock}/bin/k-lock"; "${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec rofi -modi run,ssh,window -show run''}";
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec ${pkgs.rofi}/bin/rofi -modi run,window,ssh,filebrowser -show run''}";
"${modifier}+Shift+d" = "exec ${ "${modifier}+Shift+d" = "exec ${
pkgs.writers.writeDash "notemenu" '' pkgs.writers.writeDash "notemenu" ''
set -efu set -efu
PATH=$PATH:${ PATH=$PATH:${
lib.makeBinPath [ pkgs.rofi pkgs.findutils pkgs.coreutils ] lib.makeBinPath [pkgs.rofi pkgs.findutils pkgs.coreutils]
} }
cd ~/notes cd ~/notes
note_file=$({ note_file=$({
echo diary/$(date -I).md echo diary/$(date -I).md
echo diary/$(date -I -d yesterday).md echo diary/$(date -I -d yesterday).md
find . -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2 find . ! -name '.*' -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2-
} | rofi -dmenu -i -p 'notes') } | rofi -dmenu -i -p 'notes')
if test "$note_file" if test "$note_file"
then then
i3-sensible-terminal -e "$EDITOR" "$note_file" alacritty --working-directory ~/notes -e "$EDITOR" "$note_file"
fi fi
'' ''
}"; }";
"${modifier}+p" = "exec --no-startup-id ${pkgs.pass}/bin/passmenu -l 5"; "${modifier}+p" = "exec rofi-pass";
"${modifier}+u" = "exec ${pkgs.scripts.unicodmenu}/bin/unicodmenu"; "${modifier}+Shift+p" = "exec rofi-pass --insert";
"${modifier}+u" = "exec ${niveumPackages.unicodmenu}/bin/unicodmenu";
"${modifier}+F7" = "exec ${pkgs.scripts.showkeys-toggle}/bin/showkeys-toggle"; "${modifier}+F6" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F8" = "exec ${pkgs.xorg.xkill}/bin/xkill"; "${modifier}+F7" = "exec ${pkgs.writers.writeDash "showkeys-toggle" ''
if ${pkgs.procps}/bin/pgrep screenkey; then
exec ${pkgs.procps}/bin/pkill screenkey
else
exec ${pkgs.screenkey}/bin/screenkey
fi
''}";
"${modifier}+F8" = "exec switch-theme toggle";
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85"; "${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x"; "${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter"; "${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";
"${modifier}+F12" = "exec ${klem}/bin/klem"; "${modifier}+F12" = "exec ${klem}/bin/klem";
"Print" = "exec flameshot-once"; "Print" = "exec flameshot gui";
"XF86AudioLowerVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -d 5"; "XF86AudioLowerVolume" = "exec ${pkgs.pamixer}/bin/pamixer -d 5";
"XF86AudioMute" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -t"; "XF86AudioMute" = "exec ${pkgs.pamixer}/bin/pamixer -t";
"XF86AudioRaiseVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -i 5"; "XF86AudioRaiseVolume" = "exec ${pkgs.pamixer}/bin/pamixer -i 5";
"XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc"; "XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc";
"XF86AudioPause" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl pause"; "XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl pause";
"XF86AudioPlay" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl play-pause"; "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioNext" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl next"; "XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl previous"; "XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
"XF86AudioStop" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl stop"; "XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl stop";
"XF86ScreenSaver" = "exec ${pkgs.scripts.k-lock}/bin/k-lock"; "XF86ScreenSaver" = "exec ${niveumPackages.k-lock}/bin/k-lock";
"XF86Display" = "exec ${pkgs.scripts.dmenurandr}/bin/dmenurandr"; "XF86Display" = "exec ${niveumPackages.dmenu-randr}/bin/dmenu-randr";
# key names detected with xorg.xev: # key names detected with xorg.xev:
# XF86WakeUp (fn twice) # XF86WakeUp (fn twice)

View File

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

View File

@@ -1,17 +1,75 @@
{ pkgs, lib, ... }: {
let commaSep = builtins.concatStringsSep ","; pkgs,
lib,
...
}: let
commaSep = builtins.concatStringsSep ",";
xkbOptions = ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
languages = {
de = "T3";
gr = "polytonic";
ru = "phonetic";
ara = "buckwalter";
cop = "";
ave = "";
"in" = "san-kagapa";
il = "phonetic";
};
defaultLanguage = "de";
in { in {
# man 7 xkeyboard-config
services.xserver = { services.xserver = {
layout = commaSep [ "de" "gr" ]; layout = "de";
xkbVariant = commaSep [ "T3" "polytonic" ]; # T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
xkbOptions = # buckwalter: http://www.qamus.org/transliteration.htm
commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ]; xkbVariant = "T3";
xkbOptions = commaSep xkbOptions;
libinput.enable = true; libinput.enable = true;
xkbDir = pkgs.symlinkJoin {
name = "x-keyboard-directory";
paths = [
"${pkgs.xkeyboard_config}/etc/X11/xkb"
(pkgs.linkFarm "custom-x-keyboards" [
{
name = "symbols/cop";
path = pkgs.fetchurl {
url = "http://www.moheb.de/download/cop";
sha256 = "1l0h6aq536hyinrh0i0ia355y229bjrlibii0sya5bmqh46vycia";
};
}
{
name = "symbols/ave";
path = pkgs.fetchurl {
url = "https://blog.simos.info/wp-content/uploads/2010/06/avestan.txt";
sha256 = "192zmmm3gxyhim39dsax7r87gsay2w5v2xkhwmvsfipjb60hwp5g";
};
}
])
];
};
}; };
console.keyMap = "de"; console.keyMap = "de";
environment.systemPackages =
lib.mapAttrsToList
(language: variant:
pkgs.writers.writeDashBin "kb-${language}" ''
${pkgs.xorg.setxkbmap}/bin/setxkbmap ${defaultLanguage},${language} ${languages.${defaultLanguage}},${variant} ${toString (map (option: "-option ${option}") xkbOptions)}
'')
languages;
# improve held key rate # improve held key rate
services.xserver.displayManager.sessionCommands = services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xset}/bin/xset r rate 300 50";
"${pkgs.xorg.xset}/bin/xset r rate 300 50";
systemd.user.services.gxkb = {
wantedBy = ["graphical-session.target"];
serviceConfig = {
SyslogIdentifier = "gxkb";
ExecStart = "${pkgs.gxkb}/bin/gxkb";
Restart = "always";
RestartSec = "15s";
StartLimitBurst = 0;
};
};
} }

View File

@@ -1,24 +1,57 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
davHome = "~/.local/share/dav"; davHome = "~/.local/share/dav";
kmeinCloud = { kmeinCloud = {
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav"; davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
username = "kieran"; username = "kieran";
password = lib.fileContents <secrets/nextcloud/password>; passwordFile = config.age.secrets.nextcloud-password-kieran.path;
}; };
fysiCloud = { fysiCloud = {
davEndpoint = "https://nextcloud.fysi.dev/remote.php/dav"; davEndpoint = "https://nextcloud.fysi.dev/remote.php/dav";
username = "kmein"; username = "kmein";
password = lib.fileContents <secrets/nextcloud-fysi/password>; passwordFile = config.age.secrets.nextcloud-password-fysi.path;
}; };
in in {
{ age.secrets = {
environment.systemPackages = [ pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman ]; nextcloud-password-kieran = {
file = ../secrets/nextcloud-password-kieran.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
nextcloud-password-fysi = {
file = ../secrets/nextcloud-password-fysi.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
environment.systemPackages = [
pkgs.khal
pkgs.vdirsyncer
pkgs.khard
pkgs.todoman
(pkgs.writers.writeDashBin "todo-procrastinate" ''
[ $# -eq 1 ] || {
echo "Usage: $0 TODO_ID" >&2
exit 1
}
todo_id=$1
new_timestamp=$(${pkgs.todoman}/bin/todo --porcelain show "$todo_id" | ${pkgs.jq}/bin/jq '.due + 24 * 60 * 60')
new_date=$(${pkgs.coreutils}/bin/date +"%Y-%m-%d %H:%M" -d "@$new_timestamp")
${pkgs.todoman}/bin/todo edit "$todo_id" --due "$new_date"
'')
];
systemd.user.services.vdirsyncer = { systemd.user.services.vdirsyncer = {
enable = true; enable = true;
wants = [ "network-online.target" ]; wants = ["network-online.target"];
wantedBy = [ "default.target" ]; wantedBy = ["default.target"];
startAt = "*:00/10"; startAt = "*:00/10";
script = '' script = ''
${pkgs.vdirsyncer}/bin/vdirsyncer sync ${pkgs.vdirsyncer}/bin/vdirsyncer sync
@@ -149,19 +182,19 @@ in
type = "carddav" type = "carddav"
url = "${kmeinCloud.davEndpoint}/addressbooks/users/${kmeinCloud.username}/" url = "${kmeinCloud.davEndpoint}/addressbooks/users/${kmeinCloud.username}/"
username = "${kmeinCloud.username}" username = "${kmeinCloud.username}"
password = "${kmeinCloud.password}" password.fetch = ["command", "cat", "${kmeinCloud.passwordFile}"]
[storage kalender_cloud] [storage kalender_cloud]
type = "caldav" type = "caldav"
url = "${kmeinCloud.davEndpoint}/calendars/${kmeinCloud.username}/" url = "${kmeinCloud.davEndpoint}/calendars/${kmeinCloud.username}/"
username = "${kmeinCloud.username}" username = "${kmeinCloud.username}"
password = "${kmeinCloud.password}" password.fetch = ["command", "cat", "${kmeinCloud.passwordFile}"]
[storage fysi_cloud] [storage fysi_cloud]
type = "caldav" type = "caldav"
url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/" url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/"
username = "${fysiCloud.username}" username = "${fysiCloud.username}"
password = "${fysiCloud.password}" password.fetch = ["command", "cat", "${fysiCloud.passwordFile}"]
''; '';
}; };
}; };

View File

@@ -1,8 +1,11 @@
{ lib, pkgs, ... }:
{ {
lib,
pkgs,
...
}: {
systemd.services.lb-subscription = { systemd.services.lb-subscription = {
enable = true; enable = true;
wants = [ "network-online.target" ]; wants = ["network-online.target"];
startAt = "weekly"; startAt = "weekly";
serviceConfig = { serviceConfig = {
user = "kfm"; user = "kfm";

19
configs/mastodon-bot.nix Normal file
View File

@@ -0,0 +1,19 @@
{pkgs, ...}: {
systemd.services.imaginary-illuminations = {
enable = false;
wants = ["network-online.target"];
serviceConfig = {
User = "kfm";
Group = "users";
WorkingDirectory = "/home/kfm/cloud/Seafile/Documents/Media/imaginary-illuminations";
Restart = "on-failure";
RestartSec = "15s";
};
startAt = "7:00";
script = ''
${pkgs.deno}/bin/deno run -A post.ts
'';
};
systemd.timers.imaginary-illuminations.timerConfig.RandomizedDelaySec = "14h";
}

View File

@@ -7,21 +7,20 @@
"application/pdf" = "org.pwmt.zathura.desktop"; "application/pdf" = "org.pwmt.zathura.desktop";
"application/vnd.oasis.opendocument.text" = "writer.desktop"; "application/vnd.oasis.opendocument.text" = "writer.desktop";
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = "writer.desktop"; "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = "writer.desktop";
"image/jpeg" = "sxiv.desktop"; "image/jpeg" = "nsxiv.desktop";
"image/png" = "sxiv.desktop"; "image/png" = "nsxiv.desktop";
"image/vnd.djvu+multipage" = "org.pwmt.zathura.desktop"; "image/vnd.djvu+multipage" = "org.pwmt.zathura.desktop";
"text/html" = "brave-browser.desktop"; "text/html" = "firefox.desktop";
"text/markdown" = "nvim.desktop"; "text/markdown" = "nvim.desktop";
"text/plain" = "nvim.desktop"; "text/plain" = "nvim.desktop";
"x-scheme-handler/about" = "brave-browser.desktop"; "x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/http" = "brave-browser.desktop"; "x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "brave-browser.desktop"; "x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/mailto" = "brave-browser.desktop"; "x-scheme-handler/mailto" = "firefox.desktop";
"x-scheme-handler/unknown" = "brave-browser.desktop"; "x-scheme-handler/unknown" = "firefox.desktop";
"x-scheme-handler/webcal" = "brave-browser.desktop"; "x-scheme-handler/webcal" = "firefox.desktop";
"inode/directory" = "pcmanfm.desktop"; "inode/directory" = "pcmanfm.desktop";
}; };
}; };
}; };
} }

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
services.nginx.virtualHosts.default = { services.nginx.virtualHosts.default = {
locations."= /stub_status".extraConfig = "stub_status;"; locations."= /stub_status".extraConfig = "stub_status;";
}; };
@@ -11,6 +14,7 @@
nginx.enable = false; nginx.enable = false;
node = { node = {
enable = true; enable = true;
openFirewall = true;
enabledCollectors = [ enabledCollectors = [
"conntrack" "conntrack"
"diskstats" "diskstats"
@@ -35,40 +39,46 @@
}; };
}; };
networking.firewall.allowedTCPPorts = [ config.services.prometheus.exporters.node.port ];
systemd.services.promtail = { systemd.services.promtail = {
description = "Promtail service for Loki"; description = "Promtail service for Loki";
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''
${pkgs.grafana-loki}/bin/promtail --config.file ${(pkgs.formats.yaml {}).generate "promtail.yaml" { ${pkgs.grafana-loki}/bin/promtail --config.file ${
server = { (pkgs.formats.yaml {}).generate "promtail.yaml" {
http_listen_port = 28183; server = {
grpc_listen_port = 0; http_listen_port = 28183;
}; grpc_listen_port = 0;
positions.filename = "/tmp/positions.yaml"; };
clients = [ positions.filename = "/tmp/positions.yaml";
{ url = "http://${if config.networking.hostName == "makanek" then "127.0.0.1" else "makanek.r"}:3100/loki/api/v1/push"; } clients = [
]; {
scrape_configs = [ url = "http://${
{ if config.networking.hostName == "makanek"
job_name = "journal"; then "127.0.0.1"
journal = { else "makanek.r"
max_age = "12h"; }:3100/loki/api/v1/push";
labels.job = "systemd-journal"; }
labels.host = config.networking.hostName; ];
}; scrape_configs = [
relabel_configs = [ {
{ job_name = "journal";
source_labels = [ "__journal__systemd_unit" ]; journal = {
target_label = "unit"; 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,29 @@
{ pkgs, lib, ... }: let {
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}"; pkgs,
lib,
config,
niveumPackages,
...
}: let
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
in { in {
environment.shellAliases.smpv = swallow "mpv"; environment.shellAliases.smpv = swallow "mpv";
nixpkgs.overlays = [
(self: super: {
mpv = config.home-manager.users.me.programs.mpv.finalPackage;
})
];
home-manager.users.me = { home-manager.users.me = {
programs.mpv = { programs.mpv = {
enable = true; enable = true;
config = { 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"; screenshot-template = "%F-%wH%wM%wS-%#04n";
script-opts = "ytdl_hook-ytdl_path=${pkgs.yt-dlp}/bin/yt-dlp";
ao = "pulse"; # no pipewire for me :(
}; };
bindings = { bindings = {
"Alt+RIGHT" = "add video-rotate 90"; "Alt+RIGHT" = "add video-rotate 90";
@@ -22,6 +37,7 @@ in {
}; };
scripts = [ scripts = [
pkgs.mpvScripts.youtube-quality pkgs.mpvScripts.youtube-quality
niveumPackages.mpv-visualizer
]; ];
}; };
}; };

View File

@@ -1,248 +0,0 @@
{ pkgs, lib, ... }:
let
mainMailbox = "posteo";
accounts.uni = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "kieran.felix.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.uni-old = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "meinhark@informatik.hu-berlin.de";
imap = "mailbox.informatik.hu-berlin.de";
smtp = "mailhost.informatik.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.work-uni = {
user = "meinhaki";
password = lib.strings.fileContents <secrets/mail/meinhaki>;
address = "kieran.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.work-fysi = rec {
user = "kieran@fysi.tech";
address = user;
password = lib.strings.fileContents <secrets/mail/fastmail>;
imap = "imap.fastmail.com";
smtp = "smtp.fastmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.cock = rec {
user = "2210@cock.li";
address = user;
password = lib.strings.fileContents <secrets/mail/cock>;
imap = "mail.cock.li";
smtp = imap;
smtpSettings = smtp: "smtp://${smtp}:587";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts."${mainMailbox}" = rec {
user = "kieran.meinhardt@posteo.net";
address = user;
password = lib.strings.fileContents <secrets/mail/posteo>;
imap = "posteo.de";
smtp = imap;
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.google-amro = rec {
user = "amroplay@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/amroplay>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Drafts";
sent = "[Gmail]/Sent Mail";
trash = "[Gmail]/Bin";
};
};
accounts.google-kieran = rec {
user = "kieran.meinhardt@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/kieran.meinhardt>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Entwürfe";
sent = "[Gmail]/Gesendet";
trash = "[Gmail]/Papierkorb";
};
};
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 sidebar_visible
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
set sidebar_width = 25 # Plenty of space
set sidebar_divider_char = '' # Pretty line-drawing character
set mail_check_stats
set index_format="%2C %Z %D %-15.15L %s"
set date_format="%F %R"
set sort = 'reverse-date'
set sleep_time = 0 # Pause 0 seconds for informational messages
set markers = no # Disables the `+` displayed at line wraps
set mark_old = no # Unread mail stay unread until read
set wait_key = no # mutt won't ask "press key to continue"
set fast_reply # skip to compose when replying
set forward_format = "Fwd: %s" # format of subject when forwarding
set reverse_name # reply as whomever it was to
set include=ask-no # don't include message in replies
auto_view text/html # automatically show html (mailcap uses lynx)
auto_view application/pgp-encrypted
alternative_order text/plain text/enriched text/html
set abort_noattach abort_noattach_regex="\<(attach|attached|attachments?|anbei|Anhang|angehängt)\>"
set attach_save_dir=/tmp
set fast_reply
set narrow_tree # narrow threads for more depth
bind index,pager B sidebar-toggle-visible # Use 'B' to switch the Sidebar on and off
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
macro index * <limit>~F\r
macro index + <limit>all\r
set query_command = "khard email --parsable %s"
bind editor <Tab> complete-query
bind editor ^T complete
set mail_check = 90
set timeout = 15
# set imap_check_subscribed
set use_from
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)}
''}
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 '.*'
# 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'
# 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<>\"]"
''}
'';
}

View File

@@ -1,28 +1,22 @@
{ pkgs, ... }: { {
pkgs,
niveumPackages,
...
}: {
environment.variables.EDITOR = pkgs.lib.mkForce "nvim"; environment.variables.EDITOR = pkgs.lib.mkForce "nvim";
environment.shellAliases.vi = "nvim"; environment.shellAliases.vi = "nvim";
environment.shellAliases.vim = "nvim"; environment.shellAliases.vim = "nvim";
environment.shellAliases.view = "nvim -R"; 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> { };
};
};
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'') (pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
(pkgs.neovim.override { (pkgs.neovim.override {
configure = { configure = {
customRC = builtins.readFile <niveum/lib/vim/init.vim>; customRC = ''
source ${../lib/vim/init.vim}
luafile ${../lib/vim/init.lua}
'';
packages.nvim = with pkgs.vimPlugins; { packages.nvim = with pkgs.vimPlugins; {
start = [ start = [
ale ale
@@ -32,24 +26,36 @@
undotree undotree
tabular tabular
# vimwiki # vimwiki
vim-colors-paramount niveumPackages.vimPlugins-vim-colors-paramount
nvim-lspconfig
vim-commentary vim-commentary
vim-css-color vim-css-color
vim-eunuch vim-eunuch
vim-fetch niveumPackages.vimPlugins-vim-fetch
vim-fugitive vim-fugitive
vim-gitgutter vim-gitgutter
vim-repeat vim-repeat
vim-sensible vim-sensible
vim-surround vim-surround
(pkgs.vimUtils.buildVimPlugin rec {
pname = "vim-dim";
version = "1.1.0";
name = "${pname}-${version}";
src = pkgs.fetchFromGitHub {
owner = "jeffkreeftmeijer";
repo = pname;
rev = version;
sha256 = "sha256-lyTZUgqUEEJRrzGo1FD8/t8KBioPrtB3MmGvPeEVI/g=";
};
})
]; ];
opt = [ opt = [
csv csv
elm-vim elm-vim
emmet-vim emmet-vim
haskell-vim haskell-vim
icalendar-vim niveumPackages.vimPlugins-icalendar-vim
jq-vim niveumPackages.vimPlugins-jq-vim
rust-vim rust-vim
typescript-vim typescript-vim
vim-javascript vim-javascript
@@ -58,7 +64,7 @@
vimtex vimtex
vim-pandoc vim-pandoc
vim-pandoc-syntax vim-pandoc-syntax
vim-256noir niveumPackages.vimPlugins-vim-256noir
]; ];
}; };
}; };

View File

@@ -1,20 +1,25 @@
{ lib, pkgs, ... }: {
let lib,
profile = name: custom: lib.recursiveUpdate { pkgs,
connection.id = name; ...
connection.type = "wifi"; }: let
connection.interface-name = "wlp3s0"; profile = name: custom:
connection.permissions = ""; lib.recursiveUpdate {
wifi.mac-address-blacklist = ""; connection.id = name;
wifi.ssid = name; connection.type = "wifi";
wifi.mode = "infrastructure"; connection.interface-name = "wlp3s0";
ipv4.dns-search = ""; connection.permissions = "";
ipv4.method = "auto"; wifi.mac-address-blacklist = "";
ipv6.addr-gen-mode = "stable-privacy"; wifi.ssid = name;
ipv6.dns-search = ""; wifi.mode = "infrastructure";
ipv6.method = "auto"; ipv4.dns-search = "";
proxy = {}; ipv4.method = "auto";
} custom; ipv6.addr-gen-mode = "stable-privacy";
ipv6.dns-search = "";
ipv6.method = "auto";
proxy = {};
}
custom;
eduroamProfile = { eduroamProfile = {
connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf"; connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf";
wifi-security = { wifi-security = {
@@ -36,51 +41,26 @@ let
phase2-auth = "pap"; phase2-auth = "pap";
}; };
}; };
in in {
{ programs.nm-applet.enable = true;
imports = [ <niveum/modules/networkmanager-declarative.nix> ];
networking.networkmanager = { networking.networkmanager = {
enable = true; enable = true;
plugins = [
pkgs.networkmanager-openvpn
pkgs.networkmanager-fortisslvpn
];
wifi.macAddress = "random"; wifi.macAddress = "random";
ethernet.macAddress = "random"; ethernet.macAddress = "random";
unmanaged = [ "docker*" ]; unmanaged = ["docker*"];
profiles = lib.mapAttrs profile {
Aether = {
connection.uuid = "7138bb0f-1aeb-4905-890e-a6628427aa21";
ipv6.addr-gen-mode = "stable";
wifi.cloned-mac-address = "stable";
wifi-security = {
psk = lib.strings.fileContents <secrets/wifi/Aether.psk>;
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
FactoryCommunityGuest = {
connection.uuid = "fb1f2e52-651e-48b5-a72c-1accddf31afb";
connection.timestamp = "1631885129";
wifi.seen-bssids = "54:EC:2F:19:30:DC;54:EC:2F:19:5C:9C;54:EC:2F:58:E4:3C;";
wifi-security = {
psk = "Factory4ever";
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
o2-WLAN66 = {
connection.uuid = "c563aec3-f344-4ffb-8d1c-60a6cdac8fe0";
wifi-security = {
psk = "PK3468KV488T934U";
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
"WIFI@DB".connection.uuid = "4eff4e94-8850-4e9f-a338-1787d0d90479";
eduroam = eduroamProfile;
eduroam_5GHz = eduroamProfile;
};
}; };
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,15 +1,40 @@
{ pkgs, config, ... }: {
let pkgs,
config,
lib,
...
}: let
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'"; 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"; youtube-download = "${pkgs.ts}/bin/ts ${pkgs.yt-dlp}/bin/yt-dlp -f ${ytdl-format} --add-metadata";
newsboat-home = newsboat-home = "${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
"${config.users.users.me.home}/cloud/Seafile/Documents/newsboat"; linkhandler = pkgs.writers.writeDash "linkhandler" ''
linkhandler-bin = "${pkgs.scripts.linkhandler}/bin/linkhandler"; # Feed script a url or file location.
# If an image, it will view in sxiv,
# if a video or gif, it will view in mpv
# if a music file or pdf, it will download,
# otherwise it opens link in browser.
# If no url given. Opens browser. For using script as $BROWSER.
[ -z "$1" ] && { "$BROWSER"; exit; }
case "$1" in
*mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
setsid -f ${pkgs.mpv}/bin/mpv -quiet "$1" >/dev/null 2>&1 ;;
*png|*jpg|*jpe|*jpeg|*gif)
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///")" >/dev/null 2>&1 & ;;
*mp3|*flac|*opus|*mp3?source*)
setsid -f tsp curl -LO "$1" >/dev/null 2>&1 ;;
*)
if [ -f "$1" ]; then "$TERMINAL" -e "$EDITOR" "$1"
else setsid -f "$BROWSER" "$1" >/dev/null 2>&1; fi ;;
esac
'';
newsboat-config = pkgs.writeText "config" '' newsboat-config = pkgs.writeText "config" ''
auto-reload no auto-reload no
reload-threads 8
prepopulate-query-feeds yes prepopulate-query-feeds yes
# dont keep a search history # dont keep a search history
@@ -19,12 +44,12 @@ let
text-width 85 text-width 85
external-url-viewer "${pkgs.urlscan}/bin/urlscan -dc -r '${linkhandler-bin} {}'" external-url-viewer "${pkgs.urlscan}/bin/urlscan -dc -r '${linkhandler} {}'"
browser ${linkhandler-bin} browser ${linkhandler}
macro , open-in-browser macro , open-in-browser
macro c set browser "${pkgs.xsel}/bin/xsel -b <<<" ; open-in-browser ; set browser ${linkhandler-bin} macro c set browser "${pkgs.xsel}/bin/xsel -b <<<" ; open-in-browser ; set browser ${linkhandler}
macro v set browser "${pkgs.utillinux}/bin/setsid -f ${pkgs.mpv}/bin/mpv" ; open-in-browser ; set browser ${linkhandler-bin} macro v set browser "${pkgs.util-linux}/bin/setsid -f ${pkgs.mpv}/bin/mpv" ; open-in-browser ; set browser ${linkhandler}
macro y set browser "${youtube-download}" ; open-in-browser ; set browser ${linkhandler-bin} macro y set browser "${youtube-download}" ; open-in-browser ; set browser ${linkhandler}
bind-key j down bind-key j down
bind-key k up bind-key k up
@@ -48,7 +73,7 @@ let
save-path ${newsboat-home}/saved/ save-path ${newsboat-home}/saved/
highlight all "---.*---" yellow default highlight all "---.*---" yellow default
highlight feedlist ".*(0/0))" black default # highlight feedlist ".*(0/0))" default default
highlight article "^Title:.*" yellow default bold highlight article "^Title:.*" yellow default bold
highlight article "^Author:.*" yellow default highlight article "^Author:.*" yellow default
highlight article "^Flags:.*" red default highlight article "^Flags:.*" red default
@@ -56,25 +81,37 @@ let
highlight article "\\[image [0-9][0-9]*\\]" color109 default bold highlight article "\\[image [0-9][0-9]*\\]" color109 default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" color66 default bold highlight article "\\[embedded flash: [0-9][0-9]*\\]" color66 default bold
color background white default
color listnormal white default
color listnormal_unread white default bold
color listfocus blue default color listfocus blue default
color listfocus_unread blue default bold color listfocus_unread blue default bold
color info red default bold color info red default bold
color article white default
'';
in {
nixpkgs.config.packageOverrides = pkgs: {
newsboat = pkgs.writers.writeDashBin "newsboat" ''
${pkgs.newsboat}/bin/newsboat -C ${newsboat-config} -c ${newsboat-home}/cache.db -u ${newsboat-home}/urls "$@"
'';
};
urls-source "miniflux"
miniflux-url "https://feed.kmein.de"
miniflux-login "kfm"
miniflux-password "${lib.strings.fileContents <secrets/miniflux/password>}"
'';
newsboat-sql = "${pkgs.sqlite}/bin/sqlite3 ${newsboat-home}/cache.db";
in {
environment.systemPackages = [ environment.systemPackages = [
pkgs.newsboat pkgs.newsboat
(pkgs.writers.writeDashBin "newsboat-unread-count" ''
if [ -f ${newsboat-home}/cache.db.lock ]; then
${pkgs.jq}/bin/jq -n '{state: "Info", text: "", icon: "rss"}'
else
${pkgs.jq}/bin/jq -n \
--argjson unread "$(${newsboat-sql} "SELECT COUNT(DISTINCT id) FROM rss_item WHERE unread=1")" \
--argjson watchLater "$(${newsboat-sql} "SELECT COUNT(DISTINCT id) FROM rss_item WHERE flags='e' AND deleted=0")" \
'{
state: (if $unread > 0 then "Good" else "Idle" end),
text: (if $unread > 0 then "\($unread)" else "[\($watchLater)]" end),
icon: "rss"
}'
fi
'')
(pkgs.writers.writeDashBin "mpv-watch-later" '' (pkgs.writers.writeDashBin "mpv-watch-later" ''
${pkgs.sqlite}/bin/sqlite3 ${newsboat-home}/cache.db "SELECT url FROM rss_item WHERE flags='e' AND deleted=0 ORDER BY pubDate DESC" \ ${newsboat-sql} "SELECT url FROM rss_item WHERE flags='e' AND deleted=0 ORDER BY pubDate DESC" \
| ${pkgs.findutils}/bin/xargs ${pkgs.mpv}/bin/mpv | ${pkgs.findutils}/bin/xargs ${pkgs.mpv}/bin/mpv
'') '')
]; ];

View File

@@ -1,14 +1,9 @@
{ pkgs, ... }: {pkgs, ...}: {
{
nixpkgs = { nixpkgs = {
config.allowUnfree = true; config.allowUnfree = true;
overlays = [
(import <nix-writers/pkgs>)
(import <stockholm/krebs/5pkgs>)
];
}; };
nix = { nix = {
package = pkgs.nixUnstable; package = pkgs.nixFlakes;
extraOptions = "experimental-features = nix-command flakes"; extraOptions = "experimental-features = nix-command flakes";
}; };
} }

View File

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

View File

@@ -1,13 +1,17 @@
{ pkgs, lib, ... }: {
let config,
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {}; pkgs,
worldradio = pkgs.callPackage <niveum/packages/worldradio.nix> {}; lib,
menstruation = pkgs.callPackage <menstruation-backend> {}; inputs,
pandoc-doc = pkgs.callPackage <niveum/packages/man/pandoc.nix> {}; niveumPackages,
...
}: let
worldradio = pkgs.callPackage ../packages/worldradio.nix {};
nixpkgs-unstable = import <nixpkgs-unstable> { config.allowUnfree = true; }; zoteroStyle = {
name,
zoteroStyle = { name, sha256 }: { sha256,
}: {
name = "${name}.csl"; name = "${name}.csl";
path = pkgs.fetchurl { path = pkgs.fetchurl {
url = "https://www.zotero.org/styles/${name}"; url = "https://www.zotero.org/styles/${name}";
@@ -17,40 +21,38 @@ let
cslDirectory = pkgs.linkFarm "citation-styles" [ cslDirectory = pkgs.linkFarm "citation-styles" [
(zoteroStyle { (zoteroStyle {
name = "chicago-author-date-de"; name = "chicago-author-date-de";
sha256 = "0fz0xn46rkciblr34a7x2v60j0lbq9l3fmzi43iphph27m0czn6s"; sha256 = "sha256-ddMYk4A9DJQhx9ldkmF7PhwKuc7wUSr26uHHGAze9Ps=";
}) })
(zoteroStyle { (zoteroStyle {
name = "din-1505-2"; name = "din-1505-2";
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"; sha256 = "sha256-bXZbB850fek8J6wMVFL32ndI7F4wiKKr1qUC71ezreE=";
}) })
(zoteroStyle { (zoteroStyle {
name = "apa"; name = "apa";
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111"; sha256 = "sha256-yq4fW6hQknycLjaj5fPbXLrQlGBp5myXiOSHBU90jEc=";
}) })
]; ];
astrolog = pkgs.astrolog.overrideAttrs (old:
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old: old // { old
installPhase = '' // {
${old.installPhase} installPhase = ''
# set sensible defaults ${old.installPhase}
sed -i ' # set sensible defaults
/^-z /s/8:00W/1:00E/ # timezone sed -i '
/^-zl /s/122W19:59 47N36:35/13E22:42 52N27:42/ # default location /^-z /s/8:00W/1:00E/ # timezone
/^-zj /s/"Current moment now"/Now/ # default name /^-zl /s/122W19:59 47N36:35/13E22:42 52N27:42/ # default location
/^-zj /s/"Seattle, WA, USA"/Berlin/ # default location /^-zj /s/"Current moment now"/Now/ # default name
/^_k/s/_k/=k/ # use color /^-zj /s/"Seattle, WA, USA"/Berlin/ # default location
/^_Yd/s/_Yd/=Yd/ # sensible date format /^_k/s/_k/=k/ # use color
/^_Yt/s/_Yt/=Yt/ # sensible time format /^_Yd/s/_Yd/=Yd/ # sensible date format
/^_Yv/s/_Yv/=Yv/ # sensible length format /^_Yt/s/_Yt/=Yt/ # sensible time format
/^:Xbw/s/:Xbw/:Xbn/ # set X11 bitmap format /^_Yv/s/_Yv/=Yv/ # sensible length format
/^:I /s/80/120/ # wider text output /^:Xbw/s/:Xbw/:Xbn/ # set X11 bitmap format
' $out/astrolog/astrolog.as /^:I /s/80/120/ # wider text output
''; ' $out/astrolog/astrolog.as
}); '';
});
recht = pkgs.callPackage <recht> {};
in { in {
home-manager.users.me.home.file = { home-manager.users.me.home.file = {
".csl".source = cslDirectory; ".csl".source = cslDirectory;
@@ -67,12 +69,13 @@ in {
whois whois
dnsutils dnsutils
# FILE MANAGERS # FILE MANAGERS
ranger lf
pcmanfm cinnamon.nemo
# MEDIA # MEDIA
ffmpeg ffmpeg
imagemagick imagemagick
exiftool exiftool
nsxiv
# ARCHIVE TOOLS # ARCHIVE TOOLS
unzip unzip
unrar unrar
@@ -89,17 +92,19 @@ in {
fd # better find fd # better find
file # determine file type file # determine file type
dos2unix dos2unix
ncdu # ncurses disk usage genpass # generate passwords
gdu # ncurses disk usage (ncdu is broken)
rmlint # remove duplicate files
python3Packages.jsonschema # json validation python3Packages.jsonschema # json validation
jq # json toolkit jq # json toolkit
pup # html toolkit pup # html toolkit
htmlq htmlq
xsv # csv toolkit xsv # csv toolkit
xmlstarlet # xml toolkit fq # toolkit for yaml, xml and binaries
manpages man-pages
posix_man_pages man-pages-posix
tree tree
fuse_exfat # to mount windows drives exfat # to mount windows drives
parallel # for parallel, since moreutils shadows task spooler parallel # for parallel, since moreutils shadows task spooler
ripgrep # better grep ripgrep # better grep
rlwrap rlwrap
@@ -111,80 +116,83 @@ in {
arandr # xrandr for noobs arandr # xrandr for noobs
libnotify # for notify-send libnotify # for notify-send
xclip # clipboard CLI xclip # clipboard CLI
dragon-drop # drag and drop xdragon # drag and drop
xorg.xkill # kill by clicking xorg.xkill # kill by clicking
audacity audacity
calibre calibre
electrum
inkscape inkscape
astrolog astrolog
anki # flashcards anki-bin # flashcards
jbofihe # lojbanic software jbofihe # lojbanic software
nixpkgs-unstable.zoom-us # video conferencing zoom-us # video conferencing
alejandra # nix formatter
pdfgrep # search in pdf pdfgrep # search in pdf
pdftk # pdf toolkit pdftk # pdf toolkit
mupdf mupdf
poppler_utils # pdf toolkit poppler_utils # pdf toolkit
foxitreader # for viewing pdf annotations okular # the word is nucular
xournalpp # for annotating pdfs xournalpp # for annotating pdfs
pdfpc # presenter console for pdf slides pdfpc # presenter console for pdf slides
hc # print files as qr codes niveumPackages.hc # print files as qr codes
youtubeDL yt-dlp
espeak espeak
bc # calculator bc # calculator
pari # gp -- better calculator pari # gp -- better calculator
scripts.auc rink # unit converter
scripts.infschmv niveumPackages.auc
scripts.qrpaste niveumPackages.cheat-sh
scripts.ttspaste niveumPackages.infschmv
scripts.new-mac # get a new mac address niveumPackages.qrpaste
scripts.scanned niveumPackages.ttspaste
scripts.default-gateway niveumPackages.new-mac # get a new mac address
scripts.showkeys-toggle niveumPackages.scanned
scripts.kirciuoklis niveumPackages.default-gateway
scripts.favicon niveumPackages.kirciuoklis
scripts.ipa # XSAMPA to IPA converter niveumPackages.image-convert-favicon
scripts.playlist niveumPackages.heuretes
scripts.mpv-tv niveumPackages.ipa # XSAMPA to IPA converter
scripts.devanagari niveumPackages.pls
scripts.betacode # ancient greek betacode to unicode converter niveumPackages.mpv-tv
scripts.meteo niveumPackages.devanagari
scripts.mahlzeit niveumPackages.betacode # ancient greek betacode to unicode converter
recht niveumPackages.meteo
scripts.vimv niveumPackages.mahlzeit
scripts.swallow # window swallowing niveumPackages.vimv
scripts.literature-quote niveumPackages.swallow # window swallowing
scripts.nav # json navigation niveumPackages.literature-quote
scripts.notetags jless # less(1) for json
scripts.booksplit niveumPackages.booksplit
scripts.dmenurandr niveumPackages.dmenu-randr
scripts.interdimensional-cable niveumPackages.dmenu-bluetooth
scripts.dmenubluetooth niveumPackages.manual-sort
scripts.manual-sort niveumPackages.dns-sledgehammer
scripts.much-scripts
scripts.dns-sledgehammer
ts ts
scripts.vg niveumPackages.vg
scripts.fkill niveumPackages.fkill
scripts.wttr niveumPackages.wttr
scripts.unicodmenu niveumPackages.unicodmenu
scripts.horoscope niveumPackages.closest
scripts.closest niveumPackages.trans
scripts.trans (niveumPackages.mpv-radio.override {
scripts.mpv-radio di-fm-key-file = config.age.secrets.di-fm-key.path;
})
# kmein.slide # kmein.slide
scripts.tolino-screensaver termdown
scripts.rfc niveumPackages.image-convert-tolino
scripts.tag niveumPackages.rfc
scripts.timer niveumPackages.tag
python3Packages.eyeD3 niveumPackages.timer
scripts.menu-calc niveumPackages.menu-calc
nix-prefetch-git nix-prefetch-git
scripts.nix-git niveumPackages.nix-git
nixfmt nixfmt
par par
qrencode qrencode
menstruation inputs.menstruation-backend.defaultPackage.x86_64-linux
inputs.agenix.packages.x86_64-linux.default
inputs.recht.defaultPackage.x86_64-linux
(pkgs.writers.writeDashBin "worldradio" '' (pkgs.writers.writeDashBin "worldradio" ''
shuf ${worldradio} | ${pkgs.findutils}/bin/xargs ${pkgs.mpv}/bin/mpv --no-video shuf ${worldradio} | ${pkgs.findutils}/bin/xargs ${pkgs.mpv}/bin/mpv --no-video
@@ -194,24 +202,24 @@ in {
${pkgs.openssh}/bin/ssh makanek "cd /var/lib/weechat/logs && grep --ignore-case --color=always --recursive $@" | ${pkgs.less}/bin/less --raw-control-chars ${pkgs.openssh}/bin/ssh makanek "cd /var/lib/weechat/logs && grep --ignore-case --color=always --recursive $@" | ${pkgs.less}/bin/less --raw-control-chars
'') '')
(pkgs.writers.writeDashBin "ncmpcpp-zaatar" ''MPD_HOST=${(import <niveum/lib/local-network.nix>).zaatar} exec ${pkgs.ncmpcpp}/bin/ncmpcpp "$@"'') (pkgs.writers.writeDashBin "ncmpcpp-zaatar" ''MPD_HOST=${(import ../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 "$@"'') (pkgs.writers.writeDashBin "mpc-zaatar" ''MPD_HOST=${(import ../lib/local-network.nix).zaatar} exec ${pkgs.mpc_cli}/bin/mpc "$@"'')
inputs.scripts.packages.x86_64-linux.alarm
spotify spotify
ncspot ncspot
playerctl playerctl
nix-index nix-index
scripts.nix-index-update niveumPackages.nix-index-update
#krebs #krebs
dic niveumPackages.dic
cyberlocker-tools niveumPackages.cyberlocker-tools
untilport niveumPackages.untilport
kpaste niveumPackages.kpaste
irc-announce config.nur.repos.mic92.ircsink
git-preview
ircaids
(python3.withPackages (py: [ (python3.withPackages (py: [
py.black py.black
@@ -223,28 +231,36 @@ in {
py.pygments py.pygments
py.schema py.schema
])) ]))
python3Packages.poetry # python3Packages.poetry
htmlTidy # language servers
pyright
haskell-language-server
texlab
nil
rust-analyzer
html-tidy
nodePackages.csslint nodePackages.csslint
nodePackages.jsonlint nodePackages.jsonlint
nodePackages.prettier nodePackages.prettier
nodePackages.typescript nodePackages.typescript
nodePackages.yarn nodePackages.yarn
deno # better node.js
nodejs nodejs
nodePackages.javascript-typescript-langserver nodePackages.javascript-typescript-langserver
texlive.combined.scheme-full texlive.combined.scheme-full
latexrun latexrun
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ])) (aspellWithDicts (dict: [dict.de dict.en dict.en-computers]))
# haskellPackages.pandoc-citeproc # haskellPackages.pandoc-citeproc
scripts.text2pdf niveumPackages.text2pdf
lowdown lowdown
glow # markdown to term glow # markdown to term
libreoffice libreoffice
# gnumeric # gnumeric
dia dia
pandoc pandoc
pandoc-doc niveumPackages.man-pandoc
# proselint # proselint
asciidoctor asciidoctor
wordnet wordnet
@@ -253,12 +269,21 @@ in {
binutils # for strip, ld, ... binutils # for strip, ld, ...
# nightly.rust # nightly.rust
shellcheck shellcheck
(pkgs.writers.writeDashBin "hass-cli" ''
HASS_SERVER=http://zaatar.r:8123 HASS_TOKEN="$(cat ${config.age.secrets.home-assistant-token.path})" exec ${pkgs.home-assistant-cli}/bin/hass-cli "$@"
'')
]; ];
age.secrets.home-assistant-token = {
file = ../secrets/home-assistant-token.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
home-manager.users.me.xdg.configFile."pycodestyle".text = '' home-manager.users.me.xdg.configFile."pycodestyle".text = ''
[pycodestyle] [pycodestyle]
max-line-length = 110 max-line-length = 110
''; '';
} }

25
configs/picom.nix Normal file
View File

@@ -0,0 +1,25 @@
{
services.picom = {
enable = true;
activeOpacity = 1;
fade = true;
fadeDelta = 1;
inactiveOpacity = 0.9;
shadow = true;
menuOpacity = 0.9;
shadowOpacity = 0.3;
fadeExclude = [
"class_g = 'slock'" # don't want a transparent lock screen!
"name *?= 'slock'"
"focused = 1"
];
opacityRules = [
# opacity-rule overrides both inactive and active opacity
# video in browser tabs
# substring /regex match of title bar text
"99:name *?= 'Youtube'"
"99:WM_CLASS@:s *= 'mpv$'"
];
};
}

View File

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

View File

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

View File

@@ -1,33 +1,37 @@
{ pkgs, ... }: {pkgs, ...}: let
let inherit (import ../lib) localAddresses;
inherit (import <niveum/lib>) localAddresses; hp-driver = pkgs.hplip;
hp-driver = pkgs.hplipWithPlugin;
in { in {
services.printing = { services.printing = {
enable = true; enable = true;
drivers = [ hp-driver ]; drivers = [hp-driver];
}; };
hardware.sane = { environment.systemPackages = [
enable = true; pkgs.system-config-printer
extraBackends = [ hp-driver ]; ];
};
hardware.printers.ensurePrinters = [{ # allow connecting to .local printers
name = "OfficeJet"; services.avahi.nssmdns = true;
location = "Zimmer";
deviceUri = "https://${localAddresses.officejet}"; hardware.printers.ensurePrinters = [
model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd"; {
ppdOptions = { name = "OfficeJet";
Duplex = "DuplexNoTumble"; # DuplexNoTumble DuplexTumble None location = "Zimmer";
PageSize = "A4"; # A4 A4.FB A4.Duplex deviceUri = "https://${localAddresses.officejet}";
MediaType = "Plain"; model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd";
OutputMode = "Normal"; ppdOptions = {
ColorModel = "KGray"; # RGB CMYGray KGray 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 HP/hp-officejet_4650_series.ppd.gz
drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd 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,12 @@
{ config, pkgs, ... }: { {
imports = [ config,
<niveum/modules/retiolum.nix> pkgs,
]; ...
}: {
networking.hosts = {"42:0:ca48:f98f:63d7:31ce:922b:245d" = ["go"];};
networking.hosts = { "42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ]; }; services.tinc.networks.retiolum = {
rsaPrivateKeyFile = config.age.secrets.retiolum-rsa.path;
ed25519PrivateKeyFile = config.age.secrets.retiolum-ed25519.path;
};
} }

View File

@@ -1,10 +1,26 @@
{ config, pkgs, ... }: {
let config,
pkgs,
...
}: let
inherit (import <niveum/lib>) colours; inherit (import <niveum/lib>) colours;
in{ in {
home-manager.users.me.programs.rofi = { home-manager.users.me.programs.rofi = {
enable = true; enable = true;
font = "Monospace 10"; font = "Monospace 10";
theme = "${pkgs.rofi}/share/rofi/themes/Arc-Dark.rasi"; theme = "${pkgs.rofi}/share/rofi/themes/Arc.rasi";
pass = {
enable = true;
extraConfig = ''
_pwgen() {
${pkgs.genpass}/bin/genpass "$@"
}
USERNAME_field='login'
default_user2=kmein
help_color="#FF0000"
''; # help_color set by https://github.com/mrossinek/dotfiles/commit/13fc5f24caa78c8f20547bf473266879507f13bf
};
plugins = [pkgs.rofi-calc];
}; };
} }

View File

@@ -7,4 +7,10 @@
fonts.fontconfig.enable = false; fonts.fontconfig.enable = false;
nix.gc.automatic = true; nix.gc.automatic = true;
nix.optimise.automatic = true; nix.optimise.automatic = true;
services.journald.extraConfig = "SystemMaxUse=500M";
# https://webzine.snowflake.ovh/issue-001.html -- garbage collect when less then 1 GB is available, make 3 GB fee
nix.extraOptions = ''
min-free = 1073741824
max-free = 3221225472
'';
} }

View File

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

45
configs/sound.nix Normal file
View File

@@ -0,0 +1,45 @@
{pkgs, ...}: {
sound.enable = true;
# realtime audio for pulseaudio
security.rtkit.enable = true;
services.pipewire = {
enable = false;
systemWide = false;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
# 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"
]
}
'';
};
users.users.me.extraGroups = ["pipewire" "audio"];
environment.systemPackages = [
pkgs.pavucontrol
pkgs.ncpamixer
pkgs.pamixer
pkgs.pulsemixer
pkgs.pulseaudio # for pactl
];
}

View File

@@ -1,16 +1,46 @@
{ pkgs, config, lib, ... }: {
let pkgs,
inherit (import <niveum/lib>) sshPort kieran; config,
lib,
...
}: let
inherit (import ../lib) sshPort kieran;
externalNetwork = import ../lib/external-network.nix;
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
in { in {
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
programs.ssh.startAgent = true;
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs; users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
home-manager.users.me = {
services.gpg-agent = rec {
enable = true;
enableSshSupport = true;
defaultCacheTtlSsh = 2 * 60 * 60;
maxCacheTtlSsh = 4 * defaultCacheTtlSsh;
sshKeys = [
"568047C91DE03A23883E340F15A9C24D313E847C"
"BB3EE102DB8CD45540A78A6B18B511B67061F6B4" # kfm@manakish ed25519
"3F8986755818B5762A096BE212777EAAC441DD9D" # fysiweb rsa
"0E4ABD229432486CC432639BB0986B2CDE365105" # agenix ed25519
"A1E8D32CBFCDBD2DE798E2298D795CCFD785AE06" # kfm@kabsa ed25519
];
};
};
environment.extraInit = ''
if [[ -z "$SSH_AUTH_SOCK" ]]; then
export SSH_AUTH_SOCK="$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)"
fi
'';
environment.interactiveShellInit = ''
GPG_TTY="$(tty)"
export GPG_TTY
${pkgs.gnupg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null
'';
home-manager.users.me.programs.ssh = { home-manager.users.me.programs.ssh = {
enable = true; enable = true;
matchBlocks = { matchBlocks = rec {
"github.com" = { "github.com" = {
hostname = "ssh.github.com"; hostname = "ssh.github.com";
port = 443; port = 443;
@@ -21,7 +51,22 @@ in {
port = sshPort; port = sshPort;
}; };
makanek = { makanek = {
hostname = "makanek.r"; hostname = externalNetwork.makanek;
user = "root";
port = sshPort;
};
ful = {
hostname = externalNetwork.ful;
user = "root";
port = sshPort;
};
tahina = {
hostname = "tahina.r";
user = "root";
port = sshPort;
};
tabula = {
hostname = "tabula.r";
user = "root"; user = "root";
port = sshPort; port = sshPort;
}; };
@@ -30,11 +75,6 @@ in {
user = "kfm"; user = "kfm";
port = sshPort; port = sshPort;
}; };
toum = {
hostname = "toum.r";
user = "root";
port = sshPort;
};
kabsa = { kabsa = {
hostname = "kabsa.r"; hostname = "kabsa.r";
user = "kfm"; user = "kfm";
@@ -48,6 +88,19 @@ in {
hostname = "135.181.85.233"; hostname = "135.181.85.233";
user = "root"; user = "root";
}; };
"cms-dev.woc2023.app".identityFile = sshIdentity "fysiweb";
"cms-master.woc2023.app".identityFile = sshIdentity "fysiweb";
"fysi-dev1" = {
hostname = "94.130.229.139";
user = "root";
identityFile = sshIdentity "fysiweb";
};
${fysi-dev1.hostname} = fysi-dev1;
"fysi-shared0" = {
hostname = "49.12.205.235";
user = "root";
identityFile = sshIdentity "fysiweb";
};
}; };
}; };
} }

View File

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

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
dictionaries = { dictionaries = {
lojban = { lojban = {
jbo-deu = pkgs.fetchzip { jbo-deu = pkgs.fetchzip {
@@ -100,7 +104,9 @@ let
sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd"; sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd";
}; };
}; };
sanskrit = let repo = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f"; in { sanskrit = let
repo = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f";
in {
BoehtlingkRoth = pkgs.fetchzip { 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"; url = "${repo}/sa-head/german-entries/tars/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch__2021-10-05_14-23-18Z__19MB.tar.gz";
sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly"; sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly";
@@ -152,17 +158,28 @@ let
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8"; sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
}; };
}; };
turkish = {
BabylonTurkishEnglish = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_Turkish_English-2.4.2.tar.bz2";
sha256 = "17rv46r95nkikg7aszqmfrbgdhz9ny52w423m8n01g3p93shdb4i";
};
BabylonEnglishTurkish = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_English_Turkish-2.4.2.tar.bz2";
sha256 = "063dl02s8ii8snsxgma8wi49xwr6afk6ysq0v986fygx5511353f";
};
};
}; };
makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: { inherit name path; }) dicts); makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: {inherit name path;}) dicts);
makeStardict = name: dicts: pkgs.writers.writeDashBin name '' makeStardict = name: dicts:
set -efu pkgs.writers.writeDashBin name ''
export SDCV_PAGER=${toString sdcvPager} set -efu
exec ${pkgs.sdcv}/bin/sdcv --color --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@" export SDCV_PAGER=${toString sdcvPager}
''; exec ${pkgs.sdcv}/bin/sdcv --color --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@"
'';
sdcvPager = pkgs.writeDash "sdcvPager" '' sdcvPager = pkgs.writers.writeDash "sdcvPager" ''
export PATH=${lib.makeBinPath [pkgs.gnused pkgs.ncurses pkgs.less]} export PATH=${lib.makeBinPath [pkgs.gnused pkgs.ncurses pkgs.less]}
sed " sed "
s!<sup>1</sup>!¹!gI s!<sup>1</sup>!¹!gI
@@ -266,34 +283,39 @@ let
s!</\?p[^>]*>!!gI s!</\?p[^>]*>!!gI
" | less -FR " | less -FR
''; '';
in in {
{
environment.etc.stardict.source = toString (makeStardictDataDir ({ environment.etc.stardict.source = toString (makeStardictDataDir ({
Crum = pkgs.fetchzip { Crum = pkgs.fetchzip {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2"; url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9"; sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
}; };
SmithBiographyMythology = pkgs.fetchzip { SmithBiographyMythology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip"; url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2"; sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
}; };
SmithAntiquities = pkgs.fetchzip { SmithAntiquities = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip"; url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb"; sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
}; };
} // dictionaries.classics // dictionaries.sanskrit // dictionaries.oed // dictionaries.russian // dictionaries.englishGerman)); }
// dictionaries.classics
// dictionaries.sanskrit
// dictionaries.oed
// dictionaries.russian
// dictionaries.englishGerman
// dictionaries.turkish));
environment.systemPackages = [ environment.systemPackages = [
pkgs.goldendict # pkgs.goldendict
(makeStardict "lsj" dictionaries.classics) (makeStardict "lsj" dictionaries.classics)
(makeStardict "sa" dictionaries.sanskrit) (makeStardict "sa" dictionaries.sanskrit)
(makeStardict "oed" dictionaries.oed) (makeStardict "oed" dictionaries.oed)
(makeStardict "sd-russian" dictionaries.russian) (makeStardict "sd-russian" dictionaries.russian)
(makeStardict "sd" dictionaries.englishGerman) (makeStardict "sd" dictionaries.englishGerman)
(makeStardict "jbo" dictionaries.lojban) (makeStardict "jbo" dictionaries.lojban)
(makeStardict "sd-turkish" dictionaries.turkish)
]; ];
} }
/* /*
https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip 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 https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip
@@ -355,3 +377,4 @@ MacDonell = pkgs.fetchzip {
stripRoot = false; stripRoot = false;
}; };
*/ */

View File

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

View File

@@ -1,64 +0,0 @@
{ pkgs, lib, ... }:
let
important-directories = pkgs.writeText "directories" ''
h ~/
d ~/cloud/Dropbox/
g ~/cloud/gdrive/
s ~/cloud/Seafile/
kk ~/cloud/keybase/private/kmein/
kp ~/cloud/keybase/public/kmein/
t /tmp
D ~/Downloads
cf ''${XDG_CONFIG_HOME:-$HOME/.config}
'';
in {
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
]
}
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,6 +1,9 @@
{ pkgs, lib, ... }: {
let config,
nixpkgs-unstable = import <nixpkgs-unstable> {}; pkgs,
lib,
...
}: let
toSymbols = pkgs.writers.writeDash "to-symbols" '' toSymbols = pkgs.writers.writeDash "to-symbols" ''
${pkgs.gnused}/bin/sed ' ${pkgs.gnused}/bin/sed '
s/\bTri\b//; s/\bTri\b//;
@@ -41,14 +44,14 @@ in {
niveum.telegramBots.transits = { niveum.telegramBots.transits = {
enable = true; enable = true;
time = "*:0/1"; time = "*:0/1";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>; tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = [ "-1001796440545" ]; chatIds = ["-1001796440545"];
command = toString (pkgs.writers.writeDash "common-transits" '' command = toString (pkgs.writers.writeDash "common-transits" ''
now=$(${pkgs.coreutils}/bin/date +%_H:%M | ${pkgs.gnused}/bin/sed 's/^\s*//') now=$(${pkgs.coreutils}/bin/date +%_H:%M | ${pkgs.gnused}/bin/sed 's/^\s*//')
date=$(${pkgs.coreutils}/bin/date +'%m %d %Y') date=$(${pkgs.coreutils}/bin/date +'%m %d %Y')
{ {
${nixpkgs-unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node" ${pkgs.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node" -A 2
${nixpkgs-unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date -R Uranus Neptune Pluto "North Node" ${pkgs.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" || : } | ${toSymbols} | ${pkgs.coreutils}/bin/sort -n | ${pkgs.gnugrep}/bin/grep "^$now" || :
''); '');
}; };

View File

@@ -1,5 +1,9 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
config,
...
}: let
autorenkalender-package = pkgs.fetchFromGitHub { autorenkalender-package = pkgs.fetchFromGitHub {
owner = "kmein"; owner = "kmein";
repo = "autorenkalender"; repo = "autorenkalender";
@@ -7,14 +11,24 @@ let
sha256 = "1pa7sjg33vdnjianrqldv445jdzzv3mn231ljk1j58hs0cd505gs"; sha256 = "1pa7sjg33vdnjianrqldv445jdzzv3mn231ljk1j58hs0cd505gs";
}; };
autorenkalender = autorenkalender =
pkgs.python3Packages.callPackage autorenkalender-package { }; pkgs.python3Packages.callPackage autorenkalender-package {};
in { in {
niveum.telegramBots.autorenkalender = { niveum.telegramBots.autorenkalender = {
enable = true; enable = true;
time = "07:00"; time = "07:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>; tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = [ "@autorenkalender" ]; chatIds = ["@autorenkalender"];
parseMode = "Markdown"; parseMode = "Markdown";
command = "${autorenkalender}/bin/autorenkalender"; command = "${autorenkalender}/bin/autorenkalender";
}; };
age.secrets.telegram-token-kmein.file = ../../secrets/telegram-token-kmein.age;
niveum.passport.services = [
{
title = "Autorenkalender";
description = "sends <a href=\"https://www.projekt-gutenberg.org/\">Projekt Gutenberg</a>'s anniversary information to Telegram.";
link = "https://t.me/Autorenkalender";
}
];
} }

View File

@@ -0,0 +1,36 @@
{
pkgs,
lib,
config,
...
}: let
celan = pkgs.fetchzip {
url = "http://c.krebsco.de/celan.tar.gz";
sha256 = "sha256-nA+EwAH2vkeolsy9AoPLEMt1uGKDZe/aPrS95CZvuus=";
};
in {
niveum.telegramBots.celan = {
enable = true;
time = "08:00";
tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = ["@PaulCelan"];
command = toString (pkgs.writers.writeDash "random-celan" ''
cd ${celan}
poem="$(${pkgs.findutils}/bin/find . -type f | ${pkgs.coreutils}/bin/shuf -n1)"
source="$(${pkgs.coreutils}/bin/dirname "$poem" | ${pkgs.gnused}/bin/sed 's#^\./##;s/[-_]/ /g;s!/! !g;s/0\([0-9]\+\)/\1/g')"
cat "$poem"
echo
printf "Aus: %s\n" "$source"
'');
};
systemd.timers.telegram-bot-celan.timerConfig.RandomizedDelaySec = "10h";
niveum.passport.services = [
{
title = "Paul Celan Bot";
description = "sends a random poem by Paul Celan to Telegram.";
link = "https://t.me/PaulCelan";
}
];
}

View File

@@ -1,53 +1,91 @@
{ config, pkgs, lib, ... }: {
let config,
telebots = pkgs.callPackage <telebots> {}; pkgs,
lib,
inputs,
...
}: let
telebots = inputs.telebots.defaultPackage.x86_64-linux;
reverseDirectory = "/run/telegram-reverse"; reverseDirectory = "/run/telegram-reverse";
proverbDirectory = "/run/telegram-proverb"; proverbDirectory = "/run/telegram-proverb";
inherit (import <niveum/lib>) tmpfilesConfig; inherit (import ../../lib) tmpfilesConfig;
in { in {
imports = [ imports = [
./literature-quote.nix ./literature-quote.nix
./astrology.nix ./astrology.nix
./autorenkalender.nix ./autorenkalender.nix
./hesychius.nix
./smyth.nix
./nachtischsatan.nix ./nachtischsatan.nix
./tlg-wotd.nix ./tlg-wotd.nix
<niveum/modules/telegram-bot.nix> ./celan.nix
]; ];
systemd.tmpfiles.rules = map (path: tmpfilesConfig { systemd.tmpfiles.rules = map (path:
type = "d"; tmpfilesConfig {
mode = "0750"; type = "d";
age = "1h"; mode = "0750";
inherit path; age = "1h";
}) [ reverseDirectory proverbDirectory ]; inherit path;
}) [reverseDirectory proverbDirectory];
niveum.passport.services = [
{
title = "Rückwarts-Bot";
link = "https://t.me/RueckwaertsBot";
description = "reverses things on Telegram.";
}
{
title = "BetaCode-Bot";
link = "https://t.me/BetaCodeBot";
description = "converts <a href=\"https://en.wikipedia.org/wiki/Beta_Code\">beta code</a> to polytonic Greek on Telegram.";
}
{
title = "Sprichwortgenerator-Bot";
link = "https://t.me/SprichwortGeneratorBot";
description = "generates useless German proverbs with optional stock photo background on Telegram.";
}
];
age.secrets = {
telegram-token-reverse.file = ../../secrets/telegram-token-reverse.age;
telegram-token-betacode.file = ../../secrets/telegram-token-betacode.age;
telegram-token-proverb.file = ../../secrets/telegram-token-proverb.age;
};
systemd.services.telegram-reverse = { systemd.services.telegram-reverse = {
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
description = "Telegram reverse bot"; description = "Telegram reverse bot";
path = [ pkgs.ffmpeg ]; path = [pkgs.ffmpeg];
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/reverse.token>;
enable = true; enable = true;
script = "${telebots}/bin/telegram-reverse"; script = ''
TELEGRAM_BOT_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")" ${telebots}/bin/telegram-reverse
'';
serviceConfig.Restart = "always"; serviceConfig.Restart = "always";
serviceConfig.WorkingDirectory = reverseDirectory; serviceConfig.WorkingDirectory = reverseDirectory;
serviceConfig.LoadCredential = "token:${config.age.secrets.telegram-token-reverse.path}";
}; };
systemd.services.telegram-betacode = { systemd.services.telegram-betacode = {
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
description = "Telegram beta code bot"; description = "Telegram beta code bot";
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/betacode.token>;
enable = true; enable = true;
script = "${telebots}/bin/telegram-betacode"; script = ''
TELEGRAM_BOT_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")" ${telebots}/bin/telegram-betacode
'';
serviceConfig.Restart = "always"; serviceConfig.Restart = "always";
serviceConfig.LoadCredential = "token:${config.age.secrets.telegram-token-betacode.path}";
}; };
systemd.services.telegram-proverb = { systemd.services.telegram-proverb = {
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
description = "Telegram proverb bot"; description = "Telegram proverb bot";
environment.TELEGRAM_BOT_TOKEN = lib.strings.fileContents <system-secrets/telegram/proverb.token>;
enable = true; enable = true;
script = "${telebots}/bin/telegram-proverb"; script = ''
TELEGRAM_BOT_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")" ${telebots}/bin/telegram-proverb
'';
serviceConfig.Restart = "always"; serviceConfig.Restart = "always";
serviceConfig.WorkingDirectory = proverbDirectory; serviceConfig.WorkingDirectory = proverbDirectory;
serviceConfig.LoadCredential = "token:${config.age.secrets.telegram-token-proverb.path}";
}; };
} }

View File

@@ -0,0 +1,27 @@
{
pkgs,
config,
inputs,
lib,
...
}: let
hesychius = inputs.scripts.outPath + "/hesychius/hesychius.txt";
in {
niveum.telegramBots.hesychius = {
enable = true;
time = "08:00";
tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = ["@HesychiosAlexandreus"];
command = "${pkgs.coreutils}/bin/shuf -n1 ${hesychius}";
};
systemd.timers.telegram-bot-hesychius.timerConfig.RandomizedDelaySec = "10h";
niveum.passport.services = [
{
title = "Hesychius of Alexandria Bot";
description = "sends a random word from Hesychius of Alexandria's lexicon to Telegram.";
link = "https://t.me/HesychiosAlexandreus";
}
];
}

View File

@@ -1,14 +1,23 @@
{ pkgs, lib, ... }: {
let pkgs,
scripts = import <niveum/packages/scripts> { inherit pkgs lib; }; config,
inherit (scripts) literature-quote; lib,
in { niveumPackages,
...
}: {
niveum.telegramBots.quotebot = { niveum.telegramBots.quotebot = {
enable = true; enable = true;
time = "08/6:00"; time = "08/6:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>; tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = [ "18980945" "757821027" "455964311" ]; chatIds = ["-1001760262519"];
command = "${literature-quote}/bin/literature-quote"; command = "${niveumPackages.literature-quote}/bin/literature-quote";
parseMode = "Markdown"; parseMode = "Markdown";
}; };
niveum.passport.services = [
{
title = "Literature quote bot";
description = "sends me and my friends three <a href=\"https://logotheca.xn--kiern-0qa.de/\">logotheca</a> quotes a day.";
}
];
} }

View File

@@ -1,8 +1,12 @@
{ pkgs, lib, ... }: {
let pkgs,
nachtischsatan-bot = { token }: config,
lib,
...
}: let
nachtischsatan-bot = {tokenFile}:
pkgs.writers.writePython3 "nachtischsatan-bot" { 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 import Updater, MessageHandler
from telegram.ext.filters import Filters from telegram.ext.filters import Filters
@@ -15,20 +19,31 @@ let
update.message.reply_text("*flubberflubber*") update.message.reply_text("*flubberflubber*")
updater = Updater('${token}') with open('${tokenFile}', 'r') as tokenFile:
updater = Updater(tokenFile.read().strip())
updater.dispatcher.add_handler(MessageHandler(Filters.all, flubber)) updater.dispatcher.add_handler(MessageHandler(Filters.all, flubber))
updater.start_polling() updater.start_polling()
updater.idle() updater.idle()
''; '';
in { in {
systemd.services.telegram-nachtischsatan = { systemd.services.telegram-nachtischsatan = {
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
description = "*flubberflubber*"; description = "*flubberflubber*";
enable = true; enable = true;
script = toString (nachtischsatan-bot { script = toString (nachtischsatan-bot {
token = lib.strings.fileContents <system-secrets/telegram/nachtischsatan.token>; tokenFile = config.age.secrets.telegram-token-nachtischsatan.path;
}); });
serviceConfig.Restart = "always"; serviceConfig.Restart = "always";
}; };
age.secrets.telegram-token-nachtischsatan.file = ../../secrets/telegram-token-nachtischsatan.age;
niveum.passport.services = [
{
title = "Nachtischsatan-Bot";
link = "https://t.me/NachtischsatanBot";
description = "*flubberflubber*";
}
];
} }

View File

@@ -0,0 +1,38 @@
{
config,
pkgs,
lib,
...
}: {
niveum.telegramBots.smyth = {
enable = true;
time = "08:00";
tokenFile = config.age.secrets.telegram-token-kmein.path;
chatIds = ["@HerbertWeirSmyth"];
command = toString (pkgs.writers.writeDash "random-smyth" ''
set -efu
RANDOM_SECTION=$(
${pkgs.curl}/bin/curl -sSL http://www.perseus.tufts.edu/hopper/xmltoc?doc=Perseus%3Atext%3A1999.04.0007%3Asmythp%3D1 \
| ${pkgs.gnugrep}/bin/grep -o 'ref="[^"]*"' \
| ${pkgs.coreutils}/bin/shuf -n1 \
| ${pkgs.gnused}/bin/sed 's/^ref="//;s/"$//'
)
${pkgs.curl}/bin/curl -sSL http://www.perseus.tufts.edu/hopper/text?doc=$RANDOM_SECTION\
| ${pkgs.htmlq}/bin/htmlq '#text_main' \
| ${pkgs.gnused}/bin/sed 's/<\/\?hr>//g' \
| ${pkgs.pandoc}/bin/pandoc -f html -t plain --wrap=none
'');
};
systemd.timers.telegram-bot-smyth.timerConfig.RandomizedDelaySec = "10h";
niveum.passport.services = [
{
title = "Herbert Weir Smyth Bot";
description = "sends a random section from Smyth's Ancient Greek grammar to Telegram.";
link = "https://t.me/HerbertWeirSmyth";
}
];
}

View File

@@ -1,17 +1,29 @@
{ pkgs, lib, ... }:
{ {
pkgs,
lib,
config,
...
}: {
niveum.telegramBots.tlg-wotd = { niveum.telegramBots.tlg-wotd = {
enable = true; enable = true;
time = "9:30"; time = "9:30";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>; chatIds = ["@tlgwotd"];
chatIds = [ "@tlgwotd" ]; tokenFile = config.age.secrets.telegram-token-kmein.path;
command = toString (pkgs.writers.writeDash "tlg-wotd" '' command = toString (pkgs.writers.writeDash "tlg-wotd" ''
${pkgs.curl}/bin/curl -sSL http://stephanus.tlg.uci.edu/Iris/Wotd \ ${pkgs.curl}/bin/curl -sSL http://stephanus.tlg.uci.edu/Iris/Wotd \
| ${pkgs.recode}/bin/recode html..utf8 \ | ${pkgs.recode}/bin/recode html..utf8 \
| ${pkgs.jq}/bin/jq -r ' | ${pkgs.jq}/bin/jq -r '
"*\(.word)* '\'''\(.definition | rtrimstr(" "))'\'''\n\nFirst occurrence: \(.firstOccurrence)\nNumber of occurrences: \(.totalOccurrences)" "*\(.word)* '\'''\(.definition | sub("<.*>"; "") | rtrimstr(" "))'\'''\n\nFirst occurrence: \(.firstOccurrence)\nNumber of occurrences: \(.totalOccurrences)"
' '
''); '');
parseMode = "Markdown"; parseMode = "Markdown";
}; };
niveum.passport.services = [
{
title = "Thesaurus Linguae Graecae Word of the Day";
description = "sends <a href=\"https://stephanus.tlg.uci.edu/\">TLG</a>'s word of the day to Telegram.";
link = "https://t.me/tlgwotd";
}
];
} }

82
configs/themes.nix Normal file
View File

@@ -0,0 +1,82 @@
{
config,
lib,
pkgs,
...
}: let
switch-theme = pkgs.writers.writeDashBin "switch-theme" ''
set -efux
if [ "$1" = toggle ]; then
if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme)" = dark ]; then
${placeholder "out"}/bin/switch-theme light
else
${placeholder "out"}/bin/switch-theme dark
fi
elif test -e "/etc/themes/$1"; then
mkdir -p /var/theme/config
${pkgs.rsync}/bin/rsync --chown=${config.users.users.me.name}:users -a --delete "/etc/themes/$1/" /var/theme/config/
echo "$1" > /var/theme/current_theme
${pkgs.coreutils}/bin/chown ${config.users.users.me.name}:users /var/theme/current_theme
${pkgs.xorg.xrdb}/bin/xrdb -merge /var/theme/config/xresources
${pkgs.procps}/bin/pkill -HUP xsettingsd
else
echo "theme $1 not found"
fi
'';
in {
systemd.services.xsettingsd = {
wantedBy = ["multi-user.target"];
after = ["display-manager.service"];
environment.DISPLAY = ":0";
serviceConfig = {
ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf";
User = config.users.users.me.name;
Restart = "always";
RestartSec = "15s";
};
};
systemd.tmpfiles.rules = [
"d /var/theme/ 755 ${config.users.users.me.name} users"
];
environment.systemPackages = [
switch-theme
pkgs.capitaine-cursors
];
home-manager.users.me = {
home.pointerCursor = {
name = "capitaine-cursors-white";
package = pkgs.capitaine-cursors;
size = 16;
};
};
environment.etc = {
"themes/light/xsettings.conf".text = ''
Net/ThemeName "Adwaita"
'';
"themes/light/xresources".text = ''
*background: #ffffff
*foreground: #000000
'';
"themes/dark/xsettings.conf".text = ''
Net/ThemeName "Adwaita-dark"
'';
"themes/dark/xresources".text = ''
*background: #000000
*foreground: #ffffff
'';
};
system.activationScripts.theme.text = ''
export DISPLAY=:0
if test -e /var/theme/current_theme; then
${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
${switch-theme}/bin/switch-theme dark
else
${switch-theme}/bin/switch-theme dark
fi
'';
}

View File

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

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
environment.systemPackages = [ environment.systemPackages = [
pkgs.tmuxp pkgs.tmuxp
pkgs.reptyr # move programs over to a tmux session pkgs.reptyr # move programs over to a tmux session
@@ -9,26 +9,44 @@
keyMode = "vi"; keyMode = "vi";
clock24 = true; clock24 = true;
terminal = "screen-256color"; terminal = "screen-256color";
baseIndex = 1;
aggressiveResize = true;
escapeTime = 50;
historyLimit = 7000;
shortcut = "a";
extraConfig = '' 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-interval 2
set -g status-left-length 32 set -g status-left-length 32
set -g status-right-length 150 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-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 " setw -g window-status-current-format "#[fg=colour12,bg=colour233] * #[fg=white,bg=colour237,bold] #W "
set -g status-left "" 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-justify left
set -g status-position bottom set -g status-position bottom
set -g mouse on
unbind *
bind * list-clients
''; '';
}; };
} }

View File

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

View File

@@ -1,11 +1,12 @@
{ pkgs, lib, ... }:
let
inherit (import <niveum/lib>) localAddresses;
living-room-id = 131090;
in
{ {
imports = [ <niveum/modules/traadfri.nix> ]; config,
pkgs,
lib,
...
}: let
inherit (import ../lib) localAddresses;
living-room-id = 131090;
in {
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writers.writeDashBin "traadfri-party" '' (pkgs.writers.writeDashBin "traadfri-party" ''
while true; do while true; do
@@ -18,11 +19,18 @@ in
'') '')
]; ];
age.secrets.traadfri-key = {
file = ../secrets/traadfri-key.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
niveum.traadfri = { niveum.traadfri = {
enable = true; enable = true;
user = "kmein"; user = "kmein";
host = localAddresses.tradfri; host = localAddresses.tradfri;
key = lib.strings.fileContents <secrets/traadfri.key>; keyFile = config.age.secrets.traadfri-key.path;
rooms = { rooms = {
corridor = 131080; corridor = 131080;
kitchen = 131081; kitchen = 131081;

View File

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

View File

@@ -1,16 +1,28 @@
{ pkgs, lib, ... }:
{ {
imports = [ <stockholm/krebs/3modules/fetchWallpaper.nix> ]; pkgs,
lib,
...
}: let
url = "http://prism.r/realwallpaper-krebs-stars-berlin.png";
stateDir = "~/.cache/wallpaper";
in {
systemd.user.services.wallpaper = {
wantedBy = ["graphical-session.target"];
after = ["network.target"];
script = ''
set -euf
krebs.fetchWallpaper = { mkdir -p ${stateDir}
enable = true; chmod o+rx ${stateDir}
url = "http://prism.r/realwallpaper-krebs-stars-berlin.png"; cd ${stateDir}
}; (${pkgs.curl}/bin/curl -s -o wallpaper.tmp -z wallpaper.tmp ${lib.escapeShellArg url} && cp wallpaper.tmp wallpaper) || :
${pkgs.feh}/bin/feh --no-fehbg --bg-scale wallpaper
users.users.fetchWallpaper.isSystemUser = true; '';
startAt = "*:00,10,20,30,40,50";
services.xserver = { serviceConfig = {
display = lib.mkForce 0; # needed for fetchWallpaper to find the X display Restart = "always";
displayManager.sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +LOCAL:"; RestartSec = "15s";
StartLimitBurst = 0;
};
}; };
} }

View File

@@ -1,6 +1,9 @@
{ config, pkgs, ... }:
{ {
environment.systemPackages = [ pkgs.watson ]; config,
pkgs,
...
}: {
environment.systemPackages = [pkgs.watson];
environment.variables.WATSON_DIR = "${config.users.users.me.home}/cloud/Seafile/Documents/watson"; environment.variables.WATSON_DIR = "${config.users.users.me.home}/cloud/Seafile/Documents/watson";
} }

View File

@@ -1,8 +1,21 @@
{ config, pkgs, ... }: { {
config,
pkgs,
...
}: {
home-manager.users.me.home.file.".zshrc".text = '' home-manager.users.me.home.file.".zshrc".text = ''
# nothing to see here # nothing to see here
''; '';
environment.systemPackages = [pkgs.atuin];
environment.variables.ATUIN_CONFIG_DIR = toString (pkgs.writeTextDir "/config.toml" ''
auto_sync = true
update_check = false
sync_address = "http://zaatar.r:8888"
sync_frequency = 0
style = "compact"
'');
programs.zsh = let programs.zsh = let
zsh-completions = pkgs.fetchFromGitHub { zsh-completions = pkgs.fetchFromGitHub {
owner = "zsh-users"; owner = "zsh-users";
@@ -10,18 +23,12 @@
rev = "cf565254e26bb7ce03f51889e9a29953b955b1fb"; rev = "cf565254e26bb7ce03f51889e9a29953b955b1fb";
sha256 = "1yf4rz99acdsiy0y1v3bm65xvs2m0sl92ysz0rnnrlbd5amn283l"; sha256 = "1yf4rz99acdsiy0y1v3bm65xvs2m0sl92ysz0rnnrlbd5amn283l";
}; };
zsh-history-substring-search = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-history-substring-search";
rev = "aae3388491c2312c4efb2e86bcb999927bb2900e";
sha256 = "0lgmq1xcccnz5cf7vl0r0qj351hwclx9p80cl0qczxry4r2g5qaz";
};
in { in {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
autosuggestions.enable = true; autosuggestions.enable = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
syntaxHighlighting.highlighters = [ "main" "brackets" "pattern" "line" ]; syntaxHighlighting.highlighters = ["main" "brackets" "pattern" "line"];
interactiveShellInit = '' interactiveShellInit = ''
setopt INTERACTIVE_COMMENTS CORRECT setopt INTERACTIVE_COMMENTS CORRECT
setopt MULTIOS setopt MULTIOS
@@ -50,12 +57,6 @@
autoload -U zmv run-help autoload -U zmv run-help
fpath=(${zsh-completions}/src $fpath) fpath=(${zsh-completions}/src $fpath)
source ${zsh-history-substring-search}/zsh-history-substring-search.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey -M vicmd 'k' history-substring-search-up
bindkey -M vicmd 'j' history-substring-search-down
''; '';
promptInit = with config.niveum; '' promptInit = with config.niveum; ''
autoload -Uz vcs_info autoload -Uz vcs_info
@@ -67,9 +68,20 @@
zstyle ':vcs_info:*' formats "%c%u%F{cyan}%b%f" zstyle ':vcs_info:*' formats "%c%u%F{cyan}%b%f"
zstyle ':vcs_info:*' actionformats "(%a) %c%u%F{cyan}%b%f" zstyle ':vcs_info:*' actionformats "(%a) %c%u%F{cyan}%b%f"
# atuin distributed shell history
export ATUIN_NOBIND="true" # disable all keybdinings of atuin
eval "$(atuin init zsh)"
bindkey '^r' _atuin_search_widget # bind ctrl+r to atuin
# use zsh only session history
fc -p
precmd () { precmd () {
vcs_info vcs_info
RPROMPT="$vcs_info_msg_0_" if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ] || [ -n "$SSH_CONNECTION" ]; then
RPROMPT="$(hostname)"
else
RPROMPT="$vcs_info_msg_0_"
fi
if [[ -n $IN_NIX_SHELL ]]; then if [[ -n $IN_NIX_SHELL ]]; then
PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})λ%f ' PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})λ%f '
else else

656
flake.lock generated
View File

@@ -1,12 +1,194 @@
{ {
"nodes": { "nodes": {
"flake-utils": { "agenix": {
"inputs": {
"darwin": "darwin",
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1644229661, "lastModified": 1680281360,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "narHash": "sha256-XdLTgAzjJNDhAG2V+++0bHpSzfvArvr2pW6omiFfEJk=",
"owner": "ryantm",
"repo": "agenix",
"rev": "e64961977f60388dd0b49572bb0fc453b871f896",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"blessings": {
"flake": false,
"locked": {
"lastModified": 1549397368,
"narHash": "sha256-YVIGRG+/ey4nFEZl1ZPHj7Hx/Of3rsUGnkLK4V4zZd0=",
"ref": "refs/heads/master",
"rev": "d94712a015636efe7ec79bc0a2eec6739d0be779",
"revCount": 18,
"type": "git",
"url": "https://cgit.krebsco.de/blessings"
},
"original": {
"type": "git",
"url": "https://cgit.krebsco.de/blessings"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1673295039,
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_5": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_6": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_7": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_8": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_9": {
"locked": {
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -19,54 +201,70 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1643933536, "lastModified": 1681092193,
"narHash": "sha256-yRmsWAG4DnLxLIUtlaZsl0kH7rN5xSoyNRlf0YZrcH4=", "narHash": "sha256-JerCqqOqbT2tBnXQW4EqwFl0hHnuZp21rIQ6lu/N4rI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2860d7e3bb350f18f7477858f3513f9798896831", "rev": "f9edbedaf015013eb35f8caacbe0c9666bbc16af",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-21.11", "ref": "release-22.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"krops": { "menstruation-backend": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": [
"flake-utils" "flake-utils"
], ],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1644957911, "lastModified": 1677075142,
"narHash": "sha256-ggie/j7pdBqzDs4W7OiPmhqH9IGbXAbJxGqBdVxA8jA=", "narHash": "sha256-0RXVZcK2YtPckd/3+jb+yLpeXZ6jnQe25w9idztDXi8=",
"owner": "Mic92", "owner": "kmein",
"repo": "krops", "repo": "menstruation.rs",
"rev": "86fb3d2ee94fd8306231853b323ed8804edf26ec", "rev": "e34af4393963cdbadb456b7b9ae2e95e6db7b8a3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Mic92", "owner": "kmein",
"repo": "krops", "repo": "menstruation.rs",
"type": "github" "type": "github"
} }
}, },
"menstruation-backend": { "menstruation-backend_2": {
"flake": false, "inputs": {
"flake-utils": [
"menstruation-telegram",
"menstruation-backend",
"rust-overlay",
"flake-utils"
],
"nixpkgs": [
"menstruation-telegram",
"menstruation-backend",
"rust-overlay",
"nixpkgs"
],
"rust-overlay": "rust-overlay_2"
},
"locked": { "locked": {
"lastModified": 1634573652, "lastModified": 1677075142,
"narHash": "sha256-FIj8oCOJO+Wqxr2o5MMqIShvzMJud4iUq3o8y4NIRvw=", "narHash": "sha256-0RXVZcK2YtPckd/3+jb+yLpeXZ6jnQe25w9idztDXi8=",
"owner": "kmein", "owner": "kmein",
"repo": "menstruation.rs", "repo": "menstruation.rs",
"rev": "dd405fe2acf32441e8ac56e488e689bb1c4bea82", "rev": "e34af4393963cdbadb456b7b9ae2e95e6db7b8a3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -76,13 +274,17 @@
} }
}, },
"menstruation-telegram": { "menstruation-telegram": {
"flake": false, "inputs": {
"flake-utils": "flake-utils_3",
"menstruation-backend": "menstruation-backend_2",
"nixpkgs": "nixpkgs_3"
},
"locked": { "locked": {
"lastModified": 1634815642, "lastModified": 1677075205,
"narHash": "sha256-q1OTMx5ayNu9ppHJBDUie/ow+BcA5DXnHEm11EY+C4E=", "narHash": "sha256-2+xuAhsS3y2qB0ObVPCHXrmnTsIZ8uI5HFI4+Ash8PY=",
"owner": "kmein", "owner": "kmein",
"repo": "menstruation-telegram", "repo": "menstruation-telegram",
"rev": "a34555cf46f02157718b0565b5456348fff54181", "rev": "f7ddb6d9610aacb50ec66a3ce1bdc49fe4664a49",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -91,29 +293,128 @@
"type": "github" "type": "github"
} }
}, },
"nix-writers": { "nixinate": {
"flake": false, "inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1554228333, "lastModified": 1671116920,
"narHash": "sha256-hG/PlcCvCQhNcU55NpHfATkyH9k6cZmO7uvBoJjasXU=", "narHash": "sha256-QmDGsUUmAGn77UTR7eQJmebl8f3IIUCtmbbAdJqKA3s=",
"ref": "master", "owner": "matthewcroughan",
"rev": "c528cf970e292790b414b4c1c8c8e9d7e73b2a71", "repo": "nixinate",
"revCount": 32, "rev": "b4d17b8e2a4abc47e93e1a1c466e0286a63640d8",
"type": "git", "type": "github"
"url": "https://cgit.krebsco.de/nix-writers"
}, },
"original": { "original": {
"type": "git", "owner": "matthewcroughan",
"url": "https://cgit.krebsco.de/nix-writers" "repo": "nixinate",
"type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1644837400, "lastModified": 1665296151,
"narHash": "sha256-treFS89w/xKzeTjJSJdYp/Ceddv6oqq7bL9mZMQDPi0=", "narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a03ae0e6d078cfdbb8404c3bff3622bd4e2f1c57", "rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1665296151,
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1669418739,
"narHash": "sha256-T86oFvcUIRwHWBWUt7WjaP4BP/3lDGbv5AppQSI1FkI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1681269223,
"narHash": "sha256-i6OeI2f7qGvmLfD07l1Az5iBL+bFeP0RHixisWtpUGo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "87edbd74246ccdfa64503f334ed86fa04010bab9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1677158633,
"narHash": "sha256-t7za78oRkDIjdFQF0PCilfCziFyhfowCgs9Ry+sEvE4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "129b6f78121802d18d215c9f9e04d7971c58ea0c",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1665296151,
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1659446231,
"narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -123,30 +424,65 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1644951967, "lastModified": 1665296151,
"narHash": "sha256-j+l8bt++dsYTJSGABuqeBEom5aNpD4n0BsOTdewFYuU=", "narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "05e1f8a2c7797b0d9f9e07ab2aaeccecdcf9b7da", "rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "master", "ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"recht": { "nixpkgs_9": {
"flake": false,
"locked": { "locked": {
"lastModified": 1619583518, "lastModified": 1669418739,
"narHash": "sha256-3eFw6xWue9cvPxXq1ROq32ecvPOmqOedgQhyOr7N9iE=", "narHash": "sha256-T86oFvcUIRwHWBWUt7WjaP4BP/3lDGbv5AppQSI1FkI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "695b3515251873e0a7e2021add4bba643c56cde3",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1681454031,
"narHash": "sha256-JOamj7vKkFRp5mJ7FKt5dPfCmWj33sZLnBGDt15c/sc=",
"owner": "nix-community",
"repo": "NUR",
"rev": "8a35714f0be00235e2a1c8b759e6dc3888763d8b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"recht": {
"inputs": {
"blessings": "blessings",
"flake-utils": "flake-utils_5",
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1677165419,
"narHash": "sha256-pjYpXg+09rayon6uhSNd30ryrT2zYLOlDLBHQ9pnGZg=",
"owner": "kmein", "owner": "kmein",
"repo": "recht", "repo": "recht",
"rev": "d551afed23122bb3106e59eb2274394ec5555048", "rev": "5fa158ce21de797bd95a934dab8d4403b7531d20",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -156,49 +492,135 @@
} }
}, },
"retiolum": { "retiolum": {
"flake": false,
"locked": { "locked": {
"lastModified": 1644849126, "lastModified": 1681246809,
"narHash": "sha256-iaRNvfQrUD+ZownDWWNdDwhVPgSsU5ojvVdswVq1IpY=", "narHash": "sha256-3RUAwk0ApPjq2Ms8KiAh+gG6EJKWurIur612w2m3Zu8=",
"owner": "krebs", "ref": "refs/heads/master",
"repo": "retiolum", "rev": "c8ddb36f3d85be762aeb1893a79da36014f55658",
"rev": "6de359ef848dc1f38fb76731c35e712ee885fd88", "revCount": 296,
"type": "github" "type": "git",
"url": "https://git.thalheim.io/Mic92/retiolum"
}, },
"original": { "original": {
"owner": "krebs", "type": "git",
"repo": "retiolum", "url": "https://git.thalheim.io/Mic92/retiolum"
"type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"home-manager": "home-manager", "home-manager": "home-manager",
"krops": "krops",
"menstruation-backend": "menstruation-backend", "menstruation-backend": "menstruation-backend",
"menstruation-telegram": "menstruation-telegram", "menstruation-telegram": "menstruation-telegram",
"nix-writers": "nix-writers", "nixinate": "nixinate",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable", "nur": "nur",
"recht": "recht", "recht": "recht",
"retiolum": "retiolum", "retiolum": "retiolum",
"scripts": "scripts", "scripts": "scripts",
"stockholm": "stockholm",
"telebots": "telebots", "telebots": "telebots",
"tinc-graph": "tinc-graph", "tinc-graph": "tinc-graph",
"traadfri": "traadfri", "traadfri": "traadfri",
"tuna": "tuna" "voidrice": "voidrice"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1677033035,
"narHash": "sha256-w6XsKaW46kZNEk2vVfuoNIBEq/YzDy9kNk8cU0xJZEQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6c9e8ea3ba73a9fed29ddc1cc52ade8e5c946a8d",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1677033035,
"narHash": "sha256-w6XsKaW46kZNEk2vVfuoNIBEq/YzDy9kNk8cU0xJZEQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6c9e8ea3ba73a9fed29ddc1cc52ade8e5c946a8d",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_3": {
"inputs": {
"flake-utils": "flake-utils_6",
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1677119371,
"narHash": "sha256-L0Da4eKzDZrsy8ysOS1lhgDjAgEqGvYGf/lXaRd5/YQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "c67c79ea25664d66e74ae91a6fa0d6c65d12d3a7",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_4": {
"inputs": {
"flake-utils": "flake-utils_8",
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1677119371,
"narHash": "sha256-L0Da4eKzDZrsy8ysOS1lhgDjAgEqGvYGf/lXaRd5/YQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "c67c79ea25664d66e74ae91a6fa0d6c65d12d3a7",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
} }
}, },
"scripts": { "scripts": {
"flake": false, "inputs": {
"flake-utils": [
"scripts",
"rust-overlay",
"flake-utils"
],
"nixpkgs": [
"scripts",
"rust-overlay",
"nixpkgs"
],
"rust-overlay": "rust-overlay_3"
},
"locked": { "locked": {
"lastModified": 1639436812, "lastModified": 1677271864,
"narHash": "sha256-6CajvfDo7t4ANgjc7DxqH7lI3WRE4MK8q3mBKAjk80k=", "narHash": "sha256-BghYMB/lauerExMsDtGZNGZGdoGuF7LPtbmpyh9ycyA=",
"owner": "kmein", "owner": "kmein",
"repo": "scripts", "repo": "scripts",
"rev": "d34a8161ba11135a45d3141dc9af482db945d63c", "rev": "79bffac7f9eda1b3be76f2a4ff18d81b44c74390",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -207,30 +629,32 @@
"type": "github" "type": "github"
} }
}, },
"stockholm": { "systems": {
"flake": false,
"locked": { "locked": {
"lastModified": 1644865613, "lastModified": 1681028828,
"narHash": "sha256-z7hPtMYxoQuWyLujUs5vbdZOGbjFosh+/IX3GpCDlkc=", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"ref": "master", "owner": "nix-systems",
"rev": "e3785b22b2c6cb173a58fd066c4eda80a67fb872", "repo": "default",
"revCount": 10404, "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "git", "type": "github"
"url": "https://cgit.lassul.us/stockholm"
}, },
"original": { "original": {
"type": "git", "owner": "nix-systems",
"url": "https://cgit.lassul.us/stockholm" "repo": "default",
"type": "github"
} }
}, },
"telebots": { "telebots": {
"flake": false, "inputs": {
"flake-utils": "flake-utils_7",
"nixpkgs": "nixpkgs_7"
},
"locked": { "locked": {
"lastModified": 1623510321, "lastModified": 1677156381,
"narHash": "sha256-MxYNNL81RXZkYLd4IgiNTSo1X80kTuDzsdGNSA0f1y8=", "narHash": "sha256-OMhqYJO2bWtL6osTMpQhA4ySUl4gvJTI13m1agipHJ0=",
"owner": "kmein", "owner": "kmein",
"repo": "telebots", "repo": "telebots",
"rev": "22931c9457e092c4e413555dbe61819d77844246", "rev": "5527e359e8394f2f66067de7f61587eb65055209",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -240,13 +664,21 @@
} }
}, },
"tinc-graph": { "tinc-graph": {
"flake": false, "inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay_4"
},
"locked": { "locked": {
"lastModified": 1639820904, "lastModified": 1677160040,
"narHash": "sha256-d4s2PulBGIIQXtX7blZz+Wnmij5dK/IrBcilNGjqZC4=", "narHash": "sha256-UhyZaIZ88vN/7fiBcamfV77eHjQnL8zSVznaqxLgbhs=",
"owner": "kmein", "owner": "kmein",
"repo": "tinc-graph", "repo": "tinc-graph",
"rev": "1b9c69ffdbdab82d30a23e44f739feea63d94163", "rev": "f705ca35e30ab0daf9cf52000e58931d7c5c42b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -256,13 +688,16 @@
} }
}, },
"traadfri": { "traadfri": {
"flake": false, "inputs": {
"flake-utils": "flake-utils_9",
"nixpkgs": "nixpkgs_9"
},
"locked": { "locked": {
"lastModified": 1640451803, "lastModified": 1677165914,
"narHash": "sha256-zS/b93uFpPM9basNP7ngmm+YjYV0IUQAmNghetHA6Ss=", "narHash": "sha256-3N08NabgDwTUy1n5wxpT27iddFrgXW35E1x2UgAKkDQ=",
"owner": "kmein", "owner": "kmein",
"repo": "traadfri", "repo": "traadfri",
"rev": "cf46bd09cd3263b90a09b0ca979aa705a4c3671c", "rev": "11571116ed5d2c6478c615d663d1f96f57a97ba9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -271,19 +706,34 @@
"type": "github" "type": "github"
} }
}, },
"tuna": { "utils": {
"flake": false,
"locked": { "locked": {
"lastModified": 1627117248, "lastModified": 1667395993,
"narHash": "sha256-OfqbWLblJY4BJlrCpn8EkHoP3baNJSDTbw45SPaX+0Q=", "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "kmein", "owner": "numtide",
"repo": "tuna", "repo": "flake-utils",
"rev": "1cbed44069a3009738afdafecefe0a05316039a6", "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "kmein", "owner": "numtide",
"repo": "tuna", "repo": "flake-utils",
"type": "github"
}
},
"voidrice": {
"flake": false,
"locked": {
"lastModified": 1681301489,
"narHash": "sha256-5Zz33Q3E4A9nsEmxPQikYeX7Rvu3hM+PlXx/0SIqG34=",
"owner": "Lukesmithxyz",
"repo": "voidrice",
"rev": "d4ff2ebaf3e88efe20cae0d1e592fddfc433c96e",
"type": "github"
},
"original": {
"owner": "Lukesmithxyz",
"repo": "voidrice",
"type": "github" "type": "github"
} }
} }

381
flake.nix
View File

@@ -2,91 +2,312 @@
description = "niveum: packages, modules, systems"; description = "niveum: packages, modules, systems";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11"; agenix.url = "github:ryantm/agenix";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
home-manager = { home-manager.url = "github:nix-community/home-manager/release-22.11";
url = "github:nix-community/home-manager/release-21.11"; menstruation-backend.url = "github:kmein/menstruation.rs";
inputs.nixpkgs.follows = "nixpkgs"; menstruation-telegram.url = "github:kmein/menstruation-telegram";
}; nixinate.url = "github:matthewcroughan/nixinate";
krops = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
url = "github:Mic92/krops"; nur.url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs"; recht.url = "github:kmein/recht";
inputs.flake-utils.follows = "flake-utils"; scripts.url = "github:kmein/scripts";
}; retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
telebots.url = "github:kmein/telebots";
tinc-graph.url = "github:kmein/tinc-graph";
traadfri.url = "github:kmein/traadfri";
voidrice.url = "github:Lukesmithxyz/voidrice";
# legacy agenix.inputs.nixpkgs.follows = "nixpkgs";
menstruation-backend = { url = "github:kmein/menstruation.rs"; flake = false; }; home-manager.inputs.nixpkgs.follows = "nixpkgs";
menstruation-telegram = { url = "github:kmein/menstruation-telegram"; flake = false; }; menstruation-backend.inputs.flake-utils.follows = "flake-utils";
nix-writers = { url = "git+https://cgit.krebsco.de/nix-writers"; flake = false; }; menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
recht = { url = "github:kmein/recht"; flake = false; }; nixinate.inputs.nixpkgs.follows = "nixpkgs";
retiolum = { url = "github:krebs/retiolum"; flake = false; }; tinc-graph.inputs.flake-utils.follows = "flake-utils";
scripts = { url = "github:kmein/scripts"; flake = false; }; tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
stockholm = { url = "git+https://cgit.lassul.us/stockholm"; flake = false; }; voidrice.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 = outputs = inputs @ {
{ self self,
, flake-utils nixpkgs,
, home-manager nur,
, krops home-manager,
, menstruation-backend nixinate,
, menstruation-telegram agenix,
, nix-writers retiolum,
, nixpkgs flake-utils,
, nixpkgs-unstable ...
, recht }:
, retiolum {
, scripts apps = nixinate.nixinate.x86_64-linux self;
, stockholm
, telebots nixosModules = {
, tinc-graph htgen = import modules/htgen.nix;
, traadfri moodle-dl = import modules/moodle-dl.nix;
, tuna networkmanager-declarative = import modules/networkmanager-declarative.nix;
}@inputs: passport = import modules/passport.nix;
let panoptikon = import modules/panoptikon.nix;
system = "x86_64-linux"; power-action = import modules/power-action.nix;
pkgs = nixpkgs.legacyPackages.${system}; system-dependent = import modules/system-dependent.nix;
source = name: { telegram-bot = import modules/telegram-bot.nix;
niveum.file = toString ./.; traadfri = import modules/traadfri.nix;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
system-secrets.pass = {
dir = toString ~/.password-store;
name = "systems/${name}";
}; };
secrets.pass = {
dir = toString ~/.password-store; lib = {
name = "shared"; panoptikon = import lib/panoptikon.nix;
};
nixosConfigurations = {
ful = nixpkgs.lib.nixosSystem rec {
system = "aarch64-linux";
specialArgs = {
niveumPackages = inputs.self.packages.${system};
niveumLib = inputs.self.lib;
inherit inputs;
};
modules = [
{
_module.args.nixinate = {
host = "ful";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/ful/configuration.nix
agenix.nixosModules.default
inputs.self.nixosModules.passport
inputs.self.nixosModules.panoptikon
retiolum.nixosModules.retiolum
nur.nixosModules.nur
];
};
zaatar = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
niveumPackages = inputs.self.packages.${system};
inherit inputs;
};
modules = [
{
_module.args.nixinate = {
host = "zaatar";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/zaatar/configuration.nix
inputs.self.nixosModules.moodle-dl
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
makanek = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
# for using inputs in other config files
specialArgs = {
niveumPackages = inputs.self.packages.${system};
inherit inputs;
};
modules = [
{
_module.args.nixinate = {
host = "makanek";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/makanek/configuration.nix
inputs.self.nixosModules.telegram-bot
inputs.self.nixosModules.htgen
inputs.self.nixosModules.passport
agenix.nixosModules.default
retiolum.nixosModules.retiolum
nur.nixosModules.nur
];
};
tahina = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
systems/tahina/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
tabula = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
systems/tabula/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
manakish = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
niveumPackages = inputs.self.packages.${system};
inherit inputs;
};
modules = [
{
_module.args.nixinate = {
host = "manakish";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/manakish/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
nur.nixosModules.nur
];
};
kabsa = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
niveumPackages = inputs.self.packages.${system};
inherit inputs;
};
modules = [
{
_module.args.nixinate = {
host = "kabsa";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/kabsa/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
nur.nixosModules.nur
];
};
};
}
// flake-utils.lib.eachSystem [flake-utils.lib.system.x86_64-linux flake-utils.lib.system.aarch64-linux] (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [
nur.overlay
(self: super: {
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer];};
dmenu = super.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
})
];
};
wrapScript = {
packages ? [],
name,
script,
}:
pkgs.writers.writeDashBin name ''PATH=$PATH:${nixpkgs.lib.makeBinPath (packages ++ [pkgs.findutils pkgs.coreutils pkgs.gnused pkgs.gnugrep])} ${script} "$@"'';
in {
packages = rec {
auc = pkgs.callPackage packages/auc.nix {};
betacode = pkgs.callPackage packages/betacode.nix {};
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
closest = pkgs.callPackage packages/closest {};
cyberlocker-tools = pkgs.callPackage packages/cyberlocker-tools.nix {};
default-gateway = pkgs.callPackage packages/default-gateway.nix {};
depp = pkgs.callPackage packages/depp.nix {};
devanagari = pkgs.callPackage packages/devanagari {};
devour = pkgs.callPackage packages/devour.nix {};
dic = pkgs.callPackage packages/dic.nix {};
dirmir = pkgs.callPackage packages/dirmir.nix {};
dmenu-bluetooth = pkgs.callPackage packages/dmenu-bluetooth.nix {};
dmenu-scrot = pkgs.callPackage packages/dmenu-scrot.nix {};
dns-sledgehammer = pkgs.callPackage packages/dns-sledgehammer.nix {};
fkill = pkgs.callPackage packages/fkill.nix {};
fzfmenu = pkgs.callPackage packages/fzfmenu.nix {};
genius = pkgs.callPackage packages/genius.nix {};
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
git-preview = pkgs.callPackage packages/git-preview.nix {};
hc = pkgs.callPackage packages/hc.nix {};
heuretes = pkgs.callPackage packages/heuretes.nix {};
htgen = pkgs.callPackage packages/htgen.nix {};
image-convert-favicon = pkgs.callPackage packages/image-convert-favicon.nix {};
image-convert-tolino = pkgs.callPackage packages/image-convert-tolino.nix {};
infschmv = pkgs.callPackage packages/infschmv.nix {};
iolanguage = pkgs.callPackage packages/iolanguage.nix {};
ipa = pkgs.writers.writePython3Bin "ipa" {flakeIgnore = ["E501"];} (builtins.readFile packages/ipa.py);
ix = pkgs.callPackage packages/ix.nix {};
jsesh = pkgs.callPackage packages/jsesh.nix {};
k-lock = pkgs.callPackage packages/k-lock.nix {};
kirciuoklis = pkgs.callPackage packages/kirciuoklis.nix {};
klem = pkgs.callPackage packages/klem.nix {};
kpaste = pkgs.callPackage packages/kpaste.nix {};
literature-quote = pkgs.callPackage packages/literature-quote.nix {};
mahlzeit = pkgs.haskellPackages.callPackage packages/mahlzeit.nix {};
man-pandoc = pkgs.callPackage packages/man/pandoc.nix {};
man-pdf = pkgs.callPackage packages/man-pdf.nix {};
mansplain = pkgs.callPackage packages/mansplain.nix {};
manual-sort = pkgs.callPackage packages/manual-sort.nix {};
menu-calc = pkgs.callPackage packages/menu-calc.nix {};
meteo = pkgs.callPackage packages/meteo.nix {};
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
mpv-visualizer = pkgs.callPackage packages/mpv-visualizer.nix {};
new-mac = pkgs.callPackage packages/new-mac.nix {};
nix-git = pkgs.callPackage packages/nix-git.nix {};
nix-index-update = pkgs.callPackage packages/nix-index-update.nix {inherit system;};
opustags = pkgs.callPackage packages/opustags.nix {};
pls = pkgs.callPackage packages/pls.nix {};
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
rfc = pkgs.callPackage packages/rfc.nix {};
scanned = pkgs.callPackage packages/scanned.nix {};
swallow = pkgs.callPackage packages/swallow.nix {};
text2pdf = pkgs.callPackage packages/text2pdf.nix {};
timer = pkgs.callPackage packages/timer.nix {};
tocharian-font = pkgs.callPackage packages/tocharian-font.nix {};
trans = pkgs.callPackage packages/trans.nix {};
ttspaste = pkgs.callPackage packages/ttspaste.nix {};
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
untilport = pkgs.callPackage packages/untilport.nix {};
vg = pkgs.callPackage packages/vg.nix {};
vimPlugins-cheat-sh-vim = pkgs.callPackage packages/vimPlugins/cheat-sh.nix {};
vimPlugins-icalendar-vim = pkgs.callPackage packages/vimPlugins/icalendar-vim.nix {};
vimPlugins-jq-vim = pkgs.callPackage packages/vimPlugins/jq-vim.nix {};
vimPlugins-vim-256noir = pkgs.callPackage packages/vimPlugins/vim-256noir.nix {};
vimPlugins-vim-colors-paramount = pkgs.callPackage packages/vimPlugins/vim-colors-paramount.nix {};
vimPlugins-vim-fetch = pkgs.callPackage packages/vimPlugins/vim-fetch.nix {};
vimPlugins-vim-fsharp = pkgs.callPackage packages/vimPlugins/vim-fsharp.nix {};
vimPlugins-vim-mail = pkgs.callPackage packages/vimPlugins/vim-mail.nix {};
vimPlugins-vim-reason-plus = pkgs.callPackage packages/vimPlugins/vim-reason-plus.nix {};
vimv = pkgs.callPackage packages/vimv.nix {};
weechat-declarative = pkgs.callPackage packages/weechat-declarative.nix {};
weechatScripts-hotlist2extern = pkgs.callPackage packages/weechatScripts/hotlist2extern.nix {};
wttr = pkgs.callPackage packages/wttr.nix {};
itl = pkgs.callPackage packages/itl.nix {};
itools = pkgs.callPackage packages/itools.nix {itl = itl;};
booksplit = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/booksplit";
name = "booksplit";
packages = [pkgs.ffmpeg pkgs.glibc.bin];
};
dmenu-randr = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/displayselect";
name = "dmenu-randr";
packages = [pkgs.dmenu pkgs.bc pkgs.psmisc pkgs.util-linux pkgs.xorg.xrandr pkgs.gawk pkgs.libnotify pkgs.arandr (pkgs.writers.writeDashBin "setbg" "")];
};
tag = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/tag";
name = "tag";
packages = [pkgs.ffmpeg];
};
}; };
} // 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)));
deployScripts = forSystems (name: {
name = "deploy-${name}";
value = {
type = "app";
program = deployScriptFor { inherit name; host = "${name}.r"; };
};
});
ciScripts = forSystems (name: {
name = "build-${name}";
value = {
type = "app";
program = import ./ci.nix { inherit name system inputs; };
};
});
in deployScripts // ciScripts;
};
} }

37
lib/colours/ayu-dark.nix Normal file
View File

@@ -0,0 +1,37 @@
{
black = {
dark = "#000000";
bright = "#323232";
};
red = {
dark = "#ff3333";
bright = "#ff6565";
};
green = {
dark = "#b8cc52";
bright = "#e9fe83";
};
yellow = {
dark = "#e6c446";
bright = "#fff778";
};
blue = {
dark = "#36a3d9";
bright = "#68d4ff";
};
magenta = {
dark = "#f07078";
bright = "#ffa3aa";
};
cyan = {
dark = "#95e5cb";
bright = "#c7fffc";
};
white = {
dark = "#ffffff";
bright = "#ffffff";
};
background = "#0e1419";
foreground = "#e5e1cf";
cursor = "#f19618";
}

37
lib/colours/ayu-light.nix Normal file
View File

@@ -0,0 +1,37 @@
{
black = {
dark = "#000000";
bright = "#323232";
};
red = {
dark = "#ff3333";
bright = "#ff6565";
};
green = {
dark = "#86b200";
bright = "#b8e532";
};
yellow = {
dark = "#f19618";
bright = "#ffc849";
};
blue = {
dark = "#41a6d9";
bright = "#73d7ff";
};
magenta = {
dark = "#f07078";
bright = "#ffa3aa";
};
cyan = {
dark = "#4cbe99";
bright = "#7ff0cb";
};
white = {
dark = "#ffffff";
bright = "#ffffff";
};
background = "#fafafa";
foreground = "#5b6673";
cursor = "#ff6900";
}

View File

@@ -1,37 +1,37 @@
rec { rec {
black = { black = {
bright = "#4b4b4b"; bright = "#282c34";
dark = "#242424"; dark = "#282c34";
}; };
red = { red = {
bright = "#fc1c18"; bright = "#e06c75";
dark = "#d71c15"; dark = "#e06c75";
}; };
green = { green = {
bright = "#6bc219"; bright = "#98c379";
dark = "#5aa513"; dark = "#98c379";
}; };
yellow = { yellow = {
bright = "#fec80e"; bright = "#e5c07b";
dark = "#fdb40c"; dark = "#e5c07b";
}; };
blue = { blue = {
bright = "#0955ff"; bright = "#61afef";
dark = "#063b8c"; dark = "#61afef";
}; };
magenta = { magenta = {
bright = "#fb0050"; bright = "#c678dd";
dark = "#e40038"; dark = "#c678dd";
}; };
cyan = { cyan = {
bright = "#3ea8fc"; bright = "#56b6c2";
dark = "#2595e1"; dark = "#56b6c2";
}; };
white = { white = {
bright = "#8c00ec"; bright = "#dcdfe4";
dark = "#efefef"; dark = "#dcdfe4";
}; };
background = "#181818"; background = black.dark;
foreground = white.dark; foreground = white.bright;
cursor = "#bbbbbb"; cursor = "#a3b3cc";
} }

View File

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

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