mirror of
https://github.com/kmein/niveum
synced 2026-03-20 03:51:07 +01:00
Compare commits
164 Commits
20.09
...
b9149c8d9a
| Author | SHA1 | Date | |
|---|---|---|---|
| b9149c8d9a | |||
| 36502ecfd8 | |||
| 43fd4bbf19 | |||
| 37e851cc50 | |||
| 018f79f88d | |||
| 6843ac90b5 | |||
| afb69bf334 | |||
| ea57f539b0 | |||
| 3d10ac09ab | |||
| 38f088d9e5 | |||
| 422f2b8676 | |||
| 7c1ca72a29 | |||
| f171284b71 | |||
| ca50ba931a | |||
| 63ad607d46 | |||
| e553f1bcda | |||
| 8923f7a2c9 | |||
| 07024df1c9 | |||
| cb9bcf2d1d | |||
| 7aeda72026 | |||
| 95c93cc565 | |||
| c9979de250 | |||
| 7889d56b99 | |||
| 03be9636ad | |||
| 5d36ed4cd6 | |||
| c33446aee3 | |||
| fe7744bedb | |||
| 9673e9d3e8 | |||
| 5175f3f819 | |||
| 5923f3341a | |||
| 901cf6f711 | |||
| 859e536159 | |||
| 4ea18d0152 | |||
| c7c7017070 | |||
| 7c80f160db | |||
| 6fce803c70 | |||
| a6bff424b0 | |||
| d61b17c656 | |||
| cbdf8ef038 | |||
| 876dbe785b | |||
| fb4a14a6bf | |||
| 02977ea936 | |||
| dcca34d5c1 | |||
| 8bd8ec611f | |||
| 96a67a937e | |||
| fb85c29651 | |||
| 3344af5339 | |||
| fdfd8a687f | |||
| e804da180d | |||
| 2af8e1aa86 | |||
| 10224de58a | |||
| 2bf095c553 | |||
| a7d994abe7 | |||
| 680997fb12 | |||
| a2d1ab6f53 | |||
| 52761a13e2 | |||
| 98f7de9680 | |||
| 72f04f9391 | |||
| 10ad21a39c | |||
| 5c9e25f27a | |||
| 4b563ddf00 | |||
| d041e6fa52 | |||
| 8749646101 | |||
| 960311c65f | |||
| a70f05239a | |||
| d716e5716f | |||
| 2781930ecf | |||
| f34a938968 | |||
| 080439604b | |||
| 72df03fbf6 | |||
| b799e7c26f | |||
| 2a450e2f36 | |||
| 485e07ec9e | |||
| dcf3452353 | |||
| edc8e83594 | |||
| 01bc8178ad | |||
| eff303a854 | |||
| bc992a170c | |||
| 78e9bedcb4 | |||
| d5cdbf3795 | |||
| bcb5949e15 | |||
| dd61883648 | |||
| 1d7a432bec | |||
| 0e7652ff46 | |||
| a96c0d9ab3 | |||
| 82bb2d9f17 | |||
| 4fa0256095 | |||
| 2915594238 | |||
| cf48d89ea6 | |||
| 37f570a979 | |||
| f8af039913 | |||
| 46882af11e | |||
| 2c5d2f4add | |||
| bd089bd408 | |||
| fce8d15356 | |||
| acec2505e4 | |||
| 218c251d31 | |||
| 8cda7861f9 | |||
| a35c883eca | |||
| db61bc4b91 | |||
| 43fc9ebba2 | |||
| 23d60233a0 | |||
| f2fcc3be9a | |||
| 30e3baa335 | |||
| 616a530c64 | |||
| e5d437949b | |||
| 80c3b143ca | |||
| 263a732580 | |||
| c638ef93f5 | |||
| 69c2f506ae | |||
| db4857c86d | |||
| 6668542d53 | |||
| 561faed161 | |||
| 36ed681e99 | |||
| be84688b63 | |||
| de296c4e62 | |||
| d7807ba1b9 | |||
| 51fba9baa6 | |||
| a0fb2bd819 | |||
| a0830070f3 | |||
| c860529161 | |||
| 03461dcaaa | |||
| 1cd7039759 | |||
| af0806b766 | |||
| bd8960fd44 | |||
| 1bc90b2e84 | |||
| d2939795ac | |||
| 4a4d5a148d | |||
| f30cfbf142 | |||
| 15bda4721d | |||
| 4d610461b8 | |||
| eed54d1593 | |||
| ddec0551e8 | |||
| b0f2a74372 | |||
| 65584ec52f | |||
| 96f5d750ef | |||
| 77e97e84a9 | |||
| 96cb298584 | |||
| 5dc561da83 | |||
| b8c79fd21c | |||
| a98333a6b8 | |||
| fa5fe37610 | |||
| 0be0356005 | |||
| 394615168d | |||
| b6e77f77af | |||
| d7727433fd | |||
| 3f02559da2 | |||
| e7c801b6c4 | |||
| 3092fcda85 | |||
| 43a1ecedac | |||
| da55a342e3 | |||
| 48fcb08427 | |||
| a0855f8bbb | |||
| 3efb4682f2 | |||
| 048429f593 | |||
| 59cacae72e | |||
| 420245231a | |||
| 2911972900 | |||
| 5efcb813f0 | |||
| fd8f5d3a5c | |||
| 3508575ebe | |||
| 3741304284 | |||
| 6bfaf551d2 | |||
| 423cb074a0 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,5 @@
|
||||
secrets.nix
|
||||
result
|
||||
.direnv
|
||||
.envrc
|
||||
.history
|
||||
**/*.bak
|
||||
.todo
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
x 2020-04-27 2019-08-27 fix offlineimap password
|
||||
x 2020-04-27 2019-07-09 @package fzf wrappers
|
||||
@@ -1,6 +0,0 @@
|
||||
(C) 2019-08-25 environment.etc."sshd/banner-line".text = config.networking.hostName;
|
||||
(C) 2019-08-25 fix man-pdf: man-pdf 1p env, man-pdf env: man $options -t $command | ps2pdf - $command.pdf
|
||||
|
||||
|
||||
(A) 2019-08-26 run services as their own @users
|
||||
(A) use lassulus xdg-open wrapper https://cgit.krebsco.de/stockholm/tree/lass/2configs/xdg-open.nix
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"url": "https://github.com/rycee/home-manager.git",
|
||||
"rev": "abaebf3b346c4bef500c5bd2fdebbed109261a0c",
|
||||
"date": "2020-10-25T19:44:12+01:00",
|
||||
"sha256": "1gcv2ni4nsicpmi4ain568msvgxch8cj04fxf6qgvhdklmh2y84k",
|
||||
"fetchSubmodules": false
|
||||
"rev": "91bd34620d73340be03642279ee0d1c64110ee6c",
|
||||
"date": "2021-01-22T14:53:58+01:00",
|
||||
"path": "/nix/store/ybmjqanz6r1zg2k5hw5d9131cadms06s-home-manager",
|
||||
"sha256": "1pwn2w21rmnk7nqzx9wmgb4k4kph7vfd1r9wcq9xdn7w27cjdg7v",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
"url": "https://cgit.krebsco.de/krops",
|
||||
"rev": "55aa2c77ce8183f3d2b24f54efa33ab6a42e1e02",
|
||||
"date": "2020-04-19T01:06:20+02:00",
|
||||
"path": "/nix/store/08wg2yrcgkr6iwipjd6g0fbwb7gacqax-krops",
|
||||
"sha256": "00rvx9h596ync8wgic6xc9srzajzm28wlp9q7mv4z0jsb27l5bj8",
|
||||
"fetchSubmodules": false
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"url": "https://github.com/NixOS/nixpkgs.git",
|
||||
"rev": "95d26c9a9f2a102e25cf318a648de44537f42e09",
|
||||
"date": "2020-10-24T10:37:53+02:00",
|
||||
"sha256": "0ymhj252dq7z2ajdjsdz99h106ylm4vsmz5v3xiwsylcs4bz2nl8",
|
||||
"fetchSubmodules": false
|
||||
"rev": "a058d005b3cbb370bf171ebce01839dd6ff52222",
|
||||
"date": "2021-01-23T17:41:51-05:00",
|
||||
"path": "/nix/store/6ps307ghgrp10q3mwgw4lq143pmz0h25-nixpkgs",
|
||||
"sha256": "154mpqw0ya31hzgz9hggg1rb26yx8d00rsj9l90ndsdldrssgvbb",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"url": "https://github.com/krebs/retiolum",
|
||||
"rev": "21244d55c10234b09a9f121015de1175f5facc69",
|
||||
"date": "2020-10-25T17:02:11+01:00",
|
||||
"sha256": "0jzifani14rd68zv728mjq97p04njk8syrqbmn2vjd3plphvl5y5",
|
||||
"fetchSubmodules": false
|
||||
"rev": "dc2ff145babdee97c03b336e9601f6ab7498c21f",
|
||||
"date": "2021-01-24T16:32:13+01:00",
|
||||
"path": "/nix/store/pzdsyx2ra3v0zyfnncjrgzhbxakgr5as-retiolum",
|
||||
"sha256": "0wa4jx9v920qj9zgr6dagj7cr8dmb5db6rb94bbk4g104lysmz5b",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
"url": "https://cgit.krebsco.de/stockholm",
|
||||
"rev": "b034f63f7a2e4361b32c33c0e1a980eecf1a5aa6",
|
||||
"date": "2020-10-17T01:00:54+02:00",
|
||||
"sha256": "1ji45h7xp3za5lq9qdg3f8gldrvqfpr8grinblzvf9iqxjgidr68",
|
||||
"fetchSubmodules": false
|
||||
"url": "https://github.com/kmein/stockholm",
|
||||
"rev": "f0325bef7954cb946674050847c6d52112cb658f",
|
||||
"date": "2020-11-11T07:45:58+01:00",
|
||||
"path": "/nix/store/lka6fhjfbwdx9bc7lk1bz4gizdv7nrbm-stockholm",
|
||||
"sha256": "0gbw6n5yq36ysc30afa5d2dbsl2d46f73ms6f0rprdbr4nhdw8l2",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
}
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) colours;
|
||||
colourNames =
|
||||
[ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
|
||||
colours = lib.getAttrs colourNames config.niveum.colours;
|
||||
colourPairs = lib.getAttrs colourNames colours;
|
||||
alacrittyConfig = {
|
||||
background_opacity = 0.9;
|
||||
colors = {
|
||||
primary = { inherit (config.niveum.colours) background foreground; };
|
||||
normal = lib.mapAttrs (_: colour: colour.dark) colours;
|
||||
bright = lib.mapAttrs (_: colour: colour.bright) colours;
|
||||
primary = { inherit (colours) background foreground; };
|
||||
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
|
||||
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
|
||||
};
|
||||
font = {
|
||||
normal.family = "Monospace";
|
||||
size = config.niveum.fonts.size - 2;
|
||||
size = 6;
|
||||
};
|
||||
key_bindings = [
|
||||
{
|
||||
@@ -36,7 +37,7 @@ in {
|
||||
environment.variables.TERMINAL = "alacritty";
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.unstable.alacritty
|
||||
pkgs.alacritty
|
||||
];
|
||||
|
||||
home-manager.users.me.xdg.configFile = {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
|
||||
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
|
||||
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
|
||||
"khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
'';
|
||||
|
||||
home-manager.users.me = {
|
||||
services.nextcloud-client.enable = true;
|
||||
services.nextcloud-client.enable = false;
|
||||
};
|
||||
|
||||
services.syncthing = rec {
|
||||
@@ -28,26 +28,18 @@
|
||||
declarative = rec {
|
||||
cert = toString <system-secrets/syncthing/cert.pem>;
|
||||
key = toString <system-secrets/syncthing/key.pem>;
|
||||
devices = {
|
||||
homeros.id =
|
||||
"HSOL72W-MMN346W-C3WCWCH-OTRKJYG-MY2WWV6-P7JUHN7-5WYYYRV-ZMH4KAA";
|
||||
scardanelli.id =
|
||||
"7CZYHEX-3CSFDQU-PEEMYHG-6XGQ2ZD-KGVUWH5-GFRB2XK-FP57ERX-7APZUQU";
|
||||
rilke.id =
|
||||
"NYNNHXP-7JMSTXG-SVNOPWD-RWXCCCL-CBOVBEI-X4QPLF4-NJA5G2P-RSGYRQQ";
|
||||
wilde.id =
|
||||
"R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
|
||||
heym.id =
|
||||
"HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
|
||||
};
|
||||
inherit ((import <niveum/lib>).syncthing) devices;
|
||||
folders =
|
||||
let syncthing-dir = "${config.users.users.me.home}/cloud/syncthing";
|
||||
let cloud-dir = "${config.users.users.me.home}/cloud";
|
||||
in {
|
||||
"${syncthing-dir}/common".devices =
|
||||
[ "homeros" "scardanelli" "wilde" ];
|
||||
"${syncthing-dir}/library".devices = lib.attrNames devices;
|
||||
"${syncthing-dir}/mundoiu".devices = lib.attrNames devices;
|
||||
"${syncthing-dir}/music".devices = lib.attrNames devices;
|
||||
"${cloud-dir}/syncthing/common".devices = [ "wilde" "manakish" ];
|
||||
"${cloud-dir}/syncthing/library".devices = [ "wilde" "manakish" "heym" ];
|
||||
"${cloud-dir}/syncthing/mundoiu".devices = [ "wilde" "manakish" "heym" ];
|
||||
"${cloud-dir}/syncthing/music".devices = [ "wilde" "manakish" "heym" ];
|
||||
"${cloud-dir}/moodle" = {
|
||||
devices = [ "wilde" "toum" "manakish" ];
|
||||
id = "moodle-dl";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,40 +1,14 @@
|
||||
{ pkgs, lib, config, options, ... }:
|
||||
let
|
||||
inherit (lib.strings) makeBinPath;
|
||||
inherit (import <niveum/lib>) localAddresses;
|
||||
inherit (import <niveum/lib>) localAddresses kieran;
|
||||
in {
|
||||
imports = [
|
||||
<niveum/modules/constants.nix>
|
||||
<home-manager/nixos>
|
||||
<niveum/modules/system-dependent.nix>
|
||||
{
|
||||
boot.supportedFilesystems = [ "ntfs" ];
|
||||
}
|
||||
{
|
||||
niveum.user = {
|
||||
github = "kmein";
|
||||
email = "kmein@posteo.de";
|
||||
name = "Kierán Meinhardt";
|
||||
};
|
||||
|
||||
niveum.applications = rec {
|
||||
fileManager = "$TERMINAL -e ${pkgs.ranger}/bin/ranger";
|
||||
};
|
||||
|
||||
niveum.theme = {
|
||||
gtk = {
|
||||
name = "Adwaita-dark";
|
||||
package = pkgs.gnome3.gnome-themes-extra;
|
||||
};
|
||||
icon = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.gnome3.adwaita-icon-theme;
|
||||
};
|
||||
cursor = {
|
||||
name = "capitaine-cursors-white";
|
||||
package = pkgs.capitaine-cursors;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
nix.nixPath = [
|
||||
"/var/src"
|
||||
@@ -42,32 +16,18 @@ in {
|
||||
];
|
||||
}
|
||||
{ services.dbus.packages = [ pkgs.gnome3.dconf ]; }
|
||||
{
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "x-www-browser" ''
|
||||
for browser in $BROWSER firefox chromium google-chrome google-chrome-stable opera vivaldi qupzilla iceweasel konqueror firefox-aurora google-chrome-beta opera-beta vivaldi-beta google-chrome-dev opera-developer vivaldi-snapshot luakit midori epiphany lynx w3m dillo elinks vimb; do
|
||||
if command -v $browser > /dev/null 2>&1; then
|
||||
exec $browser "$@"
|
||||
fi
|
||||
done
|
||||
exit 1
|
||||
'')
|
||||
];
|
||||
}
|
||||
{
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
packageOverrides = pkgs: {
|
||||
nur = import (builtins.fetchTarball
|
||||
"https://github.com/nix-community/NUR/archive/aea85375c7a82297d977904de8dd7f41baf2d59a.tar.gz") {
|
||||
"https://github.com/nix-community/NUR/archive/222ea29ec4afb09c5565a7e5dda14bfd65a4a9f6.tar.gz") {
|
||||
inherit pkgs;
|
||||
};
|
||||
writeDashBin = pkgs.writers.writeDashBin;
|
||||
writeDash = pkgs.writers.writeDash;
|
||||
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {
|
||||
scardanelli = config.networking.hostName == "scardanelli";
|
||||
};
|
||||
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
|
||||
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
|
||||
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
|
||||
};
|
||||
@@ -88,13 +48,6 @@ in {
|
||||
boot.loader.timeout = 1;
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
|
||||
}
|
||||
{
|
||||
time.timeZone = "Europe/Berlin";
|
||||
location = {
|
||||
latitude = 52.517;
|
||||
longitude = 13.3872;
|
||||
};
|
||||
}
|
||||
{
|
||||
home-manager.users.me = {
|
||||
programs.zathura = {
|
||||
@@ -113,10 +66,11 @@ in {
|
||||
|
||||
users.users.me = {
|
||||
name = "kfm";
|
||||
description = config.niveum.user.name;
|
||||
description = kieran.name;
|
||||
hashedPassword =
|
||||
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
|
||||
isNormalUser = true;
|
||||
uid = 1000;
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -129,7 +83,7 @@ in {
|
||||
|
||||
users.users.me.extraGroups = [ "audio" ];
|
||||
|
||||
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer ];
|
||||
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer pkgs.pulsemixer ];
|
||||
}
|
||||
{
|
||||
environment.interactiveShellInit =
|
||||
@@ -150,29 +104,27 @@ in {
|
||||
cat = "${pkgs.bat}/bin/bat --style=plain";
|
||||
chromium-incognito =
|
||||
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
|
||||
cp = "cp -i";
|
||||
dig = "dig +short";
|
||||
cp = "cp --interactive";
|
||||
ip = "${pkgs.iproute}/bin/ip -c";
|
||||
l = "${pkgs.exa}/bin/exa -s type -a";
|
||||
la = "${pkgs.exa}/bin/exa -s type -la";
|
||||
ll = "${pkgs.exa}/bin/exa -s type -l";
|
||||
ls = "${pkgs.exa}/bin/exa -s type";
|
||||
mv = "mv -i";
|
||||
l = "ls --color=auto --time-style=long-iso --almost-all";
|
||||
ls = "ls --color=auto --time-style=long-iso";
|
||||
ll = "ls --color=auto --time-style=long-iso -l";
|
||||
la = "ls --color=auto --time-style=long-iso --almost-all -l";
|
||||
mv = "mv --interactive";
|
||||
nixi = "nix repl '<nixpkgs>'";
|
||||
ns = "nix-shell --run zsh";
|
||||
o = "${pkgs.xdg_utils}/bin/xdg-open";
|
||||
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
|
||||
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
|
||||
rm = "rm -i";
|
||||
rm = "rm --interactive";
|
||||
s = "${pkgs.systemd}/bin/systemctl";
|
||||
take = "source ${take}";
|
||||
tmux = "${pkgs.tmux}/bin/tmux -2";
|
||||
tree = "${pkgs.exa}/bin/exa --tree";
|
||||
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
|
||||
zathura = swallow "${pkgs.zathura}/bin/zathura";
|
||||
us = "${pkgs.systemd}/bin/systemctl --user";
|
||||
wcd = "source ${wcd}";
|
||||
weechat = "${pkgs.openssh}/bin/ssh kmein@prism.r -t tmux attach";
|
||||
weechat = "${pkgs.openssh}/bin/ssh weechat@toum -t screen -x weechat-screen";
|
||||
where = "source ${where}";
|
||||
yt =
|
||||
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
|
||||
@@ -180,50 +132,6 @@ in {
|
||||
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
|
||||
};
|
||||
}
|
||||
{
|
||||
networking.wireless = {
|
||||
enable = true;
|
||||
userControlled.enable = true;
|
||||
networks = {
|
||||
"Aether" = {
|
||||
pskRaw = "e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
|
||||
priority = 10;
|
||||
};
|
||||
"Asoziales Netzwerk" = {
|
||||
pskRaw = "8e234041ec5f0cd1b6a14e9adeee9840ed51b2f18856a52137485523e46b0cb6";
|
||||
priority = 10;
|
||||
};
|
||||
"Libertarian WiFi" = {
|
||||
pskRaw = "e9beaae6ffa55d10e80b8a2e7d997411d676a3cc6f1f29d0b080391f04555050";
|
||||
priority = 9;
|
||||
};
|
||||
"EasyBox-927376".pskRaw = "dbd490ab69b39bd67cfa06daf70fc3ef3ee90f482972a668ed758f90f5577c22";
|
||||
"FlixBus Wi-Fi" = { };
|
||||
"FlixBus" = { };
|
||||
"FlixTrain" = { };
|
||||
"BVG Wi-Fi" = { };
|
||||
"wannseeforum" = { }; # login via curl -XPOST http://WannseeLancom.intern.:80/authen/login/ -d userid=$USER_ID -d password=$PASSWORD
|
||||
"Hotel_Krone" = { }; # login: http://192.168.10.1/
|
||||
"Ni/Schukajlow".pskRaw = "ffc47f6829da59c48aea878a32252223303f5c47a3859edc90971ffc63346781";
|
||||
"WIFIonICE" = { }; # login: http://10.101.64.10/
|
||||
"WLAN-914742".psk = "67647139648174545446";
|
||||
"KDG-CEAA4".psk = "PBkBSmejcvM4";
|
||||
"KDG-4ECF7".psk = "Gdbwh7afw2Bx";
|
||||
"WLAN-XVMU6T".pskRaw =
|
||||
"46ea807283255a3d7029233bd79c18837df582666c007c86a8d591f65fae17cc";
|
||||
"c-base-public" = { };
|
||||
"discord".psk = "baraustrinken";
|
||||
"GoOnline".psk = "airbnbguest";
|
||||
"security-by-obscurity".psk = "44629828256481964386";
|
||||
"Mayflower".psk = "Fr31EsLan";
|
||||
"Born11".psk = "56LMVLbw840EGNWk0RYRqvgicx3FSO";
|
||||
"FactoryCommunityGuest".psk = "Factory4ever";
|
||||
"krebs".psk = "aidsballs";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
|
||||
}
|
||||
{ i18n.defaultLocale = "en_GB.UTF-8"; }
|
||||
{ services.illum.enable = true; }
|
||||
{
|
||||
@@ -254,7 +162,10 @@ in {
|
||||
{
|
||||
programs.gnupg.agent.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.gnupg pkgs.pass ];
|
||||
environment.systemPackages = [
|
||||
pkgs.gnupg
|
||||
(pkgs.pass.withExtensions (e: [e.pass-otp]))
|
||||
];
|
||||
}
|
||||
{
|
||||
services.atd.enable = true;
|
||||
@@ -300,20 +211,21 @@ in {
|
||||
./mime.nix
|
||||
./nano.nix
|
||||
./neovim.nix
|
||||
./nix.nix
|
||||
./newsboat.nix
|
||||
./flameshot-once.nix
|
||||
./nixpkgs-unstable.nix
|
||||
./packages
|
||||
./power-action.nix
|
||||
./printing.nix
|
||||
./wallpaper.nix
|
||||
./redshift.nix
|
||||
./retiolum.nix
|
||||
./rofi.nix
|
||||
./spotify.nix
|
||||
./spacetime.nix
|
||||
./ssh.nix
|
||||
./sshd.nix
|
||||
./sudo.nix
|
||||
./sxiv.nix
|
||||
./themes/mac-os.nix
|
||||
./theming.nix
|
||||
./tmux.nix
|
||||
./tor.nix
|
||||
@@ -323,7 +235,7 @@ in {
|
||||
./version.nix
|
||||
./vscode.nix
|
||||
./watson.nix
|
||||
./xautolock.nix
|
||||
./wifi.nix
|
||||
./zsh.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
{ config, pkgs, ... }:
|
||||
with config.niveum; {
|
||||
let
|
||||
inherit (import <niveum/lib>) defaultApplications colours theme;
|
||||
in {
|
||||
home-manager.users.me.services.dunst = {
|
||||
enable = true;
|
||||
iconTheme = theme.icon;
|
||||
iconTheme = (theme pkgs).icon;
|
||||
settings = {
|
||||
global = {
|
||||
transparency = 10;
|
||||
font = "Sans ${toString fonts.size}";
|
||||
font = "Monospace 8";
|
||||
geometry = "200x5-30+20";
|
||||
frame_color = colours.foreground;
|
||||
follow = "mouse";
|
||||
@@ -31,7 +33,7 @@ with config.niveum; {
|
||||
sticky_history = true;
|
||||
history_length = 20;
|
||||
dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run";
|
||||
browser = "x-www-browser";
|
||||
browser = (defaultApplications pkgs).browser;
|
||||
verbosity = "mesg";
|
||||
corner_radius = 0;
|
||||
mouse_left_click = "do_action";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{ lib, pkgs, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) defaultApplications;
|
||||
flameshot-once =
|
||||
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
|
||||
in {
|
||||
@@ -16,7 +17,7 @@ in {
|
||||
enable = true;
|
||||
createUrl = "http://p.r/image";
|
||||
deleteUrl = "http://p.r/image/delete/%1";
|
||||
xdg-open.browser = "x-www-browser";
|
||||
xdg-open.browser = (defaultApplications pkgs).browser;
|
||||
};
|
||||
config.timeout = 200;
|
||||
})
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{ pkgs, ... }: {
|
||||
niveum.fonts.size = 9;
|
||||
|
||||
fonts = {
|
||||
enableDefaultFonts = true;
|
||||
enableFontDir = true;
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
{ pkgs, config, lib, ... }: {
|
||||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) kieran ignorePaths;
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.mr
|
||||
pkgs.git
|
||||
@@ -6,7 +10,7 @@
|
||||
pkgs.gitAndTools.hub
|
||||
pkgs.gitAndTools.gh
|
||||
pkgs.gitAndTools.git-extras
|
||||
pkgs.unstable.gitAndTools.git-trim
|
||||
pkgs.gitAndTools.git-trim
|
||||
pkgs.gitstats
|
||||
pkgs.patch
|
||||
pkgs.patchutils
|
||||
@@ -53,8 +57,8 @@
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitAndTools.gitFull;
|
||||
userName = config.niveum.user.name;
|
||||
userEmail = config.niveum.user.email;
|
||||
userName = kieran.name;
|
||||
userEmail = kieran.email;
|
||||
aliases = {
|
||||
br = "branch";
|
||||
co = "checkout";
|
||||
@@ -69,8 +73,11 @@
|
||||
graph =
|
||||
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
|
||||
};
|
||||
ignores = config.niveum.ignore;
|
||||
ignores = ignorePaths;
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
rebase.autoStash = true;
|
||||
merge.autoStash = true;
|
||||
core.pager =
|
||||
"${pkgs.gitAndTools.diff-so-fancy}/bin/diff-so-fancy | ${pkgs.less}/bin/less --tabs=4 -RFX";
|
||||
color = {
|
||||
|
||||
13
configs/gitea.nix
Normal file
13
configs/gitea.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
disableRegistration = true;
|
||||
rootUrl = "https://code.xn--kiern-0qa.de";
|
||||
appName = "code.kierán.de";
|
||||
};
|
||||
services.nginx.virtualHosts."code.xn--kiern-0qa.de" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
locations."/".extraConfig = "proxy_pass http://localhost:3000;";
|
||||
};
|
||||
}
|
||||
@@ -4,14 +4,9 @@ let
|
||||
inherit (import <niveum/lib>) localAddresses;
|
||||
in
|
||||
{
|
||||
disabledModules = [
|
||||
"services/misc/home-assistant.nix"
|
||||
];
|
||||
|
||||
imports = [
|
||||
./zigbee.nix
|
||||
./frontend.nix
|
||||
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
|
||||
];
|
||||
|
||||
services.home-assistant = {
|
||||
@@ -22,8 +17,8 @@ in
|
||||
config = {
|
||||
homeassistant = {
|
||||
name = "Toum";
|
||||
latitude = 52.461;
|
||||
longitude = 13.378;
|
||||
latitude = config.location.latitude;
|
||||
longitude = config.location.longitude;
|
||||
elevation = 90; # TODO find out how high I live
|
||||
unit_system = "metric";
|
||||
time_zone = config.time.timeZone;
|
||||
@@ -2,15 +2,6 @@ let
|
||||
inherit (import ./lib.nix) triggers;
|
||||
in
|
||||
{
|
||||
disabledModules = [
|
||||
"services/misc/home-assistant.nix"
|
||||
];
|
||||
|
||||
imports = [
|
||||
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
|
||||
];
|
||||
|
||||
|
||||
services.home-assistant.config = {
|
||||
frontend = {
|
||||
themes = {
|
||||
@@ -1,63 +1,25 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (import <stockholm/lib>) genid;
|
||||
inherit (import <niveum/lib>) localAddresses;
|
||||
zigbee2mqttDevice = "/dev/ttyACM0";
|
||||
|
||||
zigbee2mqttConfig = {
|
||||
permit_join = false;
|
||||
homeassistant = true;
|
||||
serial = {
|
||||
port = zigbee2mqttDevice;
|
||||
disable_led = true;
|
||||
};
|
||||
mqtt = {
|
||||
discovery = true;
|
||||
base_topic = "zigbee";
|
||||
server = "mqtt://${localAddresses.toum}"; # Rasperry local IP
|
||||
user = "albrecht";
|
||||
password = lib.strings.fileContents <system-secrets/mosquitto>;
|
||||
};
|
||||
};
|
||||
zigbee2mqtt_cfg = pkgs.writeText "zigbee2mqtt.json" (builtins.toJSON zigbee2mqttConfig);
|
||||
in
|
||||
{
|
||||
disabledModules = [
|
||||
"services/misc/home-assistant.nix"
|
||||
];
|
||||
|
||||
imports = [
|
||||
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
|
||||
<nixpkgs-unstable/nixos/modules/services/misc/zigbee2mqtt.nix>
|
||||
];
|
||||
|
||||
/*
|
||||
ids = {
|
||||
uids.zigbee2mqtt = genid "zigbee2mqtt";
|
||||
gids.zigbee2mqtt = genid "zigbee2mqtt";
|
||||
};
|
||||
services.zigbee2mqtt = {
|
||||
enable = true;
|
||||
config = zigbee2mqttConfig;
|
||||
package = pkgs.unstable.zigbee2mqtt;
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
system.activationScripts.installZigbee = ''
|
||||
install -d /var/lib/zigbee2mqtt
|
||||
install ${zigbee2mqtt_cfg} /var/lib/zigbee2mqtt/configuration.yaml
|
||||
'';
|
||||
|
||||
# hack to restart docker container on config change
|
||||
systemd.services.docker-zigbee2mqtt.environment.cfg = zigbee2mqtt_cfg;
|
||||
|
||||
docker-containers.zigbee2mqtt = {
|
||||
image = "koenkk/zigbee2mqtt";
|
||||
extraDockerOptions = [
|
||||
"--device=${zigbee2mqttDevice}:${zigbee2mqttDevice}"
|
||||
];
|
||||
volumes = ["/var/lib/zigbee2mqtt:/app/data"];
|
||||
config = {
|
||||
permit_join = false;
|
||||
homeassistant = true;
|
||||
serial = {
|
||||
port = "/dev/ttyACM0";
|
||||
disable_led = true;
|
||||
};
|
||||
mqtt = {
|
||||
discovery = true;
|
||||
base_topic = "zigbee";
|
||||
server = "mqtt://${localAddresses.toum}";
|
||||
user = "albrecht";
|
||||
password = lib.strings.fileContents <system-secrets/mosquitto>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.mosquitto = {
|
||||
25
configs/hedgedoc.nix
Normal file
25
configs/hedgedoc.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
services.nginx.virtualHosts."pad.xn--kiern-0qa.de" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/".extraConfig = ''
|
||||
client_max_body_size 4G;
|
||||
proxy_set_header Host $host;
|
||||
proxy_pass http://localhost:3091;
|
||||
'';
|
||||
};
|
||||
|
||||
services.hedgedoc = {
|
||||
enable = true;
|
||||
configuration = {
|
||||
allowAnonymous = false;
|
||||
allowGravatar = false;
|
||||
db = {
|
||||
dialect = "sqlite";
|
||||
storage = "/var/lib/codimd/db.codimd.sqlite";
|
||||
useCDN = false;
|
||||
};
|
||||
port = 3091;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -9,14 +9,14 @@
|
||||
detailedCpuTime = false;
|
||||
headerMargin = true;
|
||||
hideKernelThreads = true;
|
||||
hideThreads = false;
|
||||
hideUserlandThreads = false;
|
||||
hideThreads = true;
|
||||
hideUserlandThreads = true;
|
||||
highlightBaseName = true;
|
||||
highlightMegabytes = true;
|
||||
highlightThreads = true;
|
||||
shadowOtherUsers = true;
|
||||
showProgramPath = false;
|
||||
showThreadNames = true;
|
||||
showThreadNames = false;
|
||||
sortDescending = true;
|
||||
sortKey = "PERCENT_CPU";
|
||||
treeView = true;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ pkgs, lib, ... }:
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (lib.strings) fileContents;
|
||||
inherit (import <niveum/lib>) sshPort;
|
||||
eduroam = {
|
||||
identity = fileContents <secrets/eduroam/identity>;
|
||||
password = fileContents <secrets/eduroam/password>;
|
||||
@@ -22,22 +23,56 @@ let
|
||||
}"
|
||||
phase2="auth=PAP"
|
||||
'';
|
||||
hu-berlin-cifs-options = [
|
||||
"uid=${toString config.users.users.me.uid}"
|
||||
"gid=${toString config.users.groups.users.gid}"
|
||||
"sec=ntlmv2"
|
||||
"workgroup=german"
|
||||
"username=meinhaki"
|
||||
"password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
|
||||
"noauto"
|
||||
"x-systemd.requires=hu-vpn.service"
|
||||
"x-systemd.automount"
|
||||
"x-systemd.device-timeout=1"
|
||||
"x-systemd.idle-timeout=1min"
|
||||
];
|
||||
in {
|
||||
networking.wireless.networks = {
|
||||
eduroam_5GHz.auth = eduroamAuth;
|
||||
eduroam.auth = eduroamAuth;
|
||||
};
|
||||
|
||||
fileSystems."/media/hu-berlin/germpro2" = {
|
||||
device = "//hugerm31c.user.hu-berlin.de/germpro2/ling";
|
||||
fsType = "cifs";
|
||||
options = hu-berlin-cifs-options;
|
||||
};
|
||||
|
||||
fileSystems."/media/hu-berlin/germhome" = {
|
||||
device = "//hugerm31c.user.hu-berlin.de/germhome/ling/meinhaki";
|
||||
fsType = "cifs";
|
||||
options = hu-berlin-cifs-options;
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "hu-vpn" ''
|
||||
${pkgs.openfortivpn}/bin/openfortivpn -p "${eduroam.password}" -c ${pkgs.writeText "hu-berlin.config" ''
|
||||
(pkgs.writers.writeDashBin "hu-ip" ''
|
||||
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
|
||||
'')
|
||||
];
|
||||
|
||||
systemd.services.hu-vpn = {
|
||||
enable = true;
|
||||
wants = [ "network-online.target" ];
|
||||
script = ''
|
||||
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" ''
|
||||
host = forti-ssl.vpn.hu-berlin.de
|
||||
port = 443
|
||||
trusted-cert = e5a7d56543002ffe1e8962caa5fd6d94053aa702381458247b670877a66f3c6f
|
||||
username = ${eduroam.identity}
|
||||
password = ${eduroam.password}
|
||||
''}
|
||||
'')
|
||||
];
|
||||
'';
|
||||
};
|
||||
|
||||
services.openvpn.servers.hu-berlin = {
|
||||
autoStart = false;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) defaultApplications colours;
|
||||
klem = import <niveum/packages/scripts/klem.nix> {
|
||||
inherit pkgs lib;
|
||||
config.scripts = {
|
||||
@@ -26,6 +27,9 @@ let
|
||||
"betacode" = pkgs.writers.writeDash "betacode" ''
|
||||
${pkgs.scripts.betacode}/bin/betacode
|
||||
'';
|
||||
"devanagari" = pkgs.writers.writeDash "devanagari" ''
|
||||
${pkgs.scripts.devanagari}/bin/devanagari
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -41,12 +45,32 @@ let
|
||||
emoji-file = pkgs.fetchurl {
|
||||
url =
|
||||
"https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.local/share/larbs/emoji";
|
||||
sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk";
|
||||
sha256 = "03fv69ah8msh2j6i3lm4sdkckqq8jwn1kj43j98dh0xjpzazsy46";
|
||||
};
|
||||
kaomoji-file = pkgs.writeText "kaomoji.txt" ''
|
||||
¯\(°_o)/¯ dunno lol shrug dlol
|
||||
¯\_(ツ)_/¯ dunno lol shrug dlol
|
||||
( ͡° ͜ʖ ͡°) lenny
|
||||
¯\_( ͡° ͜ʖ ͡°)_/¯ lenny shrug dlol
|
||||
( ゚д゚) aaah sad noo
|
||||
ヽ(^o^)丿 hi yay hello
|
||||
(^o^: ups hehe
|
||||
(^∇^) yay
|
||||
┗(`皿´)┛ angry argh
|
||||
ヾ(^_^) byebye!! bye
|
||||
<(^.^<) <(^.^)> (>^.^)> (7^.^)7 (>^.^<) dance
|
||||
(-.-)Zzz... sleep
|
||||
(∩╹□╹∩) oh noes woot
|
||||
(╯°□°)╯ ┻━┻ table flip
|
||||
(」゜ロ゜)」 why woot
|
||||
(_゜_゜_) gloom I see you
|
||||
༼ ༎ຶ ෴ ༎ຶ༽ sad
|
||||
(\/) (°,,,,°) (\/) krebs
|
||||
'';
|
||||
in with pkgs;
|
||||
writers.writeDashBin "emoji-menu" ''
|
||||
PATH=${lib.makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]}
|
||||
chosen=$(cut -d ';' -f1 ${emoji-file} | dmenu -i -l 10 | sed "s/ .*//")
|
||||
chosen=$(cat ${emoji-file} ${kaomoji-file} | cut -d ';' -f1 | dmenu -i -l 10 | sed "s/ .*//")
|
||||
|
||||
[ "$chosen" != "" ] || exit
|
||||
|
||||
@@ -59,7 +83,7 @@ let
|
||||
fi
|
||||
'';
|
||||
|
||||
in with config.niveum; {
|
||||
in {
|
||||
services.xserver = {
|
||||
displayManager.defaultSession = "none+i3";
|
||||
windowManager.i3 = {
|
||||
@@ -68,10 +92,25 @@ in with config.niveum; {
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
monitorSection = ''Option "DPMS" "false"'';
|
||||
serverFlagsSection = ''
|
||||
Option "BlankTime" "0"
|
||||
Option "StandbyTime" "0"
|
||||
Option "SuspendTime" "0"
|
||||
Option "OffTime" "0"
|
||||
'';
|
||||
extraConfig = ''
|
||||
Section "Extensions"
|
||||
Option "DPMS" "Disable"
|
||||
EndSection
|
||||
'';
|
||||
};
|
||||
|
||||
home-manager.users.me.xsession.windowManager.i3 = {
|
||||
enable = true;
|
||||
config = rec {
|
||||
fonts = [ "Monospace ${toString config.niveum.fonts.size}" ];
|
||||
fonts = [ "Monospace 10" ];
|
||||
modifier = "Mod4";
|
||||
window = {
|
||||
titlebar = false;
|
||||
@@ -133,7 +172,7 @@ in with config.niveum; {
|
||||
};
|
||||
bars = [{
|
||||
workspaceButtons = false;
|
||||
fonts = [ "Monospace ${toString (config.niveum.fonts.size - 1)}" ];
|
||||
fonts = [ "Monospace 8" ];
|
||||
mode = "hide"; # "dock"
|
||||
position = "bottom";
|
||||
colors = rec {
|
||||
@@ -147,10 +186,9 @@ in with config.niveum; {
|
||||
};
|
||||
};
|
||||
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
|
||||
pkgs.writeTOML (import <niveum/dot/i3status-rust.nix> {
|
||||
wifi-interface = networkInterfaces.wireless;
|
||||
batteryBlock = batteryBlocks.default;
|
||||
inherit (config.niveum) colours;
|
||||
pkgs.writeTOML (import <niveum/lib/i3status-rust.nix> {
|
||||
inherit (config.niveum) batteryName wirelessInterface;
|
||||
inherit colours;
|
||||
inherit pkgs;
|
||||
})
|
||||
}";
|
||||
@@ -164,17 +202,15 @@ in with config.niveum; {
|
||||
"l" = "resize grow width 10 px or 5 ppt";
|
||||
};
|
||||
keybindings = {
|
||||
"${modifier}+Shift+h" = "move left";
|
||||
"${modifier}+Shift+j" = "move down";
|
||||
"${modifier}+Shift+k" = "move up";
|
||||
"${modifier}+Shift+l" = "move right";
|
||||
"${modifier}+Shift+h" = "move left 25 px";
|
||||
"${modifier}+Shift+j" = "move down 25 px";
|
||||
"${modifier}+Shift+k" = "move up 25 px";
|
||||
"${modifier}+Shift+l" = "move right 25 px";
|
||||
"${modifier}+h" = "focus left";
|
||||
"${modifier}+j" = "focus down";
|
||||
"${modifier}+k" = "focus up";
|
||||
"${modifier}+l" = "focus right";
|
||||
|
||||
"${modifier}+Menu" = "exec ${klem}/bin/klem";
|
||||
|
||||
"${modifier}+Shift+b" = "move window to workspace prev";
|
||||
"${modifier}+Shift+n" = "move window to workspace next";
|
||||
"${modifier}+Shift+x" = "exec --no-startup-id ${move-to-new-workspace}";
|
||||
@@ -196,12 +232,12 @@ in with config.niveum; {
|
||||
"${modifier}+v" = "split v";
|
||||
"${modifier}+w" = "layout tabbed";
|
||||
|
||||
"${modifier}+Return" = "exec i3-sensible-terminal";
|
||||
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
|
||||
"${modifier}+t" = "exec ${applications.fileManager}";
|
||||
"${modifier}+y" = "exec x-www-browser";
|
||||
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
|
||||
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
|
||||
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
|
||||
|
||||
"${modifier}+Shift+w" = "exec ${pkgs.xautolock}/bin/xautolock -locknow";
|
||||
"${modifier}+Shift+w" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
|
||||
"${modifier}+a" =
|
||||
"exec --no-startup-id ${pkgs.rofi}/bin/rofi -display-window — -show window";
|
||||
"${modifier}+d" = "exec --no-startup-id ${pkgs.dmenu}/bin/dmenu_run";
|
||||
@@ -228,6 +264,7 @@ in with config.niveum; {
|
||||
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
|
||||
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
|
||||
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";
|
||||
"${modifier}+F12" = "exec ${klem}/bin/klem";
|
||||
|
||||
"Print" = "exec flameshot-once";
|
||||
"XF86AudioLowerVolume" =
|
||||
@@ -245,7 +282,7 @@ in with config.niveum; {
|
||||
"exec --no-startup-id ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPrev" =
|
||||
"exec --no-startup-id ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86ScreenSaver" = "exec ${pkgs.xautolock}/bin/xautolock -locknow";
|
||||
"XF86ScreenSaver" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
|
||||
|
||||
"XF86Display" = "exec ${pkgs.scripts.dmenurandr}/bin/dmenurandr";
|
||||
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) kieran;
|
||||
|
||||
nixpkgs-much = import (pkgs.fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
rev = "7c2a362b58a1c2ba72d24aa3869da3b1a91d39e1";
|
||||
sha256 = "0gl4xndyahasa9dv5mi3x9w8s457wl2xh9lcldizcn1irjvkrzs4";
|
||||
}) {
|
||||
overlays = [
|
||||
(import <stockholm/krebs/5pkgs/haskell>)
|
||||
];
|
||||
};
|
||||
much-pkg = nixpkgs-much.haskellPackages.callCabal2nix "much" <niveum/submodules/much> {};
|
||||
much = nixpkgs-much.haskell.lib.dontHaddock much-pkg;
|
||||
|
||||
tagRules = [
|
||||
{
|
||||
query = "to:miaengiadina-pwa@noreply.github.com AND subject:\"PR run failed\"";
|
||||
@@ -42,9 +57,6 @@ let
|
||||
notmuch.enable = true;
|
||||
};
|
||||
|
||||
much-pkg = pkgs.haskellPackages.callCabal2nix "much" <niveum/submodules/much> {};
|
||||
much = pkgs.haskell.lib.dontHaddock much-pkg;
|
||||
|
||||
mail-sync = pkgs.writers.writeDashBin "mail-sync" ''
|
||||
${pkgs.isync}/bin/mbsync --all
|
||||
${pkgs.notmuch}/bin/notmuch new
|
||||
@@ -107,7 +119,7 @@ in {
|
||||
};
|
||||
in lib.listToAttrs (map muchsyncConfig [
|
||||
"wilde"
|
||||
"homeros"
|
||||
"manakish"
|
||||
]);
|
||||
|
||||
programs.msmtp.enable = true;
|
||||
@@ -139,7 +151,7 @@ in {
|
||||
};
|
||||
userName = "kieran@fysi.tech";
|
||||
address = "kieran@fysi.tech";
|
||||
realName = config.niveum.user.name;
|
||||
realName = kieran.name;
|
||||
passwordCommand = pass_ <secrets/mail/fastmail>;
|
||||
};
|
||||
cock = enableDefaults {
|
||||
@@ -166,7 +178,7 @@ in {
|
||||
primary = false;
|
||||
flavor = "gmail.com";
|
||||
address = "kieran.meinhardt@gmail.com";
|
||||
realName = config.niveum.user.name;
|
||||
realName = kieran.name;
|
||||
userName = "kieran.meinhardt";
|
||||
passwordCommand = pass_ <secrets/mail/gmail/kieran.meinhardt>;
|
||||
folders = {
|
||||
@@ -179,7 +191,7 @@ in {
|
||||
primary = false;
|
||||
flavor = "gmail.com";
|
||||
address = "amroplay@gmail.com";
|
||||
realName = config.niveum.user.name;
|
||||
realName = kieran.name;
|
||||
userName = "amroplay";
|
||||
passwordCommand = pass_ <secrets/mail/gmail/amroplay>;
|
||||
folders = {
|
||||
@@ -204,14 +216,14 @@ in {
|
||||
tls.enable = true;
|
||||
};
|
||||
address = "kieran.meinhardt@posteo.net";
|
||||
realName = config.niveum.user.name;
|
||||
realName = kieran.name;
|
||||
userName = "kieran.meinhardt@posteo.net";
|
||||
passwordCommand = pass_ <secrets/mail/posteo>;
|
||||
};
|
||||
hu-berlin = enableDefaults {
|
||||
primary = false;
|
||||
address = "meinhark@hu-berlin.de";
|
||||
realName = config.niveum.user.name;
|
||||
realName = kieran.name;
|
||||
userName = "meinhark";
|
||||
passwordCommand = pass_ <secrets/eduroam/password>;
|
||||
smtp = {
|
||||
@@ -228,6 +240,26 @@ in {
|
||||
tls.enable = true;
|
||||
};
|
||||
};
|
||||
hu-berlin-work = enableDefaults {
|
||||
primary = false;
|
||||
address = "meinhaki@hu-berlin.de";
|
||||
realName = kieran.name;
|
||||
userName = "meinhaki";
|
||||
passwordCommand = pass_ <secrets/mail/meinhaki>;
|
||||
smtp = {
|
||||
host = "mailhost.cms.hu-berlin.de";
|
||||
port = 25;
|
||||
tls = {
|
||||
enable = true;
|
||||
useStartTls = true;
|
||||
};
|
||||
};
|
||||
imap = {
|
||||
host = "mailbox.cms.hu-berlin.de";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
72
configs/matterbridge.nix
Normal file
72
configs/matterbridge.nix
Normal file
@@ -0,0 +1,72 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
bridgeBotToken = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
|
||||
config = {
|
||||
general = {
|
||||
RemoteNickFormat = "[{NOPINGNICK}] ";
|
||||
Charset = "utf-8";
|
||||
};
|
||||
telegram.kmein.Token = bridgeBotToken;
|
||||
irc.freenode = {
|
||||
Server = "irc.freenode.net:6667";
|
||||
Nick = "ponte";
|
||||
};
|
||||
mumble.lassulus = {
|
||||
Server = "lassul.us:64738";
|
||||
Nick = "krebs_bridge";
|
||||
SkipTLSVerify = true;
|
||||
};
|
||||
gateway = [
|
||||
{
|
||||
name = "krebs-bridge";
|
||||
enable = true;
|
||||
inout = [
|
||||
{
|
||||
account = "irc.freenode";
|
||||
channel = "#krebs";
|
||||
}
|
||||
{
|
||||
account = "telegram.kmein";
|
||||
channel = "-330372458";
|
||||
}
|
||||
{
|
||||
account = "mumble.lassulus";
|
||||
channel = 6; # "nixos"
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "myengadin-bridge";
|
||||
enable = true;
|
||||
inout = [
|
||||
{
|
||||
account = "irc.freenode";
|
||||
channel = "##myengadin";
|
||||
}
|
||||
{
|
||||
account = "telegram.kmein";
|
||||
channel = "-425759153";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(import <niveum/overlays/toml.nix>)
|
||||
(self: super: {
|
||||
matterbridge = (import (super.fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
rev = "e45d91ee65db293a172ec506759d1248e40c35f5";
|
||||
sha256 = "03cjs5xcx09lw0djyrx2kfakw7gkg4iqmy9w25azai62im39l30k";
|
||||
}) {}).matterbridge;
|
||||
})
|
||||
];
|
||||
|
||||
services.matterbridge = {
|
||||
enable = true;
|
||||
configPath = toString (pkgs.writeTOML config);
|
||||
};
|
||||
}
|
||||
@@ -19,6 +19,7 @@
|
||||
"x-scheme-handler/mailto" = "brave-browser.desktop";
|
||||
"x-scheme-handler/unknown" = "brave-browser.desktop";
|
||||
"x-scheme-handler/webcal" = "brave-browser.desktop";
|
||||
"inode/directory" = "pcmanfm.desktop";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
86
configs/moodle-dl.nix
Normal file
86
configs/moodle-dl.nix
Normal file
@@ -0,0 +1,86 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) kieran;
|
||||
|
||||
moodle-dl = pkgs.callPackage <niveum/packages/moodle-dl> {};
|
||||
|
||||
moodle-dl-config = {
|
||||
telegram = {
|
||||
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
|
||||
chat_id = "18980945";
|
||||
send_error_msg = true;
|
||||
};
|
||||
token = lib.strings.fileContents <system-secrets/moodle.token>;
|
||||
moodle_domain = "moodle.hu-berlin.de";
|
||||
moodle_path = "/";
|
||||
download_course_ids = [
|
||||
99881 # Dialektologie
|
||||
100183 # Onomastik
|
||||
100353 # Sanskrit I
|
||||
100692 # Sanskrit Tutorium
|
||||
99832 # Germanisch
|
||||
99823 # Gotisch
|
||||
99813 # Altalbanisch
|
||||
98681 # Geistliche Lyrik von Luther bis Lehnert
|
||||
99667 # Antike Mythologie
|
||||
# 52365 # FSR KlassPhil
|
||||
];
|
||||
download_submissions = true;
|
||||
download_descriptions = true;
|
||||
download_links_in_descriptions = false;
|
||||
download_databases = false;
|
||||
download_forums = false;
|
||||
download_linked_files = false;
|
||||
download_also_with_cookie = false;
|
||||
};
|
||||
|
||||
moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config);
|
||||
|
||||
moodle-dl-directory = "/var/lib/moodle";
|
||||
in
|
||||
{
|
||||
users.extraUsers.moodle = {
|
||||
isNormalUser = false;
|
||||
home = moodle-dl-directory;
|
||||
createHome = true;
|
||||
openssh.authorizedKeys.keys = [
|
||||
# for sshfs mount
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtIFmbspaBHaSkLEx43V0uaVd7l9NUFiwt2VOP++KzLjvRMLkyF2hg2HjmogTjUvTyoDs7RHwEH/cHZlJ5JQkM1jRqQpnYwGfkZEwYvmXAl6LY9+vQMP36gNPfXmKX3y3LelO7oD2uhUs0guTtg0tHUyN5/UY5u+VinyD6djxDkHaCUn3S7CS/odBcs/4flXT654wsvzgYicnSKH9R4W+7C0YsckZ/NoIkA4jnuwtWZYWrUkxd4/290buX6pAc5+zVVZqyy0sI4i8s6pO9RL5W7xvYt+w+U0u0dMxm5ckiRmLVKfIbMN4YtDxsZbZDajlQ1nDbOsEsrSXWz4H4cSNot7J820x1qh5SSxL4GSQlcT+6xCFk9kKyflxoS3oLoPLttx3rmOMkZKJWxF/IKLW47orxV6wkG5mHxdeR3cf6jX4j3nkwFVyC9R+WG4w2Z4vKONVE7uWGYU3y4OpR1e6MGHVShkNKqEvC/Kjcc/6v7I7AKRAuPZB0WEw36tA65/8= root@wilde"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFPHt+FPQ6gq8Ev65YsBZrafdtpWGpCNnlVvy67S1BK root@manakish"
|
||||
];
|
||||
useDefaultShell = true;
|
||||
};
|
||||
|
||||
system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json";
|
||||
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
user = "moodle"; # config.users.extraUsers.moodle.name;
|
||||
openDefaultPorts = true;
|
||||
configDir = "${moodle-dl-directory}/.config/syncthing";
|
||||
dataDir = "${moodle-dl-directory}/.config/syncthing";
|
||||
declarative = rec {
|
||||
cert = toString <system-secrets/syncthing/cert.pem>;
|
||||
key = toString <system-secrets/syncthing/key.pem>;
|
||||
devices = {
|
||||
inherit ((import <niveum/lib>).syncthing.devices) wilde manakish toum;
|
||||
};
|
||||
folders.${moodle-dl-directory} = {
|
||||
devices = [ "toum" "wilde" "manakish" ];
|
||||
id = "moodle-dl";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.moodle-dl = {
|
||||
enable = true;
|
||||
startAt = "hourly";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = config.users.extraUsers.moodle.name;
|
||||
WorkingDirectory = config.users.extraUsers.moodle.home;
|
||||
};
|
||||
wants = [ "network-online.target" ];
|
||||
script = "${moodle-dl}/bin/moodle-dl";
|
||||
};
|
||||
}
|
||||
83
configs/mpd.nix
Normal file
83
configs/mpd.nix
Normal file
@@ -0,0 +1,83 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
streams = import <niveum/lib/streams.nix> {
|
||||
di-fm-key = lib.strings.fileContents <secrets/di.fm/key>;
|
||||
};
|
||||
multi-room-audio-port = 8000;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
<niveum/modules/mpd-fm.nix>
|
||||
];
|
||||
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
log_level "default"
|
||||
auto_update "yes"
|
||||
|
||||
audio_output {
|
||||
type "alsa"
|
||||
name "zaatar single room audio system"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "httpd"
|
||||
name "zaatar multi room audio system"
|
||||
encoder "vorbis" # optional
|
||||
port "${toString multi-room-audio-port}"
|
||||
quality "5.0" # do not define if bitrate is defined
|
||||
# bitrate "128" # do not define if quality is defined
|
||||
format "44100:16:2"
|
||||
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
|
||||
tags "yes" # httpd supports sending tags to listening streams.
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.mpc_cli ];
|
||||
|
||||
services.mpd-fm = {
|
||||
enable = true;
|
||||
# stationsFile = "/etc/mpd-fm/stations.json";
|
||||
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
|
||||
webPort = 8080;
|
||||
};
|
||||
|
||||
systemd.services.mpd-fm-stations =
|
||||
let
|
||||
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
|
||||
stationsJson = pkgs.writeText "stations.json" (builtins.toJSON stations);
|
||||
in {
|
||||
wantedBy = [ "mpd-fm.service" ];
|
||||
startAt = "hourly";
|
||||
script = ''
|
||||
mkdir -p /etc/mpd-fm
|
||||
antenne_asb_url=$(
|
||||
${pkgs.curl}/bin/curl -sS 'https://www.caster.fm/widgets/em_player.php?jsinit=true&uid=529295&t=blue&c=' \
|
||||
| grep streamUrl \
|
||||
| sed ${lib.escapeShellArg "s/^.*'\\([^']*\\)'.*/\\1/"}
|
||||
)
|
||||
${pkgs.jq}/bin/jq "map(if .station == \"Antenne ASB\" then .stream |= \"$antenne_asb_url\" else . end)" < ${stationsJson} > /etc/mpd-fm/stations.json
|
||||
'';
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
virtualHosts.default = {
|
||||
basicAuth.dj = lib.strings.fileContents <system-secrets/mpd-web.key>;
|
||||
locations."= /listen.ogg" = {
|
||||
proxyPass = "http://127.0.0.1:${toString multi-room-audio-port}";
|
||||
};
|
||||
locations."/" = {
|
||||
proxyPass = "http://127.0.0.1:${toString config.services.mpd-fm.webPort}";
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -8,7 +8,7 @@ in {
|
||||
enable = true;
|
||||
config = {
|
||||
force-window = "yes";
|
||||
ytdl-format = "bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
|
||||
ytdl-format = "bestvideo+bestaudio/best";
|
||||
};
|
||||
bindings = {
|
||||
"Alt+RIGHT" = "add video-rotate 90";
|
||||
|
||||
@@ -20,9 +20,10 @@
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
|
||||
(pkgs.neovim.override {
|
||||
configure = {
|
||||
customRC = builtins.readFile <niveum/dot/init.vim>;
|
||||
customRC = builtins.readFile <niveum/lib/vim/init.vim>;
|
||||
packages.nvim = with pkgs.vimPlugins; {
|
||||
start = [
|
||||
# cheat-sh-vim
|
||||
@@ -60,6 +61,7 @@
|
||||
haskell-vim
|
||||
icalendar-vim
|
||||
idris-vim
|
||||
nim-vim
|
||||
jq-vim
|
||||
purescript-vim
|
||||
rust-vim
|
||||
|
||||
@@ -3,35 +3,22 @@ let
|
||||
inherit (import <niveum/lib>) localAddresses;
|
||||
in
|
||||
{
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
|
||||
# Only allow PFS-enabled ciphers with AES256
|
||||
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
|
||||
};
|
||||
|
||||
services.nextcloud = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud19;
|
||||
package = pkgs.nextcloud20;
|
||||
|
||||
https = true;
|
||||
|
||||
autoUpdateApps = {
|
||||
enable = true;
|
||||
startAt = "05:00:00";
|
||||
};
|
||||
|
||||
hostName = localAddresses.toum;
|
||||
hostName = "cloud.xn--kiern-0qa.de";
|
||||
|
||||
nginx.enable = true;
|
||||
# https = true;
|
||||
config = {
|
||||
# overwriteProtocol = "https";
|
||||
overwriteProtocol = "https";
|
||||
|
||||
dbtype = "pgsql";
|
||||
dbuser = "nextcloud";
|
||||
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
|
||||
@@ -39,7 +26,7 @@ in
|
||||
dbpass = lib.strings.fileContents <system-secrets/nextcloud/database>;
|
||||
adminpass = lib.strings.fileContents <system-secrets/nextcloud/admin>;
|
||||
adminuser = "admin";
|
||||
extraTrustedDomains = [ "toum.r" ];
|
||||
# extraTrustedDomains = [ "toum.r" ];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -54,6 +41,12 @@ in
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
services.nginx.virtualHosts."cloud.xn--kiern-0qa.de" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
};
|
||||
|
||||
# Ensure that postgres is running before running the setup
|
||||
systemd.services."nextcloud-setup" = {
|
||||
requires = ["postgresql.service"];
|
||||
|
||||
10
configs/nix.nix
Normal file
10
configs/nix.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# enable `nix flake`
|
||||
nix = {
|
||||
package = pkgs.nix;
|
||||
# extraOptions = ''
|
||||
# experimental-features = nix-command
|
||||
# '';
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{ config, ... }: {
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
unstable = import <nixpkgs-unstable> { config = config.nixpkgs.config; };
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,8 @@
|
||||
{ pkgs, lib, ... }: {
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
|
||||
inherit (import <niveum/lib>) nixpkgs-unstable;
|
||||
in {
|
||||
imports = [
|
||||
./krebs.nix
|
||||
./writing.nix
|
||||
@@ -32,23 +36,20 @@
|
||||
environment.systemPackages = with pkgs; [
|
||||
# INTERNET
|
||||
aria2
|
||||
firefox
|
||||
# tor-browser-bundle-bin
|
||||
# qutebrowser
|
||||
# firefox
|
||||
tdesktop
|
||||
skypeforlinux
|
||||
w3m
|
||||
wget
|
||||
httpie
|
||||
whois
|
||||
ddgr
|
||||
ix
|
||||
# thunderbird
|
||||
nur.repos.kmein.python3Packages.instaloader
|
||||
dnsutils
|
||||
# mtr # my traceroute
|
||||
# FILE MANAGERS
|
||||
ranger
|
||||
gnome3.nautilus
|
||||
pcmanfm
|
||||
# MEDIA
|
||||
ffmpeg
|
||||
imagemagick
|
||||
@@ -74,12 +75,14 @@
|
||||
ncdu # ncurses disk usage
|
||||
python3Packages.jsonschema # json validation
|
||||
jq # json toolkit
|
||||
pup # html toolkit
|
||||
jo # json creation
|
||||
xsv # csv toolkit
|
||||
xmlstarlet # xml toolkit
|
||||
manpages
|
||||
posix_man_pages
|
||||
# moreutils # for parallel, sponge, combine
|
||||
tree
|
||||
parallel # for parallel, since moreutils shadows task spooler
|
||||
ripgrep # better grep
|
||||
rlwrap
|
||||
@@ -97,17 +100,20 @@
|
||||
audacity
|
||||
calibre
|
||||
inkscape
|
||||
zoom-us # video conferencing
|
||||
nixpkgs-unstable.zoom-us # video conferencing
|
||||
pdfgrep # search in pdf
|
||||
pdftk # pdf toolkit
|
||||
evince # for viewing pdf annotations
|
||||
xournal # for annotating pdfs
|
||||
xournalpp # for annotating pdfs
|
||||
hc # print files as qr codes
|
||||
youtubeDL
|
||||
bc # calculator
|
||||
scripts.default-gateway
|
||||
scripts.showkeys-toggle
|
||||
scripts.favicon
|
||||
scripts.ipa # XSAMPA to IPA converter
|
||||
scripts.playlist
|
||||
scripts.devanagari
|
||||
scripts.betacode # ancient greek betacode to unicode converter
|
||||
nur.repos.kmein.mahlzeit
|
||||
# nur.repos.kmein.slide
|
||||
@@ -121,8 +127,11 @@
|
||||
scripts.notetags
|
||||
scripts.booksplit
|
||||
scripts.dmenurandr
|
||||
scripts.interdimensional-cable
|
||||
scripts.dmenubluetooth
|
||||
scripts.manual-sort
|
||||
scripts.much-scripts
|
||||
scripts.dns-sledgehammer
|
||||
ts
|
||||
scripts.vg
|
||||
scripts.fkill
|
||||
@@ -135,6 +144,10 @@
|
||||
par
|
||||
qrencode
|
||||
wtf
|
||||
|
||||
spotify
|
||||
spotify-tui
|
||||
playerctl
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
'';
|
||||
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
|
||||
# :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\""
|
||||
".stack/config.yaml".text = let inherit (config.niveum) user;
|
||||
".stack/config.yaml".text = let inherit (import <niveum/lib>) kieran;
|
||||
in builtins.toJSON {
|
||||
templates.params = {
|
||||
author-name = user.name;
|
||||
author-email = user.email;
|
||||
copyright = "Copyright: (c) 2019 ${user.name}";
|
||||
github-username = user.github;
|
||||
author-name = kieran.name;
|
||||
author-email = kieran.email;
|
||||
copyright = "Copyright: (c) 2020 ${kieran.name}";
|
||||
github-username = kieran.github;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -32,8 +32,7 @@
|
||||
cabal2nix
|
||||
cabal-install
|
||||
hlint
|
||||
haskellPackages.brittany
|
||||
# haskellPackages.hfmt
|
||||
haskellPackages.ormolu
|
||||
(haskellPackages.ghcWithHoogle (import ./packages.nix))
|
||||
] ++ map haskell.lib.justStaticExecutables [
|
||||
haskellPackages.ghcid
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) nixpkgs-unstable;
|
||||
|
||||
zoteroStyle = { name, sha256 }: {
|
||||
name = "${name}.csl";
|
||||
path = pkgs.fetchurl {
|
||||
@@ -15,17 +17,11 @@ let
|
||||
})
|
||||
(zoteroStyle {
|
||||
name = "din-1505-2";
|
||||
sha256 = if scardanelli then
|
||||
"1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"
|
||||
else
|
||||
"150kbnxl1r4g1s40khdavv5s6ah10ws135r9k883f6srk78sz6zi";
|
||||
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq";
|
||||
})
|
||||
(zoteroStyle {
|
||||
name = "apa";
|
||||
sha256 = if scardanelli then
|
||||
"0g8vhp7gnd315h5b60r3zqp49kaq3fkxqnz2v7j2a0zp6s3cisdk"
|
||||
else
|
||||
"1rg41mblmqifba1azb6481dwxhsbl606kf6ysqkqd786f9l9dcf8";
|
||||
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111";
|
||||
})
|
||||
];
|
||||
|
||||
@@ -34,7 +30,6 @@ let
|
||||
name = "dic/${name}";
|
||||
inherit path;
|
||||
}) dicts);
|
||||
scardanelli = config.networking.hostName == "scardanelli";
|
||||
in {
|
||||
environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [
|
||||
{
|
||||
@@ -69,9 +64,11 @@ in {
|
||||
texlive.combined.scheme-full
|
||||
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
|
||||
haskellPackages.pandoc-citeproc
|
||||
# nur.repos.kmein.text2pdf
|
||||
nur.repos.kmein.text2pdf
|
||||
libreoffice
|
||||
unstable.pandoc
|
||||
# gnumeric
|
||||
dia
|
||||
nixpkgs-unstable.pandoc
|
||||
# proselint
|
||||
asciidoctor
|
||||
wordnet
|
||||
|
||||
24
configs/power-action.nix
Normal file
24
configs/power-action.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
suspend = pkgs.writers.writeDash "suspend" "${pkgs.systemd}/bin/systemctl suspend";
|
||||
in
|
||||
{
|
||||
imports = [ <stockholm/krebs/3modules/power-action.nix> ];
|
||||
|
||||
krebs.power-action = {
|
||||
enable = true;
|
||||
plans.suspend = {
|
||||
upperLimit = 3;
|
||||
lowerLimit = 0;
|
||||
charging = false;
|
||||
action = pkgs.writeDash "suspend-wrapper" ''
|
||||
/run/wrappers/bin/sudo ${suspend}
|
||||
'';
|
||||
};
|
||||
user = config.users.users.me.name;
|
||||
};
|
||||
|
||||
security.sudo.extraConfig = ''
|
||||
${config.krebs.power-action.user} ALL= (root) NOPASSWD: ${suspend}
|
||||
'';
|
||||
}
|
||||
179
configs/radio.nix
Normal file
179
configs/radio.nix
Normal file
@@ -0,0 +1,179 @@
|
||||
{ lib, pkgs, config, ... }:
|
||||
let
|
||||
meddl = {
|
||||
streamPort = 8000;
|
||||
mpdPort = 6600;
|
||||
};
|
||||
lyrikline = {
|
||||
streamPort = 8001;
|
||||
mpdPort = 6601;
|
||||
};
|
||||
lyrik = {
|
||||
streamPort = 8002;
|
||||
mpdPort = 6602;
|
||||
};
|
||||
in
|
||||
{
|
||||
containers.lyrik = {
|
||||
autoStart = true;
|
||||
config = {config, pkgs, ...}: {
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
network.port = lyrik.mpdPort;
|
||||
extraConfig = ''
|
||||
log_level "default"
|
||||
|
||||
audio_output {
|
||||
name "Lyrik-Radio"
|
||||
type "httpd"
|
||||
encoder "vorbis"
|
||||
port "${toString lyrik.streamPort}"
|
||||
bitrate "128"
|
||||
format "44100:16:2"
|
||||
always_on "yes"
|
||||
tags "yes"
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
containers.meddl = {
|
||||
autoStart = true;
|
||||
config = {config, pkgs, ...}: {
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
network.port = meddl.mpdPort;
|
||||
extraConfig = ''
|
||||
log_level "default"
|
||||
volume_normalization "yes"
|
||||
|
||||
audio_output {
|
||||
name "DrachenLord Radio"
|
||||
type "httpd"
|
||||
encoder "vorbis"
|
||||
port "${toString meddl.streamPort}"
|
||||
bitrate "128"
|
||||
format "44100:16:2"
|
||||
always_on "yes"
|
||||
tags "yes"
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
containers.lyrikline = {
|
||||
autoStart = true;
|
||||
config = {config, pkgs, ...}: {
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
network.port = lyrikline.mpdPort;
|
||||
extraConfig = ''
|
||||
log_level "default"
|
||||
|
||||
audio_output {
|
||||
name "lyrikline.org Radio"
|
||||
type "httpd"
|
||||
encoder "vorbis"
|
||||
port "${toString lyrikline.streamPort}"
|
||||
bitrate "128"
|
||||
format "44100:16:2"
|
||||
always_on "yes"
|
||||
tags "yes"
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.lyrikline = {
|
||||
after = [ "container@lyrikline.service" ];
|
||||
wantedBy = [ "container@lyrikline.service" ];
|
||||
startAt = "*:00/5";
|
||||
environment.MPD_PORT = toString lyrikline.mpdPort;
|
||||
script = ''
|
||||
set -efu
|
||||
|
||||
lyrikline=https://www.lyrikline.org
|
||||
for _ in $(seq 1 10); do
|
||||
random_route="$(${pkgs.curl}/bin/curl -sSL "$lyrikline/index.php/tools/getrandompoem" --data-raw 'lang=de' --compressed | ${pkgs.jq}/bin/jq -r .link)"
|
||||
poem_url="$(${pkgs.curl}/bin/curl -sSL "$lyrikline$random_route" | grep -o 'https://.*\.mp3' | head -n1)"
|
||||
${pkgs.mpc_cli}/bin/mpc add "$poem_url"
|
||||
done
|
||||
|
||||
${pkgs.mpc_cli}/bin/mpc play
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.lyrik = {
|
||||
after = [ "container@lyrik.service" ];
|
||||
wantedBy = [ "container@lyrik.service" ];
|
||||
environment.MPD_PORT = toString lyrik.mpdPort;
|
||||
preStart = "${pkgs.mpc_cli}/bin/mpc crop";
|
||||
restartIfChanged = true;
|
||||
script =
|
||||
let
|
||||
videoIds = import <niveum/lib/hot-rotation/lyrik.nix>;
|
||||
streams = lib.concatMapStringsSep "\n" (id: "https://au.ytprivate.com/latest_version?id=${id}&itag=251") videoIds;
|
||||
streamsFile = pkgs.writeText "hotrot" streams;
|
||||
in ''
|
||||
set -efu
|
||||
|
||||
${pkgs.mpc_cli}/bin/mpc add < ${toString streamsFile}
|
||||
|
||||
${pkgs.mpc_cli}/bin/mpc crossfade 5
|
||||
${pkgs.mpc_cli}/bin/mpc random on
|
||||
${pkgs.mpc_cli}/bin/mpc repeat on
|
||||
${pkgs.mpc_cli}/bin/mpc play
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
systemd.services.meddl = {
|
||||
after = [ "container@meddl.service" ];
|
||||
wantedBy = [ "container@meddl.service" ];
|
||||
startAt = "*:00/10";
|
||||
environment.MPD_PORT = toString meddl.mpdPort;
|
||||
script = ''
|
||||
set -efu
|
||||
host=http://antenne-asb.ga
|
||||
|
||||
prepend_host() {
|
||||
sed "s#^#$host/#"
|
||||
}
|
||||
|
||||
${pkgs.curl}/bin/curl -sSL "$host" \
|
||||
| ${pkgs.pup}/bin/pup 'li a attr{href}' \
|
||||
| prepend_host \
|
||||
| while read -r song; do
|
||||
song_url="$(${pkgs.curl}/bin/curl -sSL "$song" \
|
||||
| ${pkgs.pup}/bin/pup 'audio source attr{src}' \
|
||||
| prepend_host
|
||||
)"
|
||||
${pkgs.mpc_cli}/bin/mpc add "$song_url"
|
||||
done
|
||||
|
||||
${pkgs.mpc_cli}/bin/mpc play
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.writers.writeDashBin "mpc-lyrikline" ''
|
||||
MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
|
||||
'')
|
||||
(pkgs.writers.writeDashBin "mpc-meddl" ''
|
||||
MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
|
||||
'')
|
||||
(pkgs.writers.writeDashBin "mpc-lyrik" ''
|
||||
MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"
|
||||
'')
|
||||
];
|
||||
|
||||
services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = {
|
||||
"= /meddl.ogg".proxyPass = "http://127.0.0.1:${toString meddl.streamPort}";
|
||||
"= /lyrikline.ogg".proxyPass = "http://127.0.0.1:${toString lyrikline.streamPort}";
|
||||
"= /lyrik.ogg".proxyPass = "http://127.0.0.1:${toString lyrik.streamPort}";
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,7 @@
|
||||
{ config, pkgs, ... }: {
|
||||
imports = [ <niveum/modules/retiolum.nix> ];
|
||||
imports = [
|
||||
<niveum/modules/retiolum.nix>
|
||||
];
|
||||
|
||||
networking.hosts = { "42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ]; };
|
||||
|
||||
environment.etc."tinc/retiolum/rsa_key.priv" = {
|
||||
text = builtins.readFile <system-secrets/retiolum.key>;
|
||||
mode = "400";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
{ config, ... }:
|
||||
with config.niveum; {
|
||||
let
|
||||
inherit (import <niveum/lib>) colours;
|
||||
in{
|
||||
home-manager.users.me.programs.rofi = {
|
||||
enable = true;
|
||||
separator = "solid";
|
||||
scrollbar = false;
|
||||
borderWidth = 0;
|
||||
lines = 5;
|
||||
font = "Monospace ${toString (fonts.size - 1)}";
|
||||
font = "Monospace 10";
|
||||
colors = rec {
|
||||
window = rec {
|
||||
background = colours.foreground;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
documentation.enable = false;
|
||||
documentation.info.enable = false;
|
||||
documentation.man.enable = false;
|
||||
documentation.man.generateCaches = false;
|
||||
fonts.fontconfig.enable = false;
|
||||
nix.gc.automatic = true;
|
||||
nix.optimise.automatic = true;
|
||||
|
||||
7
configs/spacetime.nix
Normal file
7
configs/spacetime.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
time.timeZone = "Europe/Berlin";
|
||||
location = {
|
||||
latitude = 52.517;
|
||||
longitude = 13.3872;
|
||||
};
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
inherit (lib.strings) fileContents;
|
||||
in {
|
||||
environment.systemPackages = with pkgs; [ spotify spotify-tui playerctl ];
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/audio/spotifyd.nix
|
||||
systemd.user.services.spotifyd = let
|
||||
spotifyd = pkgs.unstable.spotifyd.override {
|
||||
withMpris = true;
|
||||
withPulseAudio = true;
|
||||
inherit (pkgs) libpulseaudio dbus;
|
||||
};
|
||||
spotifydConf = pkgs.writeText "spotifyd.conf" (lib.generators.toINI { } {
|
||||
global = {
|
||||
username = fileContents <secrets/spotify/username>;
|
||||
password = fileContents <secrets/spotify/password>;
|
||||
backend = "pulseaudio";
|
||||
on_song_change_hook = toString (pkgs.writers.writeDash "songinfo" ''
|
||||
PATH=$PATH:${
|
||||
lib.makeBinPath [ pkgs.playerctl pkgs.gawk pkgs.libnotify ]
|
||||
}
|
||||
metadata=$(playerctl metadata --player spotifyd)
|
||||
title=$(echo "$metadata" | awk '/^xesam:title\s/ { print substr($0, index($0, $3)) }')
|
||||
artist=$(echo "$metadata" | awk '/^xesam:artist\s/ { print substr($0, index($0, $3)) }' | paste --serial --delimiters "/")
|
||||
album=$(echo "$metadata" | awk '/^xesam:album\s/ { print substr($0, index($0, $3)) }')
|
||||
notify-send --app-name=" Spotify" "$title" "$artist – $album"
|
||||
'');
|
||||
};
|
||||
});
|
||||
in {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" "sound.target" ];
|
||||
description = "spotifyd, a Spotify playing daemon";
|
||||
serviceConfig = {
|
||||
ExecStart =
|
||||
"${spotifyd}/bin/spotifyd --no-daemon --config-path ${spotifydConf}";
|
||||
Restart = "always";
|
||||
RestartSec = 12;
|
||||
};
|
||||
};
|
||||
}
|
||||
14
configs/spotifyd.nix
Normal file
14
configs/spotifyd.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
services.spotifyd = {
|
||||
enable = true;
|
||||
config = lib.generators.toINI { } {
|
||||
global = {
|
||||
username = lib.strings.fileContents <secrets/spotify/username>;
|
||||
password = lib.strings.fileContents <secrets/spotify/password>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.spotifyd.serviceConfig.Restart = "always";
|
||||
}
|
||||
@@ -1,27 +1,12 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
sshPort = 22022;
|
||||
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
|
||||
url = "https://github.com/kmein.keys";
|
||||
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
|
||||
}));
|
||||
inherit (import <niveum/lib>) sshPort kieran;
|
||||
in {
|
||||
services.xserver.displayManager.sessionCommands =
|
||||
"${pkgs.openssh}/bin/ssh-add";
|
||||
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
|
||||
|
||||
programs.ssh.startAgent = true;
|
||||
|
||||
services.openssh = {
|
||||
ports = [ sshPort ];
|
||||
enable = true;
|
||||
passwordAuthentication = false;
|
||||
forwardX11 = true;
|
||||
};
|
||||
|
||||
users.motd = "Welcome to ${config.networking.hostName}!";
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = kmeinKeys;
|
||||
users.users.me.openssh.authorizedKeys.keys = kmeinKeys;
|
||||
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||
|
||||
home-manager.users.me.programs.ssh = {
|
||||
enable = true;
|
||||
@@ -30,19 +15,24 @@ in {
|
||||
hostname = "ssh.github.com";
|
||||
port = 443;
|
||||
};
|
||||
scardanelli = {
|
||||
hostname = "scardanelli.r";
|
||||
user = "kfm";
|
||||
zaatar = {
|
||||
hostname = "zaatar.r";
|
||||
user = "root";
|
||||
port = sshPort;
|
||||
};
|
||||
homeros = {
|
||||
hostname = "homeros.r";
|
||||
makanek = {
|
||||
hostname = "makanek.r";
|
||||
user = "root";
|
||||
port = sshPort;
|
||||
};
|
||||
manakish = {
|
||||
hostname = "manakish.r";
|
||||
user = "kfm";
|
||||
port = sshPort;
|
||||
};
|
||||
toum = {
|
||||
hostname = "toum.r";
|
||||
user = "kfm";
|
||||
user = "root";
|
||||
port = sshPort;
|
||||
};
|
||||
wilde = {
|
||||
|
||||
16
configs/sshd.nix
Normal file
16
configs/sshd.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) sshPort kieran;
|
||||
in
|
||||
{
|
||||
users.motd = "Welcome to ${config.networking.hostName}!";
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
ports = [ sshPort ];
|
||||
passwordAuthentication = false;
|
||||
forwardX11 = true;
|
||||
};
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
bright = "#151515";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#de575c";
|
||||
dark = "#de575c";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ebe971";
|
||||
dark = "#ebe971";
|
||||
};
|
||||
green = {
|
||||
bright = "#00b853";
|
||||
dark = "#00b853";
|
||||
};
|
||||
blue = {
|
||||
bright = "#90d0f0";
|
||||
dark = "#7fc6f0";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#cf9ffa";
|
||||
dark = "#cf9ffa";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#4ae5e8";
|
||||
dark = "#4ae5e8";
|
||||
};
|
||||
white = {
|
||||
bright = "#ffffff";
|
||||
dark = "#bbbbbb";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = {
|
||||
black = {
|
||||
bright = "#444444";
|
||||
dark = "#1c1c1c";
|
||||
};
|
||||
red = {
|
||||
bright = "#ff8700";
|
||||
dark = "#af5f5f";
|
||||
};
|
||||
green = {
|
||||
bright = "#87af87";
|
||||
dark = "#5f875f";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ffffaf";
|
||||
dark = "#87875f";
|
||||
};
|
||||
blue = {
|
||||
bright = "#8fafd7";
|
||||
dark = "#5f87af";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#8787af";
|
||||
dark = "#5f5f87";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#5fafaf";
|
||||
dark = "#5f8787";
|
||||
};
|
||||
white = {
|
||||
bright = "#999999";
|
||||
dark = "#6c6c6c";
|
||||
};
|
||||
background = "#262626";
|
||||
foreground = "#bcbcbc";
|
||||
cursor = "#bcbcbc";
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
bright = "#454545";
|
||||
dark = "#222222";
|
||||
};
|
||||
red = {
|
||||
bright = "#FA8072";
|
||||
dark = "#B22222";
|
||||
};
|
||||
green = {
|
||||
bright = "#779A3E";
|
||||
dark = "#556B2F";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#DAA520";
|
||||
dark = "#B8860B";
|
||||
};
|
||||
blue = {
|
||||
bright = "#6495ED";
|
||||
dark = "#4682B4";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#DA70D6";
|
||||
dark = "#9932CC";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#B0E0E6";
|
||||
dark = "#87CEEB";
|
||||
};
|
||||
white = {
|
||||
bright = "#FFFFFF";
|
||||
dark = "#C0C0C0";
|
||||
};
|
||||
background = "#000000";
|
||||
foreground = "#AAAAAA";
|
||||
cursor = green.bright;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
bright = "#818383";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc391f";
|
||||
dark = "#c23621";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#eaec23";
|
||||
dark = "#adad27";
|
||||
};
|
||||
green = {
|
||||
bright = "#31e722";
|
||||
dark = "#25bc24";
|
||||
};
|
||||
blue = {
|
||||
bright = "#5833ff";
|
||||
dark = "#492ee1";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#f935f8";
|
||||
dark = "#d338d3";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#14f0f0";
|
||||
dark = "#33bbc8";
|
||||
};
|
||||
white = {
|
||||
bright = "#e9ebeb";
|
||||
dark = "#cbcccd";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
bright = "#4b4b4b";
|
||||
dark = "#242424";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc1c18";
|
||||
dark = "#d71c15";
|
||||
};
|
||||
green = {
|
||||
bright = "#6bc219";
|
||||
dark = "#5aa513";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#fec80e";
|
||||
dark = "#fdb40c";
|
||||
};
|
||||
blue = {
|
||||
bright = "#0955ff";
|
||||
dark = "#063b8c";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#fb0050";
|
||||
dark = "#e40038";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#3ea8fc";
|
||||
dark = "#2595e1";
|
||||
};
|
||||
white = {
|
||||
bright = "#8c00ec";
|
||||
dark = "#efefef";
|
||||
};
|
||||
background = "#181818";
|
||||
foreground = white.dark;
|
||||
cursor = "#bbbbbb";
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
bright = "#282c34";
|
||||
dark = "#282c34";
|
||||
};
|
||||
red = {
|
||||
bright = "#e06c75";
|
||||
dark = "#e06c75";
|
||||
};
|
||||
green = {
|
||||
bright = "#98c379";
|
||||
dark = "#98c379";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#e5c07b";
|
||||
dark = "#e5c07b";
|
||||
};
|
||||
blue = {
|
||||
bright = "#61afef";
|
||||
dark = "#61afef";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#c678dd";
|
||||
dark = "#c678dd";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#56b6c2";
|
||||
dark = "#56b6c2";
|
||||
};
|
||||
white = {
|
||||
bright = "#dcdfe4";
|
||||
dark = "#dcdfe4";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.bright;
|
||||
cursor = "#a3b3cc";
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = black.bright;
|
||||
foreground = blue.bright;
|
||||
cursor = cyan.bright;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
niveum.colours = rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = white.bright;
|
||||
foreground = yellow.bright;
|
||||
cursor = green.bright;
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
{ lib, config, ... }:
|
||||
let inherit (config.niveum) theme colourPalette;
|
||||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
theme = (import <niveum/lib>).theme pkgs;
|
||||
in {
|
||||
console.colors = map (c: lib.strings.removePrefix "#" c) colourPalette;
|
||||
|
||||
environment.systemPackages =
|
||||
[ theme.gtk.package theme.icon.package theme.cursor.package ];
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ let
|
||||
'';
|
||||
in {
|
||||
home-manager.users.me.home.file.".todo/config".text = ''
|
||||
export TODO_DIR="$(${get-todo-dir})"
|
||||
# export TODO_DIR="$(${get-todo-dir})"
|
||||
export TODO_DIR="$HOME/cloud/Dropbox/todo"
|
||||
|
||||
export TODO_FILE="$TODO_DIR/todo.txt"
|
||||
export DONE_FILE="$TODO_DIR/done.txt"
|
||||
|
||||
@@ -29,6 +29,7 @@ in
|
||||
bedroom = 131082;
|
||||
living-room = living-room-id;
|
||||
bedside = 131087;
|
||||
desk = 131089;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
93
configs/urlwatch.nix
Normal file
93
configs/urlwatch.nix
Normal file
@@ -0,0 +1,93 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
inherit (import <niveum/lib>) kieran;
|
||||
|
||||
urlwatchDir = "/var/lib/urlwatch";
|
||||
|
||||
urlsFile = pkgs.writeText "urls" (builtins.concatStringsSep "\n---\n" (map builtins.toJSON urls));
|
||||
|
||||
urls = [
|
||||
{
|
||||
name = "Corona-Verordnung";
|
||||
url = "https://www.berlin.de/corona/massnahmen/verordnung/";
|
||||
filter = [
|
||||
{
|
||||
css = "[role=main]";
|
||||
}
|
||||
"html2text"
|
||||
"strip"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "Christian-Metz-Blamage";
|
||||
url = "https://www.deutschlandfunk.de/meine-nacht-schlaeft-nicht-pflanze-mich-nicht-in-dein-herz.700.de.html?dram:article_id=486475";
|
||||
filter = [
|
||||
{
|
||||
element-by-class = "dlf-articledetail";
|
||||
}
|
||||
"html2text"
|
||||
"strip"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
configFile = pkgs.writeText "urlwatch.yaml" (builtins.toJSON {
|
||||
display = {
|
||||
error = true;
|
||||
new = true;
|
||||
unchanged = false;
|
||||
};
|
||||
report = {
|
||||
email = {
|
||||
enabled = true;
|
||||
from = "2210@cock.li";
|
||||
html = false;
|
||||
method = "smtp";
|
||||
smtp = {
|
||||
host = "mail.cock.li";
|
||||
port = 587;
|
||||
starttls = true;
|
||||
auth = true;
|
||||
insecure_password = lib.strings.fileContents <secrets/mail/cock>;
|
||||
};
|
||||
subject = "{count} changes: {jobs}";
|
||||
to = kieran.email;
|
||||
};
|
||||
html.diff = "unified";
|
||||
stdout = {
|
||||
color = true;
|
||||
enabled = true;
|
||||
};
|
||||
text.footer = false;
|
||||
# telegram = {
|
||||
# enabled = false;
|
||||
# bot_token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
|
||||
# chat_id = [ "18980945" ];
|
||||
# };
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
users.extraUsers.urlwatch = {
|
||||
home = urlwatchDir;
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
systemd.services.urlwatch = {
|
||||
enable = true;
|
||||
startAt = "*-*-* 05:00:00";
|
||||
script = ''
|
||||
${pkgs.urlwatch}/bin/urlwatch \
|
||||
--config=${lib.escapeShellArg configFile} \
|
||||
--urls=${lib.escapeShellArg urlsFile}
|
||||
'';
|
||||
serviceConfig = {
|
||||
User = config.users.extraUsers.urlwatch.name;
|
||||
WorkingDirectory = config.users.extraUsers.urlwatch.home;
|
||||
PermissionsStartOnly = "true";
|
||||
PrivateTmp = "true";
|
||||
SyslogIdentifier = "urlwatch";
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -16,19 +16,34 @@ let
|
||||
rev = "33cad3099919366cea2627f930da9b47609e8554";
|
||||
sha256 = "1li6rrn016fpgvmnijqhvkp07kj83cjwcjx2l2b3asb99d51814i";
|
||||
};
|
||||
*/
|
||||
kmein-wallpapers = pkgs.fetchFromGitHub {
|
||||
owner = "kmein";
|
||||
repo = "wallpapers";
|
||||
rev = "7c553bc6bd78afa6dbf2824691466bbad0d8e6e9";
|
||||
sha256 = "1zik5z1cq1084j1hdwm204afz89f5hpg21z0vvcbppzkmldfxnnq";
|
||||
};
|
||||
*/
|
||||
in {
|
||||
imports = [ <stockholm/krebs/3modules/fetchWallpaper.nix> ];
|
||||
|
||||
krebs.fetchWallpaper = {
|
||||
enable = true;
|
||||
# unitConfig.ConditionPathExists = "!/var/run/ppp0.pid";
|
||||
url = "https://lassul.us/wallpaper-marker.png";
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
display = lib.mkForce 0; # needed for fetchWallpaper to find the X display
|
||||
displayManager.sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +LOCAL:";
|
||||
};
|
||||
|
||||
/*
|
||||
home-manager.users.me = {
|
||||
services.random-background = {
|
||||
enable = true;
|
||||
imageDirectory = "${kmein-wallpapers}/saudade";
|
||||
imageDirectory = "${kmein-wallpapers}/meteora";
|
||||
interval = "1h";
|
||||
};
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.watson ];
|
||||
|
||||
system.activationScripts.watsonFiles = ''
|
||||
install -d ${config.users.users.me.home}/.config/watson/
|
||||
ln -sf ${config.users.users.me.home}/cloud/Dropbox/watson-frames.json ${config.users.users.me.home}/.config/watson/frames
|
||||
'';
|
||||
}
|
||||
|
||||
49
configs/wifi.nix
Normal file
49
configs/wifi.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
networking.wireless = {
|
||||
enable = true;
|
||||
userControlled.enable = true;
|
||||
networks = {
|
||||
"Aether" = {
|
||||
pskRaw = "e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
|
||||
priority = 10;
|
||||
};
|
||||
"Asoziales Netzwerk" = {
|
||||
pskRaw = "8e234041ec5f0cd1b6a14e9adeee9840ed51b2f18856a52137485523e46b0cb6";
|
||||
priority = 10;
|
||||
};
|
||||
"Libertarian WiFi" = {
|
||||
pskRaw = "e9beaae6ffa55d10e80b8a2e7d997411d676a3cc6f1f29d0b080391f04555050";
|
||||
priority = 9;
|
||||
};
|
||||
"EasyBox-927376".pskRaw = "dbd490ab69b39bd67cfa06daf70fc3ef3ee90f482972a668ed758f90f5577c22";
|
||||
"FlixBus Wi-Fi" = { };
|
||||
"FlixBus" = { };
|
||||
"FlixTrain" = { };
|
||||
"BVG Wi-Fi" = { };
|
||||
"wannseeforum" = { }; # login via curl -XPOST http://WannseeLancom.intern.:80/authen/login/ -d userid=$USER_ID -d password=$PASSWORD
|
||||
"Hotel_Krone" = { }; # login: http://192.168.10.1/
|
||||
"Ni/Schukajlow".pskRaw = "ffc47f6829da59c48aea878a32252223303f5c47a3859edc90971ffc63346781";
|
||||
"WIFIonICE" = { }; # login: http://10.101.64.10/
|
||||
"WLAN-914742".psk = "67647139648174545446";
|
||||
"KDG-CEAA4".psk = "PBkBSmejcvM4";
|
||||
"KDG-4ECF7".psk = "Gdbwh7afw2Bx";
|
||||
"WLAN-XVMU6T".pskRaw = "46ea807283255a3d7029233bd79c18837df582666c007c86a8d591f65fae17cc";
|
||||
"c-base-public" = { };
|
||||
"discord".psk = "baraustrinken";
|
||||
"GoOnline".psk = "airbnbguest";
|
||||
"security-by-obscurity".psk = "44629828256481964386";
|
||||
"Mayflower".psk = "Fr31EsLan";
|
||||
"Born11".psk = "56LMVLbw840EGNWk0RYRqvgicx3FSO";
|
||||
"FactoryCommunityGuest".psk = "Factory4ever";
|
||||
"krebs".psk = "aidsballs";
|
||||
"b-base".pskRaw = "44040369a63d5bce4576637e8d34aeb3ed3d178011386decb99da473418e9861";
|
||||
"c-base".pskRaw = "1355ccb287407bcd0caa4a7a399367c28b1e11bf5da34dd100d4b86ac4cafe46";
|
||||
# "o2-WLAN66".pskRaw = "9fc24da5ee0c7cf73321f5efa805370c246c4121413ea4f2373c0b7e41ec65e4";
|
||||
"Vodafone-8012".pskRaw = "45a998e3e07f83ae0b4f573535fb3ccfd808b364a22f349878ced889a6fffe2c";
|
||||
"yinyin".pskRaw = "ee85005d339df61e1e1a8484b96318513e15c46f222c3c06e8959fbc256569e7";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
suspendIfBored = false;
|
||||
|
||||
xlockModes = lib.concatStringsSep "\\n" [
|
||||
# "braid"
|
||||
"galaxy"
|
||||
# "lightning"
|
||||
# "matrix"
|
||||
"pyro2"
|
||||
"space"
|
||||
];
|
||||
my-xlock = pkgs.writers.writeDashBin "xlock" ''
|
||||
MODE=$(printf "${xlockModes}" | shuf -n 1)
|
||||
|
||||
${pkgs.xlockmore}/bin/xlock \
|
||||
-saturation 0.4 \
|
||||
-erasemode no_fade \
|
||||
+description \
|
||||
-showdate \
|
||||
-username " " \
|
||||
-password " " \
|
||||
-info " " \
|
||||
-validate "..." \
|
||||
-invalid "Computer says no." \
|
||||
-mode "$MODE"
|
||||
'';
|
||||
in {
|
||||
services.xserver.xautolock = rec {
|
||||
enable = true;
|
||||
killer =
|
||||
if suspendIfBored then "${pkgs.systemd}/bin/systemctl suspend" else null;
|
||||
locker = "${my-xlock}/bin/xlock";
|
||||
nowlocker = locker;
|
||||
enableNotifier = true;
|
||||
notifier = ''
|
||||
${pkgs.libnotify}/bin/notify-send -u normal -a xautolock "Locking" "in 10 seconds."'';
|
||||
};
|
||||
}
|
||||
28
deploy.nix
28
deploy.nix
@@ -1,4 +1,6 @@
|
||||
let
|
||||
inherit (import ./lib/default.nix) sshPort;
|
||||
|
||||
gitFromJson = path:
|
||||
let object = importJson path;
|
||||
in {
|
||||
@@ -17,7 +19,6 @@ let
|
||||
nixos-config.symlink = "system/configuration.nix";
|
||||
|
||||
nixpkgs.git = gitFromJson .versions/nixpkgs.json;
|
||||
nixpkgs-unstable.git = gitFromJson .versions/nixpkgs-unstable.json;
|
||||
home-manager.git = gitFromJson .versions/home-manager.json;
|
||||
stockholm.git = gitFromJson .versions/stockholm.json;
|
||||
retiolum.git = gitFromJson .versions/retiolum.json;
|
||||
@@ -30,19 +31,14 @@ let
|
||||
name = "shared";
|
||||
};
|
||||
}];
|
||||
target = "root@${address}:22022";
|
||||
target = "root@${address}:${toString sshPort}";
|
||||
};
|
||||
inherit (pkgs.krops) writeDeploy;
|
||||
in {
|
||||
scardanelli = writeDeploy "deploy-scardanelli" (regularSystem {
|
||||
path = systems/scardanelli;
|
||||
name = "scardanelli";
|
||||
address = "scardanelli.r";
|
||||
});
|
||||
homeros = writeDeploy "deploy-homeros" (regularSystem {
|
||||
path = systems/homeros;
|
||||
name = "homeros";
|
||||
address = "homeros.r";
|
||||
zaatar = writeDeploy "deploy-zaatar" (regularSystem {
|
||||
path = systems/zaatar;
|
||||
name = "zaatar";
|
||||
address = "zaatar.r";
|
||||
});
|
||||
wilde = writeDeploy "deploy-wilde" (regularSystem {
|
||||
path = systems/wilde;
|
||||
@@ -54,4 +50,14 @@ in {
|
||||
name = "toum";
|
||||
address = "toum.r";
|
||||
});
|
||||
makanek = writeDeploy "deploy-makanek" (regularSystem {
|
||||
path = systems/makanek;
|
||||
name = "makanek";
|
||||
address = "makanek.r";
|
||||
});
|
||||
manakish = writeDeploy "deploy-manakish" (regularSystem {
|
||||
path = systems/manakish;
|
||||
name = "manakish";
|
||||
address = "manakish.r";
|
||||
});
|
||||
}
|
||||
|
||||
24
dot/htoprc
24
dot/htoprc
@@ -1,24 +0,0 @@
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
sort_key=46
|
||||
sort_direction=1
|
||||
hide_threads=0
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=0
|
||||
shadow_other_users=1
|
||||
show_thread_names=1
|
||||
show_program_path=1
|
||||
highlight_base_name=1
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
tree_view=1
|
||||
header_margin=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_zero=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=1
|
||||
color_scheme=0
|
||||
delay=15
|
||||
left_meters=LeftCPUs2 RightCPUs2 Memory Swap
|
||||
left_meter_modes=1 1 1 1
|
||||
right_meters=Uptime Tasks LoadAverage Battery
|
||||
right_meter_modes=2 2 2 2
|
||||
@@ -1,41 +0,0 @@
|
||||
{ token }: {
|
||||
general = {
|
||||
RemoteNickFormat = "[{NOPINGNICK}] ";
|
||||
Charset = "utf-8";
|
||||
};
|
||||
telegram.kmein.Token = token;
|
||||
irc.freenode = {
|
||||
Server = "irc.freenode.net:6667";
|
||||
Nick = "tg_bridge";
|
||||
};
|
||||
gateway = [
|
||||
{
|
||||
name = "krebs-bridge";
|
||||
enable = true;
|
||||
inout = [
|
||||
{
|
||||
account = "irc.freenode";
|
||||
channel = "#krebs";
|
||||
}
|
||||
{
|
||||
account = "telegram.kmein";
|
||||
channel = "-330372458";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "myengadin-bridge";
|
||||
enable = true;
|
||||
inout = [
|
||||
{
|
||||
account = "irc.freenode";
|
||||
channel = "##myengadin";
|
||||
}
|
||||
{
|
||||
account = "telegram.kmein";
|
||||
channel = "-425759153";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
37
lib/colours/antares.nix
Normal file
37
lib/colours/antares.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#151515";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#de575c";
|
||||
dark = "#de575c";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ebe971";
|
||||
dark = "#ebe971";
|
||||
};
|
||||
green = {
|
||||
bright = "#00b853";
|
||||
dark = "#00b853";
|
||||
};
|
||||
blue = {
|
||||
bright = "#90d0f0";
|
||||
dark = "#7fc6f0";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#cf9ffa";
|
||||
dark = "#cf9ffa";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#4ae5e8";
|
||||
dark = "#4ae5e8";
|
||||
};
|
||||
white = {
|
||||
bright = "#ffffff";
|
||||
dark = "#bbbbbb";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
}
|
||||
37
lib/colours/apprentice.nix
Normal file
37
lib/colours/apprentice.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
black = {
|
||||
bright = "#444444";
|
||||
dark = "#1c1c1c";
|
||||
};
|
||||
red = {
|
||||
bright = "#ff8700";
|
||||
dark = "#af5f5f";
|
||||
};
|
||||
green = {
|
||||
bright = "#87af87";
|
||||
dark = "#5f875f";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#ffffaf";
|
||||
dark = "#87875f";
|
||||
};
|
||||
blue = {
|
||||
bright = "#8fafd7";
|
||||
dark = "#5f87af";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#8787af";
|
||||
dark = "#5f5f87";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#5fafaf";
|
||||
dark = "#5f8787";
|
||||
};
|
||||
white = {
|
||||
bright = "#999999";
|
||||
dark = "#6c6c6c";
|
||||
};
|
||||
background = "#262626";
|
||||
foreground = "#bcbcbc";
|
||||
cursor = "#bcbcbc";
|
||||
}
|
||||
37
lib/colours/connermcd.nix
Normal file
37
lib/colours/connermcd.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#454545";
|
||||
dark = "#222222";
|
||||
};
|
||||
red = {
|
||||
bright = "#FA8072";
|
||||
dark = "#B22222";
|
||||
};
|
||||
green = {
|
||||
bright = "#779A3E";
|
||||
dark = "#556B2F";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#DAA520";
|
||||
dark = "#B8860B";
|
||||
};
|
||||
blue = {
|
||||
bright = "#6495ED";
|
||||
dark = "#4682B4";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#DA70D6";
|
||||
dark = "#9932CC";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#B0E0E6";
|
||||
dark = "#87CEEB";
|
||||
};
|
||||
white = {
|
||||
bright = "#FFFFFF";
|
||||
dark = "#C0C0C0";
|
||||
};
|
||||
background = "#000000";
|
||||
foreground = "#AAAAAA";
|
||||
cursor = green.bright;
|
||||
}
|
||||
37
lib/colours/mac-os.nix
Normal file
37
lib/colours/mac-os.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#818383";
|
||||
dark = "#000000";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc391f";
|
||||
dark = "#c23621";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#eaec23";
|
||||
dark = "#adad27";
|
||||
};
|
||||
green = {
|
||||
bright = "#31e722";
|
||||
dark = "#25bc24";
|
||||
};
|
||||
blue = {
|
||||
bright = "#5833ff";
|
||||
dark = "#492ee1";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#f935f8";
|
||||
dark = "#d338d3";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#14f0f0";
|
||||
dark = "#33bbc8";
|
||||
};
|
||||
white = {
|
||||
bright = "#e9ebeb";
|
||||
dark = "#cbcccd";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.dark;
|
||||
cursor = green.bright;
|
||||
}
|
||||
37
lib/colours/owickstrom-dark.nix
Normal file
37
lib/colours/owickstrom-dark.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#4b4b4b";
|
||||
dark = "#242424";
|
||||
};
|
||||
red = {
|
||||
bright = "#fc1c18";
|
||||
dark = "#d71c15";
|
||||
};
|
||||
green = {
|
||||
bright = "#6bc219";
|
||||
dark = "#5aa513";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#fec80e";
|
||||
dark = "#fdb40c";
|
||||
};
|
||||
blue = {
|
||||
bright = "#0955ff";
|
||||
dark = "#063b8c";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#fb0050";
|
||||
dark = "#e40038";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#3ea8fc";
|
||||
dark = "#2595e1";
|
||||
};
|
||||
white = {
|
||||
bright = "#8c00ec";
|
||||
dark = "#efefef";
|
||||
};
|
||||
background = "#181818";
|
||||
foreground = white.dark;
|
||||
cursor = "#bbbbbb";
|
||||
}
|
||||
37
lib/colours/owickstrom.nix
Normal file
37
lib/colours/owickstrom.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
bright = "#282c34";
|
||||
dark = "#282c34";
|
||||
};
|
||||
red = {
|
||||
bright = "#e06c75";
|
||||
dark = "#e06c75";
|
||||
};
|
||||
green = {
|
||||
bright = "#98c379";
|
||||
dark = "#98c379";
|
||||
};
|
||||
yellow = {
|
||||
bright = "#e5c07b";
|
||||
dark = "#e5c07b";
|
||||
};
|
||||
blue = {
|
||||
bright = "#61afef";
|
||||
dark = "#61afef";
|
||||
};
|
||||
magenta = {
|
||||
bright = "#c678dd";
|
||||
dark = "#c678dd";
|
||||
};
|
||||
cyan = {
|
||||
bright = "#56b6c2";
|
||||
dark = "#56b6c2";
|
||||
};
|
||||
white = {
|
||||
bright = "#dcdfe4";
|
||||
dark = "#dcdfe4";
|
||||
};
|
||||
background = black.dark;
|
||||
foreground = white.bright;
|
||||
cursor = "#a3b3cc";
|
||||
}
|
||||
37
lib/colours/solarized-dark.nix
Normal file
37
lib/colours/solarized-dark.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = black.bright;
|
||||
foreground = blue.bright;
|
||||
cursor = cyan.bright;
|
||||
}
|
||||
37
lib/colours/solarized-light.nix
Normal file
37
lib/colours/solarized-light.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
rec {
|
||||
black = {
|
||||
dark = "#073642";
|
||||
bright = "#002b36";
|
||||
};
|
||||
red = {
|
||||
dark = "#dc322f";
|
||||
bright = "#cb4b16";
|
||||
};
|
||||
yellow = {
|
||||
dark = "#b58900";
|
||||
bright = "#657b83";
|
||||
};
|
||||
green = {
|
||||
dark = "#859900";
|
||||
bright = "#586e75";
|
||||
};
|
||||
blue = {
|
||||
dark = "#268bd2";
|
||||
bright = "#839496";
|
||||
};
|
||||
magenta = {
|
||||
dark = "#d33682";
|
||||
bright = "#6c71c4";
|
||||
};
|
||||
cyan = {
|
||||
dark = "#2aa198";
|
||||
bright = "#93a1a1";
|
||||
};
|
||||
white = {
|
||||
dark = "#eee8d5";
|
||||
bright = "#fdf6e3";
|
||||
};
|
||||
background = white.bright;
|
||||
foreground = yellow.bright;
|
||||
cursor = green.bright;
|
||||
}
|
||||
5
lib/default-applications.nix
Normal file
5
lib/default-applications.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
pkgs: rec {
|
||||
terminal = "${pkgs.alacritty}/bin/alacritty";
|
||||
browser = "${pkgs.brave}/bin/brave";
|
||||
fileManager = "${terminal} -e ${pkgs.ranger}/bin/ranger";
|
||||
}
|
||||
@@ -1,12 +1,75 @@
|
||||
{
|
||||
localAddresses = {
|
||||
toum = "192.168.178.24";
|
||||
homeros = "192.168.178.22";
|
||||
wilde = "192.168.178.32";
|
||||
android = "192.168.178.35";
|
||||
|
||||
tradfri = "192.168.178.28";
|
||||
officejet = "192.168.178.27";
|
||||
fritzbox = "192.168.178.1";
|
||||
rec {
|
||||
nixpkgs-src = builtins.fetchGit {
|
||||
url = "https://github.com/NixOS/nixpkgs";
|
||||
rev = "f3042e30785437f6cb2d99b15625b962fb96799f";
|
||||
};
|
||||
nixpkgs-unstable = import nixpkgs-src { config.allowUnfree = true; };
|
||||
|
||||
sshPort = 22022;
|
||||
|
||||
colours = import ./colours/mac-os.nix;
|
||||
|
||||
theme = pkgs: {
|
||||
gtk = {
|
||||
name = "Adwaita-dark";
|
||||
package = pkgs.gnome3.gnome-themes-extra;
|
||||
};
|
||||
icon = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.gnome3.adwaita-icon-theme;
|
||||
};
|
||||
cursor = {
|
||||
name = "capitaine-cursors-white";
|
||||
package = pkgs.capitaine-cursors;
|
||||
};
|
||||
};
|
||||
|
||||
defaultApplications = import ./default-applications.nix;
|
||||
|
||||
localAddresses = import ./local-network.nix;
|
||||
|
||||
kieran = {
|
||||
github = "kmein";
|
||||
email = "kmein@posteo.de";
|
||||
name = "Kierán Meinhardt";
|
||||
sshKeys = pkgs: pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl {
|
||||
url = "https://github.com/kmein.keys";
|
||||
sha256 = "09c6ny0rmpid1m0pc1wsmb3wyy9g721lf4kv55i4lrp42b3i2d5b";
|
||||
}));
|
||||
};
|
||||
|
||||
syncthing.devices = {
|
||||
wilde.id = "R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
|
||||
heym.id = "HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
|
||||
manakish.id = "AJVBWR2-VFFAGZF-7ZF5JAX-T63GMOG-NZ446WK-MC5E6WK-6X6Q2HE-QQA2JQ3";
|
||||
toum.id = "CBJQXFF-FMFGWFU-2J6FMPR-SRDTSGX-7NHOYOH-CQCABKF-KQJMRJC-SDE24Q4";
|
||||
};
|
||||
|
||||
ignorePaths = [
|
||||
"*~"
|
||||
".stack-work/"
|
||||
"__pycache__/"
|
||||
".mypy_cache/"
|
||||
"*.py[co]"
|
||||
"*.o"
|
||||
"*.hi"
|
||||
"*.aux"
|
||||
"*.bbl"
|
||||
"*.bcf"
|
||||
"*.blg"
|
||||
"*.fdb_latexmk"
|
||||
"*.fls"
|
||||
"*.out"
|
||||
"*.run.xml"
|
||||
"*.toc"
|
||||
"*.bbl"
|
||||
"*.class"
|
||||
"*.dyn_hi"
|
||||
"*.dyn_o"
|
||||
"dist/"
|
||||
".envrc"
|
||||
".direnv/"
|
||||
"dist-newstyle/"
|
||||
".history"
|
||||
];
|
||||
}
|
||||
|
||||
1913
lib/hot-rotation/lyrik.nix
Normal file
1913
lib/hot-rotation/lyrik.nix
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
{ pkgs, wifi-interface, colours, batteryBlock }:
|
||||
{ pkgs, wirelessInterface, colours, batteryName }:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
|
||||
@@ -33,7 +33,7 @@ in {
|
||||
good_bg = colours.background;
|
||||
idle_bg = colours.background;
|
||||
info_bg = colours.background;
|
||||
separator = "* ";
|
||||
separator = "/ ";
|
||||
separator_bg = "auto";
|
||||
separator_fg = colours.black.bright;
|
||||
};
|
||||
@@ -89,18 +89,6 @@ in {
|
||||
}"
|
||||
'';
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 30;
|
||||
command = pkgs.writers.writeDash "rss-new" ''
|
||||
${pkgs.newsboat}/bin/newsboat --execute=print-unread | ${pkgs.gawk}/bin/awk '{ print "📰 " $1 }'
|
||||
'';
|
||||
on_click = pkgs.writers.writeDash "rss-update" ''
|
||||
${pkgs.libnotify}/bin/notify-send --app-name=" Newsboat" "Updating feeds." \
|
||||
&& ${pkgs.newsboat}/bin/newsboat --execute=reload \
|
||||
&& ${pkgs.libnotify}/bin/notify-send --app-name=" Newsboat" "Feeds updated."
|
||||
'';
|
||||
}
|
||||
{
|
||||
block = "custom";
|
||||
interval = 30;
|
||||
@@ -114,7 +102,7 @@ in {
|
||||
}
|
||||
{
|
||||
block = "net";
|
||||
device = wifi-interface;
|
||||
device = wirelessInterface;
|
||||
speed_up = false;
|
||||
speed_down = false;
|
||||
signal_strength = true;
|
||||
@@ -122,7 +110,7 @@ in {
|
||||
}
|
||||
{
|
||||
block = "battery";
|
||||
device = batteryBlock;
|
||||
device = batteryName;
|
||||
}
|
||||
{
|
||||
block = "sound";
|
||||
11
lib/local-network.nix
Normal file
11
lib/local-network.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
toum = "192.168.178.24";
|
||||
zaatar = "192.168.178.21";
|
||||
wilde = "192.168.178.32";
|
||||
android = "192.168.178.35";
|
||||
manakish = "192.168.178.29";
|
||||
|
||||
tradfri = "192.168.178.28";
|
||||
officejet = "192.168.178.27";
|
||||
fritzbox = "192.168.178.1";
|
||||
}
|
||||
1365
lib/streams.nix
Normal file
1365
lib/streams.nix
Normal file
File diff suppressed because it is too large
Load Diff
@@ -124,6 +124,7 @@ if has("autocmd")
|
||||
autocmd bufnewfile,bufread *.rust packadd rust-vim " | packadd deoplete-rust
|
||||
autocmd bufnewfile,bufread *.csv packadd csv-vim | set filetype=csv
|
||||
autocmd bufnewfile,bufread *.toml packadd vim-toml | set filetype=toml
|
||||
autocmd bufnewfile,bufread *.nim packadd nim-vim | set filetype=nim
|
||||
autocmd bufnewfile,bufread *.tex packadd vimtex | set filetype=tex
|
||||
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
|
||||
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
|
||||
@@ -181,7 +182,7 @@ let g:pandoc#spell#default_langs = ['en', 'de']
|
||||
|
||||
let g:ale_linters = {
|
||||
\ 'css': ['csslint'],
|
||||
\ 'haskell': ['ghc', 'cabal-ghc', 'hlint'],
|
||||
\ 'haskell': ['ghc', 'cabal-ghc', 'hlint', 'ormolu'],
|
||||
\ 'html': ['tidy', 'proselint'],
|
||||
\ 'latex': ['lacheck', 'chktex', 'proselint'],
|
||||
\ 'pandoc': ['proselint'],
|
||||
@@ -1,134 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
colourScheme = config.niveum.colours;
|
||||
|
||||
my-types.hexColour = types.strMatching "#[0-9A-Fa-f]{6}";
|
||||
my-types.colourPair = types.submodule {
|
||||
options = {
|
||||
dark = mkOption { type = my-types.hexColour; };
|
||||
bright = mkOption { type = my-types.hexColour; };
|
||||
};
|
||||
};
|
||||
my-types.theme = types.submodule {
|
||||
options = {
|
||||
name = mkOption { type = types.str; };
|
||||
package = mkOption { type = types.package; };
|
||||
};
|
||||
};
|
||||
|
||||
my-types.colourTheme = types.submodule {
|
||||
options = {
|
||||
black = mkOption { type = my-types.colourPair; };
|
||||
red = mkOption { type = my-types.colourPair; };
|
||||
green = mkOption { type = my-types.colourPair; };
|
||||
yellow = mkOption { type = my-types.colourPair; };
|
||||
blue = mkOption { type = my-types.colourPair; };
|
||||
magenta = mkOption { type = my-types.colourPair; };
|
||||
cyan = mkOption { type = my-types.colourPair; };
|
||||
white = mkOption { type = my-types.colourPair; };
|
||||
background = mkOption { type = my-types.hexColour; };
|
||||
foreground = mkOption { type = my-types.hexColour; };
|
||||
cursor = mkOption { type = my-types.hexColour; };
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.niveum = {
|
||||
applications = { fileManager = mkOption { type = types.str; }; };
|
||||
|
||||
colours = mkOption { type = my-types.colourTheme; };
|
||||
|
||||
colourPalette = mkOption {
|
||||
type = types.listOf my-types.hexColour;
|
||||
default = with config.niveum.colours; [
|
||||
black.dark
|
||||
red.dark
|
||||
green.dark
|
||||
yellow.dark
|
||||
blue.dark
|
||||
magenta.dark
|
||||
cyan.dark
|
||||
white.dark
|
||||
black.bright
|
||||
red.bright
|
||||
green.bright
|
||||
yellow.bright
|
||||
blue.bright
|
||||
magenta.bright
|
||||
cyan.bright
|
||||
white.bright
|
||||
];
|
||||
};
|
||||
|
||||
networkInterfaces.wireless = mkOption { type = types.str; };
|
||||
|
||||
batteryBlocks.default = mkOption { type = types.str; };
|
||||
|
||||
promptColours = let
|
||||
colours16 = types.enum [
|
||||
"black"
|
||||
"red"
|
||||
"green"
|
||||
"yellow"
|
||||
"blue"
|
||||
"magenta"
|
||||
"cyan"
|
||||
"white"
|
||||
];
|
||||
in {
|
||||
success = mkOption {
|
||||
type = colours16;
|
||||
default = "green";
|
||||
};
|
||||
failure = mkOption {
|
||||
type = colours16;
|
||||
default = "red";
|
||||
};
|
||||
};
|
||||
|
||||
fonts = { size = mkOption { type = types.int; }; };
|
||||
|
||||
user = {
|
||||
github = mkOption { type = types.str; };
|
||||
name = mkOption { type = types.str; };
|
||||
email = mkOption { type = types.strMatching ".+@.+\\..+"; };
|
||||
};
|
||||
|
||||
ignore = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [
|
||||
"*~"
|
||||
".stack-work/"
|
||||
"__pycache__/"
|
||||
".mypy_cache/"
|
||||
"*.py[co]"
|
||||
"*.o"
|
||||
"*.hi"
|
||||
"*.aux"
|
||||
"*.bbl"
|
||||
"*.bcf"
|
||||
"*.blg"
|
||||
"*.fdb_latexmk"
|
||||
"*.fls"
|
||||
"*.out"
|
||||
"*.run.xml"
|
||||
"*.toc"
|
||||
"*.bbl"
|
||||
"*.class"
|
||||
"*.dyn_hi"
|
||||
"*.dyn_o"
|
||||
"dist/"
|
||||
".envrc"
|
||||
".direnv/"
|
||||
"dist-newstyle/"
|
||||
".history"
|
||||
];
|
||||
};
|
||||
|
||||
theme = {
|
||||
gtk = mkOption { type = my-types.theme; };
|
||||
icon = mkOption { type = my-types.theme; };
|
||||
cursor = mkOption { type = my-types.theme; };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -5,17 +5,24 @@ in {
|
||||
options.niveum.dropbox = { enable = mkEnableOption "Dropbox"; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.dropbox-cli ];
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 17500 ];
|
||||
allowedUDPPorts = [ 17500 ];
|
||||
};
|
||||
|
||||
systemd.user.services.dropbox = {
|
||||
description = "Dropbox synchronisation service";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "default.target" ];
|
||||
path = [ pkgs.dropbox-cli ];
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
PIDFile = "%h/.dropbox/dropbox.pid";
|
||||
Restart = "always";
|
||||
ExecStart = "${pkgs.dropbox-cli}/bin/dropbox start";
|
||||
ExecStop = "${pkgs.dropbox-cli}/bin/dropbox stop";
|
||||
ExecStart = "${pkgs.dropbox.out}/bin/dropbox";
|
||||
ExecReload = "${pkgs.coreutils.out}/bin/kill -HUP $MAINPID";
|
||||
KillMode = "control-group"; # upstream recommends process
|
||||
Restart = "on-failure";
|
||||
PrivateTmp = true;
|
||||
ProtectSystem = "full";
|
||||
Nice = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
96
modules/mpd-fm.nix
Normal file
96
modules/mpd-fm.nix
Normal file
@@ -0,0 +1,96 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
mpd-fm = pkgs.callPackage <niveum/packages/MPD.FM> {};
|
||||
cfg = config.services.mpd-fm;
|
||||
in {
|
||||
imports = [];
|
||||
|
||||
options.services.mpd-fm = {
|
||||
enable = mkEnableOption "MPD.FM, an MPD web UI for radio streams";
|
||||
|
||||
webPort = mkOption {
|
||||
type = types.port;
|
||||
default = 4200;
|
||||
};
|
||||
|
||||
stations = mkOption {
|
||||
default = [];
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
id = mkOption {
|
||||
type = types.int;
|
||||
description = "A unique identifier of the station";
|
||||
};
|
||||
station = mkOption {
|
||||
type = types.str;
|
||||
description = "Name of the station that should be displayed";
|
||||
};
|
||||
desc = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "Short description of the station (optional)";
|
||||
};
|
||||
logo = mkOption {
|
||||
type = types.str;
|
||||
description = "URL to a logo of the station (any size)";
|
||||
};
|
||||
stream = mkOption {
|
||||
type = types.str;
|
||||
description = "URL to the stream of the radio station (in a format supported by MPD such as MP3, OGG, ...)";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
stationsFile = mkOption {
|
||||
type = types.path;
|
||||
default = pkgs.writeText "stations.json" (builtins.toJSON cfg.stations);
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = mpd-fm;
|
||||
};
|
||||
|
||||
mpd = {
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "The host where MPD is listening.";
|
||||
example = "localhost";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = config.services.mpd.network.port;
|
||||
description = "The port where MPD is listening.";
|
||||
example = 6600;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.extraUsers.mpd-fm.isSystemUser = true;
|
||||
# ref https://github.com/florianheinemann/MPD.FM/blob/9d037cf87597b26ae2f10ba9feea48946ad6cc68/service/MPD.FM.service
|
||||
systemd.services.mpd-fm = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "mpd.service" ];
|
||||
description = "MPD.FM – an MPD web radio player web GUI";
|
||||
script = "${cfg.package}/libexec/mpd.fm/deps/mpd.fm/bin/www";
|
||||
environment = {
|
||||
NODE_ENV = "production";
|
||||
MPD_HOST = cfg.mpd.host;
|
||||
MPD_PORT = toString cfg.mpd.port;
|
||||
PORT = toString cfg.webPort;
|
||||
STATION_FILE = cfg.stationsFile;
|
||||
};
|
||||
serviceConfig = {
|
||||
Restart = "always";
|
||||
StandardOutput = "syslog";
|
||||
StandardError = "syslog";
|
||||
SyslogIdentifier = "mpd-fm";
|
||||
User = "mpd-fm";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,18 +1,12 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
netname = "retiolum";
|
||||
cfg = config.networking.retiolum;
|
||||
|
||||
retiolum = pkgs.fetchFromGitHub {
|
||||
owner = "krebs";
|
||||
repo = netname;
|
||||
rev = "76e8de36d4ac06bcfaf551946aa2f6a41d9e6555";
|
||||
sha256 = "0yhmmvg6gm5yxs1gzszl19bs6y302yjg81a7sckfglwzcql3q0wf";
|
||||
};
|
||||
in {
|
||||
imports = [ "${(import <niveum/lib>).nixpkgs-src}/nixos/modules/services/networking/tinc.nix" ];
|
||||
disabledModules = [ "services/networking/tinc.nix" ];
|
||||
|
||||
options = {
|
||||
networking.retiolum.ipv4 = mkOption {
|
||||
type = types.str;
|
||||
@@ -39,22 +33,19 @@ in {
|
||||
|
||||
services.tinc.networks.${netname} = {
|
||||
name = cfg.nodename;
|
||||
hosts = builtins.mapAttrs
|
||||
(name: _: builtins.readFile "${<retiolum/hosts>}/${name}")
|
||||
(builtins.readDir <retiolum/hosts>);
|
||||
rsaPrivateKeyFile = toString <system-secrets/retiolum.key>;
|
||||
extraConfig = ''
|
||||
LocalDiscovery = yes
|
||||
AutoConnect = yes
|
||||
'';
|
||||
};
|
||||
systemd.services."tinc.${netname}" = {
|
||||
preStart = ''
|
||||
cp -R ${toString <retiolum/hosts>} /etc/tinc/retiolum/ || true
|
||||
'';
|
||||
};
|
||||
|
||||
networking.extraHosts =
|
||||
builtins.readFile (toString <retiolum/etc.hosts>);
|
||||
networking.extraHosts = builtins.readFile (toString <retiolum/etc.hosts>);
|
||||
|
||||
environment.systemPackages =
|
||||
[ config.services.tinc.networks.${netname}.package ];
|
||||
environment.systemPackages = [ config.services.tinc.networks.${netname}.package ];
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 655 ];
|
||||
|
||||
31
modules/system-dependent.nix
Normal file
31
modules/system-dependent.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
{
|
||||
options.niveum = {
|
||||
wirelessInterface = mkOption { type = types.str; };
|
||||
|
||||
batteryName = mkOption { type = types.str; };
|
||||
|
||||
promptColours = let
|
||||
colours16 = types.enum [
|
||||
"black"
|
||||
"red"
|
||||
"green"
|
||||
"yellow"
|
||||
"blue"
|
||||
"magenta"
|
||||
"cyan"
|
||||
"white"
|
||||
];
|
||||
in {
|
||||
success = mkOption {
|
||||
type = colours16;
|
||||
default = "green";
|
||||
};
|
||||
failure = mkOption {
|
||||
type = colours16;
|
||||
default = "red";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
13
packages/MPD.FM/default.nix
Normal file
13
packages/MPD.FM/default.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ mkYarnPackage, fetchFromGitHub }:
|
||||
mkYarnPackage rec {
|
||||
name = "MPD.FM";
|
||||
src = fetchFromGitHub {
|
||||
owner = "kmein";
|
||||
repo = "MPD.FM";
|
||||
rev = "5f309c2579a9cbbbc4f7eb6a2e2f3993cc177630";
|
||||
sha256 = "0ladh96s656i7yd9qxrpqq4x513r88zas7112rqn5sgxxaccbh72";
|
||||
};
|
||||
packageJSON = "${src}/package.json";
|
||||
yarnLock = ./yarn.lock;
|
||||
yarnNix = ./yarn.nix;
|
||||
}
|
||||
422
packages/MPD.FM/yarn.lock
Normal file
422
packages/MPD.FM/yarn.lock
Normal file
@@ -0,0 +1,422 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
accepts@~1.3.3:
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
|
||||
dependencies:
|
||||
mime-types "~2.1.24"
|
||||
negotiator "0.6.2"
|
||||
|
||||
array-flatten@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
|
||||
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
|
||||
|
||||
async-limiter@~1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||
|
||||
basic-auth@~2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
|
||||
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
|
||||
dependencies:
|
||||
safe-buffer "5.1.2"
|
||||
|
||||
body-parser@~1.18.2:
|
||||
version "1.18.3"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
|
||||
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
|
||||
dependencies:
|
||||
bytes "3.0.0"
|
||||
content-type "~1.0.4"
|
||||
debug "2.6.9"
|
||||
depd "~1.1.2"
|
||||
http-errors "~1.6.3"
|
||||
iconv-lite "0.4.23"
|
||||
on-finished "~2.3.0"
|
||||
qs "6.5.2"
|
||||
raw-body "2.3.3"
|
||||
type-is "~1.6.16"
|
||||
|
||||
bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
|
||||
|
||||
content-disposition@0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
|
||||
integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
|
||||
|
||||
content-type@~1.0.2, content-type@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
|
||||
|
||||
cookie-parser@~1.4.3:
|
||||
version "1.4.5"
|
||||
resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49"
|
||||
integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==
|
||||
dependencies:
|
||||
cookie "0.4.0"
|
||||
cookie-signature "1.0.6"
|
||||
|
||||
cookie-signature@1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
|
||||
|
||||
cookie@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
||||
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
|
||||
|
||||
cookie@0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
|
||||
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
|
||||
|
||||
debug@2.6.9, debug@~2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
depd@~1.1.1, depd@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
|
||||
|
||||
destroy@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
||||
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||
|
||||
encodeurl@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
||||
|
||||
escape-html@~1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
|
||||
|
||||
etag@~1.8.0, etag@~1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
|
||||
|
||||
express@~4.15.5:
|
||||
version "4.15.5"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz#670235ca9598890a5ae8170b83db722b842ed927"
|
||||
integrity sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=
|
||||
dependencies:
|
||||
accepts "~1.3.3"
|
||||
array-flatten "1.1.1"
|
||||
content-disposition "0.5.2"
|
||||
content-type "~1.0.2"
|
||||
cookie "0.3.1"
|
||||
cookie-signature "1.0.6"
|
||||
debug "2.6.9"
|
||||
depd "~1.1.1"
|
||||
encodeurl "~1.0.1"
|
||||
escape-html "~1.0.3"
|
||||
etag "~1.8.0"
|
||||
finalhandler "~1.0.6"
|
||||
fresh "0.5.2"
|
||||
merge-descriptors "1.0.1"
|
||||
methods "~1.1.2"
|
||||
on-finished "~2.3.0"
|
||||
parseurl "~1.3.1"
|
||||
path-to-regexp "0.1.7"
|
||||
proxy-addr "~1.1.5"
|
||||
qs "6.5.0"
|
||||
range-parser "~1.2.0"
|
||||
send "0.15.6"
|
||||
serve-static "1.12.6"
|
||||
setprototypeof "1.0.3"
|
||||
statuses "~1.3.1"
|
||||
type-is "~1.6.15"
|
||||
utils-merge "1.0.0"
|
||||
vary "~1.1.1"
|
||||
|
||||
finalhandler@~1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
|
||||
integrity sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
encodeurl "~1.0.1"
|
||||
escape-html "~1.0.3"
|
||||
on-finished "~2.3.0"
|
||||
parseurl "~1.3.2"
|
||||
statuses "~1.3.1"
|
||||
unpipe "~1.0.0"
|
||||
|
||||
forwarded@~0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
||||
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
|
||||
|
||||
fresh@0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
|
||||
|
||||
http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
|
||||
version "1.6.3"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
|
||||
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
|
||||
dependencies:
|
||||
depd "~1.1.2"
|
||||
inherits "2.0.3"
|
||||
setprototypeof "1.1.0"
|
||||
statuses ">= 1.4.0 < 2"
|
||||
|
||||
iconv-lite@0.4.23:
|
||||
version "0.4.23"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
|
||||
integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
inherits@2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ipaddr.js@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
|
||||
integrity sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=
|
||||
|
||||
media-typer@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
||||
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
|
||||
|
||||
merge-descriptors@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
|
||||
|
||||
methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
||||
|
||||
mime-db@1.45.0:
|
||||
version "1.45.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
|
||||
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
|
||||
|
||||
mime-types@~2.1.24:
|
||||
version "2.1.28"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
|
||||
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
|
||||
dependencies:
|
||||
mime-db "1.45.0"
|
||||
|
||||
mime@1.3.4:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
|
||||
integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=
|
||||
|
||||
morgan@~1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
|
||||
integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==
|
||||
dependencies:
|
||||
basic-auth "~2.0.0"
|
||||
debug "2.6.9"
|
||||
depd "~1.1.2"
|
||||
on-finished "~2.3.0"
|
||||
on-headers "~1.0.1"
|
||||
|
||||
mpd@~1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz#a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd"
|
||||
integrity sha1-qaDgKPaAjlWU92+p8MV0rYbwwN0=
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||
|
||||
negotiator@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||
|
||||
on-finished@~2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
|
||||
dependencies:
|
||||
ee-first "1.1.1"
|
||||
|
||||
on-headers@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
|
||||
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
|
||||
|
||||
parseurl@~1.3.1, parseurl@~1.3.2:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
path-to-regexp@0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
||||
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
|
||||
|
||||
proxy-addr@~1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
|
||||
integrity sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=
|
||||
dependencies:
|
||||
forwarded "~0.1.0"
|
||||
ipaddr.js "1.4.0"
|
||||
|
||||
qs@6.5.0:
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
|
||||
integrity sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==
|
||||
|
||||
qs@6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
range-parser@~1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||
|
||||
raw-body@2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
|
||||
integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
|
||||
dependencies:
|
||||
bytes "3.0.0"
|
||||
http-errors "1.6.3"
|
||||
iconv-lite "0.4.23"
|
||||
unpipe "1.0.0"
|
||||
|
||||
safe-buffer@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
|
||||
|
||||
safe-buffer@5.1.2, safe-buffer@~5.1.0:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
send@0.15.6:
|
||||
version "0.15.6"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34"
|
||||
integrity sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
depd "~1.1.1"
|
||||
destroy "~1.0.4"
|
||||
encodeurl "~1.0.1"
|
||||
escape-html "~1.0.3"
|
||||
etag "~1.8.1"
|
||||
fresh "0.5.2"
|
||||
http-errors "~1.6.2"
|
||||
mime "1.3.4"
|
||||
ms "2.0.0"
|
||||
on-finished "~2.3.0"
|
||||
range-parser "~1.2.0"
|
||||
statuses "~1.3.1"
|
||||
|
||||
serve-favicon@~2.4.5:
|
||||
version "2.4.5"
|
||||
resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436"
|
||||
integrity sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==
|
||||
dependencies:
|
||||
etag "~1.8.1"
|
||||
fresh "0.5.2"
|
||||
ms "2.0.0"
|
||||
parseurl "~1.3.2"
|
||||
safe-buffer "5.1.1"
|
||||
|
||||
serve-static@1.12.6:
|
||||
version "1.12.6"
|
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz#b973773f63449934da54e5beba5e31d9f4211577"
|
||||
integrity sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=
|
||||
dependencies:
|
||||
encodeurl "~1.0.1"
|
||||
escape-html "~1.0.3"
|
||||
parseurl "~1.3.2"
|
||||
send "0.15.6"
|
||||
|
||||
setprototypeof@1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
|
||||
integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=
|
||||
|
||||
setprototypeof@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
||||
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
|
||||
|
||||
"statuses@>= 1.4.0 < 2":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
||||
|
||||
statuses@~1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
|
||||
integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
|
||||
|
||||
type-is@~1.6.15, type-is@~1.6.16:
|
||||
version "1.6.18"
|
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
||||
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
|
||||
dependencies:
|
||||
media-typer "0.3.0"
|
||||
mime-types "~2.1.24"
|
||||
|
||||
unpipe@1.0.0, unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
|
||||
|
||||
utils-merge@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
|
||||
integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=
|
||||
|
||||
vary@~1.1.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
ws@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
|
||||
integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
safe-buffer "~5.1.0"
|
||||
493
packages/MPD.FM/yarn.nix
Normal file
493
packages/MPD.FM/yarn.nix
Normal file
@@ -0,0 +1,493 @@
|
||||
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
|
||||
offline_cache = linkFarm "offline" packages;
|
||||
packages = [
|
||||
{
|
||||
name = "accepts___accepts_1.3.7.tgz";
|
||||
path = fetchurl {
|
||||
name = "accepts___accepts_1.3.7.tgz";
|
||||
url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
|
||||
sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "array_flatten___array_flatten_1.1.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "array_flatten___array_flatten_1.1.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
|
||||
sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "async_limiter___async_limiter_1.0.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "async_limiter___async_limiter_1.0.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz";
|
||||
sha1 = "dd379e94f0db8310b08291f9d64c3209766617fd";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "basic_auth___basic_auth_2.0.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "basic_auth___basic_auth_2.0.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz";
|
||||
sha1 = "b998279bf47ce38344b4f3cf916d4679bbf51e3a";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "body_parser___body_parser_1.18.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "body_parser___body_parser_1.18.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz";
|
||||
sha1 = "5b292198ffdd553b3a0f20ded0592b956955c8b4";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "bytes___bytes_3.0.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "bytes___bytes_3.0.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
|
||||
sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "content_disposition___content_disposition_0.5.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "content_disposition___content_disposition_0.5.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
|
||||
sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "content_type___content_type_1.0.4.tgz";
|
||||
path = fetchurl {
|
||||
name = "content_type___content_type_1.0.4.tgz";
|
||||
url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
|
||||
sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "cookie_parser___cookie_parser_1.4.5.tgz";
|
||||
path = fetchurl {
|
||||
name = "cookie_parser___cookie_parser_1.4.5.tgz";
|
||||
url = "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz";
|
||||
sha1 = "3e572d4b7c0c80f9c61daf604e4336831b5d1d49";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "cookie_signature___cookie_signature_1.0.6.tgz";
|
||||
path = fetchurl {
|
||||
name = "cookie_signature___cookie_signature_1.0.6.tgz";
|
||||
url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
|
||||
sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "cookie___cookie_0.3.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "cookie___cookie_0.3.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
|
||||
sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "cookie___cookie_0.4.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "cookie___cookie_0.4.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
|
||||
sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "debug___debug_2.6.9.tgz";
|
||||
path = fetchurl {
|
||||
name = "debug___debug_2.6.9.tgz";
|
||||
url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
|
||||
sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "depd___depd_1.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "depd___depd_1.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
|
||||
sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "destroy___destroy_1.0.4.tgz";
|
||||
path = fetchurl {
|
||||
name = "destroy___destroy_1.0.4.tgz";
|
||||
url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
|
||||
sha1 = "978857442c44749e4206613e37946205826abd80";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "ee_first___ee_first_1.1.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "ee_first___ee_first_1.1.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
|
||||
sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "encodeurl___encodeurl_1.0.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "encodeurl___encodeurl_1.0.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
|
||||
sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "escape_html___escape_html_1.0.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "escape_html___escape_html_1.0.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
|
||||
sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "etag___etag_1.8.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "etag___etag_1.8.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
|
||||
sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "express___express_4.15.5.tgz";
|
||||
path = fetchurl {
|
||||
name = "express___express_4.15.5.tgz";
|
||||
url = "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz";
|
||||
sha1 = "670235ca9598890a5ae8170b83db722b842ed927";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "finalhandler___finalhandler_1.0.6.tgz";
|
||||
path = fetchurl {
|
||||
name = "finalhandler___finalhandler_1.0.6.tgz";
|
||||
url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz";
|
||||
sha1 = "007aea33d1a4d3e42017f624848ad58d212f814f";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "forwarded___forwarded_0.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "forwarded___forwarded_0.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
|
||||
sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "fresh___fresh_0.5.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "fresh___fresh_0.5.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
|
||||
sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "http_errors___http_errors_1.6.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "http_errors___http_errors_1.6.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
|
||||
sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "iconv_lite___iconv_lite_0.4.23.tgz";
|
||||
path = fetchurl {
|
||||
name = "iconv_lite___iconv_lite_0.4.23.tgz";
|
||||
url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz";
|
||||
sha1 = "297871f63be507adcfbfca715d0cd0eed84e9a63";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "inherits___inherits_2.0.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "inherits___inherits_2.0.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
|
||||
sha1 = "633c2c83e3da42a502f52466022480f4208261de";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz";
|
||||
sha1 = "296aca878a821816e5b85d0a285a99bcff4582f0";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "media_typer___media_typer_0.3.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "media_typer___media_typer_0.3.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
|
||||
sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
|
||||
sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "methods___methods_1.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "methods___methods_1.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
|
||||
sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "mime_db___mime_db_1.45.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "mime_db___mime_db_1.45.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz";
|
||||
sha1 = "cceeda21ccd7c3a745eba2decd55d4b73e7879ea";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "mime_types___mime_types_2.1.28.tgz";
|
||||
path = fetchurl {
|
||||
name = "mime_types___mime_types_2.1.28.tgz";
|
||||
url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz";
|
||||
sha1 = "1160c4757eab2c5363888e005273ecf79d2a0ecd";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "mime___mime_1.3.4.tgz";
|
||||
path = fetchurl {
|
||||
name = "mime___mime_1.3.4.tgz";
|
||||
url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
|
||||
sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "morgan___morgan_1.9.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "morgan___morgan_1.9.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz";
|
||||
sha1 = "0a8d16734a1d9afbc824b99df87e738e58e2da59";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "mpd___mpd_1.3.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "mpd___mpd_1.3.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz";
|
||||
sha1 = "a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "ms___ms_2.0.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "ms___ms_2.0.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
|
||||
sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "negotiator___negotiator_0.6.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "negotiator___negotiator_0.6.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
|
||||
sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "on_finished___on_finished_2.3.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "on_finished___on_finished_2.3.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
|
||||
sha1 = "20f1336481b083cd75337992a16971aa2d906947";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "on_headers___on_headers_1.0.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "on_headers___on_headers_1.0.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
|
||||
sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "parseurl___parseurl_1.3.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "parseurl___parseurl_1.3.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
|
||||
sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
|
||||
path = fetchurl {
|
||||
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
|
||||
url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
|
||||
sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "proxy_addr___proxy_addr_1.1.5.tgz";
|
||||
path = fetchurl {
|
||||
name = "proxy_addr___proxy_addr_1.1.5.tgz";
|
||||
url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz";
|
||||
sha1 = "71c0ee3b102de3f202f3b64f608d173fcba1a918";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "qs___qs_6.5.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "qs___qs_6.5.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz";
|
||||
sha1 = "8d04954d364def3efc55b5a0793e1e2c8b1e6e49";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "qs___qs_6.5.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "qs___qs_6.5.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
|
||||
sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "range_parser___range_parser_1.2.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "range_parser___range_parser_1.2.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
|
||||
sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "raw_body___raw_body_2.3.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "raw_body___raw_body_2.3.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz";
|
||||
sha1 = "1b324ece6b5706e153855bc1148c65bb7f6ea0c3";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "safe_buffer___safe_buffer_5.1.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "safe_buffer___safe_buffer_5.1.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
|
||||
sha1 = "893312af69b2123def71f57889001671eeb2c853";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "safe_buffer___safe_buffer_5.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "safe_buffer___safe_buffer_5.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
|
||||
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "safer_buffer___safer_buffer_2.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "safer_buffer___safer_buffer_2.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
|
||||
sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "send___send_0.15.6.tgz";
|
||||
path = fetchurl {
|
||||
name = "send___send_0.15.6.tgz";
|
||||
url = "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz";
|
||||
sha1 = "20f23a9c925b762ab82705fe2f9db252ace47e34";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "serve_favicon___serve_favicon_2.4.5.tgz";
|
||||
path = fetchurl {
|
||||
name = "serve_favicon___serve_favicon_2.4.5.tgz";
|
||||
url = "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz";
|
||||
sha1 = "49d9a46863153a9240691c893d2b0e7d85d6d436";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "serve_static___serve_static_1.12.6.tgz";
|
||||
path = fetchurl {
|
||||
name = "serve_static___serve_static_1.12.6.tgz";
|
||||
url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz";
|
||||
sha1 = "b973773f63449934da54e5beba5e31d9f4211577";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "setprototypeof___setprototypeof_1.0.3.tgz";
|
||||
path = fetchurl {
|
||||
name = "setprototypeof___setprototypeof_1.0.3.tgz";
|
||||
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
|
||||
sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "setprototypeof___setprototypeof_1.1.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "setprototypeof___setprototypeof_1.1.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
|
||||
sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "statuses___statuses_1.5.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "statuses___statuses_1.5.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
|
||||
sha1 = "161c7dac177659fd9811f43771fa99381478628c";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "statuses___statuses_1.3.1.tgz";
|
||||
path = fetchurl {
|
||||
name = "statuses___statuses_1.3.1.tgz";
|
||||
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz";
|
||||
sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "type_is___type_is_1.6.18.tgz";
|
||||
path = fetchurl {
|
||||
name = "type_is___type_is_1.6.18.tgz";
|
||||
url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
|
||||
sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "unpipe___unpipe_1.0.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "unpipe___unpipe_1.0.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
|
||||
sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "utils_merge___utils_merge_1.0.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "utils_merge___utils_merge_1.0.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz";
|
||||
sha1 = "0294fb922bb9375153541c4f7096231f287c8af8";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "vary___vary_1.1.2.tgz";
|
||||
path = fetchurl {
|
||||
name = "vary___vary_1.1.2.tgz";
|
||||
url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
|
||||
sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "ws___ws_4.1.0.tgz";
|
||||
path = fetchurl {
|
||||
name = "ws___ws_4.1.0.tgz";
|
||||
url = "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz";
|
||||
sha1 = "a979b5d7d4da68bf54efe0408967c324869a7289";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ fetchzip, symlinkJoin, lib, scardanelli ? false }:
|
||||
{ fetchzip, symlinkJoin, lib }:
|
||||
let
|
||||
gfs-font = name: sha256:
|
||||
fetchzip {
|
||||
@@ -17,34 +17,21 @@ in symlinkJoin {
|
||||
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
|
||||
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
|
||||
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
|
||||
GFS_Complutum =
|
||||
"1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
|
||||
GFS_Complutum = "1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
|
||||
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
|
||||
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
|
||||
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
|
||||
GFS_Didot_Display = if scardanelli then
|
||||
"0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7"
|
||||
else
|
||||
"0gg5xb8jic646gz9p05ry62nk7w0k546fxp5p4vvnawmckql2dj1";
|
||||
GFS_Didot_Display = "0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7";
|
||||
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
|
||||
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
|
||||
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
|
||||
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
|
||||
GFS_Olga = "0f05ng02na84x9x6yhskxqwxwyabjisyl8a0k3fiah60i620p39d";
|
||||
GFS_Orpheus = if scardanelli then
|
||||
"18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz"
|
||||
else
|
||||
"1rvjpvk1fx55vyp3dyxcbww1a24rm7xv5faqs735yf6lqzpkqnax";
|
||||
GFS_Orpheus_Classic = if scardanelli then
|
||||
"1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps"
|
||||
else
|
||||
"0d2yzwg6albmgl1d0xhsfrmxj79r42wp712rpry567nv1ry42k0a";
|
||||
GFS_Orpheus_Sans = if scardanelli then
|
||||
"02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg"
|
||||
else
|
||||
"1rdlm2kmkvi4y3ii68ik8k3w3183vvb3q2pnk04lbb0ggg9w5jdb";
|
||||
GFS_Olga = "1qaxaw3ngnbr1gb1xyk5f2z647zklg6sl3bqwi28l47j9mp0f8aj";
|
||||
GFS_Orpheus = "18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz";
|
||||
GFS_Orpheus_Classic = "1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps";
|
||||
GFS_Orpheus_Sans = "02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg";
|
||||
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
|
||||
GFS_Porson = "0r3snwgxkdx7h34sg3s0hr8fac3rnpllq62bk44m266hj6a80a5k";
|
||||
GFS_Porson = "0c2axagkm6wxv8na2q11k6c5dmgkwx5hn9sh9qy82gbips9blnda";
|
||||
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
|
||||
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
|
||||
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";
|
||||
|
||||
33
packages/moodle-dl/default.nix
Normal file
33
packages/moodle-dl/default.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{ stdenv, lib, python3Packages }:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "moodle-dl";
|
||||
version = "2.1.1.1";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0nv2gm4x6mfsa0wywm4xbsx6nf6hx4kb63s4lczaxb9m4ybjd45h";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./readchar-version.patch
|
||||
./telegram-format.patch
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
sentry-sdk
|
||||
colorama
|
||||
readchar
|
||||
youtube-dl
|
||||
certifi
|
||||
html2text
|
||||
requests
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2";
|
||||
maintainers = [ maintainers.kmein ];
|
||||
description = "A Moodle downloader that downloads course content fast from Moodle";
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
13
packages/moodle-dl/readchar-version.patch
Normal file
13
packages/moodle-dl/readchar-version.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 180139d..5582359 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -32,7 +32,7 @@ setup(
|
||||
install_requires=[
|
||||
'sentry_sdk>=0.13.5',
|
||||
'colorama>=0.4.3',
|
||||
- 'readchar>=2.0.1',
|
||||
+ 'readchar>=2.0.0',
|
||||
'youtube_dl>=2020.9.20',
|
||||
'certifi>=2020.4.5.2',
|
||||
'html2text>=2020.1.16',
|
||||
45
packages/moodle-dl/telegram-format.patch
Normal file
45
packages/moodle-dl/telegram-format.patch
Normal file
@@ -0,0 +1,45 @@
|
||||
diff --git a/moodle_dl/notification_services/telegram/telegram_formater.py b/moodle_dl/notification_services/telegram/telegram_formater.py
|
||||
index 05180b6..33009b0 100644
|
||||
--- a/moodle_dl/notification_services/telegram/telegram_formater.py
|
||||
+++ b/moodle_dl/notification_services/telegram/telegram_formater.py
|
||||
@@ -15,10 +15,10 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
|
||||
diff_count += len(course.files)
|
||||
|
||||
result_list = []
|
||||
- one_msg_content = '%s new Changes in the Moodle courses!' % (diff_count)
|
||||
+ one_msg_content = "%s changes in Moodle!" % (diff_count)
|
||||
|
||||
for course in changed_courses:
|
||||
- new_line = '\r\n\r\n\r\n> <b>' + course.fullname + '</b>\r\n'
|
||||
+ new_line = "\r\n\r\n<b>" + course.fullname + "</b>"
|
||||
if len(one_msg_content) + len(new_line) >= 4096:
|
||||
result_list.append(one_msg_content)
|
||||
one_msg_content = new_line
|
||||
@@ -27,16 +27,16 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
|
||||
|
||||
for file in course.files:
|
||||
if file.modified:
|
||||
- new_line = '\r\n<i>* Modified:</i> ' + file.saved_to
|
||||
+ new_line = "\r\n✍️ " + file.saved_to
|
||||
elif file.moved:
|
||||
if file.new_file is not None:
|
||||
- new_line = '\r\n<i>* Moved:</i> ' + file.new_file.saved_to
|
||||
+ new_line = "\r\n📂 " + file.new_file.saved_to
|
||||
else:
|
||||
- new_line = '\r\n<i>* Moved:</i> ' + file.saved_to
|
||||
+ new_line = "\r\n📂 " + file.saved_to
|
||||
elif file.deleted:
|
||||
- new_line = '\r\n<i>- Deleted:</i> ' + file.saved_to
|
||||
+ new_line = "\r\n🗑️ " + file.saved_to
|
||||
else:
|
||||
- new_line = '\r\n<i>+ Added:</i> ' + file.saved_to
|
||||
+ new_line = "\r\n🎉 " + file.saved_to
|
||||
|
||||
if len(one_msg_content) + len(new_line) >= 4096:
|
||||
result_list.append(one_msg_content)
|
||||
@@ -52,4 +52,4 @@ def create_full_error_message(details) -> (str, {str: str}):
|
||||
"""
|
||||
Creates an error message
|
||||
"""
|
||||
- return 'The following error occurred during execution:' + details
|
||||
+ return "The following error occurred during execution:" + details
|
||||
23
packages/scripts/chunk-pdf
Executable file
23
packages/scripts/chunk-pdf
Executable file
@@ -0,0 +1,23 @@
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p pdftk gnugrep
|
||||
set -efu
|
||||
|
||||
INPUT_FILE="${2:?Pass the PDF path as second argument.}"
|
||||
PAGES_PER_REPORT="${1:?Pass the chunk size as first argument.}"
|
||||
|
||||
if [ ! -f "$INPUT_FILE" ]; then
|
||||
echo >&2 "File $INPUT_FILE does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TOTAL_PAGES="$(pdftk "$INPUT_FILE" dump_data | grep NumberOfPages | cut -f2 -d' ')"
|
||||
|
||||
RUNS=$((TOTAL_PAGES/PAGES_PER_REPORT))
|
||||
|
||||
for run in $(seq 0 "$((RUNS-1))"); do
|
||||
start_page=$((run*PAGES_PER_REPORT+1))
|
||||
end_page=$(((run+1)*PAGES_PER_REPORT))
|
||||
output_file="chunk_$((run+1)).pdf"
|
||||
echo "splitting $INPUT_FILE from $start_page to $end_page into $output_file"
|
||||
pdftk "$INPUT_FILE" cat "$start_page-$end_page" output "$output_file"
|
||||
done
|
||||
@@ -21,6 +21,26 @@ in rec {
|
||||
name = "instaget";
|
||||
};
|
||||
|
||||
dns-sledgehammer = pkgs.writers.writeDashBin "dns-sledgehammer" ''
|
||||
${pkgs.coreutils}/bin/printf '%s\n' 'nameserver 1.1.1.1' 'options edns0' > /etc/resolv.conf
|
||||
'';
|
||||
|
||||
much-scripts = pkgs.symlinkJoin {
|
||||
name = "much-scripts";
|
||||
paths = [
|
||||
(wrapScript {
|
||||
packages = [ pkgs.notmuch pkgs.msmtp pkgs.jq ];
|
||||
name = "mail-send";
|
||||
script = ./mail-send.sh;
|
||||
})
|
||||
(wrapScript {
|
||||
name = "mail-kill";
|
||||
script = ./mail-kill.sh;
|
||||
packages = [ pkgs.notmuch ];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
showkeys-toggle = pkgs.writers.writeDashBin "showkeys-toggle" ''
|
||||
if ${pkgs.procps}/bin/pgrep screenkey; then
|
||||
exec ${pkgs.procps}/bin/pkill screenkey
|
||||
@@ -29,6 +49,18 @@ in rec {
|
||||
fi
|
||||
'';
|
||||
|
||||
interdimensional-cable =
|
||||
let nimaid-github-io = pkgs.fetchFromGitHub {
|
||||
owner = "nimaid";
|
||||
repo = "nimaid.github.io";
|
||||
rev = "9cb4ede215be6bb01bd2df1ef3e9689cc8c4eb9e";
|
||||
sha256 = "1g47cj5an7xgmhpc09m7qim5j9rspqxvnzfy90cnlvz4pg8hil96";
|
||||
};
|
||||
in pkgs.writeShellScriptBin "interdimensional-cable" ''
|
||||
export PATH=${lib.makeBinPath [ pkgs.mpv pkgs.jq pkgs.gnused ]}
|
||||
mpv --shuffle --playlist=<(jq -r '.videos[]' ${nimaid-github-io}/tv/interdimensional_database.json | sed 's#^#https://youtu.be/#')
|
||||
'';
|
||||
|
||||
tag = wrapScript {
|
||||
packages = [ pkgs.vorbisTools pkgs.python3Packages.eyeD3 pkgs.nur.repos.kmein.opustags ];
|
||||
script = "${voidrice}/.local/bin/tag";
|
||||
@@ -51,6 +83,12 @@ in rec {
|
||||
script = ./dirmir.sh;
|
||||
};
|
||||
|
||||
playlist = wrapScript {
|
||||
name = "pls";
|
||||
script = ./playlist.sh;
|
||||
packages = [ pkgs.curl pkgs.jq ];
|
||||
};
|
||||
|
||||
favicon = wrapScript {
|
||||
packages = [ pkgs.imagemagick ];
|
||||
name = "favicon";
|
||||
@@ -172,6 +210,21 @@ in rec {
|
||||
sys.stdout.write(betacode.conv.beta_to_uni(sys.stdin.read()))
|
||||
'';
|
||||
|
||||
devanagari = pkgs.writers.writePython3Bin "devanagari" {
|
||||
libraries = [ pkgs.nur.repos.kmein.python3Packages.indic-transliteration ];
|
||||
} ''
|
||||
from indic_transliteration import sanscript
|
||||
from indic_transliteration.sanscript import transliterate
|
||||
import sys
|
||||
|
||||
# Harvard Kyoto -> Devanagari
|
||||
sys.stdout.write(transliterate(
|
||||
sys.stdin.read(),
|
||||
sanscript.HK,
|
||||
sanscript.DEVANAGARI
|
||||
))
|
||||
'';
|
||||
|
||||
manual-sort = pkgs.writers.writeHaskellBin "manual-sort" {} ''
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
import Data.Char (toLower)
|
||||
@@ -210,4 +263,5 @@ in rec {
|
||||
|
||||
bvg = pkgs.callPackage ./bvg.nix { };
|
||||
nav = pkgs.callPackage ./nav.nix { };
|
||||
k-lock = pkgs.callPackage ./k-lock.nix { };
|
||||
}
|
||||
|
||||
25
packages/scripts/k-lock.nix
Normal file
25
packages/scripts/k-lock.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{ writers, lib, xlockmore }:
|
||||
let
|
||||
xlockModes = lib.concatStringsSep "\\n" [
|
||||
# "braid"
|
||||
"galaxy"
|
||||
# "lightning"
|
||||
# "matrix"
|
||||
"pyro2"
|
||||
"space"
|
||||
];
|
||||
in writers.writeDashBin "k-lock" ''
|
||||
MODE=$(printf "${xlockModes}" | shuf -n 1)
|
||||
|
||||
${xlockmore}/bin/xlock \
|
||||
-saturation 0.4 \
|
||||
-erasemode no_fade \
|
||||
+description \
|
||||
-showdate \
|
||||
-username " " \
|
||||
-password " " \
|
||||
-info " " \
|
||||
-validate "..." \
|
||||
-invalid "Computer says no." \
|
||||
-mode "$MODE"
|
||||
''
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user